{"diffoscope-json-version": 1, "source1": "/input1", "source2": "/input2", "unified_diff": null, "details": [{"source1": "zipinfo {}", "source2": "zipinfo {}", "unified_diff": "@@ -1,18 +1,18 @@\n-Zip file size: 989146 bytes, number of entries: 16\n+Zip file size: 1019887 bytes, number of entries: 16\n -rw----     1.0 fat        0 bx stor 24-Aug-15 22:48 META-INF/\n -rw----     2.0 fat      215 bl defN 24-Aug-15 22:48 META-INF/MANIFEST.MF\n -rw----     1.0 fat        0 b- stor 24-Aug-15 22:48 graphiql/\n -rw----     1.0 fat        0 b- stor 24-Aug-15 22:48 io/\n -rw----     1.0 fat        0 b- stor 24-Aug-15 22:48 io/jooby/\n -rw----     1.0 fat        0 b- stor 24-Aug-15 22:48 io/jooby/graphiql/\n -rw----     1.0 fat        0 b- stor 24-Aug-15 22:48 META-INF/maven/\n -rw----     1.0 fat        0 b- stor 24-Aug-15 22:48 META-INF/maven/io.jooby/\n -rw----     1.0 fat        0 b- stor 24-Aug-15 22:48 META-INF/maven/io.jooby/jooby-graphiql/\n -rw----     2.0 fat   425363 bl defN 24-Aug-15 22:48 graphiql/graphiql.css\n--rw----     2.0 fat  3474983 bl defN 24-Aug-15 22:48 graphiql/graphiql.min.js\n+-rw----     2.0 fat  3513576 bl defN 24-Aug-15 22:48 graphiql/graphiql.min.js\n -rw----     2.0 fat    11857 bl defN 24-Aug-15 22:48 io/jooby/graphiql/GraphiQLModule.class\n -rw----     2.0 fat      231 bl defN 24-Aug-15 22:48 io/jooby/graphiql/package-info.class\n -rw----     2.0 fat     2291 bl defN 24-Aug-15 22:48 META-INF/maven/io.jooby/jooby-graphiql/pom.xml\n -rw----     2.0 fat       57 bl defN 24-Aug-15 22:48 META-INF/maven/io.jooby/jooby-graphiql/pom.properties\n -rw----     2.0 fat      331 bl defN 24-Aug-15 22:48 module-info.class\n-16 files, 3915328 bytes uncompressed, 987010 bytes compressed:  74.8%\n+16 files, 3953921 bytes uncompressed, 1017751 bytes compressed:  74.3%\n"}, {"source1": "zipdetails --redact --scan --utc {}", "source2": "zipdetails --redact --scan --utc {}", "unified_diff": "@@ -190,15 +190,15 @@\n #\n # WARNING: Offset 0x25F: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n 00274 PAYLOAD\n \n 445D5 DATA DESCRIPTOR       08074B50 (134695760)\n-445D9 CRC                   0AC69226 (180785702)\n+445D9 CRC                   51FB39FC (1375418876)\n 445DD Compressed Size       00044361 (279393)\n 445E1 Uncompressed Size     00067D93 (425363)\n \n 445E5 LOCAL HEADER #11      04034B50 (67324752)\n 445E9 Extract Zip Spec      14 (20) '2.0'\n 445EA Extract OS            00 (0) 'MS-DOS'\n 445EB General Purpose Flag  0808 (2056)\n@@ -215,590 +215,590 @@\n 44603 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n # WARNING: Offset 0x44603: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n 4461B PAYLOAD\n \n-EFFEC DATA DESCRIPTOR       08074B50 (134695760)\n-EFFF0 CRC                   DF082543 (3741852995)\n-EFFF4 Compressed Size       000AB9D1 (702929)\n-EFFF8 Uncompressed Size     00350627 (3474983)\n+F7801 DATA DESCRIPTOR       08074B50 (134695760)\n+F7805 CRC                   6A282AC4 (1781017284)\n+F7809 Compressed Size       000B31E6 (733670)\n+F780D Uncompressed Size     00359CE8 (3513576)\n \n-EFFFC LOCAL HEADER #12      04034B50 (67324752)\n-F0000 Extract Zip Spec      14 (20) '2.0'\n-F0001 Extract OS            00 (0) 'MS-DOS'\n-F0002 General Purpose Flag  0808 (2056)\n+F7811 LOCAL HEADER #12      04034B50 (67324752)\n+F7815 Extract Zip Spec      14 (20) '2.0'\n+F7816 Extract OS            00 (0) 'MS-DOS'\n+F7817 General Purpose Flag  0808 (2056)\n       [Bits 1-2]            0 'Normal Compression'\n       [Bit  3]              1 'Streamed'\n       [Bit 11]              1 'Language Encoding'\n-F0004 Compression Method    0008 (8) 'Deflated'\n-F0006 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F000A CRC                   00000000 (0)\n-F000E Compressed Size       00000000 (0)\n-F0012 Uncompressed Size     00000000 (0)\n-F0016 Filename Length       0026 (38)\n-F0018 Extra Length          0000 (0)\n-F001A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+F7819 Compression Method    0008 (8) 'Deflated'\n+F781B Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F781F CRC                   00000000 (0)\n+F7823 Compressed Size       00000000 (0)\n+F7827 Uncompressed Size     00000000 (0)\n+F782B Filename Length       0026 (38)\n+F782D Extra Length          0000 (0)\n+F782F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF001A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF782F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-F0040 PAYLOAD\n+F7855 PAYLOAD\n \n-F0D8B DATA DESCRIPTOR       08074B50 (134695760)\n-F0D8F CRC                   3AE70DB0 (988220848)\n-F0D93 Compressed Size       00000D4B (3403)\n-F0D97 Uncompressed Size     00002E51 (11857)\n+F85A0 DATA DESCRIPTOR       08074B50 (134695760)\n+F85A4 CRC                   3AE70DB0 (988220848)\n+F85A8 Compressed Size       00000D4B (3403)\n+F85AC Uncompressed Size     00002E51 (11857)\n \n-F0D9B LOCAL HEADER #13      04034B50 (67324752)\n-F0D9F Extract Zip Spec      14 (20) '2.0'\n-F0DA0 Extract OS            00 (0) 'MS-DOS'\n-F0DA1 General Purpose Flag  0808 (2056)\n+F85B0 LOCAL HEADER #13      04034B50 (67324752)\n+F85B4 Extract Zip Spec      14 (20) '2.0'\n+F85B5 Extract OS            00 (0) 'MS-DOS'\n+F85B6 General Purpose Flag  0808 (2056)\n       [Bits 1-2]            0 'Normal Compression'\n       [Bit  3]              1 'Streamed'\n       [Bit 11]              1 'Language Encoding'\n-F0DA3 Compression Method    0008 (8) 'Deflated'\n-F0DA5 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F0DA9 CRC                   00000000 (0)\n-F0DAD Compressed Size       00000000 (0)\n-F0DB1 Uncompressed Size     00000000 (0)\n-F0DB5 Filename Length       0024 (36)\n-F0DB7 Extra Length          0000 (0)\n-F0DB9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+F85B8 Compression Method    0008 (8) 'Deflated'\n+F85BA Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F85BE CRC                   00000000 (0)\n+F85C2 Compressed Size       00000000 (0)\n+F85C6 Uncompressed Size     00000000 (0)\n+F85CA Filename Length       0024 (36)\n+F85CC Extra Length          0000 (0)\n+F85CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF0DB9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF85CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-F0DDD PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+F85F2 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-F0E9A DATA DESCRIPTOR       08074B50 (134695760)\n-F0E9E CRC                   BBAE6A63 (3148769891)\n-F0EA2 Compressed Size       000000BD (189)\n-F0EA6 Uncompressed Size     000000E7 (231)\n+F86AF DATA DESCRIPTOR       08074B50 (134695760)\n+F86B3 CRC                   BBAE6A63 (3148769891)\n+F86B7 Compressed Size       000000BD (189)\n+F86BB Uncompressed Size     000000E7 (231)\n \n-F0EAA LOCAL HEADER #14      04034B50 (67324752)\n-F0EAE Extract Zip Spec      14 (20) '2.0'\n-F0EAF Extract OS            00 (0) 'MS-DOS'\n-F0EB0 General Purpose Flag  0808 (2056)\n+F86BF LOCAL HEADER #14      04034B50 (67324752)\n+F86C3 Extract Zip Spec      14 (20) '2.0'\n+F86C4 Extract OS            00 (0) 'MS-DOS'\n+F86C5 General Purpose Flag  0808 (2056)\n       [Bits 1-2]            0 'Normal Compression'\n       [Bit  3]              1 'Streamed'\n       [Bit 11]              1 'Language Encoding'\n-F0EB2 Compression Method    0008 (8) 'Deflated'\n-F0EB4 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F0EB8 CRC                   00000000 (0)\n-F0EBC Compressed Size       00000000 (0)\n-F0EC0 Uncompressed Size     00000000 (0)\n-F0EC4 Filename Length       002E (46)\n-F0EC6 Extra Length          0000 (0)\n-F0EC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+F86C7 Compression Method    0008 (8) 'Deflated'\n+F86C9 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F86CD CRC                   00000000 (0)\n+F86D1 Compressed Size       00000000 (0)\n+F86D5 Uncompressed Size     00000000 (0)\n+F86D9 Filename Length       002E (46)\n+F86DB Extra Length          0000 (0)\n+F86DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF0EC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF86DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-F0EF6 PAYLOAD\n+F870B PAYLOAD\n \n-F1191 DATA DESCRIPTOR       08074B50 (134695760)\n-F1195 CRC                   9BD1E5B5 (2614224309)\n-F1199 Compressed Size       0000029B (667)\n-F119D Uncompressed Size     000008F3 (2291)\n+F89A6 DATA DESCRIPTOR       08074B50 (134695760)\n+F89AA CRC                   9BD1E5B5 (2614224309)\n+F89AE Compressed Size       0000029B (667)\n+F89B2 Uncompressed Size     000008F3 (2291)\n \n-F11A1 LOCAL HEADER #15      04034B50 (67324752)\n-F11A5 Extract Zip Spec      14 (20) '2.0'\n-F11A6 Extract OS            00 (0) 'MS-DOS'\n-F11A7 General Purpose Flag  0808 (2056)\n+F89B6 LOCAL HEADER #15      04034B50 (67324752)\n+F89BA Extract Zip Spec      14 (20) '2.0'\n+F89BB Extract OS            00 (0) 'MS-DOS'\n+F89BC General Purpose Flag  0808 (2056)\n       [Bits 1-2]            0 'Normal Compression'\n       [Bit  3]              1 'Streamed'\n       [Bit 11]              1 'Language Encoding'\n-F11A9 Compression Method    0008 (8) 'Deflated'\n-F11AB Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F11AF CRC                   00000000 (0)\n-F11B3 Compressed Size       00000000 (0)\n-F11B7 Uncompressed Size     00000000 (0)\n-F11BB Filename Length       0035 (53)\n-F11BD Extra Length          0000 (0)\n-F11BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+F89BE Compression Method    0008 (8) 'Deflated'\n+F89C0 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F89C4 CRC                   00000000 (0)\n+F89C8 Compressed Size       00000000 (0)\n+F89CC Uncompressed Size     00000000 (0)\n+F89D0 Filename Length       0035 (53)\n+F89D2 Extra Length          0000 (0)\n+F89D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF11BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF89D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-F11F4 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+F8A09 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-F122A DATA DESCRIPTOR       08074B50 (134695760)\n-F122E CRC                   F6C13472 (4139857010)\n-F1232 Compressed Size       00000036 (54)\n-F1236 Uncompressed Size     00000039 (57)\n+F8A3F DATA DESCRIPTOR       08074B50 (134695760)\n+F8A43 CRC                   F6C13472 (4139857010)\n+F8A47 Compressed Size       00000036 (54)\n+F8A4B Uncompressed Size     00000039 (57)\n \n-F123A LOCAL HEADER #16      04034B50 (67324752)\n-F123E Extract Zip Spec      14 (20) '2.0'\n-F123F Extract OS            00 (0) 'MS-DOS'\n-F1240 General Purpose Flag  0808 (2056)\n+F8A4F LOCAL HEADER #16      04034B50 (67324752)\n+F8A53 Extract Zip Spec      14 (20) '2.0'\n+F8A54 Extract OS            00 (0) 'MS-DOS'\n+F8A55 General Purpose Flag  0808 (2056)\n       [Bits 1-2]            0 'Normal Compression'\n       [Bit  3]              1 'Streamed'\n       [Bit 11]              1 'Language Encoding'\n-F1242 Compression Method    0008 (8) 'Deflated'\n-F1244 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F1248 CRC                   00000000 (0)\n-F124C Compressed Size       00000000 (0)\n-F1250 Uncompressed Size     00000000 (0)\n-F1254 Filename Length       0011 (17)\n-F1256 Extra Length          0000 (0)\n-F1258 Filename              'XXXXXXXXXXXXXXXXX'\n+F8A57 Compression Method    0008 (8) 'Deflated'\n+F8A59 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8A5D CRC                   00000000 (0)\n+F8A61 Compressed Size       00000000 (0)\n+F8A65 Uncompressed Size     00000000 (0)\n+F8A69 Filename Length       0011 (17)\n+F8A6B Extra Length          0000 (0)\n+F8A6D Filename              'XXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF1258: Filename 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8A6D: Filename 'XXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-F1269 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+F8A7E PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-F1353 DATA DESCRIPTOR       08074B50 (134695760)\n-F1357 CRC                   17643655 (392443477)\n-F135B Compressed Size       000000EA (234)\n-F135F Uncompressed Size     0000014B (331)\n+F8B68 DATA DESCRIPTOR       08074B50 (134695760)\n+F8B6C CRC                   17643655 (392443477)\n+F8B70 Compressed Size       000000EA (234)\n+F8B74 Uncompressed Size     0000014B (331)\n \n-F1363 CENTRAL HEADER #1     02014B50 (33639248)\n-F1367 Created Zip Spec      0A (10) '1.0'\n-F1368 Created OS            00 (0) 'MS-DOS'\n-F1369 Extract Zip Spec      0A (10) '1.0'\n-F136A Extract OS            00 (0) 'MS-DOS'\n-F136B General Purpose Flag  0800 (2048)\n+F8B78 CENTRAL HEADER #1     02014B50 (33639248)\n+F8B7C Created Zip Spec      0A (10) '1.0'\n+F8B7D Created OS            00 (0) 'MS-DOS'\n+F8B7E Extract Zip Spec      0A (10) '1.0'\n+F8B7F Extract OS            00 (0) 'MS-DOS'\n+F8B80 General Purpose Flag  0800 (2048)\n       [Bit 11]              1 'Language Encoding'\n-F136D Compression Method    0000 (0) 'Stored'\n-F136F Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F1373 CRC                   00000000 (0)\n-F1377 Compressed Size       00000000 (0)\n-F137B Uncompressed Size     00000000 (0)\n-F137F Filename Length       0009 (9)\n-F1381 Extra Length          0004 (4)\n-F1383 Comment Length        0000 (0)\n-F1385 Disk Start            0000 (0)\n-F1387 Int File Attributes   0000 (0)\n+F8B82 Compression Method    0000 (0) 'Stored'\n+F8B84 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8B88 CRC                   00000000 (0)\n+F8B8C Compressed Size       00000000 (0)\n+F8B90 Uncompressed Size     00000000 (0)\n+F8B94 Filename Length       0009 (9)\n+F8B96 Extra Length          0004 (4)\n+F8B98 Comment Length        0000 (0)\n+F8B9A Disk Start            0000 (0)\n+F8B9C Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F1389 Ext File Attributes   00000000 (0)\n-F138D Local Header Offset   00000000 (0)\n-F1391 Filename              'XXXXXXXXX'\n+F8B9E Ext File Attributes   00000000 (0)\n+F8BA2 Local Header Offset   00000000 (0)\n+F8BA6 Filename              'XXXXXXXXX'\n #\n-# WARNING: Offset 0xF1391: Filename 'XXXXXXXXX'\n+# WARNING: Offset 0xF8BA6: Filename 'XXXXXXXXX'\n #          Zero length filename\n #\n-F139A Extra ID #1           CAFE (51966) 'Java Executable'\n-F139C   Length              0000 (0)\n+F8BAF Extra ID #1           CAFE (51966) 'Java Executable'\n+F8BB1   Length              0000 (0)\n \n-F139E CENTRAL HEADER #2     02014B50 (33639248)\n-F13A2 Created Zip Spec      14 (20) '2.0'\n-F13A3 Created OS            00 (0) 'MS-DOS'\n-F13A4 Extract Zip Spec      14 (20) '2.0'\n-F13A5 Extract OS            00 (0) 'MS-DOS'\n-F13A6 General Purpose Flag  0808 (2056)\n+F8BB3 CENTRAL HEADER #2     02014B50 (33639248)\n+F8BB7 Created Zip Spec      14 (20) '2.0'\n+F8BB8 Created OS            00 (0) 'MS-DOS'\n+F8BB9 Extract Zip Spec      14 (20) '2.0'\n+F8BBA Extract OS            00 (0) 'MS-DOS'\n+F8BBB General Purpose Flag  0808 (2056)\n       [Bits 1-2]            0 'Normal Compression'\n       [Bit  3]              1 'Streamed'\n       [Bit 11]              1 'Language Encoding'\n-F13A8 Compression Method    0008 (8) 'Deflated'\n-F13AA Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F13AE CRC                   BDF3B69C (3186865820)\n-F13B2 Compressed Size       0000008D (141)\n-F13B6 Uncompressed Size     000000D7 (215)\n-F13BA Filename Length       0014 (20)\n-F13BC Extra Length          0000 (0)\n-F13BE Comment Length        0000 (0)\n-F13C0 Disk Start            0000 (0)\n-F13C2 Int File Attributes   0000 (0)\n+F8BBD Compression Method    0008 (8) 'Deflated'\n+F8BBF Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8BC3 CRC                   BDF3B69C (3186865820)\n+F8BC7 Compressed Size       0000008D (141)\n+F8BCB Uncompressed Size     000000D7 (215)\n+F8BCF Filename Length       0014 (20)\n+F8BD1 Extra Length          0000 (0)\n+F8BD3 Comment Length        0000 (0)\n+F8BD5 Disk Start            0000 (0)\n+F8BD7 Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F13C4 Ext File Attributes   00000000 (0)\n-F13C8 Local Header Offset   0000002B (43)\n-F13CC Filename              'XXXXXXXXXXXXXXXXXXXX'\n+F8BD9 Ext File Attributes   00000000 (0)\n+F8BDD Local Header Offset   0000002B (43)\n+F8BE1 Filename              'XXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF13CC: Filename 'XXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8BE1: Filename 'XXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-F13E0 CENTRAL HEADER #3     02014B50 (33639248)\n-F13E4 Created Zip Spec      0A (10) '1.0'\n-F13E5 Created OS            00 (0) 'MS-DOS'\n-F13E6 Extract Zip Spec      0A (10) '1.0'\n-F13E7 Extract OS            00 (0) 'MS-DOS'\n-F13E8 General Purpose Flag  0800 (2048)\n+F8BF5 CENTRAL HEADER #3     02014B50 (33639248)\n+F8BF9 Created Zip Spec      0A (10) '1.0'\n+F8BFA Created OS            00 (0) 'MS-DOS'\n+F8BFB Extract Zip Spec      0A (10) '1.0'\n+F8BFC Extract OS            00 (0) 'MS-DOS'\n+F8BFD General Purpose Flag  0800 (2048)\n       [Bit 11]              1 'Language Encoding'\n-F13EA Compression Method    0000 (0) 'Stored'\n-F13EC Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F13F0 CRC                   00000000 (0)\n-F13F4 Compressed Size       00000000 (0)\n-F13F8 Uncompressed Size     00000000 (0)\n-F13FC Filename Length       0009 (9)\n-F13FE Extra Length          0000 (0)\n-F1400 Comment Length        0000 (0)\n-F1402 Disk Start            0000 (0)\n-F1404 Int File Attributes   0000 (0)\n+F8BFF Compression Method    0000 (0) 'Stored'\n+F8C01 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8C05 CRC                   00000000 (0)\n+F8C09 Compressed Size       00000000 (0)\n+F8C0D Uncompressed Size     00000000 (0)\n+F8C11 Filename Length       0009 (9)\n+F8C13 Extra Length          0000 (0)\n+F8C15 Comment Length        0000 (0)\n+F8C17 Disk Start            0000 (0)\n+F8C19 Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F1406 Ext File Attributes   00000000 (0)\n-F140A Local Header Offset   000000FA (250)\n-F140E Filename              'XXXXXXXXX'\n+F8C1B Ext File Attributes   00000000 (0)\n+F8C1F Local Header Offset   000000FA (250)\n+F8C23 Filename              'XXXXXXXXX'\n #\n-# WARNING: Offset 0xF140E: Filename 'XXXXXXXXX'\n+# WARNING: Offset 0xF8C23: Filename 'XXXXXXXXX'\n #          Zero length filename\n #\n \n-F1417 CENTRAL HEADER #4     02014B50 (33639248)\n-F141B Created Zip Spec      0A (10) '1.0'\n-F141C Created OS            00 (0) 'MS-DOS'\n-F141D Extract Zip Spec      0A (10) '1.0'\n-F141E Extract OS            00 (0) 'MS-DOS'\n-F141F General Purpose Flag  0800 (2048)\n+F8C2C CENTRAL HEADER #4     02014B50 (33639248)\n+F8C30 Created Zip Spec      0A (10) '1.0'\n+F8C31 Created OS            00 (0) 'MS-DOS'\n+F8C32 Extract Zip Spec      0A (10) '1.0'\n+F8C33 Extract OS            00 (0) 'MS-DOS'\n+F8C34 General Purpose Flag  0800 (2048)\n       [Bit 11]              1 'Language Encoding'\n-F1421 Compression Method    0000 (0) 'Stored'\n-F1423 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F1427 CRC                   00000000 (0)\n-F142B Compressed Size       00000000 (0)\n-F142F Uncompressed Size     00000000 (0)\n-F1433 Filename Length       0003 (3)\n-F1435 Extra Length          0000 (0)\n-F1437 Comment Length        0000 (0)\n-F1439 Disk Start            0000 (0)\n-F143B Int File Attributes   0000 (0)\n+F8C36 Compression Method    0000 (0) 'Stored'\n+F8C38 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8C3C CRC                   00000000 (0)\n+F8C40 Compressed Size       00000000 (0)\n+F8C44 Uncompressed Size     00000000 (0)\n+F8C48 Filename Length       0003 (3)\n+F8C4A Extra Length          0000 (0)\n+F8C4C Comment Length        0000 (0)\n+F8C4E Disk Start            0000 (0)\n+F8C50 Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F143D Ext File Attributes   00000000 (0)\n-F1441 Local Header Offset   00000121 (289)\n-F1445 Filename              'XXX'\n+F8C52 Ext File Attributes   00000000 (0)\n+F8C56 Local Header Offset   00000121 (289)\n+F8C5A Filename              'XXX'\n #\n-# WARNING: Offset 0xF1445: Filename 'XXX'\n+# WARNING: Offset 0xF8C5A: Filename 'XXX'\n #          Zero length filename\n #\n \n-F1448 CENTRAL HEADER #5     02014B50 (33639248)\n-F144C Created Zip Spec      0A (10) '1.0'\n-F144D Created OS            00 (0) 'MS-DOS'\n-F144E Extract Zip Spec      0A (10) '1.0'\n-F144F Extract OS            00 (0) 'MS-DOS'\n-F1450 General Purpose Flag  0800 (2048)\n+F8C5D CENTRAL HEADER #5     02014B50 (33639248)\n+F8C61 Created Zip Spec      0A (10) '1.0'\n+F8C62 Created OS            00 (0) 'MS-DOS'\n+F8C63 Extract Zip Spec      0A (10) '1.0'\n+F8C64 Extract OS            00 (0) 'MS-DOS'\n+F8C65 General Purpose Flag  0800 (2048)\n       [Bit 11]              1 'Language Encoding'\n-F1452 Compression Method    0000 (0) 'Stored'\n-F1454 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F1458 CRC                   00000000 (0)\n-F145C Compressed Size       00000000 (0)\n-F1460 Uncompressed Size     00000000 (0)\n-F1464 Filename Length       0009 (9)\n-F1466 Extra Length          0000 (0)\n-F1468 Comment Length        0000 (0)\n-F146A Disk Start            0000 (0)\n-F146C Int File Attributes   0000 (0)\n+F8C67 Compression Method    0000 (0) 'Stored'\n+F8C69 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8C6D CRC                   00000000 (0)\n+F8C71 Compressed Size       00000000 (0)\n+F8C75 Uncompressed Size     00000000 (0)\n+F8C79 Filename Length       0009 (9)\n+F8C7B Extra Length          0000 (0)\n+F8C7D Comment Length        0000 (0)\n+F8C7F Disk Start            0000 (0)\n+F8C81 Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F146E Ext File Attributes   00000000 (0)\n-F1472 Local Header Offset   00000142 (322)\n-F1476 Filename              'XXXXXXXXX'\n+F8C83 Ext File Attributes   00000000 (0)\n+F8C87 Local Header Offset   00000142 (322)\n+F8C8B Filename              'XXXXXXXXX'\n #\n-# WARNING: Offset 0xF1476: Filename 'XXXXXXXXX'\n+# WARNING: Offset 0xF8C8B: Filename 'XXXXXXXXX'\n #          Zero length filename\n #\n \n-F147F CENTRAL HEADER #6     02014B50 (33639248)\n-F1483 Created Zip Spec      0A (10) '1.0'\n-F1484 Created OS            00 (0) 'MS-DOS'\n-F1485 Extract Zip Spec      0A (10) '1.0'\n-F1486 Extract OS            00 (0) 'MS-DOS'\n-F1487 General Purpose Flag  0800 (2048)\n+F8C94 CENTRAL HEADER #6     02014B50 (33639248)\n+F8C98 Created Zip Spec      0A (10) '1.0'\n+F8C99 Created OS            00 (0) 'MS-DOS'\n+F8C9A Extract Zip Spec      0A (10) '1.0'\n+F8C9B Extract OS            00 (0) 'MS-DOS'\n+F8C9C General Purpose Flag  0800 (2048)\n       [Bit 11]              1 'Language Encoding'\n-F1489 Compression Method    0000 (0) 'Stored'\n-F148B Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F148F CRC                   00000000 (0)\n-F1493 Compressed Size       00000000 (0)\n-F1497 Uncompressed Size     00000000 (0)\n-F149B Filename Length       0012 (18)\n-F149D Extra Length          0000 (0)\n-F149F Comment Length        0000 (0)\n-F14A1 Disk Start            0000 (0)\n-F14A3 Int File Attributes   0000 (0)\n+F8C9E Compression Method    0000 (0) 'Stored'\n+F8CA0 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8CA4 CRC                   00000000 (0)\n+F8CA8 Compressed Size       00000000 (0)\n+F8CAC Uncompressed Size     00000000 (0)\n+F8CB0 Filename Length       0012 (18)\n+F8CB2 Extra Length          0000 (0)\n+F8CB4 Comment Length        0000 (0)\n+F8CB6 Disk Start            0000 (0)\n+F8CB8 Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F14A5 Ext File Attributes   00000000 (0)\n-F14A9 Local Header Offset   00000169 (361)\n-F14AD Filename              'XXXXXXXXXXXXXXXXXX'\n+F8CBA Ext File Attributes   00000000 (0)\n+F8CBE Local Header Offset   00000169 (361)\n+F8CC2 Filename              'XXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF14AD: Filename 'XXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8CC2: Filename 'XXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-F14BF CENTRAL HEADER #7     02014B50 (33639248)\n-F14C3 Created Zip Spec      0A (10) '1.0'\n-F14C4 Created OS            00 (0) 'MS-DOS'\n-F14C5 Extract Zip Spec      0A (10) '1.0'\n-F14C6 Extract OS            00 (0) 'MS-DOS'\n-F14C7 General Purpose Flag  0800 (2048)\n+F8CD4 CENTRAL HEADER #7     02014B50 (33639248)\n+F8CD8 Created Zip Spec      0A (10) '1.0'\n+F8CD9 Created OS            00 (0) 'MS-DOS'\n+F8CDA Extract Zip Spec      0A (10) '1.0'\n+F8CDB Extract OS            00 (0) 'MS-DOS'\n+F8CDC General Purpose Flag  0800 (2048)\n       [Bit 11]              1 'Language Encoding'\n-F14C9 Compression Method    0000 (0) 'Stored'\n-F14CB Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F14CF CRC                   00000000 (0)\n-F14D3 Compressed Size       00000000 (0)\n-F14D7 Uncompressed Size     00000000 (0)\n-F14DB Filename Length       000F (15)\n-F14DD Extra Length          0000 (0)\n-F14DF Comment Length        0000 (0)\n-F14E1 Disk Start            0000 (0)\n-F14E3 Int File Attributes   0000 (0)\n+F8CDE Compression Method    0000 (0) 'Stored'\n+F8CE0 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8CE4 CRC                   00000000 (0)\n+F8CE8 Compressed Size       00000000 (0)\n+F8CEC Uncompressed Size     00000000 (0)\n+F8CF0 Filename Length       000F (15)\n+F8CF2 Extra Length          0000 (0)\n+F8CF4 Comment Length        0000 (0)\n+F8CF6 Disk Start            0000 (0)\n+F8CF8 Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F14E5 Ext File Attributes   00000000 (0)\n-F14E9 Local Header Offset   00000199 (409)\n-F14ED Filename              'XXXXXXXXXXXXXXX'\n+F8CFA Ext File Attributes   00000000 (0)\n+F8CFE Local Header Offset   00000199 (409)\n+F8D02 Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF14ED: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8D02: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-F14FC CENTRAL HEADER #8     02014B50 (33639248)\n-F1500 Created Zip Spec      0A (10) '1.0'\n-F1501 Created OS            00 (0) 'MS-DOS'\n-F1502 Extract Zip Spec      0A (10) '1.0'\n-F1503 Extract OS            00 (0) 'MS-DOS'\n-F1504 General Purpose Flag  0800 (2048)\n+F8D11 CENTRAL HEADER #8     02014B50 (33639248)\n+F8D15 Created Zip Spec      0A (10) '1.0'\n+F8D16 Created OS            00 (0) 'MS-DOS'\n+F8D17 Extract Zip Spec      0A (10) '1.0'\n+F8D18 Extract OS            00 (0) 'MS-DOS'\n+F8D19 General Purpose Flag  0800 (2048)\n       [Bit 11]              1 'Language Encoding'\n-F1506 Compression Method    0000 (0) 'Stored'\n-F1508 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F150C CRC                   00000000 (0)\n-F1510 Compressed Size       00000000 (0)\n-F1514 Uncompressed Size     00000000 (0)\n-F1518 Filename Length       0018 (24)\n-F151A Extra Length          0000 (0)\n-F151C Comment Length        0000 (0)\n-F151E Disk Start            0000 (0)\n-F1520 Int File Attributes   0000 (0)\n+F8D1B Compression Method    0000 (0) 'Stored'\n+F8D1D Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8D21 CRC                   00000000 (0)\n+F8D25 Compressed Size       00000000 (0)\n+F8D29 Uncompressed Size     00000000 (0)\n+F8D2D Filename Length       0018 (24)\n+F8D2F Extra Length          0000 (0)\n+F8D31 Comment Length        0000 (0)\n+F8D33 Disk Start            0000 (0)\n+F8D35 Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F1522 Ext File Attributes   00000000 (0)\n-F1526 Local Header Offset   000001C6 (454)\n-F152A Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+F8D37 Ext File Attributes   00000000 (0)\n+F8D3B Local Header Offset   000001C6 (454)\n+F8D3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF152A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8D3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-F1542 CENTRAL HEADER #9     02014B50 (33639248)\n-F1546 Created Zip Spec      0A (10) '1.0'\n-F1547 Created OS            00 (0) 'MS-DOS'\n-F1548 Extract Zip Spec      0A (10) '1.0'\n-F1549 Extract OS            00 (0) 'MS-DOS'\n-F154A General Purpose Flag  0800 (2048)\n+F8D57 CENTRAL HEADER #9     02014B50 (33639248)\n+F8D5B Created Zip Spec      0A (10) '1.0'\n+F8D5C Created OS            00 (0) 'MS-DOS'\n+F8D5D Extract Zip Spec      0A (10) '1.0'\n+F8D5E Extract OS            00 (0) 'MS-DOS'\n+F8D5F General Purpose Flag  0800 (2048)\n       [Bit 11]              1 'Language Encoding'\n-F154C Compression Method    0000 (0) 'Stored'\n-F154E Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F1552 CRC                   00000000 (0)\n-F1556 Compressed Size       00000000 (0)\n-F155A Uncompressed Size     00000000 (0)\n-F155E Filename Length       0027 (39)\n-F1560 Extra Length          0000 (0)\n-F1562 Comment Length        0000 (0)\n-F1564 Disk Start            0000 (0)\n-F1566 Int File Attributes   0000 (0)\n+F8D61 Compression Method    0000 (0) 'Stored'\n+F8D63 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8D67 CRC                   00000000 (0)\n+F8D6B Compressed Size       00000000 (0)\n+F8D6F Uncompressed Size     00000000 (0)\n+F8D73 Filename Length       0027 (39)\n+F8D75 Extra Length          0000 (0)\n+F8D77 Comment Length        0000 (0)\n+F8D79 Disk Start            0000 (0)\n+F8D7B Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F1568 Ext File Attributes   00000000 (0)\n-F156C Local Header Offset   000001FC (508)\n-F1570 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+F8D7D Ext File Attributes   00000000 (0)\n+F8D81 Local Header Offset   000001FC (508)\n+F8D85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF1570: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8D85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-F1597 CENTRAL HEADER #10    02014B50 (33639248)\n-F159B Created Zip Spec      14 (20) '2.0'\n-F159C Created OS            00 (0) 'MS-DOS'\n-F159D Extract Zip Spec      14 (20) '2.0'\n-F159E Extract OS            00 (0) 'MS-DOS'\n-F159F General Purpose Flag  0808 (2056)\n+F8DAC CENTRAL HEADER #10    02014B50 (33639248)\n+F8DB0 Created Zip Spec      14 (20) '2.0'\n+F8DB1 Created OS            00 (0) 'MS-DOS'\n+F8DB2 Extract Zip Spec      14 (20) '2.0'\n+F8DB3 Extract OS            00 (0) 'MS-DOS'\n+F8DB4 General Purpose Flag  0808 (2056)\n       [Bits 1-2]            0 'Normal Compression'\n       [Bit  3]              1 'Streamed'\n       [Bit 11]              1 'Language Encoding'\n-F15A1 Compression Method    0008 (8) 'Deflated'\n-F15A3 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F15A7 CRC                   0AC69226 (180785702)\n-F15AB Compressed Size       00044361 (279393)\n-F15AF Uncompressed Size     00067D93 (425363)\n-F15B3 Filename Length       0015 (21)\n-F15B5 Extra Length          0000 (0)\n-F15B7 Comment Length        0000 (0)\n-F15B9 Disk Start            0000 (0)\n-F15BB Int File Attributes   0000 (0)\n+F8DB6 Compression Method    0008 (8) 'Deflated'\n+F8DB8 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8DBC CRC                   51FB39FC (1375418876)\n+F8DC0 Compressed Size       00044361 (279393)\n+F8DC4 Uncompressed Size     00067D93 (425363)\n+F8DC8 Filename Length       0015 (21)\n+F8DCA Extra Length          0000 (0)\n+F8DCC Comment Length        0000 (0)\n+F8DCE Disk Start            0000 (0)\n+F8DD0 Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F15BD Ext File Attributes   00000000 (0)\n-F15C1 Local Header Offset   00000241 (577)\n-F15C5 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+F8DD2 Ext File Attributes   00000000 (0)\n+F8DD6 Local Header Offset   00000241 (577)\n+F8DDA Filename              'XXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF15C5: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8DDA: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-F15DA CENTRAL HEADER #11    02014B50 (33639248)\n-F15DE Created Zip Spec      14 (20) '2.0'\n-F15DF Created OS            00 (0) 'MS-DOS'\n-F15E0 Extract Zip Spec      14 (20) '2.0'\n-F15E1 Extract OS            00 (0) 'MS-DOS'\n-F15E2 General Purpose Flag  0808 (2056)\n+F8DEF CENTRAL HEADER #11    02014B50 (33639248)\n+F8DF3 Created Zip Spec      14 (20) '2.0'\n+F8DF4 Created OS            00 (0) 'MS-DOS'\n+F8DF5 Extract Zip Spec      14 (20) '2.0'\n+F8DF6 Extract OS            00 (0) 'MS-DOS'\n+F8DF7 General Purpose Flag  0808 (2056)\n       [Bits 1-2]            0 'Normal Compression'\n       [Bit  3]              1 'Streamed'\n       [Bit 11]              1 'Language Encoding'\n-F15E4 Compression Method    0008 (8) 'Deflated'\n-F15E6 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F15EA CRC                   DF082543 (3741852995)\n-F15EE Compressed Size       000AB9D1 (702929)\n-F15F2 Uncompressed Size     00350627 (3474983)\n-F15F6 Filename Length       0018 (24)\n-F15F8 Extra Length          0000 (0)\n-F15FA Comment Length        0000 (0)\n-F15FC Disk Start            0000 (0)\n-F15FE Int File Attributes   0000 (0)\n+F8DF9 Compression Method    0008 (8) 'Deflated'\n+F8DFB Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8DFF CRC                   6A282AC4 (1781017284)\n+F8E03 Compressed Size       000B31E6 (733670)\n+F8E07 Uncompressed Size     00359CE8 (3513576)\n+F8E0B Filename Length       0018 (24)\n+F8E0D Extra Length          0000 (0)\n+F8E0F Comment Length        0000 (0)\n+F8E11 Disk Start            0000 (0)\n+F8E13 Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F1600 Ext File Attributes   00000000 (0)\n-F1604 Local Header Offset   000445E5 (280037)\n-F1608 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+F8E15 Ext File Attributes   00000000 (0)\n+F8E19 Local Header Offset   000445E5 (280037)\n+F8E1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF1608: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8E1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-F1620 CENTRAL HEADER #12    02014B50 (33639248)\n-F1624 Created Zip Spec      14 (20) '2.0'\n-F1625 Created OS            00 (0) 'MS-DOS'\n-F1626 Extract Zip Spec      14 (20) '2.0'\n-F1627 Extract OS            00 (0) 'MS-DOS'\n-F1628 General Purpose Flag  0808 (2056)\n+F8E35 CENTRAL HEADER #12    02014B50 (33639248)\n+F8E39 Created Zip Spec      14 (20) '2.0'\n+F8E3A Created OS            00 (0) 'MS-DOS'\n+F8E3B Extract Zip Spec      14 (20) '2.0'\n+F8E3C Extract OS            00 (0) 'MS-DOS'\n+F8E3D General Purpose Flag  0808 (2056)\n       [Bits 1-2]            0 'Normal Compression'\n       [Bit  3]              1 'Streamed'\n       [Bit 11]              1 'Language Encoding'\n-F162A Compression Method    0008 (8) 'Deflated'\n-F162C Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F1630 CRC                   3AE70DB0 (988220848)\n-F1634 Compressed Size       00000D4B (3403)\n-F1638 Uncompressed Size     00002E51 (11857)\n-F163C Filename Length       0026 (38)\n-F163E Extra Length          0000 (0)\n-F1640 Comment Length        0000 (0)\n-F1642 Disk Start            0000 (0)\n-F1644 Int File Attributes   0000 (0)\n+F8E3F Compression Method    0008 (8) 'Deflated'\n+F8E41 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8E45 CRC                   3AE70DB0 (988220848)\n+F8E49 Compressed Size       00000D4B (3403)\n+F8E4D Uncompressed Size     00002E51 (11857)\n+F8E51 Filename Length       0026 (38)\n+F8E53 Extra Length          0000 (0)\n+F8E55 Comment Length        0000 (0)\n+F8E57 Disk Start            0000 (0)\n+F8E59 Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F1646 Ext File Attributes   00000000 (0)\n-F164A Local Header Offset   000EFFFC (983036)\n-F164E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+F8E5B Ext File Attributes   00000000 (0)\n+F8E5F Local Header Offset   000F7811 (1013777)\n+F8E63 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF164E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8E63: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-F1674 CENTRAL HEADER #13    02014B50 (33639248)\n-F1678 Created Zip Spec      14 (20) '2.0'\n-F1679 Created OS            00 (0) 'MS-DOS'\n-F167A Extract Zip Spec      14 (20) '2.0'\n-F167B Extract OS            00 (0) 'MS-DOS'\n-F167C General Purpose Flag  0808 (2056)\n+F8E89 CENTRAL HEADER #13    02014B50 (33639248)\n+F8E8D Created Zip Spec      14 (20) '2.0'\n+F8E8E Created OS            00 (0) 'MS-DOS'\n+F8E8F Extract Zip Spec      14 (20) '2.0'\n+F8E90 Extract OS            00 (0) 'MS-DOS'\n+F8E91 General Purpose Flag  0808 (2056)\n       [Bits 1-2]            0 'Normal Compression'\n       [Bit  3]              1 'Streamed'\n       [Bit 11]              1 'Language Encoding'\n-F167E Compression Method    0008 (8) 'Deflated'\n-F1680 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F1684 CRC                   BBAE6A63 (3148769891)\n-F1688 Compressed Size       000000BD (189)\n-F168C Uncompressed Size     000000E7 (231)\n-F1690 Filename Length       0024 (36)\n-F1692 Extra Length          0000 (0)\n-F1694 Comment Length        0000 (0)\n-F1696 Disk Start            0000 (0)\n-F1698 Int File Attributes   0000 (0)\n+F8E93 Compression Method    0008 (8) 'Deflated'\n+F8E95 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8E99 CRC                   BBAE6A63 (3148769891)\n+F8E9D Compressed Size       000000BD (189)\n+F8EA1 Uncompressed Size     000000E7 (231)\n+F8EA5 Filename Length       0024 (36)\n+F8EA7 Extra Length          0000 (0)\n+F8EA9 Comment Length        0000 (0)\n+F8EAB Disk Start            0000 (0)\n+F8EAD Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F169A Ext File Attributes   00000000 (0)\n-F169E Local Header Offset   000F0D9B (986523)\n-F16A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+F8EAF Ext File Attributes   00000000 (0)\n+F8EB3 Local Header Offset   000F85B0 (1017264)\n+F8EB7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF16A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8EB7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-F16C6 CENTRAL HEADER #14    02014B50 (33639248)\n-F16CA Created Zip Spec      14 (20) '2.0'\n-F16CB Created OS            00 (0) 'MS-DOS'\n-F16CC Extract Zip Spec      14 (20) '2.0'\n-F16CD Extract OS            00 (0) 'MS-DOS'\n-F16CE General Purpose Flag  0808 (2056)\n+F8EDB CENTRAL HEADER #14    02014B50 (33639248)\n+F8EDF Created Zip Spec      14 (20) '2.0'\n+F8EE0 Created OS            00 (0) 'MS-DOS'\n+F8EE1 Extract Zip Spec      14 (20) '2.0'\n+F8EE2 Extract OS            00 (0) 'MS-DOS'\n+F8EE3 General Purpose Flag  0808 (2056)\n       [Bits 1-2]            0 'Normal Compression'\n       [Bit  3]              1 'Streamed'\n       [Bit 11]              1 'Language Encoding'\n-F16D0 Compression Method    0008 (8) 'Deflated'\n-F16D2 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F16D6 CRC                   9BD1E5B5 (2614224309)\n-F16DA Compressed Size       0000029B (667)\n-F16DE Uncompressed Size     000008F3 (2291)\n-F16E2 Filename Length       002E (46)\n-F16E4 Extra Length          0000 (0)\n-F16E6 Comment Length        0000 (0)\n-F16E8 Disk Start            0000 (0)\n-F16EA Int File Attributes   0000 (0)\n+F8EE5 Compression Method    0008 (8) 'Deflated'\n+F8EE7 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8EEB CRC                   9BD1E5B5 (2614224309)\n+F8EEF Compressed Size       0000029B (667)\n+F8EF3 Uncompressed Size     000008F3 (2291)\n+F8EF7 Filename Length       002E (46)\n+F8EF9 Extra Length          0000 (0)\n+F8EFB Comment Length        0000 (0)\n+F8EFD Disk Start            0000 (0)\n+F8EFF Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F16EC Ext File Attributes   00000000 (0)\n-F16F0 Local Header Offset   000F0EAA (986794)\n-F16F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+F8F01 Ext File Attributes   00000000 (0)\n+F8F05 Local Header Offset   000F86BF (1017535)\n+F8F09 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF16F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8F09: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-F1722 CENTRAL HEADER #15    02014B50 (33639248)\n-F1726 Created Zip Spec      14 (20) '2.0'\n-F1727 Created OS            00 (0) 'MS-DOS'\n-F1728 Extract Zip Spec      14 (20) '2.0'\n-F1729 Extract OS            00 (0) 'MS-DOS'\n-F172A General Purpose Flag  0808 (2056)\n+F8F37 CENTRAL HEADER #15    02014B50 (33639248)\n+F8F3B Created Zip Spec      14 (20) '2.0'\n+F8F3C Created OS            00 (0) 'MS-DOS'\n+F8F3D Extract Zip Spec      14 (20) '2.0'\n+F8F3E Extract OS            00 (0) 'MS-DOS'\n+F8F3F General Purpose Flag  0808 (2056)\n       [Bits 1-2]            0 'Normal Compression'\n       [Bit  3]              1 'Streamed'\n       [Bit 11]              1 'Language Encoding'\n-F172C Compression Method    0008 (8) 'Deflated'\n-F172E Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F1732 CRC                   F6C13472 (4139857010)\n-F1736 Compressed Size       00000036 (54)\n-F173A Uncompressed Size     00000039 (57)\n-F173E Filename Length       0035 (53)\n-F1740 Extra Length          0000 (0)\n-F1742 Comment Length        0000 (0)\n-F1744 Disk Start            0000 (0)\n-F1746 Int File Attributes   0000 (0)\n+F8F41 Compression Method    0008 (8) 'Deflated'\n+F8F43 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8F47 CRC                   F6C13472 (4139857010)\n+F8F4B Compressed Size       00000036 (54)\n+F8F4F Uncompressed Size     00000039 (57)\n+F8F53 Filename Length       0035 (53)\n+F8F55 Extra Length          0000 (0)\n+F8F57 Comment Length        0000 (0)\n+F8F59 Disk Start            0000 (0)\n+F8F5B Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F1748 Ext File Attributes   00000000 (0)\n-F174C Local Header Offset   000F11A1 (987553)\n-F1750 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+F8F5D Ext File Attributes   00000000 (0)\n+F8F61 Local Header Offset   000F89B6 (1018294)\n+F8F65 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF1750: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8F65: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-F1785 CENTRAL HEADER #16    02014B50 (33639248)\n-F1789 Created Zip Spec      14 (20) '2.0'\n-F178A Created OS            00 (0) 'MS-DOS'\n-F178B Extract Zip Spec      14 (20) '2.0'\n-F178C Extract OS            00 (0) 'MS-DOS'\n-F178D General Purpose Flag  0808 (2056)\n+F8F9A CENTRAL HEADER #16    02014B50 (33639248)\n+F8F9E Created Zip Spec      14 (20) '2.0'\n+F8F9F Created OS            00 (0) 'MS-DOS'\n+F8FA0 Extract Zip Spec      14 (20) '2.0'\n+F8FA1 Extract OS            00 (0) 'MS-DOS'\n+F8FA2 General Purpose Flag  0808 (2056)\n       [Bits 1-2]            0 'Normal Compression'\n       [Bit  3]              1 'Streamed'\n       [Bit 11]              1 'Language Encoding'\n-F178F Compression Method    0008 (8) 'Deflated'\n-F1791 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n-F1795 CRC                   17643655 (392443477)\n-F1799 Compressed Size       000000EA (234)\n-F179D Uncompressed Size     0000014B (331)\n-F17A1 Filename Length       0011 (17)\n-F17A3 Extra Length          0000 (0)\n-F17A5 Comment Length        0000 (0)\n-F17A7 Disk Start            0000 (0)\n-F17A9 Int File Attributes   0000 (0)\n+F8FA4 Compression Method    0008 (8) 'Deflated'\n+F8FA6 Modification Time     590FB61C (1494201884) 'Thu Aug 15 22:48:56 2024'\n+F8FAA CRC                   17643655 (392443477)\n+F8FAE Compressed Size       000000EA (234)\n+F8FB2 Uncompressed Size     0000014B (331)\n+F8FB6 Filename Length       0011 (17)\n+F8FB8 Extra Length          0000 (0)\n+F8FBA Comment Length        0000 (0)\n+F8FBC Disk Start            0000 (0)\n+F8FBE Int File Attributes   0000 (0)\n       [Bit 0]               0 'Binary Data'\n-F17AB Ext File Attributes   00000000 (0)\n-F17AF Local Header Offset   000F123A (987706)\n-F17B3 Filename              'XXXXXXXXXXXXXXXXX'\n+F8FC0 Ext File Attributes   00000000 (0)\n+F8FC4 Local Header Offset   000F8A4F (1018447)\n+F8FC8 Filename              'XXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF17B3: Filename 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8FC8: Filename 'XXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-F17C4 END CENTRAL HEADER    06054B50 (101010256)\n-F17C8 Number of this disk   0000 (0)\n-F17CA Central Dir Disk no   0000 (0)\n-F17CC Entries in this disk  0010 (16)\n-F17CE Total Entries         0010 (16)\n-F17D0 Size of Central Dir   00000461 (1121)\n-F17D4 Offset to Central Dir 000F1363 (988003)\n-F17D8 Comment Length        0000 (0)\n+F8FD9 END CENTRAL HEADER    06054B50 (101010256)\n+F8FDD Number of this disk   0000 (0)\n+F8FDF Central Dir Disk no   0000 (0)\n+F8FE1 Entries in this disk  0010 (16)\n+F8FE3 Total Entries         0010 (16)\n+F8FE5 Size of Central Dir   00000461 (1121)\n+F8FE9 Offset to Central Dir 000F8B78 (1018744)\n+F8FED Comment Length        0000 (0)\n #\n # Warning Count: 32\n #\n # Done\n"}, {"source1": "graphiql/graphiql.css", "source2": "graphiql/graphiql.css", "unified_diff": "@@ -1195,15 +1195,15 @@\n   top: 0\n }\n .graphiql-doc-explorer-search:focus-within {\n     left: 0;\n   }\n .graphiql-doc-explorer-search:not(:focus-within) [role='combobox'] {\n     height: 24px;\n-    width: 4ch;\n+    width: 5ch;\n   }\n .graphiql-doc-explorer-search [role='combobox']:focus {\n     width: 100%;\n   }\n \n /* The back-button in the doc explorer */\n a.graphiql-doc-explorer-back {\n"}, {"source1": "graphiql/graphiql.min.js", "source2": "graphiql/graphiql.min.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,22 +1,21 @@\n /******/\n (function() { // webpackBootstrap\n     /******/\n-    \"use strict\";\n-    /******/\n     var __webpack_modules__ = ({\n \n         /***/\n         \"../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js\":\n             /*!**************************************************************************************!*\\\n               !*** ../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js ***!\n               \\**************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports[\"default\"] = void 0;\n                 var _memoize = _interopRequireDefault(__webpack_require__( /*! @emotion/memoize */ \"../../../node_modules/@emotion/memoize/dist/memoize.browser.esm.js\"));\n@@ -46,14 +45,15 @@\n         \"../../../node_modules/@emotion/memoize/dist/memoize.browser.esm.js\":\n             /*!**************************************************************************!*\\\n               !*** ../../../node_modules/@emotion/memoize/dist/memoize.browser.esm.js ***!\n               \\**************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports[\"default\"] = void 0;\n \n@@ -73,14 +73,15 @@\n         \"../../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js\":\n             /*!****************************************************************************!*\\\n               !*** ../../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js ***!\n               \\****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.computePosition = exports.autoPlacement = exports.arrow = void 0;\n                 exports.detectOverflow = detectOverflow;\n@@ -1233,14 +1234,15 @@\n         \"../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js\":\n             /*!**************************************************************************!*\\\n               !*** ../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js ***!\n               \\**************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"arrow\", ({\n                     enumerable: true,\n@@ -1975,14 +1977,15 @@\n         \"../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js\":\n             /*!**************************************************************************************!*\\\n               !*** ../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js ***!\n               \\**************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.arrow = void 0;\n                 Object.defineProperty(exports, \"autoPlacement\", ({\n@@ -2361,14 +2364,15 @@\n         \"../../../node_modules/@motionone/animation/dist/Animation.es.js\":\n             /*!***********************************************************************!*\\\n               !*** ../../../node_modules/@motionone/animation/dist/Animation.es.js ***!\n               \\***********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.Animation = void 0;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -2540,14 +2544,15 @@\n         \"../../../node_modules/@motionone/animation/dist/index.es.js\":\n             /*!*******************************************************************!*\\\n               !*** ../../../node_modules/@motionone/animation/dist/index.es.js ***!\n               \\*******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"Animation\", ({\n                     enumerable: true,\n@@ -2571,14 +2576,15 @@\n         \"../../../node_modules/@motionone/animation/dist/utils/easing.es.js\":\n             /*!**************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/animation/dist/utils/easing.es.js ***!\n               \\**************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getEasingFunction = getEasingFunction;\n                 var _easing = __webpack_require__( /*! @motionone/easing */ \"../../../node_modules/@motionone/easing/dist/index.es.js\");\n@@ -2616,14 +2622,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js\":\n             /*!*****************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js ***!\n               \\*****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.animateStyle = animateStyle;\n                 var _dataEs = __webpack_require__( /*! ./data.es.js */ \"../../../node_modules/@motionone/dom/dist/animate/data.es.js\");\n@@ -2818,14 +2825,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/data.es.js\":\n             /*!********************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/data.es.js ***!\n               \\********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getAnimationData = getAnimationData;\n                 exports.getMotionValue = getMotionValue;\n@@ -2856,14 +2864,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/index.es.js\":\n             /*!*********************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/index.es.js ***!\n               \\*********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.animate = animate;\n                 var _animateStyleEs = __webpack_require__( /*! ./animate-style.es.js */ \"../../../node_modules/@motionone/dom/dist/animate/animate-style.es.js\");\n@@ -2908,14 +2917,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/style.es.js\":\n             /*!*********************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/style.es.js ***!\n               \\*********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.style = void 0;\n                 var _cssVarEs = __webpack_require__( /*! ./utils/css-var.es.js */ \"../../../node_modules/@motionone/dom/dist/animate/utils/css-var.es.js\");\n@@ -2948,14 +2958,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/utils/controls.es.js\":\n             /*!******************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/utils/controls.es.js ***!\n               \\******************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.withControls = exports.controls = void 0;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -3030,14 +3041,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/utils/css-var.es.js\":\n             /*!*****************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/utils/css-var.es.js ***!\n               \\*****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isCssVar = void 0;\n                 exports.registerCssVariable = registerCssVariable;\n@@ -3071,14 +3083,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/utils/easing.es.js\":\n             /*!****************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/utils/easing.es.js ***!\n               \\****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.cubicBezierAsString = exports.convertEasing = void 0;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -3094,14 +3107,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/utils/feature-detection.es.js\":\n             /*!***************************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/utils/feature-detection.es.js ***!\n               \\***************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.supports = void 0;\n                 const testAnimation = keyframes => document.createElement(\"div\").animate(keyframes, {\n@@ -3140,14 +3154,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js\":\n             /*!************************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js ***!\n               \\************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getStyleName = getStyleName;\n                 var _transformsEs = __webpack_require__( /*! ./transforms.es.js */ \"../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js\");\n@@ -3164,14 +3179,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/utils/keyframes.es.js\":\n             /*!*******************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/utils/keyframes.es.js ***!\n               \\*******************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.hydrateKeyframes = hydrateKeyframes;\n                 exports.keyframesList = void 0;\n@@ -3194,14 +3210,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/utils/options.es.js\":\n             /*!*****************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/utils/options.es.js ***!\n               \\*****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getOptions = void 0;\n                 const getOptions = (options, key) =>\n@@ -3220,14 +3237,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/utils/stop-animation.es.js\":\n             /*!************************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/utils/stop-animation.es.js ***!\n               \\************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.stopAnimation = stopAnimation;\n \n@@ -3251,14 +3269,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/utils/style-object.es.js\":\n             /*!**********************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/utils/style-object.es.js ***!\n               \\**********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.createStyles = createStyles;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -3298,14 +3317,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/utils/style-string.es.js\":\n             /*!**********************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/utils/style-string.es.js ***!\n               \\**********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.createStyleString = createStyleString;\n                 var _styleObjectEs = __webpack_require__( /*! ./style-object.es.js */ \"../../../node_modules/@motionone/dom/dist/animate/utils/style-object.es.js\");\n@@ -3329,14 +3349,15 @@\n         \"../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js\":\n             /*!********************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/animate/utils/transforms.es.js ***!\n               \\********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.transformDefinitions = exports.transformAlias = exports.isTransform = exports.compareTransformOrder = exports.buildTransformTemplate = exports.axes = exports.asTransformCssVar = exports.addTransformToElement = void 0;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -3424,14 +3445,15 @@\n         \"../../../node_modules/@motionone/dom/dist/easing/create-generator-easing.es.js\":\n             /*!**************************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/easing/create-generator-easing.es.js ***!\n               \\**************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.createGeneratorEasing = createGeneratorEasing;\n                 var _generators = __webpack_require__( /*! @motionone/generators */ \"../../../node_modules/@motionone/generators/dist/index.es.js\");\n@@ -3521,14 +3543,15 @@\n         \"../../../node_modules/@motionone/dom/dist/easing/glide/index.es.js\":\n             /*!**************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/easing/glide/index.es.js ***!\n               \\**************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.glide = void 0;\n                 var _generators = __webpack_require__( /*! @motionone/generators */ \"../../../node_modules/@motionone/generators/dist/index.es.js\");\n@@ -3542,14 +3565,15 @@\n         \"../../../node_modules/@motionone/dom/dist/easing/spring/index.es.js\":\n             /*!***************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/easing/spring/index.es.js ***!\n               \\***************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.spring = void 0;\n                 var _generators = __webpack_require__( /*! @motionone/generators */ \"../../../node_modules/@motionone/generators/dist/index.es.js\");\n@@ -3563,14 +3587,15 @@\n         \"../../../node_modules/@motionone/dom/dist/gestures/in-view.es.js\":\n             /*!************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/gestures/in-view.es.js ***!\n               \\************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.inView = inView;\n                 var _resolveElementsEs = __webpack_require__( /*! ../utils/resolve-elements.es.js */ \"../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js\");\n@@ -3632,14 +3657,15 @@\n         \"../../../node_modules/@motionone/dom/dist/gestures/resize/handle-element.es.js\":\n             /*!**************************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/gestures/resize/handle-element.es.js ***!\n               \\**************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.resizeElement = resizeElement;\n                 var _resolveElementsEs = __webpack_require__( /*! ../../utils/resolve-elements.es.js */ \"../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js\");\n@@ -3722,14 +3748,15 @@\n         \"../../../node_modules/@motionone/dom/dist/gestures/resize/handle-window.es.js\":\n             /*!*************************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/gestures/resize/handle-window.es.js ***!\n               \\*************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.resizeWindow = resizeWindow;\n                 const windowCallbacks = new Set();\n@@ -3769,14 +3796,15 @@\n         \"../../../node_modules/@motionone/dom/dist/gestures/resize/index.es.js\":\n             /*!*****************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/gestures/resize/index.es.js ***!\n               \\*****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.resize = resize;\n                 var _handleElementEs = __webpack_require__( /*! ./handle-element.es.js */ \"../../../node_modules/@motionone/dom/dist/gestures/resize/handle-element.es.js\");\n@@ -3793,14 +3821,15 @@\n         \"../../../node_modules/@motionone/dom/dist/gestures/scroll/index.es.js\":\n             /*!*****************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/index.es.js ***!\n               \\*****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.scroll = scroll;\n                 var _tslib = __webpack_require__( /*! tslib */ \"../../../node_modules/tslib/tslib.es6.mjs\");\n@@ -3888,14 +3917,15 @@\n         \"../../../node_modules/@motionone/dom/dist/gestures/scroll/info.es.js\":\n             /*!****************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/info.es.js ***!\n               \\****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.createScrollInfo = void 0;\n                 exports.updateScrollInfo = updateScrollInfo;\n@@ -3962,14 +3992,15 @@\n         \"../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/edge.es.js\":\n             /*!************************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/edge.es.js ***!\n               \\************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.namedEdges = void 0;\n                 exports.resolveEdge = resolveEdge;\n@@ -4022,14 +4053,15 @@\n         \"../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/index.es.js\":\n             /*!*************************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/index.es.js ***!\n               \\*************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.resolveOffsets = resolveOffsets;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -4103,14 +4135,15 @@\n         \"../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/inset.es.js\":\n             /*!*************************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/inset.es.js ***!\n               \\*************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.calcInset = calcInset;\n \n@@ -4150,14 +4183,15 @@\n         \"../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/offset.es.js\":\n             /*!**************************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/offset.es.js ***!\n               \\**************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.resolveOffset = resolveOffset;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -4200,14 +4234,15 @@\n         \"../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/presets.es.js\":\n             /*!***************************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/offsets/presets.es.js ***!\n               \\***************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.ScrollOffset = void 0;\n                 const ScrollOffset = exports.ScrollOffset = {\n@@ -4236,14 +4271,15 @@\n         \"../../../node_modules/@motionone/dom/dist/gestures/scroll/on-scroll-handler.es.js\":\n             /*!*****************************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/gestures/scroll/on-scroll-handler.es.js ***!\n               \\*****************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.createOnScrollHandler = createOnScrollHandler;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -4313,14 +4349,15 @@\n         \"../../../node_modules/@motionone/dom/dist/index.es.js\":\n             /*!*************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/index.es.js ***!\n               \\*************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"ScrollOffset\", ({\n                     enumerable: true,\n@@ -4455,14 +4492,15 @@\n         \"../../../node_modules/@motionone/dom/dist/state/gestures/hover.es.js\":\n             /*!****************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/state/gestures/hover.es.js ***!\n               \\****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.hover = void 0;\n                 var _eventsEs = __webpack_require__( /*! ../utils/events.es.js */ \"../../../node_modules/@motionone/dom/dist/state/utils/events.es.js\");\n@@ -4495,14 +4533,15 @@\n         \"../../../node_modules/@motionone/dom/dist/state/gestures/in-view.es.js\":\n             /*!******************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/state/gestures/in-view.es.js ***!\n               \\******************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.inView = void 0;\n                 var _tslib = __webpack_require__( /*! tslib */ \"../../../node_modules/tslib/tslib.es6.mjs\");\n@@ -4540,14 +4579,15 @@\n         \"../../../node_modules/@motionone/dom/dist/state/gestures/press.es.js\":\n             /*!****************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/state/gestures/press.es.js ***!\n               \\****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.press = void 0;\n                 var _eventsEs = __webpack_require__( /*! ../utils/events.es.js */ \"../../../node_modules/@motionone/dom/dist/state/utils/events.es.js\");\n@@ -4582,14 +4622,15 @@\n         \"../../../node_modules/@motionone/dom/dist/state/index.es.js\":\n             /*!*******************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/state/index.es.js ***!\n               \\*******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.createMotionState = createMotionState;\n                 exports.mountedStates = void 0;\n@@ -4775,14 +4816,15 @@\n         \"../../../node_modules/@motionone/dom/dist/state/utils/events.es.js\":\n             /*!**************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/state/utils/events.es.js ***!\n               \\**************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.dispatchPointerEvent = dispatchPointerEvent;\n                 exports.dispatchViewEvent = dispatchViewEvent;\n@@ -4817,14 +4859,15 @@\n         \"../../../node_modules/@motionone/dom/dist/state/utils/has-changed.es.js\":\n             /*!*******************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/state/utils/has-changed.es.js ***!\n               \\*******************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.hasChanged = hasChanged;\n                 exports.shallowCompare = shallowCompare;\n@@ -4851,14 +4894,15 @@\n         \"../../../node_modules/@motionone/dom/dist/state/utils/is-variant.es.js\":\n             /*!******************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/state/utils/is-variant.es.js ***!\n               \\******************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isVariant = isVariant;\n \n@@ -4873,14 +4917,15 @@\n         \"../../../node_modules/@motionone/dom/dist/state/utils/resolve-variant.es.js\":\n             /*!***********************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/state/utils/resolve-variant.es.js ***!\n               \\***********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.resolveVariant = resolveVariant;\n                 var _isVariantEs = __webpack_require__( /*! ./is-variant.es.js */ \"../../../node_modules/@motionone/dom/dist/state/utils/is-variant.es.js\");\n@@ -4900,14 +4945,15 @@\n         \"../../../node_modules/@motionone/dom/dist/state/utils/schedule.es.js\":\n             /*!****************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/state/utils/schedule.es.js ***!\n               \\****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.scheduleAnimation = scheduleAnimation;\n                 exports.unscheduleAnimation = unscheduleAnimation;\n@@ -4945,14 +4991,15 @@\n         \"../../../node_modules/@motionone/dom/dist/timeline/index.es.js\":\n             /*!**********************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/timeline/index.es.js ***!\n               \\**********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.createAnimationsFromTimeline = createAnimationsFromTimeline;\n                 exports.timeline = timeline;\n@@ -5164,14 +5211,15 @@\n         \"../../../node_modules/@motionone/dom/dist/timeline/utils/calc-time.es.js\":\n             /*!********************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/timeline/utils/calc-time.es.js ***!\n               \\********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.calcNextTime = calcNextTime;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -5196,14 +5244,15 @@\n         \"../../../node_modules/@motionone/dom/dist/timeline/utils/edit.es.js\":\n             /*!***************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/timeline/utils/edit.es.js ***!\n               \\***************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.addKeyframes = addKeyframes;\n                 exports.eraseKeyframes = eraseKeyframes;\n@@ -5243,14 +5292,15 @@\n         \"../../../node_modules/@motionone/dom/dist/timeline/utils/sort.es.js\":\n             /*!***************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/timeline/utils/sort.es.js ***!\n               \\***************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.compareByTime = compareByTime;\n \n@@ -5269,14 +5319,15 @@\n         \"../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js\":\n             /*!******************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/utils/resolve-elements.es.js ***!\n               \\******************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.resolveElements = resolveElements;\n \n@@ -5305,14 +5356,15 @@\n         \"../../../node_modules/@motionone/dom/dist/utils/stagger.es.js\":\n             /*!*********************************************************************!*\\\n               !*** ../../../node_modules/@motionone/dom/dist/utils/stagger.es.js ***!\n               \\*********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getFromIndex = getFromIndex;\n                 exports.resolveOption = resolveOption;\n@@ -5358,14 +5410,15 @@\n         \"../../../node_modules/@motionone/easing/dist/cubic-bezier.es.js\":\n             /*!***********************************************************************!*\\\n               !*** ../../../node_modules/@motionone/easing/dist/cubic-bezier.es.js ***!\n               \\***********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.cubicBezier = cubicBezier;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -5425,14 +5478,15 @@\n         \"../../../node_modules/@motionone/easing/dist/index.es.js\":\n             /*!****************************************************************!*\\\n               !*** ../../../node_modules/@motionone/easing/dist/index.es.js ***!\n               \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"cubicBezier\", ({\n                     enumerable: true,\n@@ -5456,14 +5510,15 @@\n         \"../../../node_modules/@motionone/easing/dist/steps.es.js\":\n             /*!****************************************************************!*\\\n               !*** ../../../node_modules/@motionone/easing/dist/steps.es.js ***!\n               \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.steps = void 0;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -5482,14 +5537,15 @@\n         \"../../../node_modules/@motionone/generators/dist/glide/index.es.js\":\n             /*!**************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/generators/dist/glide/index.es.js ***!\n               \\**************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.glide = void 0;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -5596,14 +5652,15 @@\n         \"../../../node_modules/@motionone/generators/dist/index.es.js\":\n             /*!********************************************************************!*\\\n               !*** ../../../node_modules/@motionone/generators/dist/index.es.js ***!\n               \\********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"calcGeneratorVelocity\", ({\n                     enumerable: true,\n@@ -5641,14 +5698,15 @@\n         \"../../../node_modules/@motionone/generators/dist/spring/defaults.es.js\":\n             /*!******************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/generators/dist/spring/defaults.es.js ***!\n               \\******************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.defaults = void 0;\n                 const defaults = exports.defaults = {\n@@ -5664,14 +5722,15 @@\n         \"../../../node_modules/@motionone/generators/dist/spring/index.es.js\":\n             /*!***************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/generators/dist/spring/index.es.js ***!\n               \\***************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.spring = void 0;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -5729,14 +5788,15 @@\n         \"../../../node_modules/@motionone/generators/dist/spring/utils.es.js\":\n             /*!***************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/generators/dist/spring/utils.es.js ***!\n               \\***************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.calcDampingRatio = void 0;\n                 var _defaultsEs = __webpack_require__( /*! ./defaults.es.js */ \"../../../node_modules/@motionone/generators/dist/spring/defaults.es.js\");\n@@ -5750,14 +5810,15 @@\n         \"../../../node_modules/@motionone/generators/dist/utils/has-reached-target.es.js\":\n             /*!***************************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/generators/dist/utils/has-reached-target.es.js ***!\n               \\***************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.hasReachedTarget = hasReachedTarget;\n \n@@ -5772,14 +5833,15 @@\n         \"../../../node_modules/@motionone/generators/dist/utils/pregenerate-keyframes.es.js\":\n             /*!******************************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/generators/dist/utils/pregenerate-keyframes.es.js ***!\n               \\******************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.pregenerateKeyframes = pregenerateKeyframes;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -5819,14 +5881,15 @@\n         \"../../../node_modules/@motionone/generators/dist/utils/velocity.es.js\":\n             /*!*****************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/generators/dist/utils/velocity.es.js ***!\n               \\*****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.calcGeneratorVelocity = calcGeneratorVelocity;\n                 var _utils = __webpack_require__( /*! @motionone/utils */ \"../../../node_modules/@motionone/utils/dist/index.es.js\");\n@@ -5843,14 +5906,15 @@\n         \"../../../node_modules/@motionone/types/dist/MotionValue.es.js\":\n             /*!*********************************************************************!*\\\n               !*** ../../../node_modules/@motionone/types/dist/MotionValue.es.js ***!\n               \\*********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.MotionValue = void 0;\n                 /**\n@@ -5877,14 +5941,15 @@\n         \"../../../node_modules/@motionone/types/dist/index.es.js\":\n             /*!***************************************************************!*\\\n               !*** ../../../node_modules/@motionone/types/dist/index.es.js ***!\n               \\***************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"MotionValue\", ({\n                     enumerable: true,\n@@ -5901,14 +5966,15 @@\n         \"../../../node_modules/@motionone/utils/dist/array.es.js\":\n             /*!***************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/array.es.js ***!\n               \\***************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.addUniqueItem = addUniqueItem;\n                 exports.removeItem = removeItem;\n@@ -5929,14 +5995,15 @@\n         \"../../../node_modules/@motionone/utils/dist/clamp.es.js\":\n             /*!***************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/clamp.es.js ***!\n               \\***************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.clamp = void 0;\n                 const clamp = (min, max, v) => Math.min(Math.max(v, min), max);\n@@ -5949,14 +6016,15 @@\n         \"../../../node_modules/@motionone/utils/dist/defaults.es.js\":\n             /*!******************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/defaults.es.js ***!\n               \\******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.defaults = void 0;\n                 const defaults = exports.defaults = {\n@@ -5974,14 +6042,15 @@\n         \"../../../node_modules/@motionone/utils/dist/easing.es.js\":\n             /*!****************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/easing.es.js ***!\n               \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getEasingForSegment = getEasingForSegment;\n                 var _isEasingListEs = __webpack_require__( /*! ./is-easing-list.es.js */ \"../../../node_modules/@motionone/utils/dist/is-easing-list.es.js\");\n@@ -5998,14 +6067,15 @@\n         \"../../../node_modules/@motionone/utils/dist/index.es.js\":\n             /*!***************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/index.es.js ***!\n               \\***************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"addUniqueItem\", ({\n                     enumerable: true,\n@@ -6159,14 +6229,15 @@\n         \"../../../node_modules/@motionone/utils/dist/interpolate.es.js\":\n             /*!*********************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/interpolate.es.js ***!\n               \\*********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.interpolate = interpolate;\n                 var _mixEs = __webpack_require__( /*! ./mix.es.js */ \"../../../node_modules/@motionone/utils/dist/mix.es.js\");\n@@ -6205,14 +6276,15 @@\n         \"../../../node_modules/@motionone/utils/dist/is-cubic-bezier.es.js\":\n             /*!*************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/is-cubic-bezier.es.js ***!\n               \\*************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isCubicBezier = void 0;\n                 var _isNumberEs = __webpack_require__( /*! ./is-number.es.js */ \"../../../node_modules/@motionone/utils/dist/is-number.es.js\");\n@@ -6226,14 +6298,15 @@\n         \"../../../node_modules/@motionone/utils/dist/is-easing-generator.es.js\":\n             /*!*****************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/is-easing-generator.es.js ***!\n               \\*****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isEasingGenerator = void 0;\n                 const isEasingGenerator = easing => typeof easing === \"object\" && Boolean(easing.createAnimation);\n@@ -6246,14 +6319,15 @@\n         \"../../../node_modules/@motionone/utils/dist/is-easing-list.es.js\":\n             /*!************************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/is-easing-list.es.js ***!\n               \\************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isEasingList = void 0;\n                 var _isNumberEs = __webpack_require__( /*! ./is-number.es.js */ \"../../../node_modules/@motionone/utils/dist/is-number.es.js\");\n@@ -6267,14 +6341,15 @@\n         \"../../../node_modules/@motionone/utils/dist/is-function.es.js\":\n             /*!*********************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/is-function.es.js ***!\n               \\*********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isFunction = void 0;\n                 const isFunction = value => typeof value === \"function\";\n@@ -6287,14 +6362,15 @@\n         \"../../../node_modules/@motionone/utils/dist/is-number.es.js\":\n             /*!*******************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/is-number.es.js ***!\n               \\*******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isNumber = void 0;\n                 const isNumber = value => typeof value === \"number\";\n@@ -6307,14 +6383,15 @@\n         \"../../../node_modules/@motionone/utils/dist/is-string.es.js\":\n             /*!*******************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/is-string.es.js ***!\n               \\*******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isString = void 0;\n                 const isString = value => typeof value === \"string\";\n@@ -6327,14 +6404,15 @@\n         \"../../../node_modules/@motionone/utils/dist/mix.es.js\":\n             /*!*************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/mix.es.js ***!\n               \\*************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.mix = void 0;\n                 const mix = (min, max, progress) => -progress * min + progress * max + min;\n@@ -6347,14 +6425,15 @@\n         \"../../../node_modules/@motionone/utils/dist/noop.es.js\":\n             /*!**************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/noop.es.js ***!\n               \\**************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.noopReturn = exports.noop = void 0;\n                 const noop = () => {};\n@@ -6369,14 +6448,15 @@\n         \"../../../node_modules/@motionone/utils/dist/offset.es.js\":\n             /*!****************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/offset.es.js ***!\n               \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.defaultOffset = defaultOffset;\n                 exports.fillOffset = fillOffset;\n@@ -6404,14 +6484,15 @@\n         \"../../../node_modules/@motionone/utils/dist/progress.es.js\":\n             /*!******************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/progress.es.js ***!\n               \\******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.progress = void 0;\n                 const progress = (min, max, value) => max - min === 0 ? 1 : (value - min) / (max - min);\n@@ -6424,14 +6505,15 @@\n         \"../../../node_modules/@motionone/utils/dist/time.es.js\":\n             /*!**************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/time.es.js ***!\n               \\**************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.time = void 0;\n                 const time = exports.time = {\n@@ -6446,14 +6528,15 @@\n         \"../../../node_modules/@motionone/utils/dist/velocity.es.js\":\n             /*!******************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/velocity.es.js ***!\n               \\******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.velocityPerSecond = velocityPerSecond;\n                 /*\n@@ -6473,14 +6556,15 @@\n         \"../../../node_modules/@motionone/utils/dist/wrap.es.js\":\n             /*!**************************************************************!*\\\n               !*** ../../../node_modules/@motionone/utils/dist/wrap.es.js ***!\n               \\**************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.wrap = void 0;\n                 const wrap = (min, max, v) => {\n@@ -6496,14 +6580,15 @@\n         \"../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/index.js\":\n             /*!********************************************************************************!*\\\n               !*** ../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/index.js ***!\n               \\********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n \n                 function createDeferred() {\n@@ -6645,14 +6730,15 @@\n         \"../../../node_modules/@radix-ui/primitive/dist/index.js\":\n             /*!***************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/primitive/dist/index.js ***!\n               \\***************************************************************/\n             /***/\n             (function(module) {\n \n+                \"use strict\";\n \n \n                 function $parcel$export(e, n, v, s) {\n                     Object.defineProperty(e, n, {\n                         get: v,\n                         set: s,\n                         enumerable: true,\n@@ -6677,14 +6763,15 @@\n         \"../../../node_modules/@radix-ui/react-arrow/dist/index.js\":\n             /*!*****************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-arrow/dist/index.js ***!\n               \\*****************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $eQpDd$babelruntimehelpersextends = __webpack_require__( /*! @babel/runtime/helpers/extends */ \"../../../node_modules/@babel/runtime/helpers/extends.js\");\n                 var $eQpDd$react = __webpack_require__( /*! react */ \"react\");\n                 var $eQpDd$radixuireactprimitive = __webpack_require__( /*! @radix-ui/react-primitive */ \"../../../node_modules/@radix-ui/react-primitive/dist/index.js\");\n \n                 function $parcel$export(e, n, v, s) {\n@@ -6737,14 +6824,15 @@\n         \"../../../node_modules/@radix-ui/react-collection/dist/index.js\":\n             /*!**********************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-collection/dist/index.js ***!\n               \\**********************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $hnlpS$react = __webpack_require__( /*! react */ \"react\");\n                 var $hnlpS$radixuireactcontext = __webpack_require__( /*! @radix-ui/react-context */ \"../../../node_modules/@radix-ui/react-context/dist/index.js\");\n                 var $hnlpS$radixuireactcomposerefs = __webpack_require__( /*! @radix-ui/react-compose-refs */ \"../../../node_modules/@radix-ui/react-compose-refs/dist/index.js\");\n                 var $hnlpS$radixuireactslot = __webpack_require__( /*! @radix-ui/react-slot */ \"../../../node_modules/@radix-ui/react-slot/dist/index.js\");\n \n@@ -6873,14 +6961,15 @@\n         \"../../../node_modules/@radix-ui/react-compose-refs/dist/index.js\":\n             /*!************************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-compose-refs/dist/index.js ***!\n               \\************************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $dJwbH$react = __webpack_require__( /*! react */ \"react\");\n \n                 function $parcel$export(e, n, v, s) {\n                     Object.defineProperty(e, n, {\n                         get: v,\n@@ -6923,14 +7012,15 @@\n         \"../../../node_modules/@radix-ui/react-context/dist/index.js\":\n             /*!*******************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-context/dist/index.js ***!\n               \\*******************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $4O1Ne$react = __webpack_require__( /*! react */ \"react\");\n \n                 function $parcel$export(e, n, v, s) {\n                     Object.defineProperty(e, n, {\n                         get: v,\n@@ -7065,14 +7155,15 @@\n         \"../../../node_modules/@radix-ui/react-dialog/dist/index.js\":\n             /*!******************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-dialog/dist/index.js ***!\n               \\******************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $aJCrN$babelruntimehelpersextends = __webpack_require__( /*! @babel/runtime/helpers/extends */ \"../../../node_modules/@babel/runtime/helpers/extends.js\");\n                 var $aJCrN$react = __webpack_require__( /*! react */ \"react\");\n                 var $aJCrN$radixuiprimitive = __webpack_require__( /*! @radix-ui/primitive */ \"../../../node_modules/@radix-ui/primitive/dist/index.js\");\n                 var $aJCrN$radixuireactcomposerefs = __webpack_require__( /*! @radix-ui/react-compose-refs */ \"../../../node_modules/@radix-ui/react-compose-refs/dist/index.js\");\n                 var $aJCrN$radixuireactcontext = __webpack_require__( /*! @radix-ui/react-context */ \"../../../node_modules/@radix-ui/react-context/dist/index.js\");\n@@ -7505,14 +7596,15 @@\n         \"../../../node_modules/@radix-ui/react-direction/dist/index.js\":\n             /*!*********************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-direction/dist/index.js ***!\n               \\*********************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $9g4ps$react = __webpack_require__( /*! react */ \"react\");\n \n                 function $parcel$export(e, n, v, s) {\n                     Object.defineProperty(e, n, {\n                         get: v,\n@@ -7551,14 +7643,15 @@\n         \"../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.js\":\n             /*!*****************************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.js ***!\n               \\*****************************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $g2vWm$babelruntimehelpersextends = __webpack_require__( /*! @babel/runtime/helpers/extends */ \"../../../node_modules/@babel/runtime/helpers/extends.js\");\n                 var $g2vWm$react = __webpack_require__( /*! react */ \"react\");\n                 var $g2vWm$radixuiprimitive = __webpack_require__( /*! @radix-ui/primitive */ \"../../../node_modules/@radix-ui/primitive/dist/index.js\");\n                 var $g2vWm$radixuireactprimitive = __webpack_require__( /*! @radix-ui/react-primitive */ \"../../../node_modules/@radix-ui/react-primitive/dist/index.js\");\n                 var $g2vWm$radixuireactcomposerefs = __webpack_require__( /*! @radix-ui/react-compose-refs */ \"../../../node_modules/@radix-ui/react-compose-refs/dist/index.js\");\n@@ -7844,14 +7937,15 @@\n         \"../../../node_modules/@radix-ui/react-dropdown-menu/dist/index.js\":\n             /*!*************************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-dropdown-menu/dist/index.js ***!\n               \\*************************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $7dQ7Q$babelruntimehelpersextends = __webpack_require__( /*! @babel/runtime/helpers/extends */ \"../../../node_modules/@babel/runtime/helpers/extends.js\");\n                 var $7dQ7Q$react = __webpack_require__( /*! react */ \"react\");\n                 var $7dQ7Q$radixuiprimitive = __webpack_require__( /*! @radix-ui/primitive */ \"../../../node_modules/@radix-ui/primitive/dist/index.js\");\n                 var $7dQ7Q$radixuireactcomposerefs = __webpack_require__( /*! @radix-ui/react-compose-refs */ \"../../../node_modules/@radix-ui/react-compose-refs/dist/index.js\");\n                 var $7dQ7Q$radixuireactcontext = __webpack_require__( /*! @radix-ui/react-context */ \"../../../node_modules/@radix-ui/react-context/dist/index.js\");\n@@ -8309,14 +8403,15 @@\n         \"../../../node_modules/@radix-ui/react-focus-guards/dist/index.js\":\n             /*!************************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-focus-guards/dist/index.js ***!\n               \\************************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $cnctE$react = __webpack_require__( /*! react */ \"react\");\n \n                 function $parcel$export(e, n, v, s) {\n                     Object.defineProperty(e, n, {\n                         get: v,\n@@ -8370,14 +8465,15 @@\n         \"../../../node_modules/@radix-ui/react-focus-scope/dist/index.js\":\n             /*!***********************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-focus-scope/dist/index.js ***!\n               \\***********************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $buum9$babelruntimehelpersextends = __webpack_require__( /*! @babel/runtime/helpers/extends */ \"../../../node_modules/@babel/runtime/helpers/extends.js\");\n                 var $buum9$react = __webpack_require__( /*! react */ \"react\");\n                 var $buum9$radixuireactcomposerefs = __webpack_require__( /*! @radix-ui/react-compose-refs */ \"../../../node_modules/@radix-ui/react-compose-refs/dist/index.js\");\n                 var $buum9$radixuireactprimitive = __webpack_require__( /*! @radix-ui/react-primitive */ \"../../../node_modules/@radix-ui/react-primitive/dist/index.js\");\n                 var $buum9$radixuireactusecallbackref = __webpack_require__( /*! @radix-ui/react-use-callback-ref */ \"../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js\");\n@@ -8690,14 +8786,15 @@\n         \"../../../node_modules/@radix-ui/react-id/dist/index.js\":\n             /*!**************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-id/dist/index.js ***!\n               \\**************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $47woD$react = __webpack_require__( /*! react */ \"react\");\n                 var $47woD$radixuireactuselayouteffect = __webpack_require__( /*! @radix-ui/react-use-layout-effect */ \"../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js\");\n \n                 function $parcel$export(e, n, v, s) {\n                     Object.defineProperty(e, n, {\n@@ -8726,14 +8823,15 @@\n         \"../../../node_modules/@radix-ui/react-menu/dist/index.js\":\n             /*!****************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-menu/dist/index.js ***!\n               \\****************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $cnSS2$babelruntimehelpersextends = __webpack_require__( /*! @babel/runtime/helpers/extends */ \"../../../node_modules/@babel/runtime/helpers/extends.js\");\n                 var $cnSS2$react = __webpack_require__( /*! react */ \"react\");\n                 var $cnSS2$radixuiprimitive = __webpack_require__( /*! @radix-ui/primitive */ \"../../../node_modules/@radix-ui/primitive/dist/index.js\");\n                 var $cnSS2$radixuireactcollection = __webpack_require__( /*! @radix-ui/react-collection */ \"../../../node_modules/@radix-ui/react-collection/dist/index.js\");\n                 var $cnSS2$radixuireactcomposerefs = __webpack_require__( /*! @radix-ui/react-compose-refs */ \"../../../node_modules/@radix-ui/react-compose-refs/dist/index.js\");\n@@ -9806,14 +9904,15 @@\n         \"../../../node_modules/@radix-ui/react-popper/dist/index.js\":\n             /*!******************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-popper/dist/index.js ***!\n               \\******************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $50Iv9$babelruntimehelpersextends = __webpack_require__( /*! @babel/runtime/helpers/extends */ \"../../../node_modules/@babel/runtime/helpers/extends.js\");\n                 var $50Iv9$react = __webpack_require__( /*! react */ \"react\");\n                 var $50Iv9$floatinguireactdom = __webpack_require__( /*! @floating-ui/react-dom */ \"../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js\");\n                 var $50Iv9$radixuireactarrow = __webpack_require__( /*! @radix-ui/react-arrow */ \"../../../node_modules/@radix-ui/react-arrow/dist/index.js\");\n                 var $50Iv9$radixuireactcomposerefs = __webpack_require__( /*! @radix-ui/react-compose-refs */ \"../../../node_modules/@radix-ui/react-compose-refs/dist/index.js\");\n@@ -10167,14 +10266,15 @@\n         \"../../../node_modules/@radix-ui/react-portal/dist/index.js\":\n             /*!******************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-portal/dist/index.js ***!\n               \\******************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $amzHf$babelruntimehelpersextends = __webpack_require__( /*! @babel/runtime/helpers/extends */ \"../../../node_modules/@babel/runtime/helpers/extends.js\");\n                 var $amzHf$react = __webpack_require__( /*! react */ \"react\");\n                 var $amzHf$reactdom = __webpack_require__( /*! react-dom */ \"react-dom\");\n                 var $amzHf$radixuireactprimitive = __webpack_require__( /*! @radix-ui/react-primitive */ \"../../../node_modules/@radix-ui/react-primitive/dist/index.js\");\n \n@@ -10221,14 +10321,15 @@\n         \"../../../node_modules/@radix-ui/react-presence/dist/index.js\":\n             /*!********************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-presence/dist/index.js ***!\n               \\********************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $fnLeV$react = __webpack_require__( /*! react */ \"react\");\n                 var $fnLeV$reactdom = __webpack_require__( /*! react-dom */ \"react-dom\");\n                 var $fnLeV$radixuireactcomposerefs = __webpack_require__( /*! @radix-ui/react-compose-refs */ \"../../../node_modules/@radix-ui/react-compose-refs/dist/index.js\");\n                 var $fnLeV$radixuireactuselayouteffect = __webpack_require__( /*! @radix-ui/react-use-layout-effect */ \"../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js\");\n \n@@ -10370,14 +10471,15 @@\n         \"../../../node_modules/@radix-ui/react-primitive/dist/index.js\":\n             /*!*********************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-primitive/dist/index.js ***!\n               \\*********************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $iMixA$babelruntimehelpersextends = __webpack_require__( /*! @babel/runtime/helpers/extends */ \"../../../node_modules/@babel/runtime/helpers/extends.js\");\n                 var $iMixA$react = __webpack_require__( /*! react */ \"react\");\n                 var $iMixA$reactdom = __webpack_require__( /*! react-dom */ \"react-dom\");\n                 var $iMixA$radixuireactslot = __webpack_require__( /*! @radix-ui/react-slot */ \"../../../node_modules/@radix-ui/react-slot/dist/index.js\");\n \n@@ -10474,14 +10576,15 @@\n         \"../../../node_modules/@radix-ui/react-roving-focus/dist/index.js\":\n             /*!************************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-roving-focus/dist/index.js ***!\n               \\************************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $9QJ9Y$babelruntimehelpersextends = __webpack_require__( /*! @babel/runtime/helpers/extends */ \"../../../node_modules/@babel/runtime/helpers/extends.js\");\n                 var $9QJ9Y$react = __webpack_require__( /*! react */ \"react\");\n                 var $9QJ9Y$radixuiprimitive = __webpack_require__( /*! @radix-ui/primitive */ \"../../../node_modules/@radix-ui/primitive/dist/index.js\");\n                 var $9QJ9Y$radixuireactcollection = __webpack_require__( /*! @radix-ui/react-collection */ \"../../../node_modules/@radix-ui/react-collection/dist/index.js\");\n                 var $9QJ9Y$radixuireactcomposerefs = __webpack_require__( /*! @radix-ui/react-compose-refs */ \"../../../node_modules/@radix-ui/react-compose-refs/dist/index.js\");\n@@ -10736,14 +10839,15 @@\n         \"../../../node_modules/@radix-ui/react-slot/dist/index.js\":\n             /*!****************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-slot/dist/index.js ***!\n               \\****************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $dAvBt$babelruntimehelpersextends = __webpack_require__( /*! @babel/runtime/helpers/extends */ \"../../../node_modules/@babel/runtime/helpers/extends.js\");\n                 var $dAvBt$react = __webpack_require__( /*! react */ \"react\");\n                 var $dAvBt$radixuireactcomposerefs = __webpack_require__( /*! @radix-ui/react-compose-refs */ \"../../../node_modules/@radix-ui/react-compose-refs/dist/index.js\");\n \n                 function $parcel$export(e, n, v, s) {\n@@ -10856,14 +10960,15 @@\n         \"../../../node_modules/@radix-ui/react-tooltip/dist/index.js\":\n             /*!*******************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-tooltip/dist/index.js ***!\n               \\*******************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $iVrL9$babelruntimehelpersextends = __webpack_require__( /*! @babel/runtime/helpers/extends */ \"../../../node_modules/@babel/runtime/helpers/extends.js\");\n                 var $iVrL9$react = __webpack_require__( /*! react */ \"react\");\n                 var $iVrL9$radixuiprimitive = __webpack_require__( /*! @radix-ui/primitive */ \"../../../node_modules/@radix-ui/primitive/dist/index.js\");\n                 var $iVrL9$radixuireactcomposerefs = __webpack_require__( /*! @radix-ui/react-compose-refs */ \"../../../node_modules/@radix-ui/react-compose-refs/dist/index.js\");\n                 var $iVrL9$radixuireactcontext = __webpack_require__( /*! @radix-ui/react-context */ \"../../../node_modules/@radix-ui/react-context/dist/index.js\");\n@@ -11454,14 +11559,15 @@\n         \"../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js\":\n             /*!****************************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js ***!\n               \\****************************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $92muK$react = __webpack_require__( /*! react */ \"react\");\n \n                 function $parcel$export(e, n, v, s) {\n                     Object.defineProperty(e, n, {\n                         get: v,\n@@ -11494,14 +11600,15 @@\n         \"../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js\":\n             /*!**********************************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js ***!\n               \\**********************************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $ijazI$react = __webpack_require__( /*! react */ \"react\");\n                 var $ijazI$radixuireactusecallbackref = __webpack_require__( /*! @radix-ui/react-use-callback-ref */ \"../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js\");\n \n                 function $parcel$export(e, n, v, s) {\n                     Object.defineProperty(e, n, {\n@@ -11559,14 +11666,15 @@\n         \"../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.js\":\n             /*!******************************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.js ***!\n               \\******************************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $b0gz3$react = __webpack_require__( /*! react */ \"react\");\n                 var $b0gz3$radixuireactusecallbackref = __webpack_require__( /*! @radix-ui/react-use-callback-ref */ \"../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.js\");\n \n                 function $parcel$export(e, n, v, s) {\n                     Object.defineProperty(e, n, {\n@@ -11599,14 +11707,15 @@\n         \"../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js\":\n             /*!*****************************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js ***!\n               \\*****************************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $caHyQ$react = __webpack_require__( /*! react */ \"react\");\n \n                 function $parcel$export(e, n, v, s) {\n                     Object.defineProperty(e, n, {\n                         get: v,\n@@ -11633,14 +11742,15 @@\n         \"../../../node_modules/@radix-ui/react-use-size/dist/index.js\":\n             /*!********************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-use-size/dist/index.js ***!\n               \\********************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $ksDzM$react = __webpack_require__( /*! react */ \"react\");\n                 var $ksDzM$radixuireactuselayouteffect = __webpack_require__( /*! @radix-ui/react-use-layout-effect */ \"../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.js\");\n \n                 function $parcel$export(e, n, v, s) {\n                     Object.defineProperty(e, n, {\n@@ -11704,14 +11814,15 @@\n         \"../../../node_modules/@radix-ui/react-visually-hidden/dist/index.js\":\n             /*!***************************************************************************!*\\\n               !*** ../../../node_modules/@radix-ui/react-visually-hidden/dist/index.js ***!\n               \\***************************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var $awrN2$babelruntimehelpersextends = __webpack_require__( /*! @babel/runtime/helpers/extends */ \"../../../node_modules/@babel/runtime/helpers/extends.js\");\n                 var $awrN2$react = __webpack_require__( /*! react */ \"react\");\n                 var $awrN2$radixuireactprimitive = __webpack_require__( /*! @radix-ui/react-primitive */ \"../../../node_modules/@radix-ui/react-primitive/dist/index.js\");\n \n                 function $parcel$export(e, n, v, s) {\n@@ -11766,14 +11877,15 @@\n         \"../../../node_modules/aria-hidden/dist/es2015/index.js\":\n             /*!**************************************************************!*\\\n               !*** ../../../node_modules/aria-hidden/dist/es2015/index.js ***!\n               \\**************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.suppressOthers = exports.supportsInert = exports.inertOthers = exports.hideOthers = void 0;\n                 var getDefaultParent = function(originalTarget) {\n@@ -11958,14 +12070,15 @@\n         \"../../../node_modules/clsx/dist/clsx.m.js\":\n             /*!*************************************************!*\\\n               !*** ../../../node_modules/clsx/dist/clsx.m.js ***!\n               \\*************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.clsx = clsx;\n                 exports[\"default\"] = void 0;\n@@ -11989,3557 +12102,21308 @@\n                 }\n                 var _default = exports[\"default\"] = clsx;\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/copy-to-clipboard/index.js\":\n-            /*!********************************************************!*\\\n-              !*** ../../../node_modules/copy-to-clipboard/index.js ***!\n-              \\********************************************************/\n+        \"../../../node_modules/codemirror/addon/comment/comment.js\":\n+            /*!*****************************************************************!*\\\n+              !*** ../../../node_modules/codemirror/addon/comment/comment.js ***!\n+              \\*****************************************************************/\n             /***/\n-            (function(module, __unused_webpack_exports, __webpack_require__) {\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n-                var deselectCurrent = __webpack_require__( /*! toggle-selection */ \"../../../node_modules/toggle-selection/index.js\");\n-                var clipboardToIE11Formatting = {\n-                    \"text/plain\": \"Text\",\n-                    \"text/html\": \"Url\",\n-                    \"default\": \"Text\"\n-                };\n-                var defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n \n-                function format(message) {\n-                    var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"\u2318\" : \"Ctrl\") + \"+C\";\n-                    return message.replace(/#{\\s*key\\s*}/g, copyKey);\n-                }\n+                (function(mod) {\n+                    if (true)\n+                        // CommonJS\n+                        mod(__webpack_require__( /*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                    else {}\n+                })(function(CodeMirror) {\n+                    \"use strict\";\n+\n+                    var noOptions = {};\n+                    var nonWS = /[^\\s\\u00a0]/;\n+                    var Pos = CodeMirror.Pos,\n+                        cmp = CodeMirror.cmpPos;\n+\n+                    function firstNonWS(str) {\n+                        var found = str.search(nonWS);\n+                        return found == -1 ? 0 : found;\n+                    }\n+                    CodeMirror.commands.toggleComment = function(cm) {\n+                        cm.toggleComment();\n+                    };\n+                    CodeMirror.defineExtension(\"toggleComment\", function(options) {\n+                        if (!options) options = noOptions;\n+                        var cm = this;\n+                        var minLine = Infinity,\n+                            ranges = this.listSelections(),\n+                            mode = null;\n+                        for (var i = ranges.length - 1; i >= 0; i--) {\n+                            var from = ranges[i].from(),\n+                                to = ranges[i].to();\n+                            if (from.line >= minLine) continue;\n+                            if (to.line >= minLine) to = Pos(minLine, 0);\n+                            minLine = from.line;\n+                            if (mode == null) {\n+                                if (cm.uncomment(from, to, options)) mode = \"un\";\n+                                else {\n+                                    cm.lineComment(from, to, options);\n+                                    mode = \"line\";\n+                                }\n+                            } else if (mode == \"un\") {\n+                                cm.uncomment(from, to, options);\n+                            } else {\n+                                cm.lineComment(from, to, options);\n+                            }\n+                        }\n+                    });\n \n-                function copy(text, options) {\n-                    var debug,\n-                        message,\n-                        reselectPrevious,\n-                        range,\n-                        selection,\n-                        mark,\n-                        success = false;\n-                    if (!options) {\n-                        options = {};\n+                    // Rough heuristic to try and detect lines that are part of multi-line string\n+                    function probablyInsideString(cm, pos, line) {\n+                        return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line);\n                     }\n-                    debug = options.debug || false;\n-                    try {\n-                        reselectPrevious = deselectCurrent();\n-                        range = document.createRange();\n-                        selection = document.getSelection();\n-                        mark = document.createElement(\"span\");\n-                        mark.textContent = text;\n-                        // avoid screen readers from reading out loud the text\n-                        mark.ariaHidden = \"true\";\n-                        // reset user styles for span element\n-                        mark.style.all = \"unset\";\n-                        // prevents scrolling to the end of the page\n-                        mark.style.position = \"fixed\";\n-                        mark.style.top = 0;\n-                        mark.style.clip = \"rect(0, 0, 0, 0)\";\n-                        // used to preserve spaces and line breaks\n-                        mark.style.whiteSpace = \"pre\";\n-                        // do not inherit user-select (it may be `none`)\n-                        mark.style.webkitUserSelect = \"text\";\n-                        mark.style.MozUserSelect = \"text\";\n-                        mark.style.msUserSelect = \"text\";\n-                        mark.style.userSelect = \"text\";\n-                        mark.addEventListener(\"copy\", function(e) {\n-                            e.stopPropagation();\n-                            if (options.format) {\n-                                e.preventDefault();\n-                                if (typeof e.clipboardData === \"undefined\") {\n-                                    // IE 11\n-                                    debug && console.warn(\"unable to use e.clipboardData\");\n-                                    debug && console.warn(\"trying IE specific stuff\");\n-                                    window.clipboardData.clearData();\n-                                    var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"];\n-                                    window.clipboardData.setData(format, text);\n-                                } else {\n-                                    // all other browsers\n-                                    e.clipboardData.clearData();\n-                                    e.clipboardData.setData(options.format, text);\n-                                }\n+\n+                    function getMode(cm, pos) {\n+                        var mode = cm.getMode();\n+                        return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos);\n+                    }\n+                    CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n+                        if (!options) options = noOptions;\n+                        var self = this,\n+                            mode = getMode(self, from);\n+                        var firstLine = self.getLine(from.line);\n+                        if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n+                        var commentString = options.lineComment || mode.lineComment;\n+                        if (!commentString) {\n+                            if (options.blockCommentStart || mode.blockCommentStart) {\n+                                options.fullLines = true;\n+                                self.blockComment(from, to, options);\n                             }\n-                            if (options.onCopy) {\n-                                e.preventDefault();\n-                                options.onCopy(e.clipboardData);\n+                            return;\n+                        }\n+                        var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n+                        var pad = options.padding == null ? \" \" : options.padding;\n+                        var blankLines = options.commentBlankLines || from.line == to.line;\n+                        self.operation(function() {\n+                            if (options.indent) {\n+                                var baseString = null;\n+                                for (var i = from.line; i < end; ++i) {\n+                                    var line = self.getLine(i);\n+                                    var whitespace = line.slice(0, firstNonWS(line));\n+                                    if (baseString == null || baseString.length > whitespace.length) {\n+                                        baseString = whitespace;\n+                                    }\n+                                }\n+                                for (var i = from.line; i < end; ++i) {\n+                                    var line = self.getLine(i),\n+                                        cut = baseString.length;\n+                                    if (!blankLines && !nonWS.test(line)) continue;\n+                                    if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n+                                    self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n+                                }\n+                            } else {\n+                                for (var i = from.line; i < end; ++i) {\n+                                    if (blankLines || nonWS.test(self.getLine(i))) self.replaceRange(commentString + pad, Pos(i, 0));\n+                                }\n                             }\n                         });\n-                        document.body.appendChild(mark);\n-                        range.selectNodeContents(mark);\n-                        selection.addRange(range);\n-                        var successful = document.execCommand(\"copy\");\n-                        if (!successful) {\n-                            throw new Error(\"copy command was unsuccessful\");\n-                        }\n-                        success = true;\n-                    } catch (err) {\n-                        debug && console.error(\"unable to copy using execCommand: \", err);\n-                        debug && console.warn(\"trying IE specific stuff\");\n-                        try {\n-                            window.clipboardData.setData(options.format || \"text\", text);\n-                            options.onCopy && options.onCopy(window.clipboardData);\n-                            success = true;\n-                        } catch (err) {\n-                            debug && console.error(\"unable to copy using clipboardData: \", err);\n-                            debug && console.error(\"falling back to prompt\");\n-                            message = format(\"message\" in options ? options.message : defaultMessage);\n-                            window.prompt(message, text);\n-                        }\n-                    } finally {\n-                        if (selection) {\n-                            if (typeof selection.removeRange == \"function\") {\n-                                selection.removeRange(range);\n+                    });\n+                    CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n+                        if (!options) options = noOptions;\n+                        var self = this,\n+                            mode = getMode(self, from);\n+                        var startString = options.blockCommentStart || mode.blockCommentStart;\n+                        var endString = options.blockCommentEnd || mode.blockCommentEnd;\n+                        if (!startString || !endString) {\n+                            if ((options.lineComment || mode.lineComment) && options.fullLines != false) self.lineComment(from, to, options);\n+                            return;\n+                        }\n+                        if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return;\n+                        var end = Math.min(to.line, self.lastLine());\n+                        if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n+                        var pad = options.padding == null ? \" \" : options.padding;\n+                        if (from.line > end) return;\n+                        self.operation(function() {\n+                            if (options.fullLines != false) {\n+                                var lastLineHasText = nonWS.test(self.getLine(end));\n+                                self.replaceRange(pad + endString, Pos(end));\n+                                self.replaceRange(startString + pad, Pos(from.line, 0));\n+                                var lead = options.blockCommentLead || mode.blockCommentLead;\n+                                if (lead != null)\n+                                    for (var i = from.line + 1; i <= end; ++i)\n+                                        if (i != end || lastLineHasText) self.replaceRange(lead + pad, Pos(i, 0));\n                             } else {\n-                                selection.removeAllRanges();\n+                                var atCursor = cmp(self.getCursor(\"to\"), to) == 0,\n+                                    empty = !self.somethingSelected();\n+                                self.replaceRange(endString, to);\n+                                if (atCursor) self.setSelection(empty ? to : self.getCursor(\"from\"), to);\n+                                self.replaceRange(startString, from);\n                             }\n-                        }\n-                        if (mark) {\n-                            document.body.removeChild(mark);\n-                        }\n-                        reselectPrevious();\n-                    }\n-                    return success;\n-                }\n-                module.exports = copy;\n+                        });\n+                    });\n+                    CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n+                        if (!options) options = noOptions;\n+                        var self = this,\n+                            mode = getMode(self, from);\n+                        var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()),\n+                            start = Math.min(from.line, end);\n+\n+                        // Try finding line comments\n+                        var lineString = options.lineComment || mode.lineComment,\n+                            lines = [];\n+                        var pad = options.padding == null ? \" \" : options.padding,\n+                            didSomething;\n+                        lineComment: {\n+                            if (!lineString) break lineComment;\n+                            for (var i = start; i <= end; ++i) {\n+                                var line = self.getLine(i);\n+                                var found = line.indexOf(lineString);\n+                                if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n+                                if (found == -1 && nonWS.test(line)) break lineComment;\n+                                if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n+                                lines.push(line);\n+                            }\n+                            self.operation(function() {\n+                                for (var i = start; i <= end; ++i) {\n+                                    var line = lines[i - start];\n+                                    var pos = line.indexOf(lineString),\n+                                        endPos = pos + lineString.length;\n+                                    if (pos < 0) continue;\n+                                    if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n+                                    didSomething = true;\n+                                    self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n+                                }\n+                            });\n+                            if (didSomething) return true;\n+                        }\n+\n+                        // Try block comments\n+                        var startString = options.blockCommentStart || mode.blockCommentStart;\n+                        var endString = options.blockCommentEnd || mode.blockCommentEnd;\n+                        if (!startString || !endString) return false;\n+                        var lead = options.blockCommentLead || mode.blockCommentLead;\n+                        var startLine = self.getLine(start),\n+                            open = startLine.indexOf(startString);\n+                        if (open == -1) return false;\n+                        var endLine = end == start ? startLine : self.getLine(end);\n+                        var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n+                        var insideStart = Pos(start, open + 1),\n+                            insideEnd = Pos(end, close + 1);\n+                        if (close == -1 || !/comment/.test(self.getTokenTypeAt(insideStart)) || !/comment/.test(self.getTokenTypeAt(insideEnd)) || self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1) return false;\n+\n+                        // Avoid killing block comments completely outside the selection.\n+                        // Positions of the last startString before the start of the selection, and the first endString after it.\n+                        var lastStart = startLine.lastIndexOf(startString, from.ch);\n+                        var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n+                        if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n+                        // Positions of the first endString after the end of the selection, and the last startString before it.\n+                        firstEnd = endLine.indexOf(endString, to.ch);\n+                        var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n+                        lastStart = firstEnd == -1 || almostLastStart == -1 ? -1 : to.ch + almostLastStart;\n+                        if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n+                        self.operation(function() {\n+                            self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)), Pos(end, close + endString.length));\n+                            var openEnd = open + startString.length;\n+                            if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n+                            self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n+                            if (lead)\n+                                for (var i = start + 1; i <= end; ++i) {\n+                                    var line = self.getLine(i),\n+                                        found = line.indexOf(lead);\n+                                    if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n+                                    var foundEnd = found + lead.length;\n+                                    if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n+                                    self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n+                                }\n+                        });\n+                        return true;\n+                    });\n+                });\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/detect-node-es/esm/browser.js\":\n-            /*!***********************************************************!*\\\n-              !*** ../../../node_modules/detect-node-es/esm/browser.js ***!\n-              \\***********************************************************/\n+        \"../../../node_modules/codemirror/addon/dialog/dialog.js\":\n+            /*!***************************************************************!*\\\n+              !*** ../../../node_modules/codemirror/addon/dialog/dialog.js ***!\n+              \\***************************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports) {\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.isNode = void 0;\n-                const isNode = exports.isNode = false;\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n+\n+                // Open simple dialogs on top of an editor. Relies on dialog.css.\n+\n+                (function(mod) {\n+                    if (true)\n+                        // CommonJS\n+                        mod(__webpack_require__( /*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                    else {}\n+                })(function(CodeMirror) {\n+                    function dialogDiv(cm, template, bottom) {\n+                        var wrap = cm.getWrapperElement();\n+                        var dialog;\n+                        dialog = wrap.appendChild(document.createElement(\"div\"));\n+                        if (bottom) dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n+                        else dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n+                        if (typeof template == \"string\") {\n+                            dialog.innerHTML = template;\n+                        } else {\n+                            // Assuming it's a detached DOM element.\n+                            dialog.appendChild(template);\n+                        }\n+                        CodeMirror.addClass(wrap, 'dialog-opened');\n+                        return dialog;\n+                    }\n+\n+                    function closeNotification(cm, newVal) {\n+                        if (cm.state.currentNotificationClose) cm.state.currentNotificationClose();\n+                        cm.state.currentNotificationClose = newVal;\n+                    }\n+                    CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n+                        if (!options) options = {};\n+                        closeNotification(this, null);\n+                        var dialog = dialogDiv(this, template, options.bottom);\n+                        var closed = false,\n+                            me = this;\n+\n+                        function close(newVal) {\n+                            if (typeof newVal == 'string') {\n+                                inp.value = newVal;\n+                            } else {\n+                                if (closed) return;\n+                                closed = true;\n+                                CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n+                                dialog.parentNode.removeChild(dialog);\n+                                me.focus();\n+                                if (options.onClose) options.onClose(dialog);\n+                            }\n+                        }\n+                        var inp = dialog.getElementsByTagName(\"input\")[0],\n+                            button;\n+                        if (inp) {\n+                            inp.focus();\n+                            if (options.value) {\n+                                inp.value = options.value;\n+                                if (options.selectValueOnOpen !== false) {\n+                                    inp.select();\n+                                }\n+                            }\n+                            if (options.onInput) CodeMirror.on(inp, \"input\", function(e) {\n+                                options.onInput(e, inp.value, close);\n+                            });\n+                            if (options.onKeyUp) CodeMirror.on(inp, \"keyup\", function(e) {\n+                                options.onKeyUp(e, inp.value, close);\n+                            });\n+                            CodeMirror.on(inp, \"keydown\", function(e) {\n+                                if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) {\n+                                    return;\n+                                }\n+                                if (e.keyCode == 27 || options.closeOnEnter !== false && e.keyCode == 13) {\n+                                    inp.blur();\n+                                    CodeMirror.e_stop(e);\n+                                    close();\n+                                }\n+                                if (e.keyCode == 13) callback(inp.value, e);\n+                            });\n+                            if (options.closeOnBlur !== false) CodeMirror.on(dialog, \"focusout\", function(evt) {\n+                                if (evt.relatedTarget !== null) close();\n+                            });\n+                        } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n+                            CodeMirror.on(button, \"click\", function() {\n+                                close();\n+                                me.focus();\n+                            });\n+                            if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n+                            button.focus();\n+                        }\n+                        return close;\n+                    });\n+                    CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n+                        closeNotification(this, null);\n+                        var dialog = dialogDiv(this, template, options && options.bottom);\n+                        var buttons = dialog.getElementsByTagName(\"button\");\n+                        var closed = false,\n+                            me = this,\n+                            blurring = 1;\n+\n+                        function close() {\n+                            if (closed) return;\n+                            closed = true;\n+                            CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n+                            dialog.parentNode.removeChild(dialog);\n+                            me.focus();\n+                        }\n+                        buttons[0].focus();\n+                        for (var i = 0; i < buttons.length; ++i) {\n+                            var b = buttons[i];\n+                            (function(callback) {\n+                                CodeMirror.on(b, \"click\", function(e) {\n+                                    CodeMirror.e_preventDefault(e);\n+                                    close();\n+                                    if (callback) callback(me);\n+                                });\n+                            })(callbacks[i]);\n+                            CodeMirror.on(b, \"blur\", function() {\n+                                --blurring;\n+                                setTimeout(function() {\n+                                    if (blurring <= 0) close();\n+                                }, 200);\n+                            });\n+                            CodeMirror.on(b, \"focus\", function() {\n+                                ++blurring;\n+                            });\n+                        }\n+                    });\n+\n+                    /*\n+                     * openNotification\n+                     * Opens a notification, that can be closed with an optional timer\n+                     * (default 5000ms timer) and always closes on click.\n+                     *\n+                     * If a notification is opened while another is opened, it will close the\n+                     * currently opened one and open the new one immediately.\n+                     */\n+                    CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n+                        closeNotification(this, close);\n+                        var dialog = dialogDiv(this, template, options && options.bottom);\n+                        var closed = false,\n+                            doneTimer;\n+                        var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n+\n+                        function close() {\n+                            if (closed) return;\n+                            closed = true;\n+                            clearTimeout(doneTimer);\n+                            CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n+                            dialog.parentNode.removeChild(dialog);\n+                        }\n+                        CodeMirror.on(dialog, 'click', function(e) {\n+                            CodeMirror.e_preventDefault(e);\n+                            close();\n+                        });\n+                        if (duration) doneTimer = setTimeout(close, duration);\n+                        return close;\n+                    });\n+                });\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/entities/lib/decode.js\":\n-            /*!****************************************************!*\\\n-              !*** ../../../node_modules/entities/lib/decode.js ***!\n-              \\****************************************************/\n+        \"../../../node_modules/codemirror/addon/edit/closebrackets.js\":\n+            /*!********************************************************************!*\\\n+              !*** ../../../node_modules/codemirror/addon/edit/closebrackets.js ***!\n+              \\********************************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n-                var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function(o, m, k, k2) {\n-                    if (k2 === undefined) k2 = k;\n-                    var desc = Object.getOwnPropertyDescriptor(m, k);\n-                    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n-                        desc = {\n-                            enumerable: true,\n-                            get: function() {\n-                                return m[k];\n-                            }\n-                        };\n-                    }\n-                    Object.defineProperty(o, k2, desc);\n-                } : function(o, m, k, k2) {\n-                    if (k2 === undefined) k2 = k;\n-                    o[k2] = m[k];\n-                });\n-                var __setModuleDefault = void 0 && (void 0).__setModuleDefault || (Object.create ? function(o, v) {\n-                    Object.defineProperty(o, \"default\", {\n-                        enumerable: true,\n-                        value: v\n-                    });\n-                } : function(o, v) {\n-                    o[\"default\"] = v;\n-                });\n-                var __importStar = void 0 && (void 0).__importStar || function(mod) {\n-                    if (mod && mod.__esModule) return mod;\n-                    var result = {};\n-                    if (mod != null)\n-                        for (var k in mod)\n-                            if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n-                    __setModuleDefault(result, mod);\n-                    return result;\n-                };\n-                var __importDefault = void 0 && (void 0).__importDefault || function(mod) {\n-                    return mod && mod.__esModule ? mod : {\n-                        \"default\": mod\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n+\n+                (function(mod) {\n+                    if (true)\n+                        // CommonJS\n+                        mod(__webpack_require__( /*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                    else {}\n+                })(function(CodeMirror) {\n+                    var defaults = {\n+                        pairs: \"()[]{}''\\\"\\\"\",\n+                        closeBefore: \")]}'\\\":;>\",\n+                        triples: \"\",\n+                        explode: \"[]{}\"\n                     };\n-                };\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0;\n-                var decode_data_html_js_1 = __importDefault(__webpack_require__( /*! ./generated/decode-data-html.js */ \"../../../node_modules/entities/lib/generated/decode-data-html.js\"));\n-                exports.htmlDecodeTree = decode_data_html_js_1.default;\n-                var decode_data_xml_js_1 = __importDefault(__webpack_require__( /*! ./generated/decode-data-xml.js */ \"../../../node_modules/entities/lib/generated/decode-data-xml.js\"));\n-                exports.xmlDecodeTree = decode_data_xml_js_1.default;\n-                var decode_codepoint_js_1 = __importStar(__webpack_require__( /*! ./decode_codepoint.js */ \"../../../node_modules/entities/lib/decode_codepoint.js\"));\n-                exports.decodeCodePoint = decode_codepoint_js_1.default;\n-                var decode_codepoint_js_2 = __webpack_require__( /*! ./decode_codepoint.js */ \"../../../node_modules/entities/lib/decode_codepoint.js\");\n-                Object.defineProperty(exports, \"replaceCodePoint\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return decode_codepoint_js_2.replaceCodePoint;\n+                    var Pos = CodeMirror.Pos;\n+                    CodeMirror.defineOption(\"autoCloseBrackets\", false, function(cm, val, old) {\n+                        if (old && old != CodeMirror.Init) {\n+                            cm.removeKeyMap(keyMap);\n+                            cm.state.closeBrackets = null;\n+                        }\n+                        if (val) {\n+                            ensureBound(getOption(val, \"pairs\"));\n+                            cm.state.closeBrackets = val;\n+                            cm.addKeyMap(keyMap);\n+                        }\n+                    });\n+\n+                    function getOption(conf, name) {\n+                        if (name == \"pairs\" && typeof conf == \"string\") return conf;\n+                        if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n+                        return defaults[name];\n                     }\n-                }));\n-                Object.defineProperty(exports, \"fromCodePoint\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return decode_codepoint_js_2.fromCodePoint;\n+                    var keyMap = {\n+                        Backspace: handleBackspace,\n+                        Enter: handleEnter\n+                    };\n+\n+                    function ensureBound(chars) {\n+                        for (var i = 0; i < chars.length; i++) {\n+                            var ch = chars.charAt(i),\n+                                key = \"'\" + ch + \"'\";\n+                            if (!keyMap[key]) keyMap[key] = handler(ch);\n+                        }\n                     }\n-                }));\n-                var CharCodes;\n-                (function(CharCodes) {\n-                    CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n-                    CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n-                    CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n-                    CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n-                    CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n-                    CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n-                    CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n-                    CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n-                    CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n-                    CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n-                    CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n-                    CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n-                })(CharCodes || (CharCodes = {}));\n-                /** Bit that needs to be set to convert an upper case ASCII character to lower case */\n-                var TO_LOWER_BIT = 32;\n-                var BinTrieFlags;\n-                (function(BinTrieFlags) {\n-                    BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n-                    BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n-                    BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n-                })(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));\n+                    ensureBound(defaults.pairs + \"`\");\n \n-                function isNumber(code) {\n-                    return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n-                }\n+                    function handler(ch) {\n+                        return function(cm) {\n+                            return handleChar(cm, ch);\n+                        };\n+                    }\n \n-                function isHexadecimalCharacter(code) {\n-                    return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F;\n-                }\n+                    function getConfig(cm) {\n+                        var deflt = cm.state.closeBrackets;\n+                        if (!deflt || deflt.override) return deflt;\n+                        var mode = cm.getModeAt(cm.getCursor());\n+                        return mode.closeBrackets || deflt;\n+                    }\n \n-                function isAsciiAlphaNumeric(code) {\n-                    return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z || isNumber(code);\n-                }\n-                /**\n-                 * Checks if the given character is a valid end character for an entity in an attribute.\n-                 *\n-                 * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n-                 * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n-                 */\n-                function isEntityInAttributeInvalidEnd(code) {\n-                    return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n-                }\n-                var EntityDecoderState;\n-                (function(EntityDecoderState) {\n-                    EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n-                    EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n-                    EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n-                    EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n-                    EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n-                })(EntityDecoderState || (EntityDecoderState = {}));\n-                var DecodingMode;\n-                (function(DecodingMode) {\n-                    /** Entities in text nodes that can end with any character. */\n-                    DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n-                    /** Only allow entities terminated with a semicolon. */\n-                    DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n-                    /** Entities in attributes have limitations on ending characters. */\n-                    DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n-                })(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {}));\n-                /**\n-                 * Token decoder with support of writing partial entities.\n-                 */\n-                var EntityDecoder = /** @class */ function() {\n-                    function EntityDecoder( /** The tree used to decode entities. */\n-                        decodeTree,\n-                        /**\n-                         * The function that is called when a codepoint is decoded.\n-                         *\n-                         * For multi-byte named entities, this will be called multiple times,\n-                         * with the second codepoint, and the same `consumed` value.\n-                         *\n-                         * @param codepoint The decoded codepoint.\n-                         * @param consumed The number of bytes consumed by the decoder.\n-                         */\n-                        emitCodePoint, /** An object that is used to produce errors. */\n-                        errors) {\n-                        this.decodeTree = decodeTree;\n-                        this.emitCodePoint = emitCodePoint;\n-                        this.errors = errors;\n-                        /** The current state of the decoder. */\n-                        this.state = EntityDecoderState.EntityStart;\n-                        /** Characters that were consumed while parsing an entity. */\n-                        this.consumed = 1;\n-                        /**\n-                         * The result of the entity.\n-                         *\n-                         * Either the result index of a numeric entity, or the codepoint of a\n-                         * numeric entity.\n-                         */\n-                        this.result = 0;\n-                        /** The current index in the decode tree. */\n-                        this.treeIndex = 0;\n-                        /** The number of characters that were consumed in excess. */\n-                        this.excess = 1;\n-                        /** The mode in which the decoder is operating. */\n-                        this.decodeMode = DecodingMode.Strict;\n+                    function handleBackspace(cm) {\n+                        var conf = getConfig(cm);\n+                        if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n+                        var pairs = getOption(conf, \"pairs\");\n+                        var ranges = cm.listSelections();\n+                        for (var i = 0; i < ranges.length; i++) {\n+                            if (!ranges[i].empty()) return CodeMirror.Pass;\n+                            var around = charsAround(cm, ranges[i].head);\n+                            if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n+                        }\n+                        for (var i = ranges.length - 1; i >= 0; i--) {\n+                            var cur = ranges[i].head;\n+                            cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), \"+delete\");\n+                        }\n                     }\n-                    /** Resets the instance to make it reusable. */\n-                    EntityDecoder.prototype.startEntity = function(decodeMode) {\n-                        this.decodeMode = decodeMode;\n-                        this.state = EntityDecoderState.EntityStart;\n-                        this.result = 0;\n-                        this.treeIndex = 0;\n-                        this.excess = 1;\n-                        this.consumed = 1;\n-                    };\n-                    /**\n-                     * Write an entity to the decoder. This can be called multiple times with partial entities.\n-                     * If the entity is incomplete, the decoder will return -1.\n-                     *\n-                     * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n-                     * entity is incomplete, and resume when the next string is written.\n-                     *\n-                     * @param string The string containing the entity (or a continuation of the entity).\n-                     * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n-                     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n-                     */\n-                    EntityDecoder.prototype.write = function(str, offset) {\n-                        switch (this.state) {\n-                            case EntityDecoderState.EntityStart: {\n-                                if (str.charCodeAt(offset) === CharCodes.NUM) {\n-                                    this.state = EntityDecoderState.NumericStart;\n-                                    this.consumed += 1;\n-                                    return this.stateNumericStart(str, offset + 1);\n-                                }\n-                                this.state = EntityDecoderState.NamedEntity;\n-                                return this.stateNamedEntity(str, offset);\n+\n+                    function handleEnter(cm) {\n+                        var conf = getConfig(cm);\n+                        var explode = conf && getOption(conf, \"explode\");\n+                        if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n+                        var ranges = cm.listSelections();\n+                        for (var i = 0; i < ranges.length; i++) {\n+                            if (!ranges[i].empty()) return CodeMirror.Pass;\n+                            var around = charsAround(cm, ranges[i].head);\n+                            if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n+                        }\n+                        cm.operation(function() {\n+                            var linesep = cm.lineSeparator() || \"\\n\";\n+                            cm.replaceSelection(linesep + linesep, null);\n+                            moveSel(cm, -1);\n+                            ranges = cm.listSelections();\n+                            for (var i = 0; i < ranges.length; i++) {\n+                                var line = ranges[i].head.line;\n+                                cm.indentLine(line, null, true);\n+                                cm.indentLine(line + 1, null, true);\n                             }\n-                            case EntityDecoderState.NumericStart: {\n-                                return this.stateNumericStart(str, offset);\n+                        });\n+                    }\n+\n+                    function moveSel(cm, dir) {\n+                        var newRanges = [],\n+                            ranges = cm.listSelections(),\n+                            primary = 0;\n+                        for (var i = 0; i < ranges.length; i++) {\n+                            var range = ranges[i];\n+                            if (range.head == cm.getCursor()) primary = i;\n+                            var pos = range.head.ch || dir > 0 ? {\n+                                line: range.head.line,\n+                                ch: range.head.ch + dir\n+                            } : {\n+                                line: range.head.line - 1\n+                            };\n+                            newRanges.push({\n+                                anchor: pos,\n+                                head: pos\n+                            });\n+                        }\n+                        cm.setSelections(newRanges, primary);\n+                    }\n+\n+                    function contractSelection(sel) {\n+                        var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n+                        return {\n+                            anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n+                            head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))\n+                        };\n+                    }\n+\n+                    function handleChar(cm, ch) {\n+                        var conf = getConfig(cm);\n+                        if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n+                        var pairs = getOption(conf, \"pairs\");\n+                        var pos = pairs.indexOf(ch);\n+                        if (pos == -1) return CodeMirror.Pass;\n+                        var closeBefore = getOption(conf, \"closeBefore\");\n+                        var triples = getOption(conf, \"triples\");\n+                        var identical = pairs.charAt(pos + 1) == ch;\n+                        var ranges = cm.listSelections();\n+                        var opening = pos % 2 == 0;\n+                        var type;\n+                        for (var i = 0; i < ranges.length; i++) {\n+                            var range = ranges[i],\n+                                cur = range.head,\n+                                curType;\n+                            var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n+                            if (opening && !range.empty()) {\n+                                curType = \"surround\";\n+                            } else if ((identical || !opening) && next == ch) {\n+                                if (identical && stringStartsAfter(cm, cur)) curType = \"both\";\n+                                else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch) curType = \"skipThree\";\n+                                else curType = \"skip\";\n+                            } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 && cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {\n+                                if (cur.ch > 2 && /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass;\n+                                curType = \"addFour\";\n+                            } else if (identical) {\n+                                var prev = cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur);\n+                                if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = \"both\";\n+                                else return CodeMirror.Pass;\n+                            } else if (opening && (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)) {\n+                                curType = \"both\";\n+                            } else {\n+                                return CodeMirror.Pass;\n                             }\n-                            case EntityDecoderState.NumericDecimal: {\n-                                return this.stateNumericDecimal(str, offset);\n+                            if (!type) type = curType;\n+                            else if (type != curType) return CodeMirror.Pass;\n+                        }\n+                        var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n+                        var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n+                        cm.operation(function() {\n+                            if (type == \"skip\") {\n+                                moveSel(cm, 1);\n+                            } else if (type == \"skipThree\") {\n+                                moveSel(cm, 3);\n+                            } else if (type == \"surround\") {\n+                                var sels = cm.getSelections();\n+                                for (var i = 0; i < sels.length; i++) sels[i] = left + sels[i] + right;\n+                                cm.replaceSelections(sels, \"around\");\n+                                sels = cm.listSelections().slice();\n+                                for (var i = 0; i < sels.length; i++) sels[i] = contractSelection(sels[i]);\n+                                cm.setSelections(sels);\n+                            } else if (type == \"both\") {\n+                                cm.replaceSelection(left + right, null);\n+                                cm.triggerElectric(left + right);\n+                                moveSel(cm, -1);\n+                            } else if (type == \"addFour\") {\n+                                cm.replaceSelection(left + left + left + left, \"before\");\n+                                moveSel(cm, 1);\n                             }\n-                            case EntityDecoderState.NumericHex: {\n-                                return this.stateNumericHex(str, offset);\n+                        });\n+                    }\n+\n+                    function charsAround(cm, pos) {\n+                        var str = cm.getRange(Pos(pos.line, pos.ch - 1), Pos(pos.line, pos.ch + 1));\n+                        return str.length == 2 ? str : null;\n+                    }\n+\n+                    function stringStartsAfter(cm, pos) {\n+                        var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1));\n+                        return /\\bstring/.test(token.type) && token.start == pos.ch && (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)));\n+                    }\n+                });\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/codemirror/addon/edit/matchbrackets.js\":\n+            /*!********************************************************************!*\\\n+              !*** ../../../node_modules/codemirror/addon/edit/matchbrackets.js ***!\n+              \\********************************************************************/\n+            /***/\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n+\n+                (function(mod) {\n+                    if (true)\n+                        // CommonJS\n+                        mod(__webpack_require__( /*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                    else {}\n+                })(function(CodeMirror) {\n+                    var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) && (document.documentMode == null || document.documentMode < 8);\n+                    var Pos = CodeMirror.Pos;\n+                    var matching = {\n+                        \"(\": \")>\",\n+                        \")\": \"(<\",\n+                        \"[\": \"]>\",\n+                        \"]\": \"[<\",\n+                        \"{\": \"}>\",\n+                        \"}\": \"{<\",\n+                        \"<\": \">>\",\n+                        \">\": \"<<\"\n+                    };\n+\n+                    function bracketRegex(config) {\n+                        return config && config.bracketRegex || /[(){}[\\]]/;\n+                    }\n+\n+                    function findMatchingBracket(cm, where, config) {\n+                        var line = cm.getLineHandle(where.line),\n+                            pos = where.ch - 1;\n+                        var afterCursor = config && config.afterCursor;\n+                        if (afterCursor == null) afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className);\n+                        var re = bracketRegex(config);\n+\n+                        // A cursor is defined as between two characters, but in in vim command mode\n+                        // (i.e. not insert mode), the cursor is visually represented as a\n+                        // highlighted box on top of the 2nd character. Otherwise, we allow matches\n+                        // from before or after the cursor.\n+                        var match = !afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)] || re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n+                        if (!match) return null;\n+                        var dir = match.charAt(1) == \">\" ? 1 : -1;\n+                        if (config && config.strict && dir > 0 != (pos == where.ch)) return null;\n+                        var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n+                        var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n+                        if (found == null) return null;\n+                        return {\n+                            from: Pos(where.line, pos),\n+                            to: found && found.pos,\n+                            match: found && found.ch == match.charAt(0),\n+                            forward: dir > 0\n+                        };\n+                    }\n+\n+                    // bracketRegex is used to specify which type of bracket to scan\n+                    // should be a regexp, e.g. /[[\\]]/\n+                    //\n+                    // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n+                    //\n+                    // Returns false when no bracket was found, null when it reached\n+                    // maxScanLines and gave up\n+                    function scanForBracket(cm, where, dir, style, config) {\n+                        var maxScanLen = config && config.maxScanLineLength || 10000;\n+                        var maxScanLines = config && config.maxScanLines || 1000;\n+                        var stack = [];\n+                        var re = bracketRegex(config);\n+                        var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1) : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n+                        for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n+                            var line = cm.getLine(lineNo);\n+                            if (!line) continue;\n+                            var pos = dir > 0 ? 0 : line.length - 1,\n+                                end = dir > 0 ? line.length : -1;\n+                            if (line.length > maxScanLen) continue;\n+                            if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n+                            for (; pos != end; pos += dir) {\n+                                var ch = line.charAt(pos);\n+                                if (re.test(ch) && (style === undefined || (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n+                                    var match = matching[ch];\n+                                    if (match && match.charAt(1) == \">\" == dir > 0) stack.push(ch);\n+                                    else if (!stack.length) return {\n+                                        pos: Pos(lineNo, pos),\n+                                        ch: ch\n+                                    };\n+                                    else stack.pop();\n+                                }\n                             }\n-                            case EntityDecoderState.NamedEntity: {\n-                                return this.stateNamedEntity(str, offset);\n+                        }\n+                        return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n+                    }\n+\n+                    function matchBrackets(cm, autoclear, config) {\n+                        // Disable brace matching in long lines, since it'll cause hugely slow updates\n+                        var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000,\n+                            highlightNonMatching = config && config.highlightNonMatching;\n+                        var marks = [],\n+                            ranges = cm.listSelections();\n+                        for (var i = 0; i < ranges.length; i++) {\n+                            var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n+                            if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n+                                var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n+                                marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {\n+                                    className: style\n+                                }));\n+                                if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen) marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {\n+                                    className: style\n+                                }));\n                             }\n                         }\n-                    };\n-                    /**\n-                     * Switches between the numeric decimal and hexadecimal states.\n-                     *\n-                     * Equivalent to the `Numeric character reference state` in the HTML spec.\n-                     *\n-                     * @param str The string containing the entity (or a continuation of the entity).\n-                     * @param offset The current offset.\n-                     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n-                     */\n-                    EntityDecoder.prototype.stateNumericStart = function(str, offset) {\n-                        if (offset >= str.length) {\n-                            return -1;\n+                        if (marks.length) {\n+                            // Kludge to work around the IE bug from issue #1193, where text\n+                            // input stops going to the textarea whenever this fires.\n+                            if (ie_lt8 && cm.state.focused) cm.focus();\n+                            var clear = function() {\n+                                cm.operation(function() {\n+                                    for (var i = 0; i < marks.length; i++) marks[i].clear();\n+                                });\n+                            };\n+                            if (autoclear) setTimeout(clear, 800);\n+                            else return clear;\n                         }\n-                        if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n-                            this.state = EntityDecoderState.NumericHex;\n-                            this.consumed += 1;\n-                            return this.stateNumericHex(str, offset + 1);\n+                    }\n+\n+                    function doMatchBrackets(cm) {\n+                        cm.operation(function() {\n+                            if (cm.state.matchBrackets.currentlyHighlighted) {\n+                                cm.state.matchBrackets.currentlyHighlighted();\n+                                cm.state.matchBrackets.currentlyHighlighted = null;\n+                            }\n+                            cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n+                        });\n+                    }\n+\n+                    function clearHighlighted(cm) {\n+                        if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n+                            cm.state.matchBrackets.currentlyHighlighted();\n+                            cm.state.matchBrackets.currentlyHighlighted = null;\n                         }\n-                        this.state = EntityDecoderState.NumericDecimal;\n-                        return this.stateNumericDecimal(str, offset);\n-                    };\n-                    EntityDecoder.prototype.addToNumericResult = function(str, start, end, base) {\n-                        if (start !== end) {\n-                            var digitCount = end - start;\n-                            this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base);\n-                            this.consumed += digitCount;\n+                    }\n+                    CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n+                        if (old && old != CodeMirror.Init) {\n+                            cm.off(\"cursorActivity\", doMatchBrackets);\n+                            cm.off(\"focus\", doMatchBrackets);\n+                            cm.off(\"blur\", clearHighlighted);\n+                            clearHighlighted(cm);\n                         }\n-                    };\n-                    /**\n-                     * Parses a hexadecimal numeric entity.\n-                     *\n-                     * Equivalent to the `Hexademical character reference state` in the HTML spec.\n-                     *\n-                     * @param str The string containing the entity (or a continuation of the entity).\n-                     * @param offset The current offset.\n-                     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n-                     */\n-                    EntityDecoder.prototype.stateNumericHex = function(str, offset) {\n-                        var startIdx = offset;\n-                        while (offset < str.length) {\n-                            var char = str.charCodeAt(offset);\n-                            if (isNumber(char) || isHexadecimalCharacter(char)) {\n-                                offset += 1;\n+                        if (val) {\n+                            cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n+                            cm.on(\"cursorActivity\", doMatchBrackets);\n+                            cm.on(\"focus\", doMatchBrackets);\n+                            cm.on(\"blur\", clearHighlighted);\n+                        }\n+                    });\n+                    CodeMirror.defineExtension(\"matchBrackets\", function() {\n+                        matchBrackets(this, true);\n+                    });\n+                    CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig) {\n+                        // Backwards-compatibility kludge\n+                        if (oldConfig || typeof config == \"boolean\") {\n+                            if (!oldConfig) {\n+                                config = config ? {\n+                                    strict: true\n+                                } : null;\n                             } else {\n-                                this.addToNumericResult(str, startIdx, offset, 16);\n-                                return this.emitNumericEntity(char, 3);\n+                                oldConfig.strict = config;\n+                                config = oldConfig;\n                             }\n                         }\n-                        this.addToNumericResult(str, startIdx, offset, 16);\n-                        return -1;\n-                    };\n-                    /**\n-                     * Parses a decimal numeric entity.\n-                     *\n-                     * Equivalent to the `Decimal character reference state` in the HTML spec.\n-                     *\n-                     * @param str The string containing the entity (or a continuation of the entity).\n-                     * @param offset The current offset.\n-                     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n-                     */\n-                    EntityDecoder.prototype.stateNumericDecimal = function(str, offset) {\n-                        var startIdx = offset;\n-                        while (offset < str.length) {\n-                            var char = str.charCodeAt(offset);\n-                            if (isNumber(char)) {\n-                                offset += 1;\n-                            } else {\n-                                this.addToNumericResult(str, startIdx, offset, 10);\n-                                return this.emitNumericEntity(char, 2);\n+                        return findMatchingBracket(this, pos, config);\n+                    });\n+                    CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config) {\n+                        return scanForBracket(this, pos, dir, style, config);\n+                    });\n+                });\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/codemirror/addon/fold/brace-fold.js\":\n+            /*!*****************************************************************!*\\\n+              !*** ../../../node_modules/codemirror/addon/fold/brace-fold.js ***!\n+              \\*****************************************************************/\n+            /***/\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n+\n+                (function(mod) {\n+                    if (true)\n+                        // CommonJS\n+                        mod(__webpack_require__( /*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                    else {}\n+                })(function(CodeMirror) {\n+                    \"use strict\";\n+\n+                    function bracketFolding(pairs) {\n+                        return function(cm, start) {\n+                            var line = start.line,\n+                                lineText = cm.getLine(line);\n+\n+                            function findOpening(pair) {\n+                                var tokenType;\n+                                for (var at = start.ch, pass = 0;;) {\n+                                    var found = at <= 0 ? -1 : lineText.lastIndexOf(pair[0], at - 1);\n+                                    if (found == -1) {\n+                                        if (pass == 1) break;\n+                                        pass = 1;\n+                                        at = lineText.length;\n+                                        continue;\n+                                    }\n+                                    if (pass == 1 && found < start.ch) break;\n+                                    tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n+                                    if (!/^(comment|string)/.test(tokenType)) return {\n+                                        ch: found + 1,\n+                                        tokenType: tokenType,\n+                                        pair: pair\n+                                    };\n+                                    at = found - 1;\n+                                }\n+                            }\n+\n+                            function findRange(found) {\n+                                var count = 1,\n+                                    lastLine = cm.lastLine(),\n+                                    end,\n+                                    startCh = found.ch,\n+                                    endCh;\n+                                outer: for (var i = line; i <= lastLine; ++i) {\n+                                    var text = cm.getLine(i),\n+                                        pos = i == line ? startCh : 0;\n+                                    for (;;) {\n+                                        var nextOpen = text.indexOf(found.pair[0], pos),\n+                                            nextClose = text.indexOf(found.pair[1], pos);\n+                                        if (nextOpen < 0) nextOpen = text.length;\n+                                        if (nextClose < 0) nextClose = text.length;\n+                                        pos = Math.min(nextOpen, nextClose);\n+                                        if (pos == text.length) break;\n+                                        if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == found.tokenType) {\n+                                            if (pos == nextOpen) ++count;\n+                                            else if (!--count) {\n+                                                end = i;\n+                                                endCh = pos;\n+                                                break outer;\n+                                            }\n+                                        }\n+                                        ++pos;\n+                                    }\n+                                }\n+                                if (end == null || line == end) return null;\n+                                return {\n+                                    from: CodeMirror.Pos(line, startCh),\n+                                    to: CodeMirror.Pos(end, endCh)\n+                                };\n+                            }\n+                            var found = [];\n+                            for (var i = 0; i < pairs.length; i++) {\n+                                var open = findOpening(pairs[i]);\n+                                if (open) found.push(open);\n+                            }\n+                            found.sort(function(a, b) {\n+                                return a.ch - b.ch;\n+                            });\n+                            for (var i = 0; i < found.length; i++) {\n+                                var range = findRange(found[i]);\n+                                if (range) return range;\n+                            }\n+                            return null;\n+                        };\n+                    }\n+                    CodeMirror.registerHelper(\"fold\", \"brace\", bracketFolding([\n+                        [\"{\", \"}\"],\n+                        [\"[\", \"]\"]\n+                    ]));\n+                    CodeMirror.registerHelper(\"fold\", \"brace-paren\", bracketFolding([\n+                        [\"{\", \"}\"],\n+                        [\"[\", \"]\"],\n+                        [\"(\", \")\"]\n+                    ]));\n+                    CodeMirror.registerHelper(\"fold\", \"import\", function(cm, start) {\n+                        function hasImport(line) {\n+                            if (line < cm.firstLine() || line > cm.lastLine()) return null;\n+                            var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n+                            if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n+                            if (start.type != \"keyword\" || start.string != \"import\") return null;\n+                            // Now find closing semicolon, return its position\n+                            for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {\n+                                var text = cm.getLine(i),\n+                                    semi = text.indexOf(\";\");\n+                                if (semi != -1) return {\n+                                    startCh: start.end,\n+                                    end: CodeMirror.Pos(i, semi)\n+                                };\n                             }\n                         }\n-                        this.addToNumericResult(str, startIdx, offset, 10);\n-                        return -1;\n-                    };\n-                    /**\n-                     * Validate and emit a numeric entity.\n-                     *\n-                     * Implements the logic from the `Hexademical character reference start\n-                     * state` and `Numeric character reference end state` in the HTML spec.\n-                     *\n-                     * @param lastCp The last code point of the entity. Used to see if the\n-                     *               entity was terminated with a semicolon.\n-                     * @param expectedLength The minimum number of characters that should be\n-                     *                       consumed. Used to validate that at least one digit\n-                     *                       was consumed.\n-                     * @returns The number of characters that were consumed.\n-                     */\n-                    EntityDecoder.prototype.emitNumericEntity = function(lastCp, expectedLength) {\n-                        var _a;\n-                        // Ensure we consumed at least one digit.\n-                        if (this.consumed <= expectedLength) {\n-                            (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n-                            return 0;\n+                        var startLine = start.line,\n+                            has = hasImport(startLine),\n+                            prev;\n+                        if (!has || hasImport(startLine - 1) || (prev = hasImport(startLine - 2)) && prev.end.line == startLine - 1) return null;\n+                        for (var end = has.end;;) {\n+                            var next = hasImport(end.line + 1);\n+                            if (next == null) break;\n+                            end = next.end;\n                         }\n-                        // Figure out if this is a legit end of the entity\n-                        if (lastCp === CharCodes.SEMI) {\n-                            this.consumed += 1;\n-                        } else if (this.decodeMode === DecodingMode.Strict) {\n-                            return 0;\n+                        return {\n+                            from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)),\n+                            to: end\n+                        };\n+                    });\n+                    CodeMirror.registerHelper(\"fold\", \"include\", function(cm, start) {\n+                        function hasInclude(line) {\n+                            if (line < cm.firstLine() || line > cm.lastLine()) return null;\n+                            var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n+                            if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n+                            if (start.type == \"meta\" && start.string.slice(0, 8) == \"#include\") return start.start + 8;\n+                        }\n+                        var startLine = start.line,\n+                            has = hasInclude(startLine);\n+                        if (has == null || hasInclude(startLine - 1) != null) return null;\n+                        for (var end = startLine;;) {\n+                            var next = hasInclude(end + 1);\n+                            if (next == null) break;\n+                            ++end;\n                         }\n-                        this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);\n-                        if (this.errors) {\n-                            if (lastCp !== CharCodes.SEMI) {\n-                                this.errors.missingSemicolonAfterCharacterReference();\n-                            }\n-                            this.errors.validateNumericCharacterReference(this.result);\n+                        return {\n+                            from: CodeMirror.Pos(startLine, has + 1),\n+                            to: cm.clipPos(CodeMirror.Pos(end))\n+                        };\n+                    });\n+                });\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/codemirror/addon/fold/foldcode.js\":\n+            /*!***************************************************************!*\\\n+              !*** ../../../node_modules/codemirror/addon/fold/foldcode.js ***!\n+              \\***************************************************************/\n+            /***/\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n+\n+                (function(mod) {\n+                    if (true)\n+                        // CommonJS\n+                        mod(__webpack_require__( /*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                    else {}\n+                })(function(CodeMirror) {\n+                    \"use strict\";\n+\n+                    function doFold(cm, pos, options, force) {\n+                        if (options && options.call) {\n+                            var finder = options;\n+                            options = null;\n+                        } else {\n+                            var finder = getOption(cm, options, \"rangeFinder\");\n                         }\n-                        return this.consumed;\n-                    };\n-                    /**\n-                     * Parses a named entity.\n-                     *\n-                     * Equivalent to the `Named character reference state` in the HTML spec.\n-                     *\n-                     * @param str The string containing the entity (or a continuation of the entity).\n-                     * @param offset The current offset.\n-                     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n-                     */\n-                    EntityDecoder.prototype.stateNamedEntity = function(str, offset) {\n-                        var decodeTree = this.decodeTree;\n-                        var current = decodeTree[this.treeIndex];\n-                        // The mask is the number of bytes of the value, including the current byte.\n-                        var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n-                        for (; offset < str.length; offset++, this.excess++) {\n-                            var char = str.charCodeAt(offset);\n-                            this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n-                            if (this.treeIndex < 0) {\n-                                return this.result === 0 ||\n-                                    // If we are parsing an attribute\n-                                    this.decodeMode === DecodingMode.Attribute && (\n-                                        // We shouldn't have consumed any characters after the entity,\n-                                        valueLength === 0 ||\n-                                        // And there should be no invalid characters.\n-                                        isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity();\n-                            }\n-                            current = decodeTree[this.treeIndex];\n-                            valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n-                            // If the branch is a value, store it and continue\n-                            if (valueLength !== 0) {\n-                                // If the entity is terminated by a semicolon, we are done.\n-                                if (char === CharCodes.SEMI) {\n-                                    return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n-                                }\n-                                // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n-                                if (this.decodeMode !== DecodingMode.Strict) {\n-                                    this.result = this.treeIndex;\n-                                    this.consumed += this.excess;\n-                                    this.excess = 0;\n+                        if (typeof pos == \"number\") pos = CodeMirror.Pos(pos, 0);\n+                        var minSize = getOption(cm, options, \"minFoldSize\");\n+\n+                        function getRange(allowFolded) {\n+                            var range = finder(cm, pos);\n+                            if (!range || range.to.line - range.from.line < minSize) return null;\n+                            if (force === \"fold\") return range;\n+                            var marks = cm.findMarksAt(range.from);\n+                            for (var i = 0; i < marks.length; ++i) {\n+                                if (marks[i].__isFold) {\n+                                    if (!allowFolded) return null;\n+                                    range.cleared = true;\n+                                    marks[i].clear();\n                                 }\n                             }\n+                            return range;\n                         }\n-                        return -1;\n-                    };\n-                    /**\n-                     * Emit a named entity that was not terminated with a semicolon.\n-                     *\n-                     * @returns The number of characters consumed.\n-                     */\n-                    EntityDecoder.prototype.emitNotTerminatedNamedEntity = function() {\n-                        var _a;\n-                        var _b = this,\n-                            result = _b.result,\n-                            decodeTree = _b.decodeTree;\n-                        var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n-                        this.emitNamedEntityData(result, valueLength, this.consumed);\n-                        (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n-                        return this.consumed;\n-                    };\n-                    /**\n-                     * Emit a named entity.\n-                     *\n-                     * @param result The index of the entity in the decode tree.\n-                     * @param valueLength The number of bytes in the entity.\n-                     * @param consumed The number of characters consumed.\n-                     *\n-                     * @returns The number of characters consumed.\n-                     */\n-                    EntityDecoder.prototype.emitNamedEntityData = function(result, valueLength, consumed) {\n-                        var decodeTree = this.decodeTree;\n-                        this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed);\n-                        if (valueLength === 3) {\n-                            // For multi-byte values, we need to emit the second byte.\n-                            this.emitCodePoint(decodeTree[result + 2], consumed);\n-                        }\n-                        return consumed;\n-                    };\n-                    /**\n-                     * Signal to the parser that the end of the input was reached.\n-                     *\n-                     * Remaining data will be emitted and relevant errors will be produced.\n-                     *\n-                     * @returns The number of characters consumed.\n-                     */\n-                    EntityDecoder.prototype.end = function() {\n-                        var _a;\n-                        switch (this.state) {\n-                            case EntityDecoderState.NamedEntity: {\n-                                // Emit a named entity if we have one.\n-                                return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;\n-                            }\n-                            // Otherwise, emit a numeric entity if we have one.\n-                            case EntityDecoderState.NumericDecimal: {\n-                                return this.emitNumericEntity(0, 2);\n-                            }\n-                            case EntityDecoderState.NumericHex: {\n-                                return this.emitNumericEntity(0, 3);\n-                            }\n-                            case EntityDecoderState.NumericStart: {\n-                                (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n-                                return 0;\n-                            }\n-                            case EntityDecoderState.EntityStart: {\n-                                // Return 0 if we have no entity.\n-                                return 0;\n+                        var range = getRange(true);\n+                        if (getOption(cm, options, \"scanUp\"))\n+                            while (!range && pos.line > cm.firstLine()) {\n+                                pos = CodeMirror.Pos(pos.line - 1, 0);\n+                                range = getRange(false);\n                             }\n+                        if (!range || range.cleared || force === \"unfold\") return;\n+                        var myWidget = makeWidget(cm, options, range);\n+                        CodeMirror.on(myWidget, \"mousedown\", function(e) {\n+                            myRange.clear();\n+                            CodeMirror.e_preventDefault(e);\n+                        });\n+                        var myRange = cm.markText(range.from, range.to, {\n+                            replacedWith: myWidget,\n+                            clearOnEnter: getOption(cm, options, \"clearOnEnter\"),\n+                            __isFold: true\n+                        });\n+                        myRange.on(\"clear\", function(from, to) {\n+                            CodeMirror.signal(cm, \"unfold\", cm, from, to);\n+                        });\n+                        CodeMirror.signal(cm, \"fold\", cm, range.from, range.to);\n+                    }\n+\n+                    function makeWidget(cm, options, range) {\n+                        var widget = getOption(cm, options, \"widget\");\n+                        if (typeof widget == \"function\") {\n+                            widget = widget(range.from, range.to);\n+                        }\n+                        if (typeof widget == \"string\") {\n+                            var text = document.createTextNode(widget);\n+                            widget = document.createElement(\"span\");\n+                            widget.appendChild(text);\n+                            widget.className = \"CodeMirror-foldmarker\";\n+                        } else if (widget) {\n+                            widget = widget.cloneNode(true);\n                         }\n+                        return widget;\n+                    }\n+\n+                    // Clumsy backwards-compatible interface\n+                    CodeMirror.newFoldFunction = function(rangeFinder, widget) {\n+                        return function(cm, pos) {\n+                            doFold(cm, pos, {\n+                                rangeFinder: rangeFinder,\n+                                widget: widget\n+                            });\n+                        };\n                     };\n-                    return EntityDecoder;\n-                }();\n-                exports.EntityDecoder = EntityDecoder;\n-                /**\n-                 * Creates a function that decodes entities in a string.\n-                 *\n-                 * @param decodeTree The decode tree.\n-                 * @returns A function that decodes entities in a string.\n-                 */\n-                function getDecoder(decodeTree) {\n-                    var ret = \"\";\n-                    var decoder = new EntityDecoder(decodeTree, function(str) {\n-                        return ret += (0, decode_codepoint_js_1.fromCodePoint)(str);\n+\n+                    // New-style interface\n+                    CodeMirror.defineExtension(\"foldCode\", function(pos, options, force) {\n+                        doFold(this, pos, options, force);\n                     });\n-                    return function decodeWithTrie(str, decodeMode) {\n-                        var lastIndex = 0;\n-                        var offset = 0;\n-                        while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n-                            ret += str.slice(lastIndex, offset);\n-                            decoder.startEntity(decodeMode);\n-                            var len = decoder.write(str,\n-                                // Skip the \"&\"\n-                                offset + 1);\n-                            if (len < 0) {\n-                                lastIndex = offset + decoder.end();\n-                                break;\n+                    CodeMirror.defineExtension(\"isFolded\", function(pos) {\n+                        var marks = this.findMarksAt(pos);\n+                        for (var i = 0; i < marks.length; ++i)\n+                            if (marks[i].__isFold) return true;\n+                    });\n+                    CodeMirror.commands.toggleFold = function(cm) {\n+                        cm.foldCode(cm.getCursor());\n+                    };\n+                    CodeMirror.commands.fold = function(cm) {\n+                        cm.foldCode(cm.getCursor(), null, \"fold\");\n+                    };\n+                    CodeMirror.commands.unfold = function(cm) {\n+                        cm.foldCode(cm.getCursor(), {\n+                            scanUp: false\n+                        }, \"unfold\");\n+                    };\n+                    CodeMirror.commands.foldAll = function(cm) {\n+                        cm.operation(function() {\n+                            for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++) cm.foldCode(CodeMirror.Pos(i, 0), {\n+                                scanUp: false\n+                            }, \"fold\");\n+                        });\n+                    };\n+                    CodeMirror.commands.unfoldAll = function(cm) {\n+                        cm.operation(function() {\n+                            for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++) cm.foldCode(CodeMirror.Pos(i, 0), {\n+                                scanUp: false\n+                            }, \"unfold\");\n+                        });\n+                    };\n+                    CodeMirror.registerHelper(\"fold\", \"combine\", function() {\n+                        var funcs = Array.prototype.slice.call(arguments, 0);\n+                        return function(cm, start) {\n+                            for (var i = 0; i < funcs.length; ++i) {\n+                                var found = funcs[i](cm, start);\n+                                if (found) return found;\n                             }\n-                            lastIndex = offset + len;\n-                            // If `len` is 0, skip the current `&` and continue.\n-                            offset = len === 0 ? lastIndex + 1 : lastIndex;\n+                        };\n+                    });\n+                    CodeMirror.registerHelper(\"fold\", \"auto\", function(cm, start) {\n+                        var helpers = cm.getHelpers(start, \"fold\");\n+                        for (var i = 0; i < helpers.length; i++) {\n+                            var cur = helpers[i](cm, start);\n+                            if (cur) return cur;\n                         }\n-                        var result = ret + str.slice(lastIndex);\n-                        // Make sure we don't keep a reference to the final string.\n-                        ret = \"\";\n-                        return result;\n+                    });\n+                    var defaultOptions = {\n+                        rangeFinder: CodeMirror.fold.auto,\n+                        widget: \"\\u2194\",\n+                        minFoldSize: 0,\n+                        scanUp: false,\n+                        clearOnEnter: true\n                     };\n-                }\n-                /**\n-                 * Determines the branch of the current node that is taken given the current\n-                 * character. This function is used to traverse the trie.\n-                 *\n-                 * @param decodeTree The trie.\n-                 * @param current The current node.\n-                 * @param nodeIdx The index right after the current node and its value.\n-                 * @param char The current character.\n-                 * @returns The index of the next node, or -1 if no branch is taken.\n-                 */\n-                function determineBranch(decodeTree, current, nodeIdx, char) {\n-                    var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n-                    var jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n-                    // Case 1: Single branch encoded in jump offset\n-                    if (branchCount === 0) {\n-                        return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n-                    }\n-                    // Case 2: Multiple branches encoded in jump table\n-                    if (jumpOffset) {\n-                        var value = char - jumpOffset;\n-                        return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;\n-                    }\n-                    // Case 3: Multiple branches encoded in dictionary\n-                    // Binary search for the character.\n-                    var lo = nodeIdx;\n-                    var hi = lo + branchCount - 1;\n-                    while (lo <= hi) {\n-                        var mid = lo + hi >>> 1;\n-                        var midVal = decodeTree[mid];\n-                        if (midVal < char) {\n-                            lo = mid + 1;\n-                        } else if (midVal > char) {\n-                            hi = mid - 1;\n-                        } else {\n-                            return decodeTree[mid + branchCount];\n-                        }\n-                    }\n-                    return -1;\n-                }\n-                exports.determineBranch = determineBranch;\n-                var htmlDecoder = getDecoder(decode_data_html_js_1.default);\n-                var xmlDecoder = getDecoder(decode_data_xml_js_1.default);\n-                /**\n-                 * Decodes an HTML string.\n-                 *\n-                 * @param str The string to decode.\n-                 * @param mode The decoding mode.\n-                 * @returns The decoded string.\n-                 */\n-                function decodeHTML(str, mode) {\n-                    if (mode === void 0) {\n-                        mode = DecodingMode.Legacy;\n+                    CodeMirror.defineOption(\"foldOptions\", null);\n+\n+                    function getOption(cm, options, name) {\n+                        if (options && options[name] !== undefined) return options[name];\n+                        var editorOptions = cm.options.foldOptions;\n+                        if (editorOptions && editorOptions[name] !== undefined) return editorOptions[name];\n+                        return defaultOptions[name];\n                     }\n-                    return htmlDecoder(str, mode);\n-                }\n-                exports.decodeHTML = decodeHTML;\n-                /**\n-                 * Decodes an HTML string in an attribute.\n-                 *\n-                 * @param str The string to decode.\n-                 * @returns The decoded string.\n-                 */\n-                function decodeHTMLAttribute(str) {\n-                    return htmlDecoder(str, DecodingMode.Attribute);\n-                }\n-                exports.decodeHTMLAttribute = decodeHTMLAttribute;\n-                /**\n-                 * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n-                 *\n-                 * @param str The string to decode.\n-                 * @returns The decoded string.\n-                 */\n-                function decodeHTMLStrict(str) {\n-                    return htmlDecoder(str, DecodingMode.Strict);\n-                }\n-                exports.decodeHTMLStrict = decodeHTMLStrict;\n-                /**\n-                 * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n-                 *\n-                 * @param str The string to decode.\n-                 * @returns The decoded string.\n-                 */\n-                function decodeXML(str) {\n-                    return xmlDecoder(str, DecodingMode.Strict);\n-                }\n-                exports.decodeXML = decodeXML;\n+                    CodeMirror.defineExtension(\"foldOption\", function(options, name) {\n+                        return getOption(this, options, name);\n+                    });\n+                });\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/entities/lib/decode_codepoint.js\":\n-            /*!**************************************************************!*\\\n-              !*** ../../../node_modules/entities/lib/decode_codepoint.js ***!\n-              \\**************************************************************/\n+        \"../../../node_modules/codemirror/addon/fold/foldgutter.js\":\n+            /*!*****************************************************************!*\\\n+              !*** ../../../node_modules/codemirror/addon/fold/foldgutter.js ***!\n+              \\*****************************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports) {\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n-                // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\n-                var _a;\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.replaceCodePoint = exports.fromCodePoint = void 0;\n-                var decodeMap = new Map([\n-                    [0, 65533],\n-                    // C1 Unicode control character reference replacements\n-                    [128, 8364],\n-                    [130, 8218],\n-                    [131, 402],\n-                    [132, 8222],\n-                    [133, 8230],\n-                    [134, 8224],\n-                    [135, 8225],\n-                    [136, 710],\n-                    [137, 8240],\n-                    [138, 352],\n-                    [139, 8249],\n-                    [140, 338],\n-                    [142, 381],\n-                    [145, 8216],\n-                    [146, 8217],\n-                    [147, 8220],\n-                    [148, 8221],\n-                    [149, 8226],\n-                    [150, 8211],\n-                    [151, 8212],\n-                    [152, 732],\n-                    [153, 8482],\n-                    [154, 353],\n-                    [155, 8250],\n-                    [156, 339],\n-                    [158, 382],\n-                    [159, 376]\n-                ]);\n-                /**\n-                 * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n-                 */\n-                exports.fromCodePoint =\n-                    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n-                    (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function(codePoint) {\n-                        var output = \"\";\n-                        if (codePoint > 0xffff) {\n-                            codePoint -= 0x10000;\n-                            output += String.fromCharCode(codePoint >>> 10 & 0x3ff | 0xd800);\n-                            codePoint = 0xdc00 | codePoint & 0x3ff;\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n+\n+                (function(mod) {\n+                    if (true)\n+                        // CommonJS\n+                        mod(__webpack_require__( /*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"), __webpack_require__( /*! ./foldcode */ \"../../../node_modules/codemirror/addon/fold/foldcode.js\"));\n+                    else {}\n+                })(function(CodeMirror) {\n+                    \"use strict\";\n+\n+                    CodeMirror.defineOption(\"foldGutter\", false, function(cm, val, old) {\n+                        if (old && old != CodeMirror.Init) {\n+                            cm.clearGutter(cm.state.foldGutter.options.gutter);\n+                            cm.state.foldGutter = null;\n+                            cm.off(\"gutterClick\", onGutterClick);\n+                            cm.off(\"changes\", onChange);\n+                            cm.off(\"viewportChange\", onViewportChange);\n+                            cm.off(\"fold\", onFold);\n+                            cm.off(\"unfold\", onFold);\n+                            cm.off(\"swapDoc\", onChange);\n+                        }\n+                        if (val) {\n+                            cm.state.foldGutter = new State(parseOptions(val));\n+                            updateInViewport(cm);\n+                            cm.on(\"gutterClick\", onGutterClick);\n+                            cm.on(\"changes\", onChange);\n+                            cm.on(\"viewportChange\", onViewportChange);\n+                            cm.on(\"fold\", onFold);\n+                            cm.on(\"unfold\", onFold);\n+                            cm.on(\"swapDoc\", onChange);\n+                        }\n+                    });\n+                    var Pos = CodeMirror.Pos;\n+\n+                    function State(options) {\n+                        this.options = options;\n+                        this.from = this.to = 0;\n+                    }\n+\n+                    function parseOptions(opts) {\n+                        if (opts === true) opts = {};\n+                        if (opts.gutter == null) opts.gutter = \"CodeMirror-foldgutter\";\n+                        if (opts.indicatorOpen == null) opts.indicatorOpen = \"CodeMirror-foldgutter-open\";\n+                        if (opts.indicatorFolded == null) opts.indicatorFolded = \"CodeMirror-foldgutter-folded\";\n+                        return opts;\n+                    }\n+\n+                    function isFolded(cm, line) {\n+                        var marks = cm.findMarks(Pos(line, 0), Pos(line + 1, 0));\n+                        for (var i = 0; i < marks.length; ++i) {\n+                            if (marks[i].__isFold) {\n+                                var fromPos = marks[i].find(-1);\n+                                if (fromPos && fromPos.line === line) return marks[i];\n+                            }\n+                        }\n+                    }\n+\n+                    function marker(spec) {\n+                        if (typeof spec == \"string\") {\n+                            var elt = document.createElement(\"div\");\n+                            elt.className = spec + \" CodeMirror-guttermarker-subtle\";\n+                            return elt;\n+                        } else {\n+                            return spec.cloneNode(true);\n                         }\n-                        output += String.fromCharCode(codePoint);\n-                        return output;\n-                    };\n-                /**\n-                 * Replace the given code point with a replacement character if it is a\n-                 * surrogate or is outside the valid range. Otherwise return the code\n-                 * point unchanged.\n-                 */\n-                function replaceCodePoint(codePoint) {\n-                    var _a;\n-                    if (codePoint >= 0xd800 && codePoint <= 0xdfff || codePoint > 0x10ffff) {\n-                        return 0xfffd;\n                     }\n-                    return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n-                }\n-                exports.replaceCodePoint = replaceCodePoint;\n-                /**\n-                 * Replace the code point if relevant, then convert it to a string.\n-                 *\n-                 * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n-                 * @param codePoint The code point to decode.\n-                 * @returns The decoded code point.\n-                 */\n-                function decodeCodePoint(codePoint) {\n-                    return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));\n-                }\n-                exports[\"default\"] = decodeCodePoint;\n+\n+                    function updateFoldInfo(cm, from, to) {\n+                        var opts = cm.state.foldGutter.options,\n+                            cur = from - 1;\n+                        var minSize = cm.foldOption(opts, \"minFoldSize\");\n+                        var func = cm.foldOption(opts, \"rangeFinder\");\n+                        // we can reuse the built-in indicator element if its className matches the new state\n+                        var clsFolded = typeof opts.indicatorFolded == \"string\" && classTest(opts.indicatorFolded);\n+                        var clsOpen = typeof opts.indicatorOpen == \"string\" && classTest(opts.indicatorOpen);\n+                        cm.eachLine(from, to, function(line) {\n+                            ++cur;\n+                            var mark = null;\n+                            var old = line.gutterMarkers;\n+                            if (old) old = old[opts.gutter];\n+                            if (isFolded(cm, cur)) {\n+                                if (clsFolded && old && clsFolded.test(old.className)) return;\n+                                mark = marker(opts.indicatorFolded);\n+                            } else {\n+                                var pos = Pos(cur, 0);\n+                                var range = func && func(cm, pos);\n+                                if (range && range.to.line - range.from.line >= minSize) {\n+                                    if (clsOpen && old && clsOpen.test(old.className)) return;\n+                                    mark = marker(opts.indicatorOpen);\n+                                }\n+                            }\n+                            if (!mark && !old) return;\n+                            cm.setGutterMarker(line, opts.gutter, mark);\n+                        });\n+                    }\n+\n+                    // copied from CodeMirror/src/util/dom.js\n+                    function classTest(cls) {\n+                        return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\");\n+                    }\n+\n+                    function updateInViewport(cm) {\n+                        var vp = cm.getViewport(),\n+                            state = cm.state.foldGutter;\n+                        if (!state) return;\n+                        cm.operation(function() {\n+                            updateFoldInfo(cm, vp.from, vp.to);\n+                        });\n+                        state.from = vp.from;\n+                        state.to = vp.to;\n+                    }\n+\n+                    function onGutterClick(cm, line, gutter) {\n+                        var state = cm.state.foldGutter;\n+                        if (!state) return;\n+                        var opts = state.options;\n+                        if (gutter != opts.gutter) return;\n+                        var folded = isFolded(cm, line);\n+                        if (folded) folded.clear();\n+                        else cm.foldCode(Pos(line, 0), opts);\n+                    }\n+\n+                    function onChange(cm) {\n+                        var state = cm.state.foldGutter;\n+                        if (!state) return;\n+                        var opts = state.options;\n+                        state.from = state.to = 0;\n+                        clearTimeout(state.changeUpdate);\n+                        state.changeUpdate = setTimeout(function() {\n+                            updateInViewport(cm);\n+                        }, opts.foldOnChangeTimeSpan || 600);\n+                    }\n+\n+                    function onViewportChange(cm) {\n+                        var state = cm.state.foldGutter;\n+                        if (!state) return;\n+                        var opts = state.options;\n+                        clearTimeout(state.changeUpdate);\n+                        state.changeUpdate = setTimeout(function() {\n+                            var vp = cm.getViewport();\n+                            if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {\n+                                updateInViewport(cm);\n+                            } else {\n+                                cm.operation(function() {\n+                                    if (vp.from < state.from) {\n+                                        updateFoldInfo(cm, vp.from, state.from);\n+                                        state.from = vp.from;\n+                                    }\n+                                    if (vp.to > state.to) {\n+                                        updateFoldInfo(cm, state.to, vp.to);\n+                                        state.to = vp.to;\n+                                    }\n+                                });\n+                            }\n+                        }, opts.updateViewportTimeSpan || 400);\n+                    }\n+\n+                    function onFold(cm, from) {\n+                        var state = cm.state.foldGutter;\n+                        if (!state) return;\n+                        var line = from.line;\n+                        if (line >= state.from && line < state.to) updateFoldInfo(cm, line, line + 1);\n+                    }\n+                });\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/entities/lib/encode.js\":\n-            /*!****************************************************!*\\\n-              !*** ../../../node_modules/entities/lib/encode.js ***!\n-              \\****************************************************/\n+        \"../../../node_modules/codemirror/addon/hint/show-hint.js\":\n+            /*!****************************************************************!*\\\n+              !*** ../../../node_modules/codemirror/addon/hint/show-hint.js ***!\n+              \\****************************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n-                var __importDefault = void 0 && (void 0).__importDefault || function(mod) {\n-                    return mod && mod.__esModule ? mod : {\n-                        \"default\": mod\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n+\n+                // declare global: DOMRect\n+\n+                (function(mod) {\n+                    if (true)\n+                        // CommonJS\n+                        mod(__webpack_require__( /*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                    else {}\n+                })(function(CodeMirror) {\n+                    \"use strict\";\n+\n+                    var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n+                    var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n+\n+                    // This is the old interface, kept around for now to stay\n+                    // backwards-compatible.\n+                    CodeMirror.showHint = function(cm, getHints, options) {\n+                        if (!getHints) return cm.showHint(options);\n+                        if (options && options.async) getHints.async = true;\n+                        var newOpts = {\n+                            hint: getHints\n+                        };\n+                        if (options)\n+                            for (var prop in options) newOpts[prop] = options[prop];\n+                        return cm.showHint(newOpts);\n+                    };\n+                    CodeMirror.defineExtension(\"showHint\", function(options) {\n+                        options = parseOptions(this, this.getCursor(\"start\"), options);\n+                        var selections = this.listSelections();\n+                        if (selections.length > 1) return;\n+                        // By default, don't allow completion when something is selected.\n+                        // A hint function can have a `supportsSelection` property to\n+                        // indicate that it can handle selections.\n+                        if (this.somethingSelected()) {\n+                            if (!options.hint.supportsSelection) return;\n+                            // Don't try with cross-line selections\n+                            for (var i = 0; i < selections.length; i++)\n+                                if (selections[i].head.line != selections[i].anchor.line) return;\n+                        }\n+                        if (this.state.completionActive) this.state.completionActive.close();\n+                        var completion = this.state.completionActive = new Completion(this, options);\n+                        if (!completion.options.hint) return;\n+                        CodeMirror.signal(this, \"startCompletion\", this);\n+                        completion.update(true);\n+                    });\n+                    CodeMirror.defineExtension(\"closeHint\", function() {\n+                        if (this.state.completionActive) this.state.completionActive.close();\n+                    });\n+\n+                    function Completion(cm, options) {\n+                        this.cm = cm;\n+                        this.options = options;\n+                        this.widget = null;\n+                        this.debounce = 0;\n+                        this.tick = 0;\n+                        this.startPos = this.cm.getCursor(\"start\");\n+                        this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n+                        if (this.options.updateOnCursorActivity) {\n+                            var self = this;\n+                            cm.on(\"cursorActivity\", this.activityFunc = function() {\n+                                self.cursorActivity();\n+                            });\n+                        }\n+                    }\n+                    var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n+                        return setTimeout(fn, 1000 / 60);\n+                    };\n+                    var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n+                    Completion.prototype = {\n+                        close: function() {\n+                            if (!this.active()) return;\n+                            this.cm.state.completionActive = null;\n+                            this.tick = null;\n+                            if (this.options.updateOnCursorActivity) {\n+                                this.cm.off(\"cursorActivity\", this.activityFunc);\n+                            }\n+                            if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n+                            if (this.widget) this.widget.close();\n+                            CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n+                        },\n+                        active: function() {\n+                            return this.cm.state.completionActive == this;\n+                        },\n+                        pick: function(data, i) {\n+                            var completion = data.list[i],\n+                                self = this;\n+                            this.cm.operation(function() {\n+                                if (completion.hint) completion.hint(self.cm, data, completion);\n+                                else self.cm.replaceRange(getText(completion), completion.from || data.from, completion.to || data.to, \"complete\");\n+                                CodeMirror.signal(data, \"pick\", completion);\n+                                self.cm.scrollIntoView();\n+                            });\n+                            if (this.options.closeOnPick) {\n+                                this.close();\n+                            }\n+                        },\n+                        cursorActivity: function() {\n+                            if (this.debounce) {\n+                                cancelAnimationFrame(this.debounce);\n+                                this.debounce = 0;\n+                            }\n+                            var identStart = this.startPos;\n+                            if (this.data) {\n+                                identStart = this.data.from;\n+                            }\n+                            var pos = this.cm.getCursor(),\n+                                line = this.cm.getLine(pos.line);\n+                            if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch || pos.ch < identStart.ch || this.cm.somethingSelected() || !pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1))) {\n+                                this.close();\n+                            } else {\n+                                var self = this;\n+                                this.debounce = requestAnimationFrame(function() {\n+                                    self.update();\n+                                });\n+                                if (this.widget) this.widget.disable();\n+                            }\n+                        },\n+                        update: function(first) {\n+                            if (this.tick == null) return;\n+                            var self = this,\n+                                myTick = ++this.tick;\n+                            fetchHints(this.options.hint, this.cm, this.options, function(data) {\n+                                if (self.tick == myTick) self.finishUpdate(data, first);\n+                            });\n+                        },\n+                        finishUpdate: function(data, first) {\n+                            if (this.data) CodeMirror.signal(this.data, \"update\");\n+                            var picked = this.widget && this.widget.picked || first && this.options.completeSingle;\n+                            if (this.widget) this.widget.close();\n+                            this.data = data;\n+                            if (data && data.list.length) {\n+                                if (picked && data.list.length == 1) {\n+                                    this.pick(data, 0);\n+                                } else {\n+                                    this.widget = new Widget(this, data);\n+                                    CodeMirror.signal(data, \"shown\");\n+                                }\n+                            }\n+                        }\n                     };\n-                };\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.encodeNonAsciiHTML = exports.encodeHTML = void 0;\n-                var encode_html_js_1 = __importDefault(__webpack_require__( /*! ./generated/encode-html.js */ \"../../../node_modules/entities/lib/generated/encode-html.js\"));\n-                var escape_js_1 = __webpack_require__( /*! ./escape.js */ \"../../../node_modules/entities/lib/escape.js\");\n-                var htmlReplacer = /[\\t\\n!-,./:-@[-`\\f{-}$\\x80-\\uFFFF]/g;\n-                /**\n-                 * Encodes all characters in the input using HTML entities. This includes\n-                 * characters that are valid ASCII characters in HTML documents, such as `#`.\n-                 *\n-                 * To get a more compact output, consider using the `encodeNonAsciiHTML`\n-                 * function, which will only encode characters that are not valid in HTML\n-                 * documents, as well as non-ASCII characters.\n-                 *\n-                 * If a character has no equivalent entity, a numeric hexadecimal reference\n-                 * (eg. `&#xfc;`) will be used.\n-                 */\n-                function encodeHTML(data) {\n-                    return encodeHTMLTrieRe(htmlReplacer, data);\n-                }\n-                exports.encodeHTML = encodeHTML;\n-                /**\n-                 * Encodes all non-ASCII characters, as well as characters not valid in HTML\n-                 * documents using HTML entities. This function will not encode characters that\n-                 * are valid in HTML documents, such as `#`.\n-                 *\n-                 * If a character has no equivalent entity, a numeric hexadecimal reference\n-                 * (eg. `&#xfc;`) will be used.\n-                 */\n-                function encodeNonAsciiHTML(data) {\n-                    return encodeHTMLTrieRe(escape_js_1.xmlReplacer, data);\n-                }\n-                exports.encodeNonAsciiHTML = encodeNonAsciiHTML;\n \n-                function encodeHTMLTrieRe(regExp, str) {\n-                    var ret = \"\";\n-                    var lastIdx = 0;\n-                    var match;\n-                    while ((match = regExp.exec(str)) !== null) {\n-                        var i = match.index;\n-                        ret += str.substring(lastIdx, i);\n-                        var char = str.charCodeAt(i);\n-                        var next = encode_html_js_1.default.get(char);\n-                        if (typeof next === \"object\") {\n-                            // We are in a branch. Try to match the next char.\n-                            if (i + 1 < str.length) {\n-                                var nextChar = str.charCodeAt(i + 1);\n-                                var value = typeof next.n === \"number\" ? next.n === nextChar ? next.o : undefined : next.n.get(nextChar);\n-                                if (value !== undefined) {\n-                                    ret += value;\n-                                    lastIdx = regExp.lastIndex += 1;\n-                                    continue;\n+                    function parseOptions(cm, pos, options) {\n+                        var editor = cm.options.hintOptions;\n+                        var out = {};\n+                        for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n+                        if (editor)\n+                            for (var prop in editor)\n+                                if (editor[prop] !== undefined) out[prop] = editor[prop];\n+                        if (options)\n+                            for (var prop in options)\n+                                if (options[prop] !== undefined) out[prop] = options[prop];\n+                        if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos);\n+                        return out;\n+                    }\n+\n+                    function getText(completion) {\n+                        if (typeof completion == \"string\") return completion;\n+                        else return completion.text;\n+                    }\n+\n+                    function buildKeyMap(completion, handle) {\n+                        var baseMap = {\n+                            Up: function() {\n+                                handle.moveFocus(-1);\n+                            },\n+                            Down: function() {\n+                                handle.moveFocus(1);\n+                            },\n+                            PageUp: function() {\n+                                handle.moveFocus(-handle.menuSize() + 1, true);\n+                            },\n+                            PageDown: function() {\n+                                handle.moveFocus(handle.menuSize() - 1, true);\n+                            },\n+                            Home: function() {\n+                                handle.setFocus(0);\n+                            },\n+                            End: function() {\n+                                handle.setFocus(handle.length - 1);\n+                            },\n+                            Enter: handle.pick,\n+                            Tab: handle.pick,\n+                            Esc: handle.close\n+                        };\n+                        var mac = /Mac/.test(navigator.platform);\n+                        if (mac) {\n+                            baseMap[\"Ctrl-P\"] = function() {\n+                                handle.moveFocus(-1);\n+                            };\n+                            baseMap[\"Ctrl-N\"] = function() {\n+                                handle.moveFocus(1);\n+                            };\n+                        }\n+                        var custom = completion.options.customKeys;\n+                        var ourMap = custom ? {} : baseMap;\n+\n+                        function addBinding(key, val) {\n+                            var bound;\n+                            if (typeof val != \"string\") bound = function(cm) {\n+                                return val(cm, handle);\n+                            };\n+                            // This mechanism is deprecated\n+                            else if (baseMap.hasOwnProperty(val)) bound = baseMap[val];\n+                            else bound = val;\n+                            ourMap[key] = bound;\n+                        }\n+                        if (custom)\n+                            for (var key in custom)\n+                                if (custom.hasOwnProperty(key)) addBinding(key, custom[key]);\n+                        var extra = completion.options.extraKeys;\n+                        if (extra)\n+                            for (var key in extra)\n+                                if (extra.hasOwnProperty(key)) addBinding(key, extra[key]);\n+                        return ourMap;\n+                    }\n+\n+                    function getHintElement(hintsElement, el) {\n+                        while (el && el != hintsElement) {\n+                            if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n+                            el = el.parentNode;\n+                        }\n+                    }\n+\n+                    function Widget(completion, data) {\n+                        this.id = \"cm-complete-\" + Math.floor(Math.random(1e6));\n+                        this.completion = completion;\n+                        this.data = data;\n+                        this.picked = false;\n+                        var widget = this,\n+                            cm = completion.cm;\n+                        var ownerDocument = cm.getInputField().ownerDocument;\n+                        var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n+                        var hints = this.hints = ownerDocument.createElement(\"ul\");\n+                        hints.setAttribute(\"role\", \"listbox\");\n+                        hints.setAttribute(\"aria-expanded\", \"true\");\n+                        hints.id = this.id;\n+                        var theme = completion.cm.options.theme;\n+                        hints.className = \"CodeMirror-hints \" + theme;\n+                        this.selectedHint = data.selectedHint || 0;\n+                        var completions = data.list;\n+                        for (var i = 0; i < completions.length; ++i) {\n+                            var elt = hints.appendChild(ownerDocument.createElement(\"li\")),\n+                                cur = completions[i];\n+                            var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n+                            if (cur.className != null) className = cur.className + \" \" + className;\n+                            elt.className = className;\n+                            if (i == this.selectedHint) elt.setAttribute(\"aria-selected\", \"true\");\n+                            elt.id = this.id + \"-\" + i;\n+                            elt.setAttribute(\"role\", \"option\");\n+                            if (cur.render) cur.render(elt, data, cur);\n+                            else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n+                            elt.hintId = i;\n+                        }\n+                        var container = completion.options.container || ownerDocument.body;\n+                        var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n+                        var left = pos.left,\n+                            top = pos.bottom,\n+                            below = true;\n+                        var offsetLeft = 0,\n+                            offsetTop = 0;\n+                        if (container !== ownerDocument.body) {\n+                            // We offset the cursor position because left and top are relative to the offsetParent's top left corner.\n+                            var isContainerPositioned = ['absolute', 'relative', 'fixed'].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n+                            var offsetParent = isContainerPositioned ? container : container.offsetParent;\n+                            var offsetParentPosition = offsetParent.getBoundingClientRect();\n+                            var bodyPosition = ownerDocument.body.getBoundingClientRect();\n+                            offsetLeft = offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft;\n+                            offsetTop = offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop;\n+                        }\n+                        hints.style.left = left - offsetLeft + \"px\";\n+                        hints.style.top = top - offsetTop + \"px\";\n+\n+                        // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n+                        var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n+                        var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n+                        container.appendChild(hints);\n+                        cm.getInputField().setAttribute(\"aria-autocomplete\", \"list\");\n+                        cm.getInputField().setAttribute(\"aria-owns\", this.id);\n+                        cm.getInputField().setAttribute(\"aria-activedescendant\", this.id + \"-\" + this.selectedHint);\n+                        var box = completion.options.moveOnOverlap ? hints.getBoundingClientRect() : new DOMRect();\n+                        var scrolls = completion.options.paddingForScrollbar ? hints.scrollHeight > hints.clientHeight + 1 : false;\n+\n+                        // Compute in the timeout to avoid reflow on init\n+                        var startScroll;\n+                        setTimeout(function() {\n+                            startScroll = cm.getScrollInfo();\n+                        });\n+                        var overlapY = box.bottom - winH;\n+                        if (overlapY > 0) {\n+                            var height = box.bottom - box.top,\n+                                curTop = pos.top - (pos.bottom - box.top);\n+                            if (curTop - height > 0) {\n+                                // Fits above cursor\n+                                hints.style.top = (top = pos.top - height - offsetTop) + \"px\";\n+                                below = false;\n+                            } else if (height > winH) {\n+                                hints.style.height = winH - 5 + \"px\";\n+                                hints.style.top = (top = pos.bottom - box.top - offsetTop) + \"px\";\n+                                var cursor = cm.getCursor();\n+                                if (data.from.ch != cursor.ch) {\n+                                    pos = cm.cursorCoords(cursor);\n+                                    hints.style.left = (left = pos.left - offsetLeft) + \"px\";\n+                                    box = hints.getBoundingClientRect();\n                                 }\n                             }\n-                            next = next.v;\n                         }\n-                        // We might have a tree node without a value; skip and use a numeric entity.\n-                        if (next !== undefined) {\n-                            ret += next;\n-                            lastIdx = i + 1;\n+                        var overlapX = box.right - winW;\n+                        if (scrolls) overlapX += cm.display.nativeBarWidth;\n+                        if (overlapX > 0) {\n+                            if (box.right - box.left > winW) {\n+                                hints.style.width = winW - 5 + \"px\";\n+                                overlapX -= box.right - box.left - winW;\n+                            }\n+                            hints.style.left = (left = pos.left - overlapX - offsetLeft) + \"px\";\n+                        }\n+                        if (scrolls)\n+                            for (var node = hints.firstChild; node; node = node.nextSibling) node.style.paddingRight = cm.display.nativeBarWidth + \"px\";\n+                        cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n+                            moveFocus: function(n, avoidWrap) {\n+                                widget.changeActive(widget.selectedHint + n, avoidWrap);\n+                            },\n+                            setFocus: function(n) {\n+                                widget.changeActive(n);\n+                            },\n+                            menuSize: function() {\n+                                return widget.screenAmount();\n+                            },\n+                            length: completions.length,\n+                            close: function() {\n+                                completion.close();\n+                            },\n+                            pick: function() {\n+                                widget.pick();\n+                            },\n+                            data: data\n+                        }));\n+                        if (completion.options.closeOnUnfocus) {\n+                            var closingOnBlur;\n+                            cm.on(\"blur\", this.onBlur = function() {\n+                                closingOnBlur = setTimeout(function() {\n+                                    completion.close();\n+                                }, 100);\n+                            });\n+                            cm.on(\"focus\", this.onFocus = function() {\n+                                clearTimeout(closingOnBlur);\n+                            });\n+                        }\n+                        cm.on(\"scroll\", this.onScroll = function() {\n+                            var curScroll = cm.getScrollInfo(),\n+                                editor = cm.getWrapperElement().getBoundingClientRect();\n+                            if (!startScroll) startScroll = cm.getScrollInfo();\n+                            var newTop = top + startScroll.top - curScroll.top;\n+                            var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n+                            if (!below) point += hints.offsetHeight;\n+                            if (point <= editor.top || point >= editor.bottom) return completion.close();\n+                            hints.style.top = newTop + \"px\";\n+                            hints.style.left = left + startScroll.left - curScroll.left + \"px\";\n+                        });\n+                        CodeMirror.on(hints, \"dblclick\", function(e) {\n+                            var t = getHintElement(hints, e.target || e.srcElement);\n+                            if (t && t.hintId != null) {\n+                                widget.changeActive(t.hintId);\n+                                widget.pick();\n+                            }\n+                        });\n+                        CodeMirror.on(hints, \"click\", function(e) {\n+                            var t = getHintElement(hints, e.target || e.srcElement);\n+                            if (t && t.hintId != null) {\n+                                widget.changeActive(t.hintId);\n+                                if (completion.options.completeOnSingleClick) widget.pick();\n+                            }\n+                        });\n+                        CodeMirror.on(hints, \"mousedown\", function() {\n+                            setTimeout(function() {\n+                                cm.focus();\n+                            }, 20);\n+                        });\n+\n+                        // The first hint doesn't need to be scrolled to on init\n+                        var selectedHintRange = this.getSelectedHintRange();\n+                        if (selectedHintRange.from !== 0 || selectedHintRange.to !== 0) {\n+                            this.scrollToActive();\n+                        }\n+                        CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n+                        return true;\n+                    }\n+                    Widget.prototype = {\n+                        close: function() {\n+                            if (this.completion.widget != this) return;\n+                            this.completion.widget = null;\n+                            if (this.hints.parentNode) this.hints.parentNode.removeChild(this.hints);\n+                            this.completion.cm.removeKeyMap(this.keyMap);\n+                            var input = this.completion.cm.getInputField();\n+                            input.removeAttribute(\"aria-activedescendant\");\n+                            input.removeAttribute(\"aria-owns\");\n+                            var cm = this.completion.cm;\n+                            if (this.completion.options.closeOnUnfocus) {\n+                                cm.off(\"blur\", this.onBlur);\n+                                cm.off(\"focus\", this.onFocus);\n+                            }\n+                            cm.off(\"scroll\", this.onScroll);\n+                        },\n+                        disable: function() {\n+                            this.completion.cm.removeKeyMap(this.keyMap);\n+                            var widget = this;\n+                            this.keyMap = {\n+                                Enter: function() {\n+                                    widget.picked = true;\n+                                }\n+                            };\n+                            this.completion.cm.addKeyMap(this.keyMap);\n+                        },\n+                        pick: function() {\n+                            this.completion.pick(this.data, this.selectedHint);\n+                        },\n+                        changeActive: function(i, avoidWrap) {\n+                            if (i >= this.data.list.length) i = avoidWrap ? this.data.list.length - 1 : 0;\n+                            else if (i < 0) i = avoidWrap ? 0 : this.data.list.length - 1;\n+                            if (this.selectedHint == i) return;\n+                            var node = this.hints.childNodes[this.selectedHint];\n+                            if (node) {\n+                                node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n+                                node.removeAttribute(\"aria-selected\");\n+                            }\n+                            node = this.hints.childNodes[this.selectedHint = i];\n+                            node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n+                            node.setAttribute(\"aria-selected\", \"true\");\n+                            this.completion.cm.getInputField().setAttribute(\"aria-activedescendant\", node.id);\n+                            this.scrollToActive();\n+                            CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n+                        },\n+                        scrollToActive: function() {\n+                            var selectedHintRange = this.getSelectedHintRange();\n+                            var node1 = this.hints.childNodes[selectedHintRange.from];\n+                            var node2 = this.hints.childNodes[selectedHintRange.to];\n+                            var firstNode = this.hints.firstChild;\n+                            if (node1.offsetTop < this.hints.scrollTop) this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;\n+                            else if (node2.offsetTop + node2.offsetHeight > this.hints.scrollTop + this.hints.clientHeight) this.hints.scrollTop = node2.offsetTop + node2.offsetHeight - this.hints.clientHeight + firstNode.offsetTop;\n+                        },\n+                        screenAmount: function() {\n+                            return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n+                        },\n+                        getSelectedHintRange: function() {\n+                            var margin = this.completion.options.scrollMargin || 0;\n+                            return {\n+                                from: Math.max(0, this.selectedHint - margin),\n+                                to: Math.min(this.data.list.length - 1, this.selectedHint + margin)\n+                            };\n+                        }\n+                    };\n+\n+                    function applicableHelpers(cm, helpers) {\n+                        if (!cm.somethingSelected()) return helpers;\n+                        var result = [];\n+                        for (var i = 0; i < helpers.length; i++)\n+                            if (helpers[i].supportsSelection) result.push(helpers[i]);\n+                        return result;\n+                    }\n+\n+                    function fetchHints(hint, cm, options, callback) {\n+                        if (hint.async) {\n+                            hint(cm, callback, options);\n                         } else {\n-                            var cp = (0, escape_js_1.getCodePoint)(str, i);\n-                            ret += \"&#x\".concat(cp.toString(16), \";\");\n-                            // Increase by 1 if we have a surrogate pair\n-                            lastIdx = regExp.lastIndex += Number(cp !== char);\n+                            var result = hint(cm, options);\n+                            if (result && result.then) result.then(callback);\n+                            else callback(result);\n                         }\n                     }\n-                    return ret + str.substr(lastIdx);\n-                }\n+\n+                    function resolveAutoHints(cm, pos) {\n+                        var helpers = cm.getHelpers(pos, \"hint\"),\n+                            words;\n+                        if (helpers.length) {\n+                            var resolved = function(cm, callback, options) {\n+                                var app = applicableHelpers(cm, helpers);\n+\n+                                function run(i) {\n+                                    if (i == app.length) return callback(null);\n+                                    fetchHints(app[i], cm, options, function(result) {\n+                                        if (result && result.list.length > 0) callback(result);\n+                                        else run(i + 1);\n+                                    });\n+                                }\n+                                run(0);\n+                            };\n+                            resolved.async = true;\n+                            resolved.supportsSelection = true;\n+                            return resolved;\n+                        } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n+                            return function(cm) {\n+                                return CodeMirror.hint.fromList(cm, {\n+                                    words: words\n+                                });\n+                            };\n+                        } else if (CodeMirror.hint.anyword) {\n+                            return function(cm, options) {\n+                                return CodeMirror.hint.anyword(cm, options);\n+                            };\n+                        } else {\n+                            return function() {};\n+                        }\n+                    }\n+                    CodeMirror.registerHelper(\"hint\", \"auto\", {\n+                        resolve: resolveAutoHints\n+                    });\n+                    CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n+                        var cur = cm.getCursor(),\n+                            token = cm.getTokenAt(cur);\n+                        var term,\n+                            from = CodeMirror.Pos(cur.line, token.start),\n+                            to = cur;\n+                        if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n+                            term = token.string.substr(0, cur.ch - token.start);\n+                        } else {\n+                            term = \"\";\n+                            from = cur;\n+                        }\n+                        var found = [];\n+                        for (var i = 0; i < options.words.length; i++) {\n+                            var word = options.words[i];\n+                            if (word.slice(0, term.length) == term) found.push(word);\n+                        }\n+                        if (found.length) return {\n+                            list: found,\n+                            from: from,\n+                            to: to\n+                        };\n+                    });\n+                    CodeMirror.commands.autocomplete = CodeMirror.showHint;\n+                    var defaultOptions = {\n+                        hint: CodeMirror.hint.auto,\n+                        completeSingle: true,\n+                        alignWithWord: true,\n+                        closeCharacters: /[\\s()\\[\\]{};:>,]/,\n+                        closeOnPick: true,\n+                        closeOnUnfocus: true,\n+                        updateOnCursorActivity: true,\n+                        completeOnSingleClick: true,\n+                        container: null,\n+                        customKeys: null,\n+                        extraKeys: null,\n+                        paddingForScrollbar: true,\n+                        moveOnOverlap: true\n+                    };\n+                    CodeMirror.defineOption(\"hintOptions\", null);\n+                });\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/entities/lib/escape.js\":\n-            /*!****************************************************!*\\\n-              !*** ../../../node_modules/entities/lib/escape.js ***!\n-              \\****************************************************/\n+        \"../../../node_modules/codemirror/addon/lint/lint.js\":\n+            /*!***********************************************************!*\\\n+              !*** ../../../node_modules/codemirror/addon/lint/lint.js ***!\n+              \\***********************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports) {\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.getCodePoint = exports.xmlReplacer = void 0;\n-                exports.xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\n-                var xmlCodeMap = new Map([\n-                    [34, \"&quot;\"],\n-                    [38, \"&amp;\"],\n-                    [39, \"&apos;\"],\n-                    [60, \"&lt;\"],\n-                    [62, \"&gt;\"]\n-                ]);\n-                // For compatibility with node < 4, we wrap `codePointAt`\n-                exports.getCodePoint =\n-                    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n-                    String.prototype.codePointAt != null ? function(str, index) {\n-                        return str.codePointAt(index);\n-                    } :\n-                    // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n-                    function(c, index) {\n-                        return (c.charCodeAt(index) & 0xfc00) === 0xd800 ? (c.charCodeAt(index) - 0xd800) * 0x400 + c.charCodeAt(index + 1) - 0xdc00 + 0x10000 : c.charCodeAt(index);\n-                    };\n-                /**\n-                 * Encodes all non-ASCII characters, as well as characters not valid in XML\n-                 * documents using XML entities.\n-                 *\n-                 * If a character has no equivalent entity, a\n-                 * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n-                 */\n-                function encodeXML(str) {\n-                    var ret = \"\";\n-                    var lastIdx = 0;\n-                    var match;\n-                    while ((match = exports.xmlReplacer.exec(str)) !== null) {\n-                        var i = match.index;\n-                        var char = str.charCodeAt(i);\n-                        var next = xmlCodeMap.get(char);\n-                        if (next !== undefined) {\n-                            ret += str.substring(lastIdx, i) + next;\n-                            lastIdx = i + 1;\n-                        } else {\n-                            ret += \"\".concat(str.substring(lastIdx, i), \"&#x\").concat((0, exports.getCodePoint)(str, i).toString(16), \";\");\n-                            // Increase by 1 if we have a surrogate pair\n-                            lastIdx = exports.xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n+\n+                (function(mod) {\n+                    if (true)\n+                        // CommonJS\n+                        mod(__webpack_require__( /*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                    else {}\n+                })(function(CodeMirror) {\n+                    \"use strict\";\n+\n+                    var GUTTER_ID = \"CodeMirror-lint-markers\";\n+                    var LINT_LINE_ID = \"CodeMirror-lint-line-\";\n+\n+                    function showTooltip(cm, e, content) {\n+                        var tt = document.createElement(\"div\");\n+                        tt.className = \"CodeMirror-lint-tooltip cm-s-\" + cm.options.theme;\n+                        tt.appendChild(content.cloneNode(true));\n+                        if (cm.state.lint.options.selfContain) cm.getWrapperElement().appendChild(tt);\n+                        else document.body.appendChild(tt);\n+\n+                        function position(e) {\n+                            if (!tt.parentNode) return CodeMirror.off(document, \"mousemove\", position);\n+                            tt.style.top = Math.max(0, e.clientY - tt.offsetHeight - 5) + \"px\";\n+                            tt.style.left = e.clientX + 5 + \"px\";\n                         }\n+                        CodeMirror.on(document, \"mousemove\", position);\n+                        position(e);\n+                        if (tt.style.opacity != null) tt.style.opacity = 1;\n+                        return tt;\n                     }\n-                    return ret + str.substr(lastIdx);\n-                }\n-                exports.encodeXML = encodeXML;\n-                /**\n-                 * Encodes all non-ASCII characters, as well as characters not valid in XML\n-                 * documents using numeric hexadecimal reference (eg. `&#xfc;`).\n-                 *\n-                 * Have a look at `escapeUTF8` if you want a more concise output at the expense\n-                 * of reduced transportability.\n-                 *\n-                 * @param data String to escape.\n-                 */\n-                exports.escape = encodeXML;\n-                /**\n-                 * Creates a function that escapes all characters matched by the given regular\n-                 * expression using the given map of characters to escape to their entities.\n-                 *\n-                 * @param regex Regular expression to match characters to escape.\n-                 * @param map Map of characters to escape to their entities.\n-                 *\n-                 * @returns Function that escapes all characters matched by the given regular\n-                 * expression using the given map of characters to escape to their entities.\n-                 */\n-                function getEscaper(regex, map) {\n-                    return function escape(data) {\n-                        var match;\n-                        var lastIdx = 0;\n-                        var result = \"\";\n-                        while (match = regex.exec(data)) {\n-                            if (lastIdx !== match.index) {\n-                                result += data.substring(lastIdx, match.index);\n+\n+                    function rm(elt) {\n+                        if (elt.parentNode) elt.parentNode.removeChild(elt);\n+                    }\n+\n+                    function hideTooltip(tt) {\n+                        if (!tt.parentNode) return;\n+                        if (tt.style.opacity == null) rm(tt);\n+                        tt.style.opacity = 0;\n+                        setTimeout(function() {\n+                            rm(tt);\n+                        }, 600);\n+                    }\n+\n+                    function showTooltipFor(cm, e, content, node) {\n+                        var tooltip = showTooltip(cm, e, content);\n+\n+                        function hide() {\n+                            CodeMirror.off(node, \"mouseout\", hide);\n+                            if (tooltip) {\n+                                hideTooltip(tooltip);\n+                                tooltip = null;\n+                            }\n+                        }\n+                        var poll = setInterval(function() {\n+                            if (tooltip)\n+                                for (var n = node;; n = n.parentNode) {\n+                                    if (n && n.nodeType == 11) n = n.host;\n+                                    if (n == document.body) return;\n+                                    if (!n) {\n+                                        hide();\n+                                        break;\n+                                    }\n+                                }\n+                            if (!tooltip) return clearInterval(poll);\n+                        }, 400);\n+                        CodeMirror.on(node, \"mouseout\", hide);\n+                    }\n+\n+                    function LintState(cm, conf, hasGutter) {\n+                        this.marked = [];\n+                        if (conf instanceof Function) conf = {\n+                            getAnnotations: conf\n+                        };\n+                        if (!conf || conf === true) conf = {};\n+                        this.options = {};\n+                        this.linterOptions = conf.options || {};\n+                        for (var prop in defaults) this.options[prop] = defaults[prop];\n+                        for (var prop in conf) {\n+                            if (defaults.hasOwnProperty(prop)) {\n+                                if (conf[prop] != null) this.options[prop] = conf[prop];\n+                            } else if (!conf.options) {\n+                                this.linterOptions[prop] = conf[prop];\n                             }\n-                            // We know that this character will be in the map.\n-                            result += map.get(match[0].charCodeAt(0));\n-                            // Every match will be of length 1\n-                            lastIdx = match.index + 1;\n                         }\n-                        return result + data.substring(lastIdx);\n+                        this.timeout = null;\n+                        this.hasGutter = hasGutter;\n+                        this.onMouseOver = function(e) {\n+                            onMouseOver(cm, e);\n+                        };\n+                        this.waitingFor = 0;\n+                    }\n+                    var defaults = {\n+                        highlightLines: false,\n+                        tooltips: true,\n+                        delay: 500,\n+                        lintOnChange: true,\n+                        getAnnotations: null,\n+                        async: false,\n+                        selfContain: null,\n+                        formatAnnotation: null,\n+                        onUpdateLinting: null\n                     };\n-                }\n-                /**\n-                 * Encodes all characters not valid in XML documents using XML entities.\n-                 *\n-                 * Note that the output will be character-set dependent.\n-                 *\n-                 * @param data String to escape.\n-                 */\n-                exports.escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n-                /**\n-                 * Encodes all characters that have to be escaped in HTML attributes,\n-                 * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n-                 *\n-                 * @param data String to escape.\n-                 */\n-                exports.escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n-                    [34, \"&quot;\"],\n-                    [38, \"&amp;\"],\n-                    [160, \"&nbsp;\"]\n-                ]));\n-                /**\n-                 * Encodes all characters that have to be escaped in HTML text,\n-                 * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n-                 *\n-                 * @param data String to escape.\n-                 */\n-                exports.escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n-                    [38, \"&amp;\"],\n-                    [60, \"&lt;\"],\n-                    [62, \"&gt;\"],\n-                    [160, \"&nbsp;\"]\n-                ]));\n \n-                /***/\n-            }),\n+                    function clearMarks(cm) {\n+                        var state = cm.state.lint;\n+                        if (state.hasGutter) cm.clearGutter(GUTTER_ID);\n+                        if (state.options.highlightLines) clearErrorLines(cm);\n+                        for (var i = 0; i < state.marked.length; ++i) state.marked[i].clear();\n+                        state.marked.length = 0;\n+                    }\n \n-        /***/\n-        \"../../../node_modules/entities/lib/generated/decode-data-html.js\":\n-            /*!************************************************************************!*\\\n-              !*** ../../../node_modules/entities/lib/generated/decode-data-html.js ***!\n-              \\************************************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports) {\n+                    function clearErrorLines(cm) {\n+                        cm.eachLine(function(line) {\n+                            var has = line.wrapClass && /\\bCodeMirror-lint-line-\\w+\\b/.exec(line.wrapClass);\n+                            if (has) cm.removeLineClass(line, \"wrap\", has[0]);\n+                        });\n+                    }\n \n+                    function makeMarker(cm, labels, severity, multiple, tooltips) {\n+                        var marker = document.createElement(\"div\"),\n+                            inner = marker;\n+                        marker.className = \"CodeMirror-lint-marker CodeMirror-lint-marker-\" + severity;\n+                        if (multiple) {\n+                            inner = marker.appendChild(document.createElement(\"div\"));\n+                            inner.className = \"CodeMirror-lint-marker CodeMirror-lint-marker-multiple\";\n+                        }\n+                        if (tooltips != false) CodeMirror.on(inner, \"mouseover\", function(e) {\n+                            showTooltipFor(cm, e, labels, inner);\n+                        });\n+                        return marker;\n+                    }\n \n+                    function getMaxSeverity(a, b) {\n+                        if (a == \"error\") return a;\n+                        else return b;\n+                    }\n \n-                // Generated using scripts/write-decode-map.ts\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports[\"default\"] = new Uint16Array(\n-                    // prettier-ignore\n-                    \"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\".split(\"\").map(function(c) {\n-                        return c.charCodeAt(0);\n-                    }));\n+                    function groupByLine(annotations) {\n+                        var lines = [];\n+                        for (var i = 0; i < annotations.length; ++i) {\n+                            var ann = annotations[i],\n+                                line = ann.from.line;\n+                            (lines[line] || (lines[line] = [])).push(ann);\n+                        }\n+                        return lines;\n+                    }\n \n-                /***/\n-            }),\n+                    function annotationTooltip(ann) {\n+                        var severity = ann.severity;\n+                        if (!severity) severity = \"error\";\n+                        var tip = document.createElement(\"div\");\n+                        tip.className = \"CodeMirror-lint-message CodeMirror-lint-message-\" + severity;\n+                        if (typeof ann.messageHTML != 'undefined') {\n+                            tip.innerHTML = ann.messageHTML;\n+                        } else {\n+                            tip.appendChild(document.createTextNode(ann.message));\n+                        }\n+                        return tip;\n+                    }\n \n-        /***/\n-        \"../../../node_modules/entities/lib/generated/decode-data-xml.js\":\n-            /*!***********************************************************************!*\\\n-              !*** ../../../node_modules/entities/lib/generated/decode-data-xml.js ***!\n-              \\***********************************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports) {\n+                    function lintAsync(cm, getAnnotations) {\n+                        var state = cm.state.lint;\n+                        var id = ++state.waitingFor;\n \n+                        function abort() {\n+                            id = -1;\n+                            cm.off(\"change\", abort);\n+                        }\n+                        cm.on(\"change\", abort);\n+                        getAnnotations(cm.getValue(), function(annotations, arg2) {\n+                            cm.off(\"change\", abort);\n+                            if (state.waitingFor != id) return;\n+                            if (arg2 && annotations instanceof CodeMirror) annotations = arg2;\n+                            cm.operation(function() {\n+                                updateLinting(cm, annotations);\n+                            });\n+                        }, state.linterOptions, cm);\n+                    }\n \n+                    function startLinting(cm) {\n+                        var state = cm.state.lint;\n+                        if (!state) return;\n+                        var options = state.options;\n+                        /*\n+                         * Passing rules in `options` property prevents JSHint (and other linters) from complaining\n+                         * about unrecognized rules like `onUpdateLinting`, `delay`, `lintOnChange`, etc.\n+                         */\n+                        var getAnnotations = options.getAnnotations || cm.getHelper(CodeMirror.Pos(0, 0), \"lint\");\n+                        if (!getAnnotations) return;\n+                        if (options.async || getAnnotations.async) {\n+                            lintAsync(cm, getAnnotations);\n+                        } else {\n+                            var annotations = getAnnotations(cm.getValue(), state.linterOptions, cm);\n+                            if (!annotations) return;\n+                            if (annotations.then) annotations.then(function(issues) {\n+                                cm.operation(function() {\n+                                    updateLinting(cm, issues);\n+                                });\n+                            });\n+                            else cm.operation(function() {\n+                                updateLinting(cm, annotations);\n+                            });\n+                        }\n+                    }\n \n-                // Generated using scripts/write-decode-map.ts\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports[\"default\"] = new Uint16Array(\n-                    // prettier-ignore\n-                    \"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\".split(\"\").map(function(c) {\n-                        return c.charCodeAt(0);\n-                    }));\n+                    function updateLinting(cm, annotationsNotSorted) {\n+                        var state = cm.state.lint;\n+                        if (!state) return;\n+                        var options = state.options;\n+                        clearMarks(cm);\n+                        var annotations = groupByLine(annotationsNotSorted);\n+                        for (var line = 0; line < annotations.length; ++line) {\n+                            var anns = annotations[line];\n+                            if (!anns) continue;\n+\n+                            // filter out duplicate messages\n+                            var message = [];\n+                            anns = anns.filter(function(item) {\n+                                return message.indexOf(item.message) > -1 ? false : message.push(item.message);\n+                            });\n+                            var maxSeverity = null;\n+                            var tipLabel = state.hasGutter && document.createDocumentFragment();\n+                            for (var i = 0; i < anns.length; ++i) {\n+                                var ann = anns[i];\n+                                var severity = ann.severity;\n+                                if (!severity) severity = \"error\";\n+                                maxSeverity = getMaxSeverity(maxSeverity, severity);\n+                                if (options.formatAnnotation) ann = options.formatAnnotation(ann);\n+                                if (state.hasGutter) tipLabel.appendChild(annotationTooltip(ann));\n+                                if (ann.to) state.marked.push(cm.markText(ann.from, ann.to, {\n+                                    className: \"CodeMirror-lint-mark CodeMirror-lint-mark-\" + severity,\n+                                    __annotation: ann\n+                                }));\n+                            }\n+                            // use original annotations[line] to show multiple messages\n+                            if (state.hasGutter) cm.setGutterMarker(line, GUTTER_ID, makeMarker(cm, tipLabel, maxSeverity, annotations[line].length > 1, options.tooltips));\n+                            if (options.highlightLines) cm.addLineClass(line, \"wrap\", LINT_LINE_ID + maxSeverity);\n+                        }\n+                        if (options.onUpdateLinting) options.onUpdateLinting(annotationsNotSorted, annotations, cm);\n+                    }\n+\n+                    function onChange(cm) {\n+                        var state = cm.state.lint;\n+                        if (!state) return;\n+                        clearTimeout(state.timeout);\n+                        state.timeout = setTimeout(function() {\n+                            startLinting(cm);\n+                        }, state.options.delay);\n+                    }\n+\n+                    function popupTooltips(cm, annotations, e) {\n+                        var target = e.target || e.srcElement;\n+                        var tooltip = document.createDocumentFragment();\n+                        for (var i = 0; i < annotations.length; i++) {\n+                            var ann = annotations[i];\n+                            tooltip.appendChild(annotationTooltip(ann));\n+                        }\n+                        showTooltipFor(cm, e, tooltip, target);\n+                    }\n+\n+                    function onMouseOver(cm, e) {\n+                        var target = e.target || e.srcElement;\n+                        if (!/\\bCodeMirror-lint-mark-/.test(target.className)) return;\n+                        var box = target.getBoundingClientRect(),\n+                            x = (box.left + box.right) / 2,\n+                            y = (box.top + box.bottom) / 2;\n+                        var spans = cm.findMarksAt(cm.coordsChar({\n+                            left: x,\n+                            top: y\n+                        }, \"client\"));\n+                        var annotations = [];\n+                        for (var i = 0; i < spans.length; ++i) {\n+                            var ann = spans[i].__annotation;\n+                            if (ann) annotations.push(ann);\n+                        }\n+                        if (annotations.length) popupTooltips(cm, annotations, e);\n+                    }\n+                    CodeMirror.defineOption(\"lint\", false, function(cm, val, old) {\n+                        if (old && old != CodeMirror.Init) {\n+                            clearMarks(cm);\n+                            if (cm.state.lint.options.lintOnChange !== false) cm.off(\"change\", onChange);\n+                            CodeMirror.off(cm.getWrapperElement(), \"mouseover\", cm.state.lint.onMouseOver);\n+                            clearTimeout(cm.state.lint.timeout);\n+                            delete cm.state.lint;\n+                        }\n+                        if (val) {\n+                            var gutters = cm.getOption(\"gutters\"),\n+                                hasLintGutter = false;\n+                            for (var i = 0; i < gutters.length; ++i)\n+                                if (gutters[i] == GUTTER_ID) hasLintGutter = true;\n+                            var state = cm.state.lint = new LintState(cm, val, hasLintGutter);\n+                            if (state.options.lintOnChange) cm.on(\"change\", onChange);\n+                            if (state.options.tooltips != false && state.options.tooltips != \"gutter\") CodeMirror.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n+                            startLinting(cm);\n+                        }\n+                    });\n+                    CodeMirror.defineExtension(\"performLint\", function() {\n+                        startLinting(this);\n+                    });\n+                });\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/entities/lib/generated/encode-html.js\":\n-            /*!*******************************************************************!*\\\n-              !*** ../../../node_modules/entities/lib/generated/encode-html.js ***!\n-              \\*******************************************************************/\n+        \"../../../node_modules/codemirror/addon/search/jump-to-line.js\":\n+            /*!*********************************************************************!*\\\n+              !*** ../../../node_modules/codemirror/addon/search/jump-to-line.js ***!\n+              \\*********************************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports) {\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n-                // Generated using scripts/write-encode-map.ts\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n \n-                function restoreDiff(arr) {\n-                    for (var i = 1; i < arr.length; i++) {\n-                        arr[i][0] += arr[i - 1][0] + 1;\n+                // Defines jumpToLine command. Uses dialog.js if present.\n+\n+                (function(mod) {\n+                    if (true)\n+                        // CommonJS\n+                        mod(__webpack_require__( /*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"), __webpack_require__( /*! ../dialog/dialog */ \"../../../node_modules/codemirror/addon/dialog/dialog.js\"));\n+                    else {}\n+                })(function(CodeMirror) {\n+                    \"use strict\";\n+\n+                    // default search panel location\n+                    CodeMirror.defineOption(\"search\", {\n+                        bottom: false\n+                    });\n+\n+                    function dialog(cm, text, shortText, deflt, f) {\n+                        if (cm.openDialog) cm.openDialog(text, f, {\n+                            value: deflt,\n+                            selectValueOnOpen: true,\n+                            bottom: cm.options.search.bottom\n+                        });\n+                        else f(prompt(shortText, deflt));\n                     }\n-                    return arr;\n-                }\n-                // prettier-ignore\n-                exports[\"default\"] = new Map( /* #__PURE__ */ restoreDiff([\n-                    [9, \"&Tab;\"],\n-                    [0, \"&NewLine;\"],\n-                    [22, \"&excl;\"],\n-                    [0, \"&quot;\"],\n-                    [0, \"&num;\"],\n-                    [0, \"&dollar;\"],\n-                    [0, \"&percnt;\"],\n-                    [0, \"&amp;\"],\n-                    [0, \"&apos;\"],\n-                    [0, \"&lpar;\"],\n-                    [0, \"&rpar;\"],\n-                    [0, \"&ast;\"],\n-                    [0, \"&plus;\"],\n-                    [0, \"&comma;\"],\n-                    [1, \"&period;\"],\n-                    [0, \"&sol;\"],\n-                    [10, \"&colon;\"],\n-                    [0, \"&semi;\"],\n-                    [0, {\n-                        v: \"&lt;\",\n-                        n: 8402,\n-                        o: \"&nvlt;\"\n-                    }],\n-                    [0, {\n-                        v: \"&equals;\",\n-                        n: 8421,\n-                        o: \"&bne;\"\n-                    }],\n-                    [0, {\n-                        v: \"&gt;\",\n-                        n: 8402,\n-                        o: \"&nvgt;\"\n-                    }],\n-                    [0, \"&quest;\"],\n-                    [0, \"&commat;\"],\n-                    [26, \"&lbrack;\"],\n-                    [0, \"&bsol;\"],\n-                    [0, \"&rbrack;\"],\n-                    [0, \"&Hat;\"],\n-                    [0, \"&lowbar;\"],\n-                    [0, \"&DiacriticalGrave;\"],\n-                    [5, {\n-                        n: 106,\n-                        o: \"&fjlig;\"\n-                    }],\n-                    [20, \"&lbrace;\"],\n-                    [0, \"&verbar;\"],\n-                    [0, \"&rbrace;\"],\n-                    [34, \"&nbsp;\"],\n-                    [0, \"&iexcl;\"],\n-                    [0, \"&cent;\"],\n-                    [0, \"&pound;\"],\n-                    [0, \"&curren;\"],\n-                    [0, \"&yen;\"],\n-                    [0, \"&brvbar;\"],\n-                    [0, \"&sect;\"],\n-                    [0, \"&die;\"],\n-                    [0, \"&copy;\"],\n-                    [0, \"&ordf;\"],\n-                    [0, \"&laquo;\"],\n-                    [0, \"&not;\"],\n-                    [0, \"&shy;\"],\n-                    [0, \"&circledR;\"],\n-                    [0, \"&macr;\"],\n-                    [0, \"&deg;\"],\n-                    [0, \"&PlusMinus;\"],\n-                    [0, \"&sup2;\"],\n-                    [0, \"&sup3;\"],\n-                    [0, \"&acute;\"],\n-                    [0, \"&micro;\"],\n-                    [0, \"&para;\"],\n-                    [0, \"&centerdot;\"],\n-                    [0, \"&cedil;\"],\n-                    [0, \"&sup1;\"],\n-                    [0, \"&ordm;\"],\n-                    [0, \"&raquo;\"],\n-                    [0, \"&frac14;\"],\n-                    [0, \"&frac12;\"],\n-                    [0, \"&frac34;\"],\n-                    [0, \"&iquest;\"],\n-                    [0, \"&Agrave;\"],\n-                    [0, \"&Aacute;\"],\n-                    [0, \"&Acirc;\"],\n-                    [0, \"&Atilde;\"],\n-                    [0, \"&Auml;\"],\n-                    [0, \"&angst;\"],\n-                    [0, \"&AElig;\"],\n-                    [0, \"&Ccedil;\"],\n-                    [0, \"&Egrave;\"],\n-                    [0, \"&Eacute;\"],\n-                    [0, \"&Ecirc;\"],\n-                    [0, \"&Euml;\"],\n-                    [0, \"&Igrave;\"],\n-                    [0, \"&Iacute;\"],\n-                    [0, \"&Icirc;\"],\n-                    [0, \"&Iuml;\"],\n-                    [0, \"&ETH;\"],\n-                    [0, \"&Ntilde;\"],\n-                    [0, \"&Ograve;\"],\n-                    [0, \"&Oacute;\"],\n-                    [0, \"&Ocirc;\"],\n-                    [0, \"&Otilde;\"],\n-                    [0, \"&Ouml;\"],\n-                    [0, \"&times;\"],\n-                    [0, \"&Oslash;\"],\n-                    [0, \"&Ugrave;\"],\n-                    [0, \"&Uacute;\"],\n-                    [0, \"&Ucirc;\"],\n-                    [0, \"&Uuml;\"],\n-                    [0, \"&Yacute;\"],\n-                    [0, \"&THORN;\"],\n-                    [0, \"&szlig;\"],\n-                    [0, \"&agrave;\"],\n-                    [0, \"&aacute;\"],\n-                    [0, \"&acirc;\"],\n-                    [0, \"&atilde;\"],\n-                    [0, \"&auml;\"],\n-                    [0, \"&aring;\"],\n-                    [0, \"&aelig;\"],\n-                    [0, \"&ccedil;\"],\n-                    [0, \"&egrave;\"],\n-                    [0, \"&eacute;\"],\n-                    [0, \"&ecirc;\"],\n-                    [0, \"&euml;\"],\n-                    [0, \"&igrave;\"],\n-                    [0, \"&iacute;\"],\n-                    [0, \"&icirc;\"],\n-                    [0, \"&iuml;\"],\n-                    [0, \"&eth;\"],\n-                    [0, \"&ntilde;\"],\n-                    [0, \"&ograve;\"],\n-                    [0, \"&oacute;\"],\n-                    [0, \"&ocirc;\"],\n-                    [0, \"&otilde;\"],\n-                    [0, \"&ouml;\"],\n-                    [0, \"&div;\"],\n-                    [0, \"&oslash;\"],\n-                    [0, \"&ugrave;\"],\n-                    [0, \"&uacute;\"],\n-                    [0, \"&ucirc;\"],\n-                    [0, \"&uuml;\"],\n-                    [0, \"&yacute;\"],\n-                    [0, \"&thorn;\"],\n-                    [0, \"&yuml;\"],\n-                    [0, \"&Amacr;\"],\n-                    [0, \"&amacr;\"],\n-                    [0, \"&Abreve;\"],\n-                    [0, \"&abreve;\"],\n-                    [0, \"&Aogon;\"],\n-                    [0, \"&aogon;\"],\n-                    [0, \"&Cacute;\"],\n-                    [0, \"&cacute;\"],\n-                    [0, \"&Ccirc;\"],\n-                    [0, \"&ccirc;\"],\n-                    [0, \"&Cdot;\"],\n-                    [0, \"&cdot;\"],\n-                    [0, \"&Ccaron;\"],\n-                    [0, \"&ccaron;\"],\n-                    [0, \"&Dcaron;\"],\n-                    [0, \"&dcaron;\"],\n-                    [0, \"&Dstrok;\"],\n-                    [0, \"&dstrok;\"],\n-                    [0, \"&Emacr;\"],\n-                    [0, \"&emacr;\"],\n-                    [2, \"&Edot;\"],\n-                    [0, \"&edot;\"],\n-                    [0, \"&Eogon;\"],\n-                    [0, \"&eogon;\"],\n-                    [0, \"&Ecaron;\"],\n-                    [0, \"&ecaron;\"],\n-                    [0, \"&Gcirc;\"],\n-                    [0, \"&gcirc;\"],\n-                    [0, \"&Gbreve;\"],\n-                    [0, \"&gbreve;\"],\n-                    [0, \"&Gdot;\"],\n-                    [0, \"&gdot;\"],\n-                    [0, \"&Gcedil;\"],\n-                    [1, \"&Hcirc;\"],\n-                    [0, \"&hcirc;\"],\n-                    [0, \"&Hstrok;\"],\n-                    [0, \"&hstrok;\"],\n-                    [0, \"&Itilde;\"],\n-                    [0, \"&itilde;\"],\n-                    [0, \"&Imacr;\"],\n-                    [0, \"&imacr;\"],\n-                    [2, \"&Iogon;\"],\n-                    [0, \"&iogon;\"],\n-                    [0, \"&Idot;\"],\n-                    [0, \"&imath;\"],\n-                    [0, \"&IJlig;\"],\n-                    [0, \"&ijlig;\"],\n-                    [0, \"&Jcirc;\"],\n-                    [0, \"&jcirc;\"],\n-                    [0, \"&Kcedil;\"],\n-                    [0, \"&kcedil;\"],\n-                    [0, \"&kgreen;\"],\n-                    [0, \"&Lacute;\"],\n-                    [0, \"&lacute;\"],\n-                    [0, \"&Lcedil;\"],\n-                    [0, \"&lcedil;\"],\n-                    [0, \"&Lcaron;\"],\n-                    [0, \"&lcaron;\"],\n-                    [0, \"&Lmidot;\"],\n-                    [0, \"&lmidot;\"],\n-                    [0, \"&Lstrok;\"],\n-                    [0, \"&lstrok;\"],\n-                    [0, \"&Nacute;\"],\n-                    [0, \"&nacute;\"],\n-                    [0, \"&Ncedil;\"],\n-                    [0, \"&ncedil;\"],\n-                    [0, \"&Ncaron;\"],\n-                    [0, \"&ncaron;\"],\n-                    [0, \"&napos;\"],\n-                    [0, \"&ENG;\"],\n-                    [0, \"&eng;\"],\n-                    [0, \"&Omacr;\"],\n-                    [0, \"&omacr;\"],\n-                    [2, \"&Odblac;\"],\n-                    [0, \"&odblac;\"],\n-                    [0, \"&OElig;\"],\n-                    [0, \"&oelig;\"],\n-                    [0, \"&Racute;\"],\n-                    [0, \"&racute;\"],\n-                    [0, \"&Rcedil;\"],\n-                    [0, \"&rcedil;\"],\n-                    [0, \"&Rcaron;\"],\n-                    [0, \"&rcaron;\"],\n-                    [0, \"&Sacute;\"],\n-                    [0, \"&sacute;\"],\n-                    [0, \"&Scirc;\"],\n-                    [0, \"&scirc;\"],\n-                    [0, \"&Scedil;\"],\n-                    [0, \"&scedil;\"],\n-                    [0, \"&Scaron;\"],\n-                    [0, \"&scaron;\"],\n-                    [0, \"&Tcedil;\"],\n-                    [0, \"&tcedil;\"],\n-                    [0, \"&Tcaron;\"],\n-                    [0, \"&tcaron;\"],\n-                    [0, \"&Tstrok;\"],\n-                    [0, \"&tstrok;\"],\n-                    [0, \"&Utilde;\"],\n-                    [0, \"&utilde;\"],\n-                    [0, \"&Umacr;\"],\n-                    [0, \"&umacr;\"],\n-                    [0, \"&Ubreve;\"],\n-                    [0, \"&ubreve;\"],\n-                    [0, \"&Uring;\"],\n-                    [0, \"&uring;\"],\n-                    [0, \"&Udblac;\"],\n-                    [0, \"&udblac;\"],\n-                    [0, \"&Uogon;\"],\n-                    [0, \"&uogon;\"],\n-                    [0, \"&Wcirc;\"],\n-                    [0, \"&wcirc;\"],\n-                    [0, \"&Ycirc;\"],\n-                    [0, \"&ycirc;\"],\n-                    [0, \"&Yuml;\"],\n-                    [0, \"&Zacute;\"],\n-                    [0, \"&zacute;\"],\n-                    [0, \"&Zdot;\"],\n-                    [0, \"&zdot;\"],\n-                    [0, \"&Zcaron;\"],\n-                    [0, \"&zcaron;\"],\n-                    [19, \"&fnof;\"],\n-                    [34, \"&imped;\"],\n-                    [63, \"&gacute;\"],\n-                    [65, \"&jmath;\"],\n-                    [142, \"&circ;\"],\n-                    [0, \"&caron;\"],\n-                    [16, \"&breve;\"],\n-                    [0, \"&DiacriticalDot;\"],\n-                    [0, \"&ring;\"],\n-                    [0, \"&ogon;\"],\n-                    [0, \"&DiacriticalTilde;\"],\n-                    [0, \"&dblac;\"],\n-                    [51, \"&DownBreve;\"],\n-                    [127, \"&Alpha;\"],\n-                    [0, \"&Beta;\"],\n-                    [0, \"&Gamma;\"],\n-                    [0, \"&Delta;\"],\n-                    [0, \"&Epsilon;\"],\n-                    [0, \"&Zeta;\"],\n-                    [0, \"&Eta;\"],\n-                    [0, \"&Theta;\"],\n-                    [0, \"&Iota;\"],\n-                    [0, \"&Kappa;\"],\n-                    [0, \"&Lambda;\"],\n-                    [0, \"&Mu;\"],\n-                    [0, \"&Nu;\"],\n-                    [0, \"&Xi;\"],\n-                    [0, \"&Omicron;\"],\n-                    [0, \"&Pi;\"],\n-                    [0, \"&Rho;\"],\n-                    [1, \"&Sigma;\"],\n-                    [0, \"&Tau;\"],\n-                    [0, \"&Upsilon;\"],\n-                    [0, \"&Phi;\"],\n-                    [0, \"&Chi;\"],\n-                    [0, \"&Psi;\"],\n-                    [0, \"&ohm;\"],\n-                    [7, \"&alpha;\"],\n-                    [0, \"&beta;\"],\n-                    [0, \"&gamma;\"],\n-                    [0, \"&delta;\"],\n-                    [0, \"&epsi;\"],\n-                    [0, \"&zeta;\"],\n-                    [0, \"&eta;\"],\n-                    [0, \"&theta;\"],\n-                    [0, \"&iota;\"],\n-                    [0, \"&kappa;\"],\n-                    [0, \"&lambda;\"],\n-                    [0, \"&mu;\"],\n-                    [0, \"&nu;\"],\n-                    [0, \"&xi;\"],\n-                    [0, \"&omicron;\"],\n-                    [0, \"&pi;\"],\n-                    [0, \"&rho;\"],\n-                    [0, \"&sigmaf;\"],\n-                    [0, \"&sigma;\"],\n-                    [0, \"&tau;\"],\n-                    [0, \"&upsi;\"],\n-                    [0, \"&phi;\"],\n-                    [0, \"&chi;\"],\n-                    [0, \"&psi;\"],\n-                    [0, \"&omega;\"],\n-                    [7, \"&thetasym;\"],\n-                    [0, \"&Upsi;\"],\n-                    [2, \"&phiv;\"],\n-                    [0, \"&piv;\"],\n-                    [5, \"&Gammad;\"],\n-                    [0, \"&digamma;\"],\n-                    [18, \"&kappav;\"],\n-                    [0, \"&rhov;\"],\n-                    [3, \"&epsiv;\"],\n-                    [0, \"&backepsilon;\"],\n-                    [10, \"&IOcy;\"],\n-                    [0, \"&DJcy;\"],\n-                    [0, \"&GJcy;\"],\n-                    [0, \"&Jukcy;\"],\n-                    [0, \"&DScy;\"],\n-                    [0, \"&Iukcy;\"],\n-                    [0, \"&YIcy;\"],\n-                    [0, \"&Jsercy;\"],\n-                    [0, \"&LJcy;\"],\n-                    [0, \"&NJcy;\"],\n-                    [0, \"&TSHcy;\"],\n-                    [0, \"&KJcy;\"],\n-                    [1, \"&Ubrcy;\"],\n-                    [0, \"&DZcy;\"],\n-                    [0, \"&Acy;\"],\n-                    [0, \"&Bcy;\"],\n-                    [0, \"&Vcy;\"],\n-                    [0, \"&Gcy;\"],\n-                    [0, \"&Dcy;\"],\n-                    [0, \"&IEcy;\"],\n-                    [0, \"&ZHcy;\"],\n-                    [0, \"&Zcy;\"],\n-                    [0, \"&Icy;\"],\n-                    [0, \"&Jcy;\"],\n-                    [0, \"&Kcy;\"],\n-                    [0, \"&Lcy;\"],\n-                    [0, \"&Mcy;\"],\n-                    [0, \"&Ncy;\"],\n-                    [0, \"&Ocy;\"],\n-                    [0, \"&Pcy;\"],\n-                    [0, \"&Rcy;\"],\n-                    [0, \"&Scy;\"],\n-                    [0, \"&Tcy;\"],\n-                    [0, \"&Ucy;\"],\n-                    [0, \"&Fcy;\"],\n-                    [0, \"&KHcy;\"],\n-                    [0, \"&TScy;\"],\n-                    [0, \"&CHcy;\"],\n-                    [0, \"&SHcy;\"],\n-                    [0, \"&SHCHcy;\"],\n-                    [0, \"&HARDcy;\"],\n-                    [0, \"&Ycy;\"],\n-                    [0, \"&SOFTcy;\"],\n-                    [0, \"&Ecy;\"],\n-                    [0, \"&YUcy;\"],\n-                    [0, \"&YAcy;\"],\n-                    [0, \"&acy;\"],\n-                    [0, \"&bcy;\"],\n-                    [0, \"&vcy;\"],\n-                    [0, \"&gcy;\"],\n-                    [0, \"&dcy;\"],\n-                    [0, \"&iecy;\"],\n-                    [0, \"&zhcy;\"],\n-                    [0, \"&zcy;\"],\n-                    [0, \"&icy;\"],\n-                    [0, \"&jcy;\"],\n-                    [0, \"&kcy;\"],\n-                    [0, \"&lcy;\"],\n-                    [0, \"&mcy;\"],\n-                    [0, \"&ncy;\"],\n-                    [0, \"&ocy;\"],\n-                    [0, \"&pcy;\"],\n-                    [0, \"&rcy;\"],\n-                    [0, \"&scy;\"],\n-                    [0, \"&tcy;\"],\n-                    [0, \"&ucy;\"],\n-                    [0, \"&fcy;\"],\n-                    [0, \"&khcy;\"],\n-                    [0, \"&tscy;\"],\n-                    [0, \"&chcy;\"],\n-                    [0, \"&shcy;\"],\n-                    [0, \"&shchcy;\"],\n-                    [0, \"&hardcy;\"],\n-                    [0, \"&ycy;\"],\n-                    [0, \"&softcy;\"],\n-                    [0, \"&ecy;\"],\n-                    [0, \"&yucy;\"],\n-                    [0, \"&yacy;\"],\n-                    [1, \"&iocy;\"],\n-                    [0, \"&djcy;\"],\n-                    [0, \"&gjcy;\"],\n-                    [0, \"&jukcy;\"],\n-                    [0, \"&dscy;\"],\n-                    [0, \"&iukcy;\"],\n-                    [0, \"&yicy;\"],\n-                    [0, \"&jsercy;\"],\n-                    [0, \"&ljcy;\"],\n-                    [0, \"&njcy;\"],\n-                    [0, \"&tshcy;\"],\n-                    [0, \"&kjcy;\"],\n-                    [1, \"&ubrcy;\"],\n-                    [0, \"&dzcy;\"],\n-                    [7074, \"&ensp;\"],\n-                    [0, \"&emsp;\"],\n-                    [0, \"&emsp13;\"],\n-                    [0, \"&emsp14;\"],\n-                    [1, \"&numsp;\"],\n-                    [0, \"&puncsp;\"],\n-                    [0, \"&ThinSpace;\"],\n-                    [0, \"&hairsp;\"],\n-                    [0, \"&NegativeMediumSpace;\"],\n-                    [0, \"&zwnj;\"],\n-                    [0, \"&zwj;\"],\n-                    [0, \"&lrm;\"],\n-                    [0, \"&rlm;\"],\n-                    [0, \"&dash;\"],\n-                    [2, \"&ndash;\"],\n-                    [0, \"&mdash;\"],\n-                    [0, \"&horbar;\"],\n-                    [0, \"&Verbar;\"],\n-                    [1, \"&lsquo;\"],\n-                    [0, \"&CloseCurlyQuote;\"],\n-                    [0, \"&lsquor;\"],\n-                    [1, \"&ldquo;\"],\n-                    [0, \"&CloseCurlyDoubleQuote;\"],\n-                    [0, \"&bdquo;\"],\n-                    [1, \"&dagger;\"],\n-                    [0, \"&Dagger;\"],\n-                    [0, \"&bull;\"],\n-                    [2, \"&nldr;\"],\n-                    [0, \"&hellip;\"],\n-                    [9, \"&permil;\"],\n-                    [0, \"&pertenk;\"],\n-                    [0, \"&prime;\"],\n-                    [0, \"&Prime;\"],\n-                    [0, \"&tprime;\"],\n-                    [0, \"&backprime;\"],\n-                    [3, \"&lsaquo;\"],\n-                    [0, \"&rsaquo;\"],\n-                    [3, \"&oline;\"],\n-                    [2, \"&caret;\"],\n-                    [1, \"&hybull;\"],\n-                    [0, \"&frasl;\"],\n-                    [10, \"&bsemi;\"],\n-                    [7, \"&qprime;\"],\n-                    [7, {\n-                        v: \"&MediumSpace;\",\n-                        n: 8202,\n-                        o: \"&ThickSpace;\"\n-                    }],\n-                    [0, \"&NoBreak;\"],\n-                    [0, \"&af;\"],\n-                    [0, \"&InvisibleTimes;\"],\n-                    [0, \"&ic;\"],\n-                    [72, \"&euro;\"],\n-                    [46, \"&tdot;\"],\n-                    [0, \"&DotDot;\"],\n-                    [37, \"&complexes;\"],\n-                    [2, \"&incare;\"],\n-                    [4, \"&gscr;\"],\n-                    [0, \"&hamilt;\"],\n-                    [0, \"&Hfr;\"],\n-                    [0, \"&Hopf;\"],\n-                    [0, \"&planckh;\"],\n-                    [0, \"&hbar;\"],\n-                    [0, \"&imagline;\"],\n-                    [0, \"&Ifr;\"],\n-                    [0, \"&lagran;\"],\n-                    [0, \"&ell;\"],\n-                    [1, \"&naturals;\"],\n-                    [0, \"&numero;\"],\n-                    [0, \"&copysr;\"],\n-                    [0, \"&weierp;\"],\n-                    [0, \"&Popf;\"],\n-                    [0, \"&Qopf;\"],\n-                    [0, \"&realine;\"],\n-                    [0, \"&real;\"],\n-                    [0, \"&reals;\"],\n-                    [0, \"&rx;\"],\n-                    [3, \"&trade;\"],\n-                    [1, \"&integers;\"],\n-                    [2, \"&mho;\"],\n-                    [0, \"&zeetrf;\"],\n-                    [0, \"&iiota;\"],\n-                    [2, \"&bernou;\"],\n-                    [0, \"&Cayleys;\"],\n-                    [1, \"&escr;\"],\n-                    [0, \"&Escr;\"],\n-                    [0, \"&Fouriertrf;\"],\n-                    [1, \"&Mellintrf;\"],\n-                    [0, \"&order;\"],\n-                    [0, \"&alefsym;\"],\n-                    [0, \"&beth;\"],\n-                    [0, \"&gimel;\"],\n-                    [0, \"&daleth;\"],\n-                    [12, \"&CapitalDifferentialD;\"],\n-                    [0, \"&dd;\"],\n-                    [0, \"&ee;\"],\n-                    [0, \"&ii;\"],\n-                    [10, \"&frac13;\"],\n-                    [0, \"&frac23;\"],\n-                    [0, \"&frac15;\"],\n-                    [0, \"&frac25;\"],\n-                    [0, \"&frac35;\"],\n-                    [0, \"&frac45;\"],\n-                    [0, \"&frac16;\"],\n-                    [0, \"&frac56;\"],\n-                    [0, \"&frac18;\"],\n-                    [0, \"&frac38;\"],\n-                    [0, \"&frac58;\"],\n-                    [0, \"&frac78;\"],\n-                    [49, \"&larr;\"],\n-                    [0, \"&ShortUpArrow;\"],\n-                    [0, \"&rarr;\"],\n-                    [0, \"&darr;\"],\n-                    [0, \"&harr;\"],\n-                    [0, \"&updownarrow;\"],\n-                    [0, \"&nwarr;\"],\n-                    [0, \"&nearr;\"],\n-                    [0, \"&LowerRightArrow;\"],\n-                    [0, \"&LowerLeftArrow;\"],\n-                    [0, \"&nlarr;\"],\n-                    [0, \"&nrarr;\"],\n-                    [1, {\n-                        v: \"&rarrw;\",\n-                        n: 824,\n-                        o: \"&nrarrw;\"\n-                    }],\n-                    [0, \"&Larr;\"],\n-                    [0, \"&Uarr;\"],\n-                    [0, \"&Rarr;\"],\n-                    [0, \"&Darr;\"],\n-                    [0, \"&larrtl;\"],\n-                    [0, \"&rarrtl;\"],\n-                    [0, \"&LeftTeeArrow;\"],\n-                    [0, \"&mapstoup;\"],\n-                    [0, \"&map;\"],\n-                    [0, \"&DownTeeArrow;\"],\n-                    [1, \"&hookleftarrow;\"],\n-                    [0, \"&hookrightarrow;\"],\n-                    [0, \"&larrlp;\"],\n-                    [0, \"&looparrowright;\"],\n-                    [0, \"&harrw;\"],\n-                    [0, \"&nharr;\"],\n-                    [1, \"&lsh;\"],\n-                    [0, \"&rsh;\"],\n-                    [0, \"&ldsh;\"],\n-                    [0, \"&rdsh;\"],\n-                    [1, \"&crarr;\"],\n-                    [0, \"&cularr;\"],\n-                    [0, \"&curarr;\"],\n-                    [2, \"&circlearrowleft;\"],\n-                    [0, \"&circlearrowright;\"],\n-                    [0, \"&leftharpoonup;\"],\n-                    [0, \"&DownLeftVector;\"],\n-                    [0, \"&RightUpVector;\"],\n-                    [0, \"&LeftUpVector;\"],\n-                    [0, \"&rharu;\"],\n-                    [0, \"&DownRightVector;\"],\n-                    [0, \"&dharr;\"],\n-                    [0, \"&dharl;\"],\n-                    [0, \"&RightArrowLeftArrow;\"],\n-                    [0, \"&udarr;\"],\n-                    [0, \"&LeftArrowRightArrow;\"],\n-                    [0, \"&leftleftarrows;\"],\n-                    [0, \"&upuparrows;\"],\n-                    [0, \"&rightrightarrows;\"],\n-                    [0, \"&ddarr;\"],\n-                    [0, \"&leftrightharpoons;\"],\n-                    [0, \"&Equilibrium;\"],\n-                    [0, \"&nlArr;\"],\n-                    [0, \"&nhArr;\"],\n-                    [0, \"&nrArr;\"],\n-                    [0, \"&DoubleLeftArrow;\"],\n-                    [0, \"&DoubleUpArrow;\"],\n-                    [0, \"&DoubleRightArrow;\"],\n-                    [0, \"&dArr;\"],\n-                    [0, \"&DoubleLeftRightArrow;\"],\n-                    [0, \"&DoubleUpDownArrow;\"],\n-                    [0, \"&nwArr;\"],\n-                    [0, \"&neArr;\"],\n-                    [0, \"&seArr;\"],\n-                    [0, \"&swArr;\"],\n-                    [0, \"&lAarr;\"],\n-                    [0, \"&rAarr;\"],\n-                    [1, \"&zigrarr;\"],\n-                    [6, \"&larrb;\"],\n-                    [0, \"&rarrb;\"],\n-                    [15, \"&DownArrowUpArrow;\"],\n-                    [7, \"&loarr;\"],\n-                    [0, \"&roarr;\"],\n-                    [0, \"&hoarr;\"],\n-                    [0, \"&forall;\"],\n-                    [0, \"&comp;\"],\n-                    [0, {\n-                        v: \"&part;\",\n-                        n: 824,\n-                        o: \"&npart;\"\n-                    }],\n-                    [0, \"&exist;\"],\n-                    [0, \"&nexist;\"],\n-                    [0, \"&empty;\"],\n-                    [1, \"&Del;\"],\n-                    [0, \"&Element;\"],\n-                    [0, \"&NotElement;\"],\n-                    [1, \"&ni;\"],\n-                    [0, \"&notni;\"],\n-                    [2, \"&prod;\"],\n-                    [0, \"&coprod;\"],\n-                    [0, \"&sum;\"],\n-                    [0, \"&minus;\"],\n-                    [0, \"&MinusPlus;\"],\n-                    [0, \"&dotplus;\"],\n-                    [1, \"&Backslash;\"],\n-                    [0, \"&lowast;\"],\n-                    [0, \"&compfn;\"],\n-                    [1, \"&radic;\"],\n-                    [2, \"&prop;\"],\n-                    [0, \"&infin;\"],\n-                    [0, \"&angrt;\"],\n-                    [0, {\n-                        v: \"&ang;\",\n-                        n: 8402,\n-                        o: \"&nang;\"\n-                    }],\n-                    [0, \"&angmsd;\"],\n-                    [0, \"&angsph;\"],\n-                    [0, \"&mid;\"],\n-                    [0, \"&nmid;\"],\n-                    [0, \"&DoubleVerticalBar;\"],\n-                    [0, \"&NotDoubleVerticalBar;\"],\n-                    [0, \"&and;\"],\n-                    [0, \"&or;\"],\n-                    [0, {\n-                        v: \"&cap;\",\n-                        n: 65024,\n-                        o: \"&caps;\"\n-                    }],\n-                    [0, {\n-                        v: \"&cup;\",\n-                        n: 65024,\n-                        o: \"&cups;\"\n-                    }],\n-                    [0, \"&int;\"],\n-                    [0, \"&Int;\"],\n-                    [0, \"&iiint;\"],\n-                    [0, \"&conint;\"],\n-                    [0, \"&Conint;\"],\n-                    [0, \"&Cconint;\"],\n-                    [0, \"&cwint;\"],\n-                    [0, \"&ClockwiseContourIntegral;\"],\n-                    [0, \"&awconint;\"],\n-                    [0, \"&there4;\"],\n-                    [0, \"&becaus;\"],\n-                    [0, \"&ratio;\"],\n-                    [0, \"&Colon;\"],\n-                    [0, \"&dotminus;\"],\n-                    [1, \"&mDDot;\"],\n-                    [0, \"&homtht;\"],\n-                    [0, {\n-                        v: \"&sim;\",\n-                        n: 8402,\n-                        o: \"&nvsim;\"\n-                    }],\n-                    [0, {\n-                        v: \"&backsim;\",\n-                        n: 817,\n-                        o: \"&race;\"\n-                    }],\n-                    [0, {\n-                        v: \"&ac;\",\n-                        n: 819,\n-                        o: \"&acE;\"\n-                    }],\n-                    [0, \"&acd;\"],\n-                    [0, \"&VerticalTilde;\"],\n-                    [0, \"&NotTilde;\"],\n-                    [0, {\n-                        v: \"&eqsim;\",\n-                        n: 824,\n-                        o: \"&nesim;\"\n-                    }],\n-                    [0, \"&sime;\"],\n-                    [0, \"&NotTildeEqual;\"],\n-                    [0, \"&cong;\"],\n-                    [0, \"&simne;\"],\n-                    [0, \"&ncong;\"],\n-                    [0, \"&ap;\"],\n-                    [0, \"&nap;\"],\n-                    [0, \"&ape;\"],\n-                    [0, {\n-                        v: \"&apid;\",\n-                        n: 824,\n-                        o: \"&napid;\"\n-                    }],\n-                    [0, \"&backcong;\"],\n-                    [0, {\n-                        v: \"&asympeq;\",\n-                        n: 8402,\n-                        o: \"&nvap;\"\n-                    }],\n-                    [0, {\n-                        v: \"&bump;\",\n-                        n: 824,\n-                        o: \"&nbump;\"\n-                    }],\n-                    [0, {\n-                        v: \"&bumpe;\",\n-                        n: 824,\n-                        o: \"&nbumpe;\"\n-                    }],\n-                    [0, {\n-                        v: \"&doteq;\",\n-                        n: 824,\n-                        o: \"&nedot;\"\n-                    }],\n-                    [0, \"&doteqdot;\"],\n-                    [0, \"&efDot;\"],\n-                    [0, \"&erDot;\"],\n-                    [0, \"&Assign;\"],\n-                    [0, \"&ecolon;\"],\n-                    [0, \"&ecir;\"],\n-                    [0, \"&circeq;\"],\n-                    [1, \"&wedgeq;\"],\n-                    [0, \"&veeeq;\"],\n-                    [1, \"&triangleq;\"],\n-                    [2, \"&equest;\"],\n-                    [0, \"&ne;\"],\n-                    [0, {\n-                        v: \"&Congruent;\",\n-                        n: 8421,\n-                        o: \"&bnequiv;\"\n-                    }],\n-                    [0, \"&nequiv;\"],\n-                    [1, {\n-                        v: \"&le;\",\n-                        n: 8402,\n-                        o: \"&nvle;\"\n-                    }],\n-                    [0, {\n-                        v: \"&ge;\",\n-                        n: 8402,\n-                        o: \"&nvge;\"\n-                    }],\n-                    [0, {\n-                        v: \"&lE;\",\n-                        n: 824,\n-                        o: \"&nlE;\"\n-                    }],\n-                    [0, {\n-                        v: \"&gE;\",\n-                        n: 824,\n-                        o: \"&ngE;\"\n-                    }],\n-                    [0, {\n-                        v: \"&lnE;\",\n-                        n: 65024,\n-                        o: \"&lvertneqq;\"\n-                    }],\n-                    [0, {\n-                        v: \"&gnE;\",\n-                        n: 65024,\n-                        o: \"&gvertneqq;\"\n-                    }],\n-                    [0, {\n-                        v: \"&ll;\",\n-                        n: new Map( /* #__PURE__ */ restoreDiff([\n-                            [824, \"&nLtv;\"],\n-                            [7577, \"&nLt;\"]\n-                        ]))\n-                    }],\n-                    [0, {\n-                        v: \"&gg;\",\n-                        n: new Map( /* #__PURE__ */ restoreDiff([\n-                            [824, \"&nGtv;\"],\n-                            [7577, \"&nGt;\"]\n-                        ]))\n-                    }],\n-                    [0, \"&between;\"],\n-                    [0, \"&NotCupCap;\"],\n-                    [0, \"&nless;\"],\n-                    [0, \"&ngt;\"],\n-                    [0, \"&nle;\"],\n-                    [0, \"&nge;\"],\n-                    [0, \"&lesssim;\"],\n-                    [0, \"&GreaterTilde;\"],\n-                    [0, \"&nlsim;\"],\n-                    [0, \"&ngsim;\"],\n-                    [0, \"&LessGreater;\"],\n-                    [0, \"&gl;\"],\n-                    [0, \"&NotLessGreater;\"],\n-                    [0, \"&NotGreaterLess;\"],\n-                    [0, \"&pr;\"],\n-                    [0, \"&sc;\"],\n-                    [0, \"&prcue;\"],\n-                    [0, \"&sccue;\"],\n-                    [0, \"&PrecedesTilde;\"],\n-                    [0, {\n-                        v: \"&scsim;\",\n-                        n: 824,\n-                        o: \"&NotSucceedsTilde;\"\n-                    }],\n-                    [0, \"&NotPrecedes;\"],\n-                    [0, \"&NotSucceeds;\"],\n-                    [0, {\n-                        v: \"&sub;\",\n-                        n: 8402,\n-                        o: \"&NotSubset;\"\n-                    }],\n-                    [0, {\n-                        v: \"&sup;\",\n-                        n: 8402,\n-                        o: \"&NotSuperset;\"\n-                    }],\n-                    [0, \"&nsub;\"],\n-                    [0, \"&nsup;\"],\n-                    [0, \"&sube;\"],\n-                    [0, \"&supe;\"],\n-                    [0, \"&NotSubsetEqual;\"],\n-                    [0, \"&NotSupersetEqual;\"],\n-                    [0, {\n-                        v: \"&subne;\",\n-                        n: 65024,\n-                        o: \"&varsubsetneq;\"\n-                    }],\n-                    [0, {\n-                        v: \"&supne;\",\n-                        n: 65024,\n-                        o: \"&varsupsetneq;\"\n-                    }],\n-                    [1, \"&cupdot;\"],\n-                    [0, \"&UnionPlus;\"],\n-                    [0, {\n-                        v: \"&sqsub;\",\n-                        n: 824,\n-                        o: \"&NotSquareSubset;\"\n-                    }],\n-                    [0, {\n-                        v: \"&sqsup;\",\n-                        n: 824,\n-                        o: \"&NotSquareSuperset;\"\n-                    }],\n-                    [0, \"&sqsube;\"],\n-                    [0, \"&sqsupe;\"],\n-                    [0, {\n-                        v: \"&sqcap;\",\n-                        n: 65024,\n-                        o: \"&sqcaps;\"\n-                    }],\n-                    [0, {\n-                        v: \"&sqcup;\",\n-                        n: 65024,\n-                        o: \"&sqcups;\"\n-                    }],\n-                    [0, \"&CirclePlus;\"],\n-                    [0, \"&CircleMinus;\"],\n-                    [0, \"&CircleTimes;\"],\n-                    [0, \"&osol;\"],\n-                    [0, \"&CircleDot;\"],\n-                    [0, \"&circledcirc;\"],\n-                    [0, \"&circledast;\"],\n-                    [1, \"&circleddash;\"],\n-                    [0, \"&boxplus;\"],\n-                    [0, \"&boxminus;\"],\n-                    [0, \"&boxtimes;\"],\n-                    [0, \"&dotsquare;\"],\n-                    [0, \"&RightTee;\"],\n-                    [0, \"&dashv;\"],\n-                    [0, \"&DownTee;\"],\n-                    [0, \"&bot;\"],\n-                    [1, \"&models;\"],\n-                    [0, \"&DoubleRightTee;\"],\n-                    [0, \"&Vdash;\"],\n-                    [0, \"&Vvdash;\"],\n-                    [0, \"&VDash;\"],\n-                    [0, \"&nvdash;\"],\n-                    [0, \"&nvDash;\"],\n-                    [0, \"&nVdash;\"],\n-                    [0, \"&nVDash;\"],\n-                    [0, \"&prurel;\"],\n-                    [1, \"&LeftTriangle;\"],\n-                    [0, \"&RightTriangle;\"],\n-                    [0, {\n-                        v: \"&LeftTriangleEqual;\",\n-                        n: 8402,\n-                        o: \"&nvltrie;\"\n-                    }],\n-                    [0, {\n-                        v: \"&RightTriangleEqual;\",\n-                        n: 8402,\n-                        o: \"&nvrtrie;\"\n-                    }],\n-                    [0, \"&origof;\"],\n-                    [0, \"&imof;\"],\n-                    [0, \"&multimap;\"],\n-                    [0, \"&hercon;\"],\n-                    [0, \"&intcal;\"],\n-                    [0, \"&veebar;\"],\n-                    [1, \"&barvee;\"],\n-                    [0, \"&angrtvb;\"],\n-                    [0, \"&lrtri;\"],\n-                    [0, \"&bigwedge;\"],\n-                    [0, \"&bigvee;\"],\n-                    [0, \"&bigcap;\"],\n-                    [0, \"&bigcup;\"],\n-                    [0, \"&diam;\"],\n-                    [0, \"&sdot;\"],\n-                    [0, \"&sstarf;\"],\n-                    [0, \"&divideontimes;\"],\n-                    [0, \"&bowtie;\"],\n-                    [0, \"&ltimes;\"],\n-                    [0, \"&rtimes;\"],\n-                    [0, \"&leftthreetimes;\"],\n-                    [0, \"&rightthreetimes;\"],\n-                    [0, \"&backsimeq;\"],\n-                    [0, \"&curlyvee;\"],\n-                    [0, \"&curlywedge;\"],\n-                    [0, \"&Sub;\"],\n-                    [0, \"&Sup;\"],\n-                    [0, \"&Cap;\"],\n-                    [0, \"&Cup;\"],\n-                    [0, \"&fork;\"],\n-                    [0, \"&epar;\"],\n-                    [0, \"&lessdot;\"],\n-                    [0, \"&gtdot;\"],\n-                    [0, {\n-                        v: \"&Ll;\",\n-                        n: 824,\n-                        o: \"&nLl;\"\n-                    }],\n-                    [0, {\n-                        v: \"&Gg;\",\n-                        n: 824,\n-                        o: \"&nGg;\"\n-                    }],\n-                    [0, {\n-                        v: \"&leg;\",\n-                        n: 65024,\n-                        o: \"&lesg;\"\n-                    }],\n-                    [0, {\n-                        v: \"&gel;\",\n-                        n: 65024,\n-                        o: \"&gesl;\"\n-                    }],\n-                    [2, \"&cuepr;\"],\n-                    [0, \"&cuesc;\"],\n-                    [0, \"&NotPrecedesSlantEqual;\"],\n-                    [0, \"&NotSucceedsSlantEqual;\"],\n-                    [0, \"&NotSquareSubsetEqual;\"],\n-                    [0, \"&NotSquareSupersetEqual;\"],\n-                    [2, \"&lnsim;\"],\n-                    [0, \"&gnsim;\"],\n-                    [0, \"&precnsim;\"],\n-                    [0, \"&scnsim;\"],\n-                    [0, \"&nltri;\"],\n-                    [0, \"&NotRightTriangle;\"],\n-                    [0, \"&nltrie;\"],\n-                    [0, \"&NotRightTriangleEqual;\"],\n-                    [0, \"&vellip;\"],\n-                    [0, \"&ctdot;\"],\n-                    [0, \"&utdot;\"],\n-                    [0, \"&dtdot;\"],\n-                    [0, \"&disin;\"],\n-                    [0, \"&isinsv;\"],\n-                    [0, \"&isins;\"],\n-                    [0, {\n-                        v: \"&isindot;\",\n-                        n: 824,\n-                        o: \"&notindot;\"\n-                    }],\n-                    [0, \"&notinvc;\"],\n-                    [0, \"&notinvb;\"],\n-                    [1, {\n-                        v: \"&isinE;\",\n-                        n: 824,\n-                        o: \"&notinE;\"\n-                    }],\n-                    [0, \"&nisd;\"],\n-                    [0, \"&xnis;\"],\n-                    [0, \"&nis;\"],\n-                    [0, \"&notnivc;\"],\n-                    [0, \"&notnivb;\"],\n-                    [6, \"&barwed;\"],\n-                    [0, \"&Barwed;\"],\n-                    [1, \"&lceil;\"],\n-                    [0, \"&rceil;\"],\n-                    [0, \"&LeftFloor;\"],\n-                    [0, \"&rfloor;\"],\n-                    [0, \"&drcrop;\"],\n-                    [0, \"&dlcrop;\"],\n-                    [0, \"&urcrop;\"],\n-                    [0, \"&ulcrop;\"],\n-                    [0, \"&bnot;\"],\n-                    [1, \"&profline;\"],\n-                    [0, \"&profsurf;\"],\n-                    [1, \"&telrec;\"],\n-                    [0, \"&target;\"],\n-                    [5, \"&ulcorn;\"],\n-                    [0, \"&urcorn;\"],\n-                    [0, \"&dlcorn;\"],\n-                    [0, \"&drcorn;\"],\n-                    [2, \"&frown;\"],\n-                    [0, \"&smile;\"],\n-                    [9, \"&cylcty;\"],\n-                    [0, \"&profalar;\"],\n-                    [7, \"&topbot;\"],\n-                    [6, \"&ovbar;\"],\n-                    [1, \"&solbar;\"],\n-                    [60, \"&angzarr;\"],\n-                    [51, \"&lmoustache;\"],\n-                    [0, \"&rmoustache;\"],\n-                    [2, \"&OverBracket;\"],\n-                    [0, \"&bbrk;\"],\n-                    [0, \"&bbrktbrk;\"],\n-                    [37, \"&OverParenthesis;\"],\n-                    [0, \"&UnderParenthesis;\"],\n-                    [0, \"&OverBrace;\"],\n-                    [0, \"&UnderBrace;\"],\n-                    [2, \"&trpezium;\"],\n-                    [4, \"&elinters;\"],\n-                    [59, \"&blank;\"],\n-                    [164, \"&circledS;\"],\n-                    [55, \"&boxh;\"],\n-                    [1, \"&boxv;\"],\n-                    [9, \"&boxdr;\"],\n-                    [3, \"&boxdl;\"],\n-                    [3, \"&boxur;\"],\n-                    [3, \"&boxul;\"],\n-                    [3, \"&boxvr;\"],\n-                    [7, \"&boxvl;\"],\n-                    [7, \"&boxhd;\"],\n-                    [7, \"&boxhu;\"],\n-                    [7, \"&boxvh;\"],\n-                    [19, \"&boxH;\"],\n-                    [0, \"&boxV;\"],\n-                    [0, \"&boxdR;\"],\n-                    [0, \"&boxDr;\"],\n-                    [0, \"&boxDR;\"],\n-                    [0, \"&boxdL;\"],\n-                    [0, \"&boxDl;\"],\n-                    [0, \"&boxDL;\"],\n-                    [0, \"&boxuR;\"],\n-                    [0, \"&boxUr;\"],\n-                    [0, \"&boxUR;\"],\n-                    [0, \"&boxuL;\"],\n-                    [0, \"&boxUl;\"],\n-                    [0, \"&boxUL;\"],\n-                    [0, \"&boxvR;\"],\n-                    [0, \"&boxVr;\"],\n-                    [0, \"&boxVR;\"],\n-                    [0, \"&boxvL;\"],\n-                    [0, \"&boxVl;\"],\n-                    [0, \"&boxVL;\"],\n-                    [0, \"&boxHd;\"],\n-                    [0, \"&boxhD;\"],\n-                    [0, \"&boxHD;\"],\n-                    [0, \"&boxHu;\"],\n-                    [0, \"&boxhU;\"],\n-                    [0, \"&boxHU;\"],\n-                    [0, \"&boxvH;\"],\n-                    [0, \"&boxVh;\"],\n-                    [0, \"&boxVH;\"],\n-                    [19, \"&uhblk;\"],\n-                    [3, \"&lhblk;\"],\n-                    [3, \"&block;\"],\n-                    [8, \"&blk14;\"],\n-                    [0, \"&blk12;\"],\n-                    [0, \"&blk34;\"],\n-                    [13, \"&square;\"],\n-                    [8, \"&blacksquare;\"],\n-                    [0, \"&EmptyVerySmallSquare;\"],\n-                    [1, \"&rect;\"],\n-                    [0, \"&marker;\"],\n-                    [2, \"&fltns;\"],\n-                    [1, \"&bigtriangleup;\"],\n-                    [0, \"&blacktriangle;\"],\n-                    [0, \"&triangle;\"],\n-                    [2, \"&blacktriangleright;\"],\n-                    [0, \"&rtri;\"],\n-                    [3, \"&bigtriangledown;\"],\n-                    [0, \"&blacktriangledown;\"],\n-                    [0, \"&dtri;\"],\n-                    [2, \"&blacktriangleleft;\"],\n-                    [0, \"&ltri;\"],\n-                    [6, \"&loz;\"],\n-                    [0, \"&cir;\"],\n-                    [32, \"&tridot;\"],\n-                    [2, \"&bigcirc;\"],\n-                    [8, \"&ultri;\"],\n-                    [0, \"&urtri;\"],\n-                    [0, \"&lltri;\"],\n-                    [0, \"&EmptySmallSquare;\"],\n-                    [0, \"&FilledSmallSquare;\"],\n-                    [8, \"&bigstar;\"],\n-                    [0, \"&star;\"],\n-                    [7, \"&phone;\"],\n-                    [49, \"&female;\"],\n-                    [1, \"&male;\"],\n-                    [29, \"&spades;\"],\n-                    [2, \"&clubs;\"],\n-                    [1, \"&hearts;\"],\n-                    [0, \"&diamondsuit;\"],\n-                    [3, \"&sung;\"],\n-                    [2, \"&flat;\"],\n-                    [0, \"&natural;\"],\n-                    [0, \"&sharp;\"],\n-                    [163, \"&check;\"],\n-                    [3, \"&cross;\"],\n-                    [8, \"&malt;\"],\n-                    [21, \"&sext;\"],\n-                    [33, \"&VerticalSeparator;\"],\n-                    [25, \"&lbbrk;\"],\n-                    [0, \"&rbbrk;\"],\n-                    [84, \"&bsolhsub;\"],\n-                    [0, \"&suphsol;\"],\n-                    [28, \"&LeftDoubleBracket;\"],\n-                    [0, \"&RightDoubleBracket;\"],\n-                    [0, \"&lang;\"],\n-                    [0, \"&rang;\"],\n-                    [0, \"&Lang;\"],\n-                    [0, \"&Rang;\"],\n-                    [0, \"&loang;\"],\n-                    [0, \"&roang;\"],\n-                    [7, \"&longleftarrow;\"],\n-                    [0, \"&longrightarrow;\"],\n-                    [0, \"&longleftrightarrow;\"],\n-                    [0, \"&DoubleLongLeftArrow;\"],\n-                    [0, \"&DoubleLongRightArrow;\"],\n-                    [0, \"&DoubleLongLeftRightArrow;\"],\n-                    [1, \"&longmapsto;\"],\n-                    [2, \"&dzigrarr;\"],\n-                    [258, \"&nvlArr;\"],\n-                    [0, \"&nvrArr;\"],\n-                    [0, \"&nvHarr;\"],\n-                    [0, \"&Map;\"],\n-                    [6, \"&lbarr;\"],\n-                    [0, \"&bkarow;\"],\n-                    [0, \"&lBarr;\"],\n-                    [0, \"&dbkarow;\"],\n-                    [0, \"&drbkarow;\"],\n-                    [0, \"&DDotrahd;\"],\n-                    [0, \"&UpArrowBar;\"],\n-                    [0, \"&DownArrowBar;\"],\n-                    [2, \"&Rarrtl;\"],\n-                    [2, \"&latail;\"],\n-                    [0, \"&ratail;\"],\n-                    [0, \"&lAtail;\"],\n-                    [0, \"&rAtail;\"],\n-                    [0, \"&larrfs;\"],\n-                    [0, \"&rarrfs;\"],\n-                    [0, \"&larrbfs;\"],\n-                    [0, \"&rarrbfs;\"],\n-                    [2, \"&nwarhk;\"],\n-                    [0, \"&nearhk;\"],\n-                    [0, \"&hksearow;\"],\n-                    [0, \"&hkswarow;\"],\n-                    [0, \"&nwnear;\"],\n-                    [0, \"&nesear;\"],\n-                    [0, \"&seswar;\"],\n-                    [0, \"&swnwar;\"],\n-                    [8, {\n-                        v: \"&rarrc;\",\n-                        n: 824,\n-                        o: \"&nrarrc;\"\n-                    }],\n-                    [1, \"&cudarrr;\"],\n-                    [0, \"&ldca;\"],\n-                    [0, \"&rdca;\"],\n-                    [0, \"&cudarrl;\"],\n-                    [0, \"&larrpl;\"],\n-                    [2, \"&curarrm;\"],\n-                    [0, \"&cularrp;\"],\n-                    [7, \"&rarrpl;\"],\n-                    [2, \"&harrcir;\"],\n-                    [0, \"&Uarrocir;\"],\n-                    [0, \"&lurdshar;\"],\n-                    [0, \"&ldrushar;\"],\n-                    [2, \"&LeftRightVector;\"],\n-                    [0, \"&RightUpDownVector;\"],\n-                    [0, \"&DownLeftRightVector;\"],\n-                    [0, \"&LeftUpDownVector;\"],\n-                    [0, \"&LeftVectorBar;\"],\n-                    [0, \"&RightVectorBar;\"],\n-                    [0, \"&RightUpVectorBar;\"],\n-                    [0, \"&RightDownVectorBar;\"],\n-                    [0, \"&DownLeftVectorBar;\"],\n-                    [0, \"&DownRightVectorBar;\"],\n-                    [0, \"&LeftUpVectorBar;\"],\n-                    [0, \"&LeftDownVectorBar;\"],\n-                    [0, \"&LeftTeeVector;\"],\n-                    [0, \"&RightTeeVector;\"],\n-                    [0, \"&RightUpTeeVector;\"],\n-                    [0, \"&RightDownTeeVector;\"],\n-                    [0, \"&DownLeftTeeVector;\"],\n-                    [0, \"&DownRightTeeVector;\"],\n-                    [0, \"&LeftUpTeeVector;\"],\n-                    [0, \"&LeftDownTeeVector;\"],\n-                    [0, \"&lHar;\"],\n-                    [0, \"&uHar;\"],\n-                    [0, \"&rHar;\"],\n-                    [0, \"&dHar;\"],\n-                    [0, \"&luruhar;\"],\n-                    [0, \"&ldrdhar;\"],\n-                    [0, \"&ruluhar;\"],\n-                    [0, \"&rdldhar;\"],\n-                    [0, \"&lharul;\"],\n-                    [0, \"&llhard;\"],\n-                    [0, \"&rharul;\"],\n-                    [0, \"&lrhard;\"],\n-                    [0, \"&udhar;\"],\n-                    [0, \"&duhar;\"],\n-                    [0, \"&RoundImplies;\"],\n-                    [0, \"&erarr;\"],\n-                    [0, \"&simrarr;\"],\n-                    [0, \"&larrsim;\"],\n-                    [0, \"&rarrsim;\"],\n-                    [0, \"&rarrap;\"],\n-                    [0, \"&ltlarr;\"],\n-                    [1, \"&gtrarr;\"],\n-                    [0, \"&subrarr;\"],\n-                    [1, \"&suplarr;\"],\n-                    [0, \"&lfisht;\"],\n-                    [0, \"&rfisht;\"],\n-                    [0, \"&ufisht;\"],\n-                    [0, \"&dfisht;\"],\n-                    [5, \"&lopar;\"],\n-                    [0, \"&ropar;\"],\n-                    [4, \"&lbrke;\"],\n-                    [0, \"&rbrke;\"],\n-                    [0, \"&lbrkslu;\"],\n-                    [0, \"&rbrksld;\"],\n-                    [0, \"&lbrksld;\"],\n-                    [0, \"&rbrkslu;\"],\n-                    [0, \"&langd;\"],\n-                    [0, \"&rangd;\"],\n-                    [0, \"&lparlt;\"],\n-                    [0, \"&rpargt;\"],\n-                    [0, \"&gtlPar;\"],\n-                    [0, \"&ltrPar;\"],\n-                    [3, \"&vzigzag;\"],\n-                    [1, \"&vangrt;\"],\n-                    [0, \"&angrtvbd;\"],\n-                    [6, \"&ange;\"],\n-                    [0, \"&range;\"],\n-                    [0, \"&dwangle;\"],\n-                    [0, \"&uwangle;\"],\n-                    [0, \"&angmsdaa;\"],\n-                    [0, \"&angmsdab;\"],\n-                    [0, \"&angmsdac;\"],\n-                    [0, \"&angmsdad;\"],\n-                    [0, \"&angmsdae;\"],\n-                    [0, \"&angmsdaf;\"],\n-                    [0, \"&angmsdag;\"],\n-                    [0, \"&angmsdah;\"],\n-                    [0, \"&bemptyv;\"],\n-                    [0, \"&demptyv;\"],\n-                    [0, \"&cemptyv;\"],\n-                    [0, \"&raemptyv;\"],\n-                    [0, \"&laemptyv;\"],\n-                    [0, \"&ohbar;\"],\n-                    [0, \"&omid;\"],\n-                    [0, \"&opar;\"],\n-                    [1, \"&operp;\"],\n-                    [1, \"&olcross;\"],\n-                    [0, \"&odsold;\"],\n-                    [1, \"&olcir;\"],\n-                    [0, \"&ofcir;\"],\n-                    [0, \"&olt;\"],\n-                    [0, \"&ogt;\"],\n-                    [0, \"&cirscir;\"],\n-                    [0, \"&cirE;\"],\n-                    [0, \"&solb;\"],\n-                    [0, \"&bsolb;\"],\n-                    [3, \"&boxbox;\"],\n-                    [3, \"&trisb;\"],\n-                    [0, \"&rtriltri;\"],\n-                    [0, {\n-                        v: \"&LeftTriangleBar;\",\n-                        n: 824,\n-                        o: \"&NotLeftTriangleBar;\"\n-                    }],\n-                    [0, {\n-                        v: \"&RightTriangleBar;\",\n-                        n: 824,\n-                        o: \"&NotRightTriangleBar;\"\n-                    }],\n-                    [11, \"&iinfin;\"],\n-                    [0, \"&infintie;\"],\n-                    [0, \"&nvinfin;\"],\n-                    [4, \"&eparsl;\"],\n-                    [0, \"&smeparsl;\"],\n-                    [0, \"&eqvparsl;\"],\n-                    [5, \"&blacklozenge;\"],\n-                    [8, \"&RuleDelayed;\"],\n-                    [1, \"&dsol;\"],\n-                    [9, \"&bigodot;\"],\n-                    [0, \"&bigoplus;\"],\n-                    [0, \"&bigotimes;\"],\n-                    [1, \"&biguplus;\"],\n-                    [1, \"&bigsqcup;\"],\n-                    [5, \"&iiiint;\"],\n-                    [0, \"&fpartint;\"],\n-                    [2, \"&cirfnint;\"],\n-                    [0, \"&awint;\"],\n-                    [0, \"&rppolint;\"],\n-                    [0, \"&scpolint;\"],\n-                    [0, \"&npolint;\"],\n-                    [0, \"&pointint;\"],\n-                    [0, \"&quatint;\"],\n-                    [0, \"&intlarhk;\"],\n-                    [10, \"&pluscir;\"],\n-                    [0, \"&plusacir;\"],\n-                    [0, \"&simplus;\"],\n-                    [0, \"&plusdu;\"],\n-                    [0, \"&plussim;\"],\n-                    [0, \"&plustwo;\"],\n-                    [1, \"&mcomma;\"],\n-                    [0, \"&minusdu;\"],\n-                    [2, \"&loplus;\"],\n-                    [0, \"&roplus;\"],\n-                    [0, \"&Cross;\"],\n-                    [0, \"&timesd;\"],\n-                    [0, \"&timesbar;\"],\n-                    [1, \"&smashp;\"],\n-                    [0, \"&lotimes;\"],\n-                    [0, \"&rotimes;\"],\n-                    [0, \"&otimesas;\"],\n-                    [0, \"&Otimes;\"],\n-                    [0, \"&odiv;\"],\n-                    [0, \"&triplus;\"],\n-                    [0, \"&triminus;\"],\n-                    [0, \"&tritime;\"],\n-                    [0, \"&intprod;\"],\n-                    [2, \"&amalg;\"],\n-                    [0, \"&capdot;\"],\n-                    [1, \"&ncup;\"],\n-                    [0, \"&ncap;\"],\n-                    [0, \"&capand;\"],\n-                    [0, \"&cupor;\"],\n-                    [0, \"&cupcap;\"],\n-                    [0, \"&capcup;\"],\n-                    [0, \"&cupbrcap;\"],\n-                    [0, \"&capbrcup;\"],\n-                    [0, \"&cupcup;\"],\n-                    [0, \"&capcap;\"],\n-                    [0, \"&ccups;\"],\n-                    [0, \"&ccaps;\"],\n-                    [2, \"&ccupssm;\"],\n-                    [2, \"&And;\"],\n-                    [0, \"&Or;\"],\n-                    [0, \"&andand;\"],\n-                    [0, \"&oror;\"],\n-                    [0, \"&orslope;\"],\n-                    [0, \"&andslope;\"],\n-                    [1, \"&andv;\"],\n-                    [0, \"&orv;\"],\n-                    [0, \"&andd;\"],\n-                    [0, \"&ord;\"],\n-                    [1, \"&wedbar;\"],\n-                    [6, \"&sdote;\"],\n-                    [3, \"&simdot;\"],\n-                    [2, {\n-                        v: \"&congdot;\",\n-                        n: 824,\n-                        o: \"&ncongdot;\"\n-                    }],\n-                    [0, \"&easter;\"],\n-                    [0, \"&apacir;\"],\n-                    [0, {\n-                        v: \"&apE;\",\n-                        n: 824,\n-                        o: \"&napE;\"\n-                    }],\n-                    [0, \"&eplus;\"],\n-                    [0, \"&pluse;\"],\n-                    [0, \"&Esim;\"],\n-                    [0, \"&Colone;\"],\n-                    [0, \"&Equal;\"],\n-                    [1, \"&ddotseq;\"],\n-                    [0, \"&equivDD;\"],\n-                    [0, \"&ltcir;\"],\n-                    [0, \"&gtcir;\"],\n-                    [0, \"&ltquest;\"],\n-                    [0, \"&gtquest;\"],\n-                    [0, {\n-                        v: \"&leqslant;\",\n-                        n: 824,\n-                        o: \"&nleqslant;\"\n-                    }],\n-                    [0, {\n-                        v: \"&geqslant;\",\n-                        n: 824,\n-                        o: \"&ngeqslant;\"\n-                    }],\n-                    [0, \"&lesdot;\"],\n-                    [0, \"&gesdot;\"],\n-                    [0, \"&lesdoto;\"],\n-                    [0, \"&gesdoto;\"],\n-                    [0, \"&lesdotor;\"],\n-                    [0, \"&gesdotol;\"],\n-                    [0, \"&lap;\"],\n-                    [0, \"&gap;\"],\n-                    [0, \"&lne;\"],\n-                    [0, \"&gne;\"],\n-                    [0, \"&lnap;\"],\n-                    [0, \"&gnap;\"],\n-                    [0, \"&lEg;\"],\n-                    [0, \"&gEl;\"],\n-                    [0, \"&lsime;\"],\n-                    [0, \"&gsime;\"],\n-                    [0, \"&lsimg;\"],\n-                    [0, \"&gsiml;\"],\n-                    [0, \"&lgE;\"],\n-                    [0, \"&glE;\"],\n-                    [0, \"&lesges;\"],\n-                    [0, \"&gesles;\"],\n-                    [0, \"&els;\"],\n-                    [0, \"&egs;\"],\n-                    [0, \"&elsdot;\"],\n-                    [0, \"&egsdot;\"],\n-                    [0, \"&el;\"],\n-                    [0, \"&eg;\"],\n-                    [2, \"&siml;\"],\n-                    [0, \"&simg;\"],\n-                    [0, \"&simlE;\"],\n-                    [0, \"&simgE;\"],\n-                    [0, {\n-                        v: \"&LessLess;\",\n-                        n: 824,\n-                        o: \"&NotNestedLessLess;\"\n-                    }],\n-                    [0, {\n-                        v: \"&GreaterGreater;\",\n-                        n: 824,\n-                        o: \"&NotNestedGreaterGreater;\"\n-                    }],\n-                    [1, \"&glj;\"],\n-                    [0, \"&gla;\"],\n-                    [0, \"&ltcc;\"],\n-                    [0, \"&gtcc;\"],\n-                    [0, \"&lescc;\"],\n-                    [0, \"&gescc;\"],\n-                    [0, \"&smt;\"],\n-                    [0, \"&lat;\"],\n-                    [0, {\n-                        v: \"&smte;\",\n-                        n: 65024,\n-                        o: \"&smtes;\"\n-                    }],\n-                    [0, {\n-                        v: \"&late;\",\n-                        n: 65024,\n-                        o: \"&lates;\"\n-                    }],\n-                    [0, \"&bumpE;\"],\n-                    [0, {\n-                        v: \"&PrecedesEqual;\",\n-                        n: 824,\n-                        o: \"&NotPrecedesEqual;\"\n-                    }],\n-                    [0, {\n-                        v: \"&sce;\",\n-                        n: 824,\n-                        o: \"&NotSucceedsEqual;\"\n-                    }],\n-                    [2, \"&prE;\"],\n-                    [0, \"&scE;\"],\n-                    [0, \"&precneqq;\"],\n-                    [0, \"&scnE;\"],\n-                    [0, \"&prap;\"],\n-                    [0, \"&scap;\"],\n-                    [0, \"&precnapprox;\"],\n-                    [0, \"&scnap;\"],\n-                    [0, \"&Pr;\"],\n-                    [0, \"&Sc;\"],\n-                    [0, \"&subdot;\"],\n-                    [0, \"&supdot;\"],\n-                    [0, \"&subplus;\"],\n-                    [0, \"&supplus;\"],\n-                    [0, \"&submult;\"],\n-                    [0, \"&supmult;\"],\n-                    [0, \"&subedot;\"],\n-                    [0, \"&supedot;\"],\n-                    [0, {\n-                        v: \"&subE;\",\n-                        n: 824,\n-                        o: \"&nsubE;\"\n-                    }],\n-                    [0, {\n-                        v: \"&supE;\",\n-                        n: 824,\n-                        o: \"&nsupE;\"\n-                    }],\n-                    [0, \"&subsim;\"],\n-                    [0, \"&supsim;\"],\n-                    [2, {\n-                        v: \"&subnE;\",\n-                        n: 65024,\n-                        o: \"&varsubsetneqq;\"\n-                    }],\n-                    [0, {\n-                        v: \"&supnE;\",\n-                        n: 65024,\n-                        o: \"&varsupsetneqq;\"\n-                    }],\n-                    [2, \"&csub;\"],\n-                    [0, \"&csup;\"],\n-                    [0, \"&csube;\"],\n-                    [0, \"&csupe;\"],\n-                    [0, \"&subsup;\"],\n-                    [0, \"&supsub;\"],\n-                    [0, \"&subsub;\"],\n-                    [0, \"&supsup;\"],\n-                    [0, \"&suphsub;\"],\n-                    [0, \"&supdsub;\"],\n-                    [0, \"&forkv;\"],\n-                    [0, \"&topfork;\"],\n-                    [0, \"&mlcp;\"],\n-                    [8, \"&Dashv;\"],\n-                    [1, \"&Vdashl;\"],\n-                    [0, \"&Barv;\"],\n-                    [0, \"&vBar;\"],\n-                    [0, \"&vBarv;\"],\n-                    [1, \"&Vbar;\"],\n-                    [0, \"&Not;\"],\n-                    [0, \"&bNot;\"],\n-                    [0, \"&rnmid;\"],\n-                    [0, \"&cirmid;\"],\n-                    [0, \"&midcir;\"],\n-                    [0, \"&topcir;\"],\n-                    [0, \"&nhpar;\"],\n-                    [0, \"&parsim;\"],\n-                    [9, {\n-                        v: \"&parsl;\",\n-                        n: 8421,\n-                        o: \"&nparsl;\"\n-                    }],\n-                    [44343, {\n-                        n: new Map( /* #__PURE__ */ restoreDiff([\n-                            [56476, \"&Ascr;\"],\n-                            [1, \"&Cscr;\"],\n-                            [0, \"&Dscr;\"],\n-                            [2, \"&Gscr;\"],\n-                            [2, \"&Jscr;\"],\n-                            [0, \"&Kscr;\"],\n-                            [2, \"&Nscr;\"],\n-                            [0, \"&Oscr;\"],\n-                            [0, \"&Pscr;\"],\n-                            [0, \"&Qscr;\"],\n-                            [1, \"&Sscr;\"],\n-                            [0, \"&Tscr;\"],\n-                            [0, \"&Uscr;\"],\n-                            [0, \"&Vscr;\"],\n-                            [0, \"&Wscr;\"],\n-                            [0, \"&Xscr;\"],\n-                            [0, \"&Yscr;\"],\n-                            [0, \"&Zscr;\"],\n-                            [0, \"&ascr;\"],\n-                            [0, \"&bscr;\"],\n-                            [0, \"&cscr;\"],\n-                            [0, \"&dscr;\"],\n-                            [1, \"&fscr;\"],\n-                            [1, \"&hscr;\"],\n-                            [0, \"&iscr;\"],\n-                            [0, \"&jscr;\"],\n-                            [0, \"&kscr;\"],\n-                            [0, \"&lscr;\"],\n-                            [0, \"&mscr;\"],\n-                            [0, \"&nscr;\"],\n-                            [1, \"&pscr;\"],\n-                            [0, \"&qscr;\"],\n-                            [0, \"&rscr;\"],\n-                            [0, \"&sscr;\"],\n-                            [0, \"&tscr;\"],\n-                            [0, \"&uscr;\"],\n-                            [0, \"&vscr;\"],\n-                            [0, \"&wscr;\"],\n-                            [0, \"&xscr;\"],\n-                            [0, \"&yscr;\"],\n-                            [0, \"&zscr;\"],\n-                            [52, \"&Afr;\"],\n-                            [0, \"&Bfr;\"],\n-                            [1, \"&Dfr;\"],\n-                            [0, \"&Efr;\"],\n-                            [0, \"&Ffr;\"],\n-                            [0, \"&Gfr;\"],\n-                            [2, \"&Jfr;\"],\n-                            [0, \"&Kfr;\"],\n-                            [0, \"&Lfr;\"],\n-                            [0, \"&Mfr;\"],\n-                            [0, \"&Nfr;\"],\n-                            [0, \"&Ofr;\"],\n-                            [0, \"&Pfr;\"],\n-                            [0, \"&Qfr;\"],\n-                            [1, \"&Sfr;\"],\n-                            [0, \"&Tfr;\"],\n-                            [0, \"&Ufr;\"],\n-                            [0, \"&Vfr;\"],\n-                            [0, \"&Wfr;\"],\n-                            [0, \"&Xfr;\"],\n-                            [0, \"&Yfr;\"],\n-                            [1, \"&afr;\"],\n-                            [0, \"&bfr;\"],\n-                            [0, \"&cfr;\"],\n-                            [0, \"&dfr;\"],\n-                            [0, \"&efr;\"],\n-                            [0, \"&ffr;\"],\n-                            [0, \"&gfr;\"],\n-                            [0, \"&hfr;\"],\n-                            [0, \"&ifr;\"],\n-                            [0, \"&jfr;\"],\n-                            [0, \"&kfr;\"],\n-                            [0, \"&lfr;\"],\n-                            [0, \"&mfr;\"],\n-                            [0, \"&nfr;\"],\n-                            [0, \"&ofr;\"],\n-                            [0, \"&pfr;\"],\n-                            [0, \"&qfr;\"],\n-                            [0, \"&rfr;\"],\n-                            [0, \"&sfr;\"],\n-                            [0, \"&tfr;\"],\n-                            [0, \"&ufr;\"],\n-                            [0, \"&vfr;\"],\n-                            [0, \"&wfr;\"],\n-                            [0, \"&xfr;\"],\n-                            [0, \"&yfr;\"],\n-                            [0, \"&zfr;\"],\n-                            [0, \"&Aopf;\"],\n-                            [0, \"&Bopf;\"],\n-                            [1, \"&Dopf;\"],\n-                            [0, \"&Eopf;\"],\n-                            [0, \"&Fopf;\"],\n-                            [0, \"&Gopf;\"],\n-                            [1, \"&Iopf;\"],\n-                            [0, \"&Jopf;\"],\n-                            [0, \"&Kopf;\"],\n-                            [0, \"&Lopf;\"],\n-                            [0, \"&Mopf;\"],\n-                            [1, \"&Oopf;\"],\n-                            [3, \"&Sopf;\"],\n-                            [0, \"&Topf;\"],\n-                            [0, \"&Uopf;\"],\n-                            [0, \"&Vopf;\"],\n-                            [0, \"&Wopf;\"],\n-                            [0, \"&Xopf;\"],\n-                            [0, \"&Yopf;\"],\n-                            [1, \"&aopf;\"],\n-                            [0, \"&bopf;\"],\n-                            [0, \"&copf;\"],\n-                            [0, \"&dopf;\"],\n-                            [0, \"&eopf;\"],\n-                            [0, \"&fopf;\"],\n-                            [0, \"&gopf;\"],\n-                            [0, \"&hopf;\"],\n-                            [0, \"&iopf;\"],\n-                            [0, \"&jopf;\"],\n-                            [0, \"&kopf;\"],\n-                            [0, \"&lopf;\"],\n-                            [0, \"&mopf;\"],\n-                            [0, \"&nopf;\"],\n-                            [0, \"&oopf;\"],\n-                            [0, \"&popf;\"],\n-                            [0, \"&qopf;\"],\n-                            [0, \"&ropf;\"],\n-                            [0, \"&sopf;\"],\n-                            [0, \"&topf;\"],\n-                            [0, \"&uopf;\"],\n-                            [0, \"&vopf;\"],\n-                            [0, \"&wopf;\"],\n-                            [0, \"&xopf;\"],\n-                            [0, \"&yopf;\"],\n-                            [0, \"&zopf;\"]\n-                        ]))\n-                    }],\n-                    [8906, \"&fflig;\"],\n-                    [0, \"&filig;\"],\n-                    [0, \"&fllig;\"],\n-                    [0, \"&ffilig;\"],\n-                    [0, \"&ffllig;\"]\n-                ]));\n+\n+                    function getJumpDialog(cm) {\n+                        return cm.phrase(\"Jump to line:\") + ' <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">' + cm.phrase(\"(Use line:column or scroll% syntax)\") + '</span>';\n+                    }\n+\n+                    function interpretLine(cm, string) {\n+                        var num = Number(string);\n+                        if (/^[-+]/.test(string)) return cm.getCursor().line + num;\n+                        else return num - 1;\n+                    }\n+                    CodeMirror.commands.jumpToLine = function(cm) {\n+                        var cur = cm.getCursor();\n+                        dialog(cm, getJumpDialog(cm), cm.phrase(\"Jump to line:\"), cur.line + 1 + \":\" + cur.ch, function(posStr) {\n+                            if (!posStr) return;\n+                            var match;\n+                            if (match = /^\\s*([\\+\\-]?\\d+)\\s*\\:\\s*(\\d+)\\s*$/.exec(posStr)) {\n+                                cm.setCursor(interpretLine(cm, match[1]), Number(match[2]));\n+                            } else if (match = /^\\s*([\\+\\-]?\\d+(\\.\\d+)?)\\%\\s*/.exec(posStr)) {\n+                                var line = Math.round(cm.lineCount() * Number(match[1]) / 100);\n+                                if (/^[-+]/.test(match[1])) line = cur.line + line + 1;\n+                                cm.setCursor(line - 1, cur.ch);\n+                            } else if (match = /^\\s*\\:?\\s*([\\+\\-]?\\d+)\\s*/.exec(posStr)) {\n+                                cm.setCursor(interpretLine(cm, match[1]), cur.ch);\n+                            }\n+                        });\n+                    };\n+                    CodeMirror.keyMap[\"default\"][\"Alt-G\"] = \"jumpToLine\";\n+                });\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/entities/lib/index.js\":\n-            /*!***************************************************!*\\\n-              !*** ../../../node_modules/entities/lib/index.js ***!\n-              \\***************************************************/\n+        \"../../../node_modules/codemirror/addon/search/search.js\":\n+            /*!***************************************************************!*\\\n+              !*** ../../../node_modules/codemirror/addon/search/search.js ***!\n+              \\***************************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLAttribute = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.DecodingMode = exports.EntityDecoder = exports.encodeHTML5 = exports.encodeHTML4 = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = exports.EncodingMode = exports.EntityLevel = void 0;\n-                var decode_js_1 = __webpack_require__( /*! ./decode.js */ \"../../../node_modules/entities/lib/decode.js\");\n-                var encode_js_1 = __webpack_require__( /*! ./encode.js */ \"../../../node_modules/entities/lib/encode.js\");\n-                var escape_js_1 = __webpack_require__( /*! ./escape.js */ \"../../../node_modules/entities/lib/escape.js\");\n-                /** The level of entities to support. */\n-                var EntityLevel;\n-                (function(EntityLevel) {\n-                    /** Support only XML entities. */\n-                    EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n-                    /** Support HTML entities, which are a superset of XML entities. */\n-                    EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n-                })(EntityLevel = exports.EntityLevel || (exports.EntityLevel = {}));\n-                var EncodingMode;\n-                (function(EncodingMode) {\n-                    /**\n-                     * The output is UTF-8 encoded. Only characters that need escaping within\n-                     * XML will be escaped.\n-                     */\n-                    EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n-                    /**\n-                     * The output consists only of ASCII characters. Characters that need\n-                     * escaping within HTML, and characters that aren't ASCII characters will\n-                     * be escaped.\n-                     */\n-                    EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n-                    /**\n-                     * Encode all characters that have an equivalent entity, as well as all\n-                     * characters that are not ASCII characters.\n-                     */\n-                    EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n-                    /**\n-                     * Encode all characters that have to be escaped in HTML attributes,\n-                     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n-                     */\n-                    EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n-                    /**\n-                     * Encode all characters that have to be escaped in HTML text,\n-                     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n-                     */\n-                    EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n-                })(EncodingMode = exports.EncodingMode || (exports.EncodingMode = {}));\n-                /**\n-                 * Decodes a string with entities.\n-                 *\n-                 * @param data String to decode.\n-                 * @param options Decoding options.\n-                 */\n-                function decode(data, options) {\n-                    if (options === void 0) {\n-                        options = EntityLevel.XML;\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n+\n+                // Define search commands. Depends on dialog.js or another\n+                // implementation of the openDialog method.\n+\n+                // Replace works a little oddly -- it will do the replace on the next\n+                // Ctrl-G (or whatever is bound to findNext) press. You prevent a\n+                // replace by making sure the match is no longer selected when hitting\n+                // Ctrl-G.\n+\n+                (function(mod) {\n+                    if (true)\n+                        // CommonJS\n+                        mod(__webpack_require__( /*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"), __webpack_require__( /*! ./searchcursor */ \"../../../node_modules/codemirror/addon/search/searchcursor.js\"), __webpack_require__( /*! ../dialog/dialog */ \"../../../node_modules/codemirror/addon/dialog/dialog.js\"));\n+                    else {}\n+                })(function(CodeMirror) {\n+                    \"use strict\";\n+\n+                    // default search panel location\n+                    CodeMirror.defineOption(\"search\", {\n+                        bottom: false\n+                    });\n+\n+                    function searchOverlay(query, caseInsensitive) {\n+                        if (typeof query == \"string\") query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");\n+                        else if (!query.global) query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n+                        return {\n+                            token: function(stream) {\n+                                query.lastIndex = stream.pos;\n+                                var match = query.exec(stream.string);\n+                                if (match && match.index == stream.pos) {\n+                                    stream.pos += match[0].length || 1;\n+                                    return \"searching\";\n+                                } else if (match) {\n+                                    stream.pos = match.index;\n+                                } else {\n+                                    stream.skipToEnd();\n+                                }\n+                            }\n+                        };\n                     }\n-                    var level = typeof options === \"number\" ? options : options.level;\n-                    if (level === EntityLevel.HTML) {\n-                        var mode = typeof options === \"object\" ? options.mode : undefined;\n-                        return (0, decode_js_1.decodeHTML)(data, mode);\n+\n+                    function SearchState() {\n+                        this.posFrom = this.posTo = this.lastQuery = this.query = null;\n+                        this.overlay = null;\n                     }\n-                    return (0, decode_js_1.decodeXML)(data);\n-                }\n-                exports.decode = decode;\n-                /**\n-                 * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n-                 *\n-                 * @param data String to decode.\n-                 * @param options Decoding options.\n-                 * @deprecated Use `decode` with the `mode` set to `Strict`.\n-                 */\n-                function decodeStrict(data, options) {\n-                    var _a;\n-                    if (options === void 0) {\n-                        options = EntityLevel.XML;\n+\n+                    function getSearchState(cm) {\n+                        return cm.state.search || (cm.state.search = new SearchState());\n                     }\n-                    var opts = typeof options === \"number\" ? {\n-                        level: options\n-                    } : options;\n-                    (_a = opts.mode) !== null && _a !== void 0 ? _a : opts.mode = decode_js_1.DecodingMode.Strict;\n-                    return decode(data, opts);\n-                }\n-                exports.decodeStrict = decodeStrict;\n-                /**\n-                 * Encodes a string with entities.\n-                 *\n-                 * @param data String to encode.\n-                 * @param options Encoding options.\n-                 */\n-                function encode(data, options) {\n-                    if (options === void 0) {\n-                        options = EntityLevel.XML;\n+\n+                    function queryCaseInsensitive(query) {\n+                        return typeof query == \"string\" && query == query.toLowerCase();\n                     }\n-                    var opts = typeof options === \"number\" ? {\n-                        level: options\n-                    } : options;\n-                    // Mode `UTF8` just escapes XML entities\n-                    if (opts.mode === EncodingMode.UTF8) return (0, escape_js_1.escapeUTF8)(data);\n-                    if (opts.mode === EncodingMode.Attribute) return (0, escape_js_1.escapeAttribute)(data);\n-                    if (opts.mode === EncodingMode.Text) return (0, escape_js_1.escapeText)(data);\n-                    if (opts.level === EntityLevel.HTML) {\n-                        if (opts.mode === EncodingMode.ASCII) {\n-                            return (0, encode_js_1.encodeNonAsciiHTML)(data);\n-                        }\n-                        return (0, encode_js_1.encodeHTML)(data);\n+\n+                    function getSearchCursor(cm, query, pos) {\n+                        // Heuristic: if the query string is all lowercase, do a case insensitive search.\n+                        return cm.getSearchCursor(query, pos, {\n+                            caseFold: queryCaseInsensitive(query),\n+                            multiline: true\n+                        });\n                     }\n-                    // ASCII and Extensive are equivalent\n-                    return (0, escape_js_1.encodeXML)(data);\n-                }\n-                exports.encode = encode;\n-                var escape_js_2 = __webpack_require__( /*! ./escape.js */ \"../../../node_modules/entities/lib/escape.js\");\n-                Object.defineProperty(exports, \"encodeXML\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return escape_js_2.encodeXML;\n+\n+                    function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {\n+                        cm.openDialog(text, onEnter, {\n+                            value: deflt,\n+                            selectValueOnOpen: true,\n+                            closeOnEnter: false,\n+                            onClose: function() {\n+                                clearSearch(cm);\n+                            },\n+                            onKeyDown: onKeyDown,\n+                            bottom: cm.options.search.bottom\n+                        });\n                     }\n-                }));\n-                Object.defineProperty(exports, \"escape\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return escape_js_2.escape;\n+\n+                    function dialog(cm, text, shortText, deflt, f) {\n+                        if (cm.openDialog) cm.openDialog(text, f, {\n+                            value: deflt,\n+                            selectValueOnOpen: true,\n+                            bottom: cm.options.search.bottom\n+                        });\n+                        else f(prompt(shortText, deflt));\n                     }\n-                }));\n-                Object.defineProperty(exports, \"escapeUTF8\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return escape_js_2.escapeUTF8;\n+\n+                    function confirmDialog(cm, text, shortText, fs) {\n+                        if (cm.openConfirm) cm.openConfirm(text, fs);\n+                        else if (confirm(shortText)) fs[0]();\n                     }\n-                }));\n-                Object.defineProperty(exports, \"escapeAttribute\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return escape_js_2.escapeAttribute;\n+\n+                    function parseString(string) {\n+                        return string.replace(/\\\\([nrt\\\\])/g, function(match, ch) {\n+                            if (ch == \"n\") return \"\\n\";\n+                            if (ch == \"r\") return \"\\r\";\n+                            if (ch == \"t\") return \"\\t\";\n+                            if (ch == \"\\\\\") return \"\\\\\";\n+                            return match;\n+                        });\n                     }\n-                }));\n-                Object.defineProperty(exports, \"escapeText\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return escape_js_2.escapeText;\n+\n+                    function parseQuery(query) {\n+                        var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n+                        if (isRE) {\n+                            try {\n+                                query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\");\n+                            } catch (e) {} // Not a regular expression after all, do a string search\n+                        } else {\n+                            query = parseString(query);\n+                        }\n+                        if (typeof query == \"string\" ? query == \"\" : query.test(\"\")) query = /x^/;\n+                        return query;\n                     }\n-                }));\n-                var encode_js_2 = __webpack_require__( /*! ./encode.js */ \"../../../node_modules/entities/lib/encode.js\");\n-                Object.defineProperty(exports, \"encodeHTML\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return encode_js_2.encodeHTML;\n+\n+                    function startSearch(cm, state, query) {\n+                        state.queryText = query;\n+                        state.query = parseQuery(query);\n+                        cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n+                        state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n+                        cm.addOverlay(state.overlay);\n+                        if (cm.showMatchesOnScrollbar) {\n+                            if (state.annotate) {\n+                                state.annotate.clear();\n+                                state.annotate = null;\n+                            }\n+                            state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n+                        }\n                     }\n-                }));\n-                Object.defineProperty(exports, \"encodeNonAsciiHTML\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return encode_js_2.encodeNonAsciiHTML;\n+\n+                    function doSearch(cm, rev, persistent, immediate) {\n+                        var state = getSearchState(cm);\n+                        if (state.query) return findNext(cm, rev);\n+                        var q = cm.getSelection() || state.lastQuery;\n+                        if (q instanceof RegExp && q.source == \"x^\") q = null;\n+                        if (persistent && cm.openDialog) {\n+                            var hiding = null;\n+                            var searchNext = function(query, event) {\n+                                CodeMirror.e_stop(event);\n+                                if (!query) return;\n+                                if (query != state.queryText) {\n+                                    startSearch(cm, state, query);\n+                                    state.posFrom = state.posTo = cm.getCursor();\n+                                }\n+                                if (hiding) hiding.style.opacity = 1;\n+                                findNext(cm, event.shiftKey, function(_, to) {\n+                                    var dialog;\n+                                    if (to.line < 3 && document.querySelector && (dialog = cm.display.wrapper.querySelector(\".CodeMirror-dialog\")) && dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, \"window\").top)(hiding = dialog).style.opacity = .4;\n+                                });\n+                            };\n+                            persistentDialog(cm, getQueryDialog(cm), q, searchNext, function(event, query) {\n+                                var keyName = CodeMirror.keyName(event);\n+                                var extra = cm.getOption('extraKeys'),\n+                                    cmd = extra && extra[keyName] || CodeMirror.keyMap[cm.getOption(\"keyMap\")][keyName];\n+                                if (cmd == \"findNext\" || cmd == \"findPrev\" || cmd == \"findPersistentNext\" || cmd == \"findPersistentPrev\") {\n+                                    CodeMirror.e_stop(event);\n+                                    startSearch(cm, getSearchState(cm), query);\n+                                    cm.execCommand(cmd);\n+                                } else if (cmd == \"find\" || cmd == \"findPersistent\") {\n+                                    CodeMirror.e_stop(event);\n+                                    searchNext(query, event);\n+                                }\n+                            });\n+                            if (immediate && q) {\n+                                startSearch(cm, state, q);\n+                                findNext(cm, rev);\n+                            }\n+                        } else {\n+                            dialog(cm, getQueryDialog(cm), \"Search for:\", q, function(query) {\n+                                if (query && !state.query) cm.operation(function() {\n+                                    startSearch(cm, state, query);\n+                                    state.posFrom = state.posTo = cm.getCursor();\n+                                    findNext(cm, rev);\n+                                });\n+                            });\n+                        }\n                     }\n-                }));\n-                // Legacy aliases (deprecated)\n-                Object.defineProperty(exports, \"encodeHTML4\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return encode_js_2.encodeHTML;\n+\n+                    function findNext(cm, rev, callback) {\n+                        cm.operation(function() {\n+                            var state = getSearchState(cm);\n+                            var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n+                            if (!cursor.find(rev)) {\n+                                cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n+                                if (!cursor.find(rev)) return;\n+                            }\n+                            cm.setSelection(cursor.from(), cursor.to());\n+                            cm.scrollIntoView({\n+                                from: cursor.from(),\n+                                to: cursor.to()\n+                            }, 20);\n+                            state.posFrom = cursor.from();\n+                            state.posTo = cursor.to();\n+                            if (callback) callback(cursor.from(), cursor.to());\n+                        });\n                     }\n-                }));\n-                Object.defineProperty(exports, \"encodeHTML5\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return encode_js_2.encodeHTML;\n+\n+                    function clearSearch(cm) {\n+                        cm.operation(function() {\n+                            var state = getSearchState(cm);\n+                            state.lastQuery = state.query;\n+                            if (!state.query) return;\n+                            state.query = state.queryText = null;\n+                            cm.removeOverlay(state.overlay);\n+                            if (state.annotate) {\n+                                state.annotate.clear();\n+                                state.annotate = null;\n+                            }\n+                        });\n                     }\n-                }));\n-                var decode_js_2 = __webpack_require__( /*! ./decode.js */ \"../../../node_modules/entities/lib/decode.js\");\n-                Object.defineProperty(exports, \"EntityDecoder\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return decode_js_2.EntityDecoder;\n+\n+                    function el(tag, attrs) {\n+                        var element = tag ? document.createElement(tag) : document.createDocumentFragment();\n+                        for (var key in attrs) {\n+                            element[key] = attrs[key];\n+                        }\n+                        for (var i = 2; i < arguments.length; i++) {\n+                            var child = arguments[i];\n+                            element.appendChild(typeof child == \"string\" ? document.createTextNode(child) : child);\n+                        }\n+                        return element;\n                     }\n-                }));\n-                Object.defineProperty(exports, \"DecodingMode\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return decode_js_2.DecodingMode;\n+\n+                    function getQueryDialog(cm) {\n+                        return el(\"\", null, el(\"span\", {\n+                            className: \"CodeMirror-search-label\"\n+                        }, cm.phrase(\"Search:\")), \" \", el(\"input\", {\n+                            type: \"text\",\n+                            \"style\": \"width: 10em\",\n+                            className: \"CodeMirror-search-field\"\n+                        }), \" \", el(\"span\", {\n+                            style: \"color: #888\",\n+                            className: \"CodeMirror-search-hint\"\n+                        }, cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n+                    }\n+\n+                    function getReplaceQueryDialog(cm) {\n+                        return el(\"\", null, \" \", el(\"input\", {\n+                            type: \"text\",\n+                            \"style\": \"width: 10em\",\n+                            className: \"CodeMirror-search-field\"\n+                        }), \" \", el(\"span\", {\n+                            style: \"color: #888\",\n+                            className: \"CodeMirror-search-hint\"\n+                        }, cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n+                    }\n+\n+                    function getReplacementQueryDialog(cm) {\n+                        return el(\"\", null, el(\"span\", {\n+                            className: \"CodeMirror-search-label\"\n+                        }, cm.phrase(\"With:\")), \" \", el(\"input\", {\n+                            type: \"text\",\n+                            \"style\": \"width: 10em\",\n+                            className: \"CodeMirror-search-field\"\n+                        }));\n                     }\n-                }));\n-                Object.defineProperty(exports, \"decodeXML\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return decode_js_2.decodeXML;\n+\n+                    function getDoReplaceConfirm(cm) {\n+                        return el(\"\", null, el(\"span\", {\n+                            className: \"CodeMirror-search-label\"\n+                        }, cm.phrase(\"Replace?\")), \" \", el(\"button\", {}, cm.phrase(\"Yes\")), \" \", el(\"button\", {}, cm.phrase(\"No\")), \" \", el(\"button\", {}, cm.phrase(\"All\")), \" \", el(\"button\", {}, cm.phrase(\"Stop\")));\n                     }\n-                }));\n-                Object.defineProperty(exports, \"decodeHTML\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return decode_js_2.decodeHTML;\n+\n+                    function replaceAll(cm, query, text) {\n+                        cm.operation(function() {\n+                            for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n+                                if (typeof query != \"string\") {\n+                                    var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n+                                    cursor.replace(text.replace(/\\$(\\d)/g, function(_, i) {\n+                                        return match[i];\n+                                    }));\n+                                } else cursor.replace(text);\n+                            }\n+                        });\n                     }\n-                }));\n-                Object.defineProperty(exports, \"decodeHTMLStrict\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return decode_js_2.decodeHTMLStrict;\n+\n+                    function replace(cm, all) {\n+                        if (cm.getOption(\"readOnly\")) return;\n+                        var query = cm.getSelection() || getSearchState(cm).lastQuery;\n+                        var dialogText = all ? cm.phrase(\"Replace all:\") : cm.phrase(\"Replace:\");\n+                        var fragment = el(\"\", null, el(\"span\", {\n+                            className: \"CodeMirror-search-label\"\n+                        }, dialogText), getReplaceQueryDialog(cm));\n+                        dialog(cm, fragment, dialogText, query, function(query) {\n+                            if (!query) return;\n+                            query = parseQuery(query);\n+                            dialog(cm, getReplacementQueryDialog(cm), cm.phrase(\"Replace with:\"), \"\", function(text) {\n+                                text = parseString(text);\n+                                if (all) {\n+                                    replaceAll(cm, query, text);\n+                                } else {\n+                                    clearSearch(cm);\n+                                    var cursor = getSearchCursor(cm, query, cm.getCursor(\"from\"));\n+                                    var advance = function() {\n+                                        var start = cursor.from(),\n+                                            match;\n+                                        if (!(match = cursor.findNext())) {\n+                                            cursor = getSearchCursor(cm, query);\n+                                            if (!(match = cursor.findNext()) || start && cursor.from().line == start.line && cursor.from().ch == start.ch) return;\n+                                        }\n+                                        cm.setSelection(cursor.from(), cursor.to());\n+                                        cm.scrollIntoView({\n+                                            from: cursor.from(),\n+                                            to: cursor.to()\n+                                        });\n+                                        confirmDialog(cm, getDoReplaceConfirm(cm), cm.phrase(\"Replace?\"), [function() {\n+                                            doReplace(match);\n+                                        }, advance, function() {\n+                                            replaceAll(cm, query, text);\n+                                        }]);\n+                                    };\n+                                    var doReplace = function(match) {\n+                                        cursor.replace(typeof query == \"string\" ? text : text.replace(/\\$(\\d)/g, function(_, i) {\n+                                            return match[i];\n+                                        }));\n+                                        advance();\n+                                    };\n+                                    advance();\n+                                }\n+                            });\n+                        });\n                     }\n-                }));\n-                Object.defineProperty(exports, \"decodeHTMLAttribute\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return decode_js_2.decodeHTMLAttribute;\n+                    CodeMirror.commands.find = function(cm) {\n+                        clearSearch(cm);\n+                        doSearch(cm);\n+                    };\n+                    CodeMirror.commands.findPersistent = function(cm) {\n+                        clearSearch(cm);\n+                        doSearch(cm, false, true);\n+                    };\n+                    CodeMirror.commands.findPersistentNext = function(cm) {\n+                        doSearch(cm, false, true, true);\n+                    };\n+                    CodeMirror.commands.findPersistentPrev = function(cm) {\n+                        doSearch(cm, true, true, true);\n+                    };\n+                    CodeMirror.commands.findNext = doSearch;\n+                    CodeMirror.commands.findPrev = function(cm) {\n+                        doSearch(cm, true);\n+                    };\n+                    CodeMirror.commands.clearSearch = clearSearch;\n+                    CodeMirror.commands.replace = replace;\n+                    CodeMirror.commands.replaceAll = function(cm) {\n+                        replace(cm, true);\n+                    };\n+                });\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/codemirror/addon/search/searchcursor.js\":\n+            /*!*********************************************************************!*\\\n+              !*** ../../../node_modules/codemirror/addon/search/searchcursor.js ***!\n+              \\*********************************************************************/\n+            /***/\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n+\n+                (function(mod) {\n+                    if (true)\n+                        // CommonJS\n+                        mod(__webpack_require__( /*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                    else {}\n+                })(function(CodeMirror) {\n+                    \"use strict\";\n+\n+                    var Pos = CodeMirror.Pos;\n+\n+                    function regexpFlags(regexp) {\n+                        var flags = regexp.flags;\n+                        return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\") + (regexp.global ? \"g\" : \"\") + (regexp.multiline ? \"m\" : \"\");\n+                    }\n+\n+                    function ensureFlags(regexp, flags) {\n+                        var current = regexpFlags(regexp),\n+                            target = current;\n+                        for (var i = 0; i < flags.length; i++)\n+                            if (target.indexOf(flags.charAt(i)) == -1) target += flags.charAt(i);\n+                        return current == target ? regexp : new RegExp(regexp.source, target);\n+                    }\n+\n+                    function maybeMultiline(regexp) {\n+                        return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source);\n+                    }\n+\n+                    function searchRegexpForward(doc, regexp, start) {\n+                        regexp = ensureFlags(regexp, \"g\");\n+                        for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n+                            regexp.lastIndex = ch;\n+                            var string = doc.getLine(line),\n+                                match = regexp.exec(string);\n+                            if (match) return {\n+                                from: Pos(line, match.index),\n+                                to: Pos(line, match.index + match[0].length),\n+                                match: match\n+                            };\n+                        }\n+                    }\n+\n+                    function searchRegexpForwardMultiline(doc, regexp, start) {\n+                        if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start);\n+                        regexp = ensureFlags(regexp, \"gm\");\n+                        var string,\n+                            chunk = 1;\n+                        for (var line = start.line, last = doc.lastLine(); line <= last;) {\n+                            // This grows the search buffer in exponentially-sized chunks\n+                            // between matches, so that nearby matches are fast and don't\n+                            // require concatenating the whole document (in case we're\n+                            // searching for something that has tons of matches), but at the\n+                            // same time, the amount of retries is limited.\n+                            for (var i = 0; i < chunk; i++) {\n+                                if (line > last) break;\n+                                var curLine = doc.getLine(line++);\n+                                string = string == null ? curLine : string + \"\\n\" + curLine;\n+                            }\n+                            chunk = chunk * 2;\n+                            regexp.lastIndex = start.ch;\n+                            var match = regexp.exec(string);\n+                            if (match) {\n+                                var before = string.slice(0, match.index).split(\"\\n\"),\n+                                    inside = match[0].split(\"\\n\");\n+                                var startLine = start.line + before.length - 1,\n+                                    startCh = before[before.length - 1].length;\n+                                return {\n+                                    from: Pos(startLine, startCh),\n+                                    to: Pos(startLine + inside.length - 1, inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n+                                    match: match\n+                                };\n+                            }\n+                        }\n                     }\n-                }));\n-                // Legacy aliases (deprecated)\n-                Object.defineProperty(exports, \"decodeHTML4\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return decode_js_2.decodeHTML;\n+\n+                    function lastMatchIn(string, regexp, endMargin) {\n+                        var match,\n+                            from = 0;\n+                        while (from <= string.length) {\n+                            regexp.lastIndex = from;\n+                            var newMatch = regexp.exec(string);\n+                            if (!newMatch) break;\n+                            var end = newMatch.index + newMatch[0].length;\n+                            if (end > string.length - endMargin) break;\n+                            if (!match || end > match.index + match[0].length) match = newMatch;\n+                            from = newMatch.index + 1;\n+                        }\n+                        return match;\n                     }\n-                }));\n-                Object.defineProperty(exports, \"decodeHTML5\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return decode_js_2.decodeHTML;\n+\n+                    function searchRegexpBackward(doc, regexp, start) {\n+                        regexp = ensureFlags(regexp, \"g\");\n+                        for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n+                            var string = doc.getLine(line);\n+                            var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch);\n+                            if (match) return {\n+                                from: Pos(line, match.index),\n+                                to: Pos(line, match.index + match[0].length),\n+                                match: match\n+                            };\n+                        }\n                     }\n-                }));\n-                Object.defineProperty(exports, \"decodeHTML4Strict\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return decode_js_2.decodeHTMLStrict;\n+\n+                    function searchRegexpBackwardMultiline(doc, regexp, start) {\n+                        if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start);\n+                        regexp = ensureFlags(regexp, \"gm\");\n+                        var string,\n+                            chunkSize = 1,\n+                            endMargin = doc.getLine(start.line).length - start.ch;\n+                        for (var line = start.line, first = doc.firstLine(); line >= first;) {\n+                            for (var i = 0; i < chunkSize && line >= first; i++) {\n+                                var curLine = doc.getLine(line--);\n+                                string = string == null ? curLine : curLine + \"\\n\" + string;\n+                            }\n+                            chunkSize *= 2;\n+                            var match = lastMatchIn(string, regexp, endMargin);\n+                            if (match) {\n+                                var before = string.slice(0, match.index).split(\"\\n\"),\n+                                    inside = match[0].split(\"\\n\");\n+                                var startLine = line + before.length,\n+                                    startCh = before[before.length - 1].length;\n+                                return {\n+                                    from: Pos(startLine, startCh),\n+                                    to: Pos(startLine + inside.length - 1, inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n+                                    match: match\n+                                };\n+                            }\n+                        }\n                     }\n-                }));\n-                Object.defineProperty(exports, \"decodeHTML5Strict\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return decode_js_2.decodeHTMLStrict;\n+                    var doFold, noFold;\n+                    if (String.prototype.normalize) {\n+                        doFold = function(str) {\n+                            return str.normalize(\"NFD\").toLowerCase();\n+                        };\n+                        noFold = function(str) {\n+                            return str.normalize(\"NFD\");\n+                        };\n+                    } else {\n+                        doFold = function(str) {\n+                            return str.toLowerCase();\n+                        };\n+                        noFold = function(str) {\n+                            return str;\n+                        };\n                     }\n-                }));\n-                Object.defineProperty(exports, \"decodeXMLStrict\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return decode_js_2.decodeXML;\n+\n+                    // Maps a position in a case-folded line back to a position in the original line\n+                    // (compensating for codepoints increasing in number during folding)\n+                    function adjustPos(orig, folded, pos, foldFunc) {\n+                        if (orig.length == folded.length) return pos;\n+                        for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n+                            if (min == max) return min;\n+                            var mid = min + max >> 1;\n+                            var len = foldFunc(orig.slice(0, mid)).length;\n+                            if (len == pos) return mid;\n+                            else if (len > pos) max = mid;\n+                            else min = mid + 1;\n+                        }\n                     }\n-                }));\n+\n+                    function searchStringForward(doc, query, start, caseFold) {\n+                        // Empty string would match anything and never progress, so we\n+                        // define it to match nothing instead.\n+                        if (!query.length) return null;\n+                        var fold = caseFold ? doFold : noFold;\n+                        var lines = fold(query).split(/\\r|\\n\\r?/);\n+                        search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n+                            var orig = doc.getLine(line).slice(ch),\n+                                string = fold(orig);\n+                            if (lines.length == 1) {\n+                                var found = string.indexOf(lines[0]);\n+                                if (found == -1) continue search;\n+                                var start = adjustPos(orig, string, found, fold) + ch;\n+                                return {\n+                                    from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n+                                    to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)\n+                                };\n+                            } else {\n+                                var cutFrom = string.length - lines[0].length;\n+                                if (string.slice(cutFrom) != lines[0]) continue search;\n+                                for (var i = 1; i < lines.length - 1; i++)\n+                                    if (fold(doc.getLine(line + i)) != lines[i]) continue search;\n+                                var end = doc.getLine(line + lines.length - 1),\n+                                    endString = fold(end),\n+                                    lastLine = lines[lines.length - 1];\n+                                if (endString.slice(0, lastLine.length) != lastLine) continue search;\n+                                return {\n+                                    from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n+                                    to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))\n+                                };\n+                            }\n+                        }\n+                    }\n+\n+                    function searchStringBackward(doc, query, start, caseFold) {\n+                        if (!query.length) return null;\n+                        var fold = caseFold ? doFold : noFold;\n+                        var lines = fold(query).split(/\\r|\\n\\r?/);\n+                        search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n+                            var orig = doc.getLine(line);\n+                            if (ch > -1) orig = orig.slice(0, ch);\n+                            var string = fold(orig);\n+                            if (lines.length == 1) {\n+                                var found = string.lastIndexOf(lines[0]);\n+                                if (found == -1) continue search;\n+                                return {\n+                                    from: Pos(line, adjustPos(orig, string, found, fold)),\n+                                    to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))\n+                                };\n+                            } else {\n+                                var lastLine = lines[lines.length - 1];\n+                                if (string.slice(0, lastLine.length) != lastLine) continue search;\n+                                for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n+                                    if (fold(doc.getLine(start + i)) != lines[i]) continue search;\n+                                var top = doc.getLine(line + 1 - lines.length),\n+                                    topString = fold(top);\n+                                if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search;\n+                                return {\n+                                    from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n+                                    to: Pos(line, adjustPos(orig, string, lastLine.length, fold))\n+                                };\n+                            }\n+                        }\n+                    }\n+\n+                    function SearchCursor(doc, query, pos, options) {\n+                        this.atOccurrence = false;\n+                        this.afterEmptyMatch = false;\n+                        this.doc = doc;\n+                        pos = pos ? doc.clipPos(pos) : Pos(0, 0);\n+                        this.pos = {\n+                            from: pos,\n+                            to: pos\n+                        };\n+                        var caseFold;\n+                        if (typeof options == \"object\") {\n+                            caseFold = options.caseFold;\n+                        } else {\n+                            // Backwards compat for when caseFold was the 4th argument\n+                            caseFold = options;\n+                            options = null;\n+                        }\n+                        if (typeof query == \"string\") {\n+                            if (caseFold == null) caseFold = false;\n+                            this.matches = function(reverse, pos) {\n+                                return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold);\n+                            };\n+                        } else {\n+                            query = ensureFlags(query, \"gm\");\n+                            if (!options || options.multiline !== false) this.matches = function(reverse, pos) {\n+                                return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos);\n+                            };\n+                            else this.matches = function(reverse, pos) {\n+                                return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos);\n+                            };\n+                        }\n+                    }\n+                    SearchCursor.prototype = {\n+                        findNext: function() {\n+                            return this.find(false);\n+                        },\n+                        findPrevious: function() {\n+                            return this.find(true);\n+                        },\n+                        find: function(reverse) {\n+                            var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n+                            if (this.afterEmptyMatch && this.atOccurrence) {\n+                                // do not return the same 0 width match twice\n+                                head = Pos(head.line, head.ch);\n+                                if (reverse) {\n+                                    head.ch--;\n+                                    if (head.ch < 0) {\n+                                        head.line--;\n+                                        head.ch = (this.doc.getLine(head.line) || \"\").length;\n+                                    }\n+                                } else {\n+                                    head.ch++;\n+                                    if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n+                                        head.ch = 0;\n+                                        head.line++;\n+                                    }\n+                                }\n+                                if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n+                                    return this.atOccurrence = false;\n+                                }\n+                            }\n+                            var result = this.matches(reverse, head);\n+                            this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0;\n+                            if (result) {\n+                                this.pos = result;\n+                                this.atOccurrence = true;\n+                                return this.pos.match || true;\n+                            } else {\n+                                var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0);\n+                                this.pos = {\n+                                    from: end,\n+                                    to: end\n+                                };\n+                                return this.atOccurrence = false;\n+                            }\n+                        },\n+                        from: function() {\n+                            if (this.atOccurrence) return this.pos.from;\n+                        },\n+                        to: function() {\n+                            if (this.atOccurrence) return this.pos.to;\n+                        },\n+                        replace: function(newText, origin) {\n+                            if (!this.atOccurrence) return;\n+                            var lines = CodeMirror.splitLines(newText);\n+                            this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin);\n+                            this.pos.to = Pos(this.pos.from.line + lines.length - 1, lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0));\n+                        }\n+                    };\n+                    CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n+                        return new SearchCursor(this.doc, query, pos, caseFold);\n+                    });\n+                    CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n+                        return new SearchCursor(this, query, pos, caseFold);\n+                    });\n+                    CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n+                        var ranges = [];\n+                        var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold);\n+                        while (cur.findNext()) {\n+                            if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break;\n+                            ranges.push({\n+                                anchor: cur.from(),\n+                                head: cur.to()\n+                            });\n+                        }\n+                        if (ranges.length) this.setSelections(ranges, 0);\n+                    });\n+                });\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/framer-motion/dist/cjs/index.js\":\n-            /*!*************************************************************!*\\\n-              !*** ../../../node_modules/framer-motion/dist/cjs/index.js ***!\n-              \\*************************************************************/\n+        \"../../../node_modules/codemirror/keymap/sublime.js\":\n+            /*!**********************************************************!*\\\n+              !*** ../../../node_modules/codemirror/keymap/sublime.js ***!\n+              \\**********************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                var tslib = __webpack_require__( /*! tslib */ \"../../../node_modules/tslib/tslib.es6.mjs\");\n-                var React = __webpack_require__( /*! react */ \"react\");\n-                var heyListen = __webpack_require__( /*! hey-listen */ \"../../../node_modules/hey-listen/dist/hey-listen.es.js\");\n-                var styleValueTypes = __webpack_require__( /*! style-value-types */ \"../../../node_modules/style-value-types/dist/valueTypes.cjs.js\");\n-                var popmotion = __webpack_require__( /*! popmotion */ \"../../../node_modules/popmotion/dist/popmotion.cjs.js\");\n-                var sync = __webpack_require__( /*! framesync */ \"../../../node_modules/framesync/dist/framesync.cjs.js\");\n-                var dom = __webpack_require__( /*! @motionone/dom */ \"../../../node_modules/@motionone/dom/dist/index.es.js\");\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n \n-                function _interopDefaultLegacy(e) {\n-                    return e && typeof e === 'object' && 'default' in e ? e : {\n-                        'default': e\n-                    };\n-                }\n+                // A rough approximation of Sublime Text's keybindings\n+                // Depends on addon/search/searchcursor.js and optionally addon/dialog/dialogs.js\n \n-                function _interopNamespace(e) {\n-                    if (e && e.__esModule) return e;\n-                    var n = Object.create(null);\n-                    if (e) {\n-                        Object.keys(e).forEach(function(k) {\n-                            if (k !== 'default') {\n-                                var d = Object.getOwnPropertyDescriptor(e, k);\n-                                Object.defineProperty(n, k, d.get ? d : {\n-                                    enumerable: true,\n-                                    get: function() {\n-                                        return e[k];\n+                (function(mod) {\n+                    if (true)\n+                        // CommonJS\n+                        mod(__webpack_require__( /*! ../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"), __webpack_require__( /*! ../addon/search/searchcursor */ \"../../../node_modules/codemirror/addon/search/searchcursor.js\"), __webpack_require__( /*! ../addon/edit/matchbrackets */ \"../../../node_modules/codemirror/addon/edit/matchbrackets.js\"));\n+                    else {}\n+                })(function(CodeMirror) {\n+                    \"use strict\";\n+\n+                    var cmds = CodeMirror.commands;\n+                    var Pos = CodeMirror.Pos;\n+\n+                    // This is not exactly Sublime's algorithm. I couldn't make heads or tails of that.\n+                    function findPosSubword(doc, start, dir) {\n+                        if (dir < 0 && start.ch == 0) return doc.clipPos(Pos(start.line - 1));\n+                        var line = doc.getLine(start.line);\n+                        if (dir > 0 && start.ch >= line.length) return doc.clipPos(Pos(start.line + 1, 0));\n+                        var state = \"start\",\n+                            type,\n+                            startPos = start.ch;\n+                        for (var pos = startPos, e = dir < 0 ? 0 : line.length, i = 0; pos != e; pos += dir, i++) {\n+                            var next = line.charAt(dir < 0 ? pos - 1 : pos);\n+                            var cat = next != \"_\" && CodeMirror.isWordChar(next) ? \"w\" : \"o\";\n+                            if (cat == \"w\" && next.toUpperCase() == next) cat = \"W\";\n+                            if (state == \"start\") {\n+                                if (cat != \"o\") {\n+                                    state = \"in\";\n+                                    type = cat;\n+                                } else startPos = pos + dir;\n+                            } else if (state == \"in\") {\n+                                if (type != cat) {\n+                                    if (type == \"w\" && cat == \"W\" && dir < 0) pos--;\n+                                    if (type == \"W\" && cat == \"w\" && dir > 0) {\n+                                        // From uppercase to lowercase\n+                                        if (pos == startPos + 1) {\n+                                            type = \"w\";\n+                                            continue;\n+                                        } else pos--;\n                                     }\n-                                });\n+                                    break;\n+                                }\n                             }\n-                        });\n+                        }\n+                        return Pos(start.line, pos);\n                     }\n-                    n[\"default\"] = e;\n-                    return Object.freeze(n);\n-                }\n-                var React__namespace = /*#__PURE__*/ _interopNamespace(React);\n-                var React__default = /*#__PURE__*/ _interopDefaultLegacy(React);\n-                var sync__default = /*#__PURE__*/ _interopDefaultLegacy(sync);\n \n-                /**\n-                 * Browser-safe usage of process\n-                 */\n-                var defaultEnvironment = \"production\";\n-                var env = typeof process === \"undefined\" || process.env === undefined ? defaultEnvironment : \"development\" || 0;\n-                var createDefinition = function(propNames) {\n-                    return {\n-                        isEnabled: function(props) {\n-                            return propNames.some(function(name) {\n-                                return !!props[name];\n+                    function moveSubword(cm, dir) {\n+                        cm.extendSelectionsBy(function(range) {\n+                            if (cm.display.shift || cm.doc.extend || range.empty()) return findPosSubword(cm.doc, range.head, dir);\n+                            else return dir < 0 ? range.from() : range.to();\n+                        });\n+                    }\n+                    cmds.goSubwordLeft = function(cm) {\n+                        moveSubword(cm, -1);\n+                    };\n+                    cmds.goSubwordRight = function(cm) {\n+                        moveSubword(cm, 1);\n+                    };\n+                    cmds.scrollLineUp = function(cm) {\n+                        var info = cm.getScrollInfo();\n+                        if (!cm.somethingSelected()) {\n+                            var visibleBottomLine = cm.lineAtHeight(info.top + info.clientHeight, \"local\");\n+                            if (cm.getCursor().line >= visibleBottomLine) cm.execCommand(\"goLineUp\");\n+                        }\n+                        cm.scrollTo(null, info.top - cm.defaultTextHeight());\n+                    };\n+                    cmds.scrollLineDown = function(cm) {\n+                        var info = cm.getScrollInfo();\n+                        if (!cm.somethingSelected()) {\n+                            var visibleTopLine = cm.lineAtHeight(info.top, \"local\") + 1;\n+                            if (cm.getCursor().line <= visibleTopLine) cm.execCommand(\"goLineDown\");\n+                        }\n+                        cm.scrollTo(null, info.top + cm.defaultTextHeight());\n+                    };\n+                    cmds.splitSelectionByLine = function(cm) {\n+                        var ranges = cm.listSelections(),\n+                            lineRanges = [];\n+                        for (var i = 0; i < ranges.length; i++) {\n+                            var from = ranges[i].from(),\n+                                to = ranges[i].to();\n+                            for (var line = from.line; line <= to.line; ++line)\n+                                if (!(to.line > from.line && line == to.line && to.ch == 0)) lineRanges.push({\n+                                    anchor: line == from.line ? from : Pos(line, 0),\n+                                    head: line == to.line ? to : Pos(line)\n+                                });\n+                        }\n+                        cm.setSelections(lineRanges, 0);\n+                    };\n+                    cmds.singleSelectionTop = function(cm) {\n+                        var range = cm.listSelections()[0];\n+                        cm.setSelection(range.anchor, range.head, {\n+                            scroll: false\n+                        });\n+                    };\n+                    cmds.selectLine = function(cm) {\n+                        var ranges = cm.listSelections(),\n+                            extended = [];\n+                        for (var i = 0; i < ranges.length; i++) {\n+                            var range = ranges[i];\n+                            extended.push({\n+                                anchor: Pos(range.from().line, 0),\n+                                head: Pos(range.to().line + 1, 0)\n                             });\n                         }\n+                        cm.setSelections(extended);\n                     };\n-                };\n-                var featureDefinitions = {\n-                    measureLayout: createDefinition([\"layout\", \"layoutId\", \"drag\"]),\n-                    animation: createDefinition([\"animate\", \"exit\", \"variants\", \"whileHover\", \"whileTap\", \"whileFocus\", \"whileDrag\", \"whileInView\"]),\n-                    exit: createDefinition([\"exit\"]),\n-                    drag: createDefinition([\"drag\", \"dragControls\"]),\n-                    focus: createDefinition([\"whileFocus\"]),\n-                    hover: createDefinition([\"whileHover\", \"onHoverStart\", \"onHoverEnd\"]),\n-                    tap: createDefinition([\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"]),\n-                    pan: createDefinition([\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"]),\n-                    inView: createDefinition([\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"])\n-                };\n \n-                function loadFeatures(features) {\n-                    for (var key in features) {\n-                        if (features[key] === null) continue;\n-                        if (key === \"projectionNodeConstructor\") {\n-                            featureDefinitions.projectionNodeConstructor = features[key];\n+                    function insertLine(cm, above) {\n+                        if (cm.isReadOnly()) return CodeMirror.Pass;\n+                        cm.operation(function() {\n+                            var len = cm.listSelections().length,\n+                                newSelection = [],\n+                                last = -1;\n+                            for (var i = 0; i < len; i++) {\n+                                var head = cm.listSelections()[i].head;\n+                                if (head.line <= last) continue;\n+                                var at = Pos(head.line + (above ? 0 : 1), 0);\n+                                cm.replaceRange(\"\\n\", at, null, \"+insertLine\");\n+                                cm.indentLine(at.line, null, true);\n+                                newSelection.push({\n+                                    head: at,\n+                                    anchor: at\n+                                });\n+                                last = head.line + 1;\n+                            }\n+                            cm.setSelections(newSelection);\n+                        });\n+                        cm.execCommand(\"indentAuto\");\n+                    }\n+                    cmds.insertLineAfter = function(cm) {\n+                        return insertLine(cm, false);\n+                    };\n+                    cmds.insertLineBefore = function(cm) {\n+                        return insertLine(cm, true);\n+                    };\n+\n+                    function wordAt(cm, pos) {\n+                        var start = pos.ch,\n+                            end = start,\n+                            line = cm.getLine(pos.line);\n+                        while (start && CodeMirror.isWordChar(line.charAt(start - 1))) --start;\n+                        while (end < line.length && CodeMirror.isWordChar(line.charAt(end))) ++end;\n+                        return {\n+                            from: Pos(pos.line, start),\n+                            to: Pos(pos.line, end),\n+                            word: line.slice(start, end)\n+                        };\n+                    }\n+                    cmds.selectNextOccurrence = function(cm) {\n+                        var from = cm.getCursor(\"from\"),\n+                            to = cm.getCursor(\"to\");\n+                        var fullWord = cm.state.sublimeFindFullWord == cm.doc.sel;\n+                        if (CodeMirror.cmpPos(from, to) == 0) {\n+                            var word = wordAt(cm, from);\n+                            if (!word.word) return;\n+                            cm.setSelection(word.from, word.to);\n+                            fullWord = true;\n                         } else {\n-                            featureDefinitions[key].Component = features[key];\n+                            var text = cm.getRange(from, to);\n+                            var query = fullWord ? new RegExp(\"\\\\b\" + text + \"\\\\b\") : text;\n+                            var cur = cm.getSearchCursor(query, to);\n+                            var found = cur.findNext();\n+                            if (!found) {\n+                                cur = cm.getSearchCursor(query, Pos(cm.firstLine(), 0));\n+                                found = cur.findNext();\n+                            }\n+                            if (!found || isSelectedRange(cm.listSelections(), cur.from(), cur.to())) return;\n+                            cm.addSelection(cur.from(), cur.to());\n+                        }\n+                        if (fullWord) cm.state.sublimeFindFullWord = cm.doc.sel;\n+                    };\n+                    cmds.skipAndSelectNextOccurrence = function(cm) {\n+                        var prevAnchor = cm.getCursor(\"anchor\"),\n+                            prevHead = cm.getCursor(\"head\");\n+                        cmds.selectNextOccurrence(cm);\n+                        if (CodeMirror.cmpPos(prevAnchor, prevHead) != 0) {\n+                            cm.doc.setSelections(cm.doc.listSelections().filter(function(sel) {\n+                                return sel.anchor != prevAnchor || sel.head != prevHead;\n+                            }));\n                         }\n+                    };\n+\n+                    function addCursorToSelection(cm, dir) {\n+                        var ranges = cm.listSelections(),\n+                            newRanges = [];\n+                        for (var i = 0; i < ranges.length; i++) {\n+                            var range = ranges[i];\n+                            var newAnchor = cm.findPosV(range.anchor, dir, \"line\", range.anchor.goalColumn);\n+                            var newHead = cm.findPosV(range.head, dir, \"line\", range.head.goalColumn);\n+                            newAnchor.goalColumn = range.anchor.goalColumn != null ? range.anchor.goalColumn : cm.cursorCoords(range.anchor, \"div\").left;\n+                            newHead.goalColumn = range.head.goalColumn != null ? range.head.goalColumn : cm.cursorCoords(range.head, \"div\").left;\n+                            var newRange = {\n+                                anchor: newAnchor,\n+                                head: newHead\n+                            };\n+                            newRanges.push(range);\n+                            newRanges.push(newRange);\n+                        }\n+                        cm.setSelections(newRanges);\n+                    }\n+                    cmds.addCursorToPrevLine = function(cm) {\n+                        addCursorToSelection(cm, -1);\n+                    };\n+                    cmds.addCursorToNextLine = function(cm) {\n+                        addCursorToSelection(cm, 1);\n+                    };\n+\n+                    function isSelectedRange(ranges, from, to) {\n+                        for (var i = 0; i < ranges.length; i++)\n+                            if (CodeMirror.cmpPos(ranges[i].from(), from) == 0 && CodeMirror.cmpPos(ranges[i].to(), to) == 0) return true;\n+                        return false;\n                     }\n-                }\n-                var LazyContext = React.createContext({\n-                    strict: false\n-                });\n-                var featureNames = Object.keys(featureDefinitions);\n-                var numFeatures = featureNames.length;\n-                /**\n-                 * Load features via renderless components based on the provided MotionProps.\n-                 */\n-                function useFeatures(props, visualElement, preloadedFeatures) {\n-                    var features = [];\n-                    var lazyContext = React.useContext(LazyContext);\n-                    if (!visualElement) return null;\n-                    /**\n-                     * If we're in development mode, check to make sure we're not rendering a motion component\n-                     * as a child of LazyMotion, as this will break the file-size benefits of using it.\n-                     */\n-                    if (env !== \"production\" && preloadedFeatures && lazyContext.strict) {\n-                        heyListen.invariant(false, \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\");\n+                    var mirror = \"(){}[]\";\n+\n+                    function selectBetweenBrackets(cm) {\n+                        var ranges = cm.listSelections(),\n+                            newRanges = [];\n+                        for (var i = 0; i < ranges.length; i++) {\n+                            var range = ranges[i],\n+                                pos = range.head,\n+                                opening = cm.scanForBracket(pos, -1);\n+                            if (!opening) return false;\n+                            for (;;) {\n+                                var closing = cm.scanForBracket(pos, 1);\n+                                if (!closing) return false;\n+                                if (closing.ch == mirror.charAt(mirror.indexOf(opening.ch) + 1)) {\n+                                    var startPos = Pos(opening.pos.line, opening.pos.ch + 1);\n+                                    if (CodeMirror.cmpPos(startPos, range.from()) == 0 && CodeMirror.cmpPos(closing.pos, range.to()) == 0) {\n+                                        opening = cm.scanForBracket(opening.pos, -1);\n+                                        if (!opening) return false;\n+                                    } else {\n+                                        newRanges.push({\n+                                            anchor: startPos,\n+                                            head: closing.pos\n+                                        });\n+                                        break;\n+                                    }\n+                                }\n+                                pos = Pos(closing.pos.line, closing.pos.ch + 1);\n+                            }\n+                        }\n+                        cm.setSelections(newRanges);\n+                        return true;\n                     }\n-                    for (var i = 0; i < numFeatures; i++) {\n-                        var name_1 = featureNames[i];\n-                        var _a = featureDefinitions[name_1],\n-                            isEnabled = _a.isEnabled,\n-                            Component = _a.Component;\n-                        /**\n-                         * It might be possible in the future to use this moment to\n-                         * dynamically request functionality. In initial tests this\n-                         * was producing a lot of duplication amongst bundles.\n-                         */\n-                        if (isEnabled(props) && Component) {\n-                            features.push(React__namespace.createElement(Component, tslib.__assign({\n-                                key: name_1\n-                            }, props, {\n-                                visualElement: visualElement\n-                            })));\n+                    cmds.selectScope = function(cm) {\n+                        selectBetweenBrackets(cm) || cm.execCommand(\"selectAll\");\n+                    };\n+                    cmds.selectBetweenBrackets = function(cm) {\n+                        if (!selectBetweenBrackets(cm)) return CodeMirror.Pass;\n+                    };\n+\n+                    function puncType(type) {\n+                        return !type ? null : /\\bpunctuation\\b/.test(type) ? type : undefined;\n+                    }\n+                    cmds.goToBracket = function(cm) {\n+                        cm.extendSelectionsBy(function(range) {\n+                            var next = cm.scanForBracket(range.head, 1, puncType(cm.getTokenTypeAt(range.head)));\n+                            if (next && CodeMirror.cmpPos(next.pos, range.head) != 0) return next.pos;\n+                            var prev = cm.scanForBracket(range.head, -1, puncType(cm.getTokenTypeAt(Pos(range.head.line, range.head.ch + 1))));\n+                            return prev && Pos(prev.pos.line, prev.pos.ch + 1) || range.head;\n+                        });\n+                    };\n+                    cmds.swapLineUp = function(cm) {\n+                        if (cm.isReadOnly()) return CodeMirror.Pass;\n+                        var ranges = cm.listSelections(),\n+                            linesToMove = [],\n+                            at = cm.firstLine() - 1,\n+                            newSels = [];\n+                        for (var i = 0; i < ranges.length; i++) {\n+                            var range = ranges[i],\n+                                from = range.from().line - 1,\n+                                to = range.to().line;\n+                            newSels.push({\n+                                anchor: Pos(range.anchor.line - 1, range.anchor.ch),\n+                                head: Pos(range.head.line - 1, range.head.ch)\n+                            });\n+                            if (range.to().ch == 0 && !range.empty()) --to;\n+                            if (from > at) linesToMove.push(from, to);\n+                            else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n+                            at = to;\n+                        }\n+                        cm.operation(function() {\n+                            for (var i = 0; i < linesToMove.length; i += 2) {\n+                                var from = linesToMove[i],\n+                                    to = linesToMove[i + 1];\n+                                var line = cm.getLine(from);\n+                                cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n+                                if (to > cm.lastLine()) cm.replaceRange(\"\\n\" + line, Pos(cm.lastLine()), null, \"+swapLine\");\n+                                else cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n+                            }\n+                            cm.setSelections(newSels);\n+                            cm.scrollIntoView();\n+                        });\n+                    };\n+                    cmds.swapLineDown = function(cm) {\n+                        if (cm.isReadOnly()) return CodeMirror.Pass;\n+                        var ranges = cm.listSelections(),\n+                            linesToMove = [],\n+                            at = cm.lastLine() + 1;\n+                        for (var i = ranges.length - 1; i >= 0; i--) {\n+                            var range = ranges[i],\n+                                from = range.to().line + 1,\n+                                to = range.from().line;\n+                            if (range.to().ch == 0 && !range.empty()) from--;\n+                            if (from < at) linesToMove.push(from, to);\n+                            else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n+                            at = to;\n+                        }\n+                        cm.operation(function() {\n+                            for (var i = linesToMove.length - 2; i >= 0; i -= 2) {\n+                                var from = linesToMove[i],\n+                                    to = linesToMove[i + 1];\n+                                var line = cm.getLine(from);\n+                                if (from == cm.lastLine()) cm.replaceRange(\"\", Pos(from - 1), Pos(from), \"+swapLine\");\n+                                else cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n+                                cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n+                            }\n+                            cm.scrollIntoView();\n+                        });\n+                    };\n+                    cmds.toggleCommentIndented = function(cm) {\n+                        cm.toggleComment({\n+                            indent: true\n+                        });\n+                    };\n+                    cmds.joinLines = function(cm) {\n+                        var ranges = cm.listSelections(),\n+                            joined = [];\n+                        for (var i = 0; i < ranges.length; i++) {\n+                            var range = ranges[i],\n+                                from = range.from();\n+                            var start = from.line,\n+                                end = range.to().line;\n+                            while (i < ranges.length - 1 && ranges[i + 1].from().line == end) end = ranges[++i].to().line;\n+                            joined.push({\n+                                start: start,\n+                                end: end,\n+                                anchor: !range.empty() && from\n+                            });\n+                        }\n+                        cm.operation(function() {\n+                            var offset = 0,\n+                                ranges = [];\n+                            for (var i = 0; i < joined.length; i++) {\n+                                var obj = joined[i];\n+                                var anchor = obj.anchor && Pos(obj.anchor.line - offset, obj.anchor.ch),\n+                                    head;\n+                                for (var line = obj.start; line <= obj.end; line++) {\n+                                    var actual = line - offset;\n+                                    if (line == obj.end) head = Pos(actual, cm.getLine(actual).length + 1);\n+                                    if (actual < cm.lastLine()) {\n+                                        cm.replaceRange(\" \", Pos(actual), Pos(actual + 1, /^\\s*/.exec(cm.getLine(actual + 1))[0].length));\n+                                        ++offset;\n+                                    }\n+                                }\n+                                ranges.push({\n+                                    anchor: anchor || head,\n+                                    head: head\n+                                });\n+                            }\n+                            cm.setSelections(ranges, 0);\n+                        });\n+                    };\n+                    cmds.duplicateLine = function(cm) {\n+                        cm.operation(function() {\n+                            var rangeCount = cm.listSelections().length;\n+                            for (var i = 0; i < rangeCount; i++) {\n+                                var range = cm.listSelections()[i];\n+                                if (range.empty()) cm.replaceRange(cm.getLine(range.head.line) + \"\\n\", Pos(range.head.line, 0));\n+                                else cm.replaceRange(cm.getRange(range.from(), range.to()), range.from());\n+                            }\n+                            cm.scrollIntoView();\n+                        });\n+                    };\n+\n+                    function sortLines(cm, caseSensitive, direction) {\n+                        if (cm.isReadOnly()) return CodeMirror.Pass;\n+                        var ranges = cm.listSelections(),\n+                            toSort = [],\n+                            selected;\n+                        for (var i = 0; i < ranges.length; i++) {\n+                            var range = ranges[i];\n+                            if (range.empty()) continue;\n+                            var from = range.from().line,\n+                                to = range.to().line;\n+                            while (i < ranges.length - 1 && ranges[i + 1].from().line == to) to = ranges[++i].to().line;\n+                            if (!ranges[i].to().ch) to--;\n+                            toSort.push(from, to);\n+                        }\n+                        if (toSort.length) selected = true;\n+                        else toSort.push(cm.firstLine(), cm.lastLine());\n+                        cm.operation(function() {\n+                            var ranges = [];\n+                            for (var i = 0; i < toSort.length; i += 2) {\n+                                var from = toSort[i],\n+                                    to = toSort[i + 1];\n+                                var start = Pos(from, 0),\n+                                    end = Pos(to);\n+                                var lines = cm.getRange(start, end, false);\n+                                if (caseSensitive) lines.sort(function(a, b) {\n+                                    return a < b ? -direction : a == b ? 0 : direction;\n+                                });\n+                                else lines.sort(function(a, b) {\n+                                    var au = a.toUpperCase(),\n+                                        bu = b.toUpperCase();\n+                                    if (au != bu) {\n+                                        a = au;\n+                                        b = bu;\n+                                    }\n+                                    return a < b ? -direction : a == b ? 0 : direction;\n+                                });\n+                                cm.replaceRange(lines, start, end);\n+                                if (selected) ranges.push({\n+                                    anchor: start,\n+                                    head: Pos(to + 1, 0)\n+                                });\n+                            }\n+                            if (selected) cm.setSelections(ranges, 0);\n+                        });\n+                    }\n+                    cmds.sortLines = function(cm) {\n+                        sortLines(cm, true, 1);\n+                    };\n+                    cmds.reverseSortLines = function(cm) {\n+                        sortLines(cm, true, -1);\n+                    };\n+                    cmds.sortLinesInsensitive = function(cm) {\n+                        sortLines(cm, false, 1);\n+                    };\n+                    cmds.reverseSortLinesInsensitive = function(cm) {\n+                        sortLines(cm, false, -1);\n+                    };\n+                    cmds.nextBookmark = function(cm) {\n+                        var marks = cm.state.sublimeBookmarks;\n+                        if (marks)\n+                            while (marks.length) {\n+                                var current = marks.shift();\n+                                var found = current.find();\n+                                if (found) {\n+                                    marks.push(current);\n+                                    return cm.setSelection(found.from, found.to);\n+                                }\n+                            }\n+                    };\n+                    cmds.prevBookmark = function(cm) {\n+                        var marks = cm.state.sublimeBookmarks;\n+                        if (marks)\n+                            while (marks.length) {\n+                                marks.unshift(marks.pop());\n+                                var found = marks[marks.length - 1].find();\n+                                if (!found) marks.pop();\n+                                else return cm.setSelection(found.from, found.to);\n+                            }\n+                    };\n+                    cmds.toggleBookmark = function(cm) {\n+                        var ranges = cm.listSelections();\n+                        var marks = cm.state.sublimeBookmarks || (cm.state.sublimeBookmarks = []);\n+                        for (var i = 0; i < ranges.length; i++) {\n+                            var from = ranges[i].from(),\n+                                to = ranges[i].to();\n+                            var found = ranges[i].empty() ? cm.findMarksAt(from) : cm.findMarks(from, to);\n+                            for (var j = 0; j < found.length; j++) {\n+                                if (found[j].sublimeBookmark) {\n+                                    found[j].clear();\n+                                    for (var k = 0; k < marks.length; k++)\n+                                        if (marks[k] == found[j]) marks.splice(k--, 1);\n+                                    break;\n+                                }\n+                            }\n+                            if (j == found.length) marks.push(cm.markText(from, to, {\n+                                sublimeBookmark: true,\n+                                clearWhenEmpty: false\n+                            }));\n                         }\n+                    };\n+                    cmds.clearBookmarks = function(cm) {\n+                        var marks = cm.state.sublimeBookmarks;\n+                        if (marks)\n+                            for (var i = 0; i < marks.length; i++) marks[i].clear();\n+                        marks.length = 0;\n+                    };\n+                    cmds.selectBookmarks = function(cm) {\n+                        var marks = cm.state.sublimeBookmarks,\n+                            ranges = [];\n+                        if (marks)\n+                            for (var i = 0; i < marks.length; i++) {\n+                                var found = marks[i].find();\n+                                if (!found) marks.splice(i--, 0);\n+                                else ranges.push({\n+                                    anchor: found.from,\n+                                    head: found.to\n+                                });\n+                            }\n+                        if (ranges.length) cm.setSelections(ranges, 0);\n+                    };\n+\n+                    function modifyWordOrSelection(cm, mod) {\n+                        cm.operation(function() {\n+                            var ranges = cm.listSelections(),\n+                                indices = [],\n+                                replacements = [];\n+                            for (var i = 0; i < ranges.length; i++) {\n+                                var range = ranges[i];\n+                                if (range.empty()) {\n+                                    indices.push(i);\n+                                    replacements.push(\"\");\n+                                } else replacements.push(mod(cm.getRange(range.from(), range.to())));\n+                            }\n+                            cm.replaceSelections(replacements, \"around\", \"case\");\n+                            for (var i = indices.length - 1, at; i >= 0; i--) {\n+                                var range = ranges[indices[i]];\n+                                if (at && CodeMirror.cmpPos(range.head, at) > 0) continue;\n+                                var word = wordAt(cm, range.head);\n+                                at = word.from;\n+                                cm.replaceRange(mod(word.word), word.from, word.to);\n+                            }\n+                        });\n                     }\n-                    return features;\n-                }\n+                    cmds.smartBackspace = function(cm) {\n+                        if (cm.somethingSelected()) return CodeMirror.Pass;\n+                        cm.operation(function() {\n+                            var cursors = cm.listSelections();\n+                            var indentUnit = cm.getOption(\"indentUnit\");\n+                            for (var i = cursors.length - 1; i >= 0; i--) {\n+                                var cursor = cursors[i].head;\n+                                var toStartOfLine = cm.getRange({\n+                                    line: cursor.line,\n+                                    ch: 0\n+                                }, cursor);\n+                                var column = CodeMirror.countColumn(toStartOfLine, null, cm.getOption(\"tabSize\"));\n+\n+                                // Delete by one character by default\n+                                var deletePos = cm.findPosH(cursor, -1, \"char\", false);\n+                                if (toStartOfLine && !/\\S/.test(toStartOfLine) && column % indentUnit == 0) {\n+                                    var prevIndent = new Pos(cursor.line, CodeMirror.findColumn(toStartOfLine, column - indentUnit, indentUnit));\n+\n+                                    // Smart delete only if we found a valid prevIndent location\n+                                    if (prevIndent.ch != cursor.ch) deletePos = prevIndent;\n+                                }\n+                                cm.replaceRange(\"\", deletePos, cursor, \"+delete\");\n+                            }\n+                        });\n+                    };\n+                    cmds.delLineRight = function(cm) {\n+                        cm.operation(function() {\n+                            var ranges = cm.listSelections();\n+                            for (var i = ranges.length - 1; i >= 0; i--) cm.replaceRange(\"\", ranges[i].anchor, Pos(ranges[i].to().line), \"+delete\");\n+                            cm.scrollIntoView();\n+                        });\n+                    };\n+                    cmds.upcaseAtCursor = function(cm) {\n+                        modifyWordOrSelection(cm, function(str) {\n+                            return str.toUpperCase();\n+                        });\n+                    };\n+                    cmds.downcaseAtCursor = function(cm) {\n+                        modifyWordOrSelection(cm, function(str) {\n+                            return str.toLowerCase();\n+                        });\n+                    };\n+                    cmds.setSublimeMark = function(cm) {\n+                        if (cm.state.sublimeMark) cm.state.sublimeMark.clear();\n+                        cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n+                    };\n+                    cmds.selectToSublimeMark = function(cm) {\n+                        var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n+                        if (found) cm.setSelection(cm.getCursor(), found);\n+                    };\n+                    cmds.deleteToSublimeMark = function(cm) {\n+                        var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n+                        if (found) {\n+                            var from = cm.getCursor(),\n+                                to = found;\n+                            if (CodeMirror.cmpPos(from, to) > 0) {\n+                                var tmp = to;\n+                                to = from;\n+                                from = tmp;\n+                            }\n+                            cm.state.sublimeKilled = cm.getRange(from, to);\n+                            cm.replaceRange(\"\", from, to);\n+                        }\n+                    };\n+                    cmds.swapWithSublimeMark = function(cm) {\n+                        var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n+                        if (found) {\n+                            cm.state.sublimeMark.clear();\n+                            cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n+                            cm.setCursor(found);\n+                        }\n+                    };\n+                    cmds.sublimeYank = function(cm) {\n+                        if (cm.state.sublimeKilled != null) cm.replaceSelection(cm.state.sublimeKilled, null, \"paste\");\n+                    };\n+                    cmds.showInCenter = function(cm) {\n+                        var pos = cm.cursorCoords(null, \"local\");\n+                        cm.scrollTo(null, (pos.top + pos.bottom) / 2 - cm.getScrollInfo().clientHeight / 2);\n+                    };\n \n-                /**\n-                 * @public\n-                 */\n-                var MotionConfigContext = React.createContext({\n-                    transformPagePoint: function(p) {\n-                        return p;\n-                    },\n-                    isStatic: false,\n-                    reducedMotion: \"never\"\n+                    function getTarget(cm) {\n+                        var from = cm.getCursor(\"from\"),\n+                            to = cm.getCursor(\"to\");\n+                        if (CodeMirror.cmpPos(from, to) == 0) {\n+                            var word = wordAt(cm, from);\n+                            if (!word.word) return;\n+                            from = word.from;\n+                            to = word.to;\n+                        }\n+                        return {\n+                            from: from,\n+                            to: to,\n+                            query: cm.getRange(from, to),\n+                            word: word\n+                        };\n+                    }\n+\n+                    function findAndGoTo(cm, forward) {\n+                        var target = getTarget(cm);\n+                        if (!target) return;\n+                        var query = target.query;\n+                        var cur = cm.getSearchCursor(query, forward ? target.to : target.from);\n+                        if (forward ? cur.findNext() : cur.findPrevious()) {\n+                            cm.setSelection(cur.from(), cur.to());\n+                        } else {\n+                            cur = cm.getSearchCursor(query, forward ? Pos(cm.firstLine(), 0) : cm.clipPos(Pos(cm.lastLine())));\n+                            if (forward ? cur.findNext() : cur.findPrevious()) cm.setSelection(cur.from(), cur.to());\n+                            else if (target.word) cm.setSelection(target.from, target.to);\n+                        }\n+                    };\n+                    cmds.findUnder = function(cm) {\n+                        findAndGoTo(cm, true);\n+                    };\n+                    cmds.findUnderPrevious = function(cm) {\n+                        findAndGoTo(cm, false);\n+                    };\n+                    cmds.findAllUnder = function(cm) {\n+                        var target = getTarget(cm);\n+                        if (!target) return;\n+                        var cur = cm.getSearchCursor(target.query);\n+                        var matches = [];\n+                        var primaryIndex = -1;\n+                        while (cur.findNext()) {\n+                            matches.push({\n+                                anchor: cur.from(),\n+                                head: cur.to()\n+                            });\n+                            if (cur.from().line <= target.from.line && cur.from().ch <= target.from.ch) primaryIndex++;\n+                        }\n+                        cm.setSelections(matches, primaryIndex);\n+                    };\n+                    var keyMap = CodeMirror.keyMap;\n+                    keyMap.macSublime = {\n+                        \"Cmd-Left\": \"goLineStartSmart\",\n+                        \"Shift-Tab\": \"indentLess\",\n+                        \"Shift-Ctrl-K\": \"deleteLine\",\n+                        \"Alt-Q\": \"wrapLines\",\n+                        \"Ctrl-Left\": \"goSubwordLeft\",\n+                        \"Ctrl-Right\": \"goSubwordRight\",\n+                        \"Ctrl-Alt-Up\": \"scrollLineUp\",\n+                        \"Ctrl-Alt-Down\": \"scrollLineDown\",\n+                        \"Cmd-L\": \"selectLine\",\n+                        \"Shift-Cmd-L\": \"splitSelectionByLine\",\n+                        \"Esc\": \"singleSelectionTop\",\n+                        \"Cmd-Enter\": \"insertLineAfter\",\n+                        \"Shift-Cmd-Enter\": \"insertLineBefore\",\n+                        \"Cmd-D\": \"selectNextOccurrence\",\n+                        \"Shift-Cmd-Space\": \"selectScope\",\n+                        \"Shift-Cmd-M\": \"selectBetweenBrackets\",\n+                        \"Cmd-M\": \"goToBracket\",\n+                        \"Cmd-Ctrl-Up\": \"swapLineUp\",\n+                        \"Cmd-Ctrl-Down\": \"swapLineDown\",\n+                        \"Cmd-/\": \"toggleCommentIndented\",\n+                        \"Cmd-J\": \"joinLines\",\n+                        \"Shift-Cmd-D\": \"duplicateLine\",\n+                        \"F5\": \"sortLines\",\n+                        \"Shift-F5\": \"reverseSortLines\",\n+                        \"Cmd-F5\": \"sortLinesInsensitive\",\n+                        \"Shift-Cmd-F5\": \"reverseSortLinesInsensitive\",\n+                        \"F2\": \"nextBookmark\",\n+                        \"Shift-F2\": \"prevBookmark\",\n+                        \"Cmd-F2\": \"toggleBookmark\",\n+                        \"Shift-Cmd-F2\": \"clearBookmarks\",\n+                        \"Alt-F2\": \"selectBookmarks\",\n+                        \"Backspace\": \"smartBackspace\",\n+                        \"Cmd-K Cmd-D\": \"skipAndSelectNextOccurrence\",\n+                        \"Cmd-K Cmd-K\": \"delLineRight\",\n+                        \"Cmd-K Cmd-U\": \"upcaseAtCursor\",\n+                        \"Cmd-K Cmd-L\": \"downcaseAtCursor\",\n+                        \"Cmd-K Cmd-Space\": \"setSublimeMark\",\n+                        \"Cmd-K Cmd-A\": \"selectToSublimeMark\",\n+                        \"Cmd-K Cmd-W\": \"deleteToSublimeMark\",\n+                        \"Cmd-K Cmd-X\": \"swapWithSublimeMark\",\n+                        \"Cmd-K Cmd-Y\": \"sublimeYank\",\n+                        \"Cmd-K Cmd-C\": \"showInCenter\",\n+                        \"Cmd-K Cmd-G\": \"clearBookmarks\",\n+                        \"Cmd-K Cmd-Backspace\": \"delLineLeft\",\n+                        \"Cmd-K Cmd-1\": \"foldAll\",\n+                        \"Cmd-K Cmd-0\": \"unfoldAll\",\n+                        \"Cmd-K Cmd-J\": \"unfoldAll\",\n+                        \"Ctrl-Shift-Up\": \"addCursorToPrevLine\",\n+                        \"Ctrl-Shift-Down\": \"addCursorToNextLine\",\n+                        \"Cmd-F3\": \"findUnder\",\n+                        \"Shift-Cmd-F3\": \"findUnderPrevious\",\n+                        \"Alt-F3\": \"findAllUnder\",\n+                        \"Shift-Cmd-[\": \"fold\",\n+                        \"Shift-Cmd-]\": \"unfold\",\n+                        \"Cmd-I\": \"findIncremental\",\n+                        \"Shift-Cmd-I\": \"findIncrementalReverse\",\n+                        \"Cmd-H\": \"replace\",\n+                        \"F3\": \"findNext\",\n+                        \"Shift-F3\": \"findPrev\",\n+                        \"fallthrough\": \"macDefault\"\n+                    };\n+                    CodeMirror.normalizeKeyMap(keyMap.macSublime);\n+                    keyMap.pcSublime = {\n+                        \"Shift-Tab\": \"indentLess\",\n+                        \"Shift-Ctrl-K\": \"deleteLine\",\n+                        \"Alt-Q\": \"wrapLines\",\n+                        \"Ctrl-T\": \"transposeChars\",\n+                        \"Alt-Left\": \"goSubwordLeft\",\n+                        \"Alt-Right\": \"goSubwordRight\",\n+                        \"Ctrl-Up\": \"scrollLineUp\",\n+                        \"Ctrl-Down\": \"scrollLineDown\",\n+                        \"Ctrl-L\": \"selectLine\",\n+                        \"Shift-Ctrl-L\": \"splitSelectionByLine\",\n+                        \"Esc\": \"singleSelectionTop\",\n+                        \"Ctrl-Enter\": \"insertLineAfter\",\n+                        \"Shift-Ctrl-Enter\": \"insertLineBefore\",\n+                        \"Ctrl-D\": \"selectNextOccurrence\",\n+                        \"Shift-Ctrl-Space\": \"selectScope\",\n+                        \"Shift-Ctrl-M\": \"selectBetweenBrackets\",\n+                        \"Ctrl-M\": \"goToBracket\",\n+                        \"Shift-Ctrl-Up\": \"swapLineUp\",\n+                        \"Shift-Ctrl-Down\": \"swapLineDown\",\n+                        \"Ctrl-/\": \"toggleCommentIndented\",\n+                        \"Ctrl-J\": \"joinLines\",\n+                        \"Shift-Ctrl-D\": \"duplicateLine\",\n+                        \"F9\": \"sortLines\",\n+                        \"Shift-F9\": \"reverseSortLines\",\n+                        \"Ctrl-F9\": \"sortLinesInsensitive\",\n+                        \"Shift-Ctrl-F9\": \"reverseSortLinesInsensitive\",\n+                        \"F2\": \"nextBookmark\",\n+                        \"Shift-F2\": \"prevBookmark\",\n+                        \"Ctrl-F2\": \"toggleBookmark\",\n+                        \"Shift-Ctrl-F2\": \"clearBookmarks\",\n+                        \"Alt-F2\": \"selectBookmarks\",\n+                        \"Backspace\": \"smartBackspace\",\n+                        \"Ctrl-K Ctrl-D\": \"skipAndSelectNextOccurrence\",\n+                        \"Ctrl-K Ctrl-K\": \"delLineRight\",\n+                        \"Ctrl-K Ctrl-U\": \"upcaseAtCursor\",\n+                        \"Ctrl-K Ctrl-L\": \"downcaseAtCursor\",\n+                        \"Ctrl-K Ctrl-Space\": \"setSublimeMark\",\n+                        \"Ctrl-K Ctrl-A\": \"selectToSublimeMark\",\n+                        \"Ctrl-K Ctrl-W\": \"deleteToSublimeMark\",\n+                        \"Ctrl-K Ctrl-X\": \"swapWithSublimeMark\",\n+                        \"Ctrl-K Ctrl-Y\": \"sublimeYank\",\n+                        \"Ctrl-K Ctrl-C\": \"showInCenter\",\n+                        \"Ctrl-K Ctrl-G\": \"clearBookmarks\",\n+                        \"Ctrl-K Ctrl-Backspace\": \"delLineLeft\",\n+                        \"Ctrl-K Ctrl-1\": \"foldAll\",\n+                        \"Ctrl-K Ctrl-0\": \"unfoldAll\",\n+                        \"Ctrl-K Ctrl-J\": \"unfoldAll\",\n+                        \"Ctrl-Alt-Up\": \"addCursorToPrevLine\",\n+                        \"Ctrl-Alt-Down\": \"addCursorToNextLine\",\n+                        \"Ctrl-F3\": \"findUnder\",\n+                        \"Shift-Ctrl-F3\": \"findUnderPrevious\",\n+                        \"Alt-F3\": \"findAllUnder\",\n+                        \"Shift-Ctrl-[\": \"fold\",\n+                        \"Shift-Ctrl-]\": \"unfold\",\n+                        \"Ctrl-I\": \"findIncremental\",\n+                        \"Shift-Ctrl-I\": \"findIncrementalReverse\",\n+                        \"Ctrl-H\": \"replace\",\n+                        \"F3\": \"findNext\",\n+                        \"Shift-F3\": \"findPrev\",\n+                        \"fallthrough\": \"pcDefault\"\n+                    };\n+                    CodeMirror.normalizeKeyMap(keyMap.pcSublime);\n+                    var mac = keyMap.default == keyMap.macDefault;\n+                    keyMap.sublime = mac ? keyMap.macSublime : keyMap.pcSublime;\n                 });\n-                var MotionContext = React.createContext({});\n \n-                function useVisualElementContext() {\n-                    return React.useContext(MotionContext).visualElement;\n-                }\n+                /***/\n+            }),\n \n-                /**\n-                 * @public\n-                 */\n-                var PresenceContext = React.createContext(null);\n-                var isBrowser = typeof document !== \"undefined\";\n-                var useIsomorphicLayoutEffect = isBrowser ? React.useLayoutEffect : React.useEffect;\n+        /***/\n+        \"../../../node_modules/codemirror/lib/codemirror.js\":\n+            /*!**********************************************************!*\\\n+              !*** ../../../node_modules/codemirror/lib/codemirror.js ***!\n+              \\**********************************************************/\n+            /***/\n+            (function(module) {\n \n-                // Does this device prefer reduced motion? Returns `null` server-side.\n-                var prefersReducedMotion = {\n-                    current: null\n-                };\n-                var hasDetected = false;\n+                \"use strict\";\n \n-                function initPrefersReducedMotion() {\n-                    hasDetected = true;\n-                    if (!isBrowser) return;\n-                    if (window.matchMedia) {\n-                        var motionMediaQuery_1 = window.matchMedia(\"(prefers-reduced-motion)\");\n-                        var setReducedMotionPreferences = function() {\n-                            return prefersReducedMotion.current = motionMediaQuery_1.matches;\n-                        };\n-                        motionMediaQuery_1.addListener(setReducedMotionPreferences);\n-                        setReducedMotionPreferences();\n-                    } else {\n-                        prefersReducedMotion.current = false;\n+\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n+\n+                // This is CodeMirror (https://codemirror.net), a code editor\n+                // implemented in JavaScript on top of the browser's DOM.\n+                //\n+                // You can find some technical background for some of the code below\n+                // at http://marijnhaverbeke.nl/blog/#cm-internals .\n+\n+                (function(global, factory) {\n+                    true ? module.exports = factory() : 0;\n+                })(void 0, function() {\n+                    'use strict';\n+\n+                    // Kludges for bugs and behavior differences that can't be feature\n+                    // detected are enabled based on userAgent etc sniffing.\n+                    var userAgent = navigator.userAgent;\n+                    var platform = navigator.platform;\n+                    var gecko = /gecko\\/\\d/i.test(userAgent);\n+                    var ie_upto10 = /MSIE \\d/.test(userAgent);\n+                    var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n+                    var edge = /Edge\\/(\\d+)/.exec(userAgent);\n+                    var ie = ie_upto10 || ie_11up || edge;\n+                    var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n+                    var webkit = !edge && /WebKit\\//.test(userAgent);\n+                    var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n+                    var chrome = !edge && /Chrome\\//.test(userAgent);\n+                    var presto = /Opera\\//.test(userAgent);\n+                    var safari = /Apple Computer/.test(navigator.vendor);\n+                    var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n+                    var phantom = /PhantomJS/.test(userAgent);\n+                    var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n+                    var android = /Android/.test(userAgent);\n+                    // This is woefully incomplete. Suggestions for alternative methods welcome.\n+                    var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n+                    var mac = ios || /Mac/.test(platform);\n+                    var chromeOS = /\\bCrOS\\b/.test(userAgent);\n+                    var windows = /win/i.test(platform);\n+                    var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n+                    if (presto_version) {\n+                        presto_version = Number(presto_version[1]);\n+                    }\n+                    if (presto_version && presto_version >= 15) {\n+                        presto = false;\n+                        webkit = true;\n+                    }\n+                    // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n+                    var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n+                    var captureRightClick = gecko || ie && ie_version >= 9;\n+\n+                    function classTest(cls) {\n+                        return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\");\n+                    }\n+                    var rmClass = function(node, cls) {\n+                        var current = node.className;\n+                        var match = classTest(cls).exec(current);\n+                        if (match) {\n+                            var after = current.slice(match.index + match[0].length);\n+                            node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n+                        }\n+                    };\n+\n+                    function removeChildren(e) {\n+                        for (var count = e.childNodes.length; count > 0; --count) {\n+                            e.removeChild(e.firstChild);\n+                        }\n+                        return e;\n                     }\n-                }\n-                /**\n-                 * A hook that returns `true` if we should be using reduced motion based on the current device's Reduced Motion setting.\n-                 *\n-                 * This can be used to implement changes to your UI based on Reduced Motion. For instance, replacing motion-sickness inducing\n-                 * `x`/`y` animations with `opacity`, disabling the autoplay of background videos, or turning off parallax motion.\n-                 *\n-                 * It will actively respond to changes and re-render your components with the latest setting.\n-                 *\n-                 * ```jsx\n-                 * export function Sidebar({ isOpen }) {\n-                 *   const shouldReduceMotion = useReducedMotion()\n-                 *   const closedX = shouldReduceMotion ? 0 : \"-100%\"\n-                 *\n-                 *   return (\n-                 *     <motion.div animate={{\n-                 *       opacity: isOpen ? 1 : 0,\n-                 *       x: isOpen ? 0 : closedX\n-                 *     }} />\n-                 *   )\n-                 * }\n-                 * ```\n-                 *\n-                 * @return boolean\n-                 *\n-                 * @public\n-                 */\n-                function useReducedMotion() {\n-                    /**\n-                     * Lazy initialisation of prefersReducedMotion\n-                     */\n-                    !hasDetected && initPrefersReducedMotion();\n-                    var _a = tslib.__read(React.useState(prefersReducedMotion.current), 1),\n-                        shouldReduceMotion = _a[0];\n-                    /**\n-                     * TODO See if people miss automatically updating shouldReduceMotion setting\n-                     */\n-                    return shouldReduceMotion;\n-                }\n \n-                function useReducedMotionConfig() {\n-                    var reducedMotionPreference = useReducedMotion();\n-                    var reducedMotion = React.useContext(MotionConfigContext).reducedMotion;\n-                    if (reducedMotion === \"never\") {\n-                        return false;\n-                    } else if (reducedMotion === \"always\") {\n-                        return true;\n-                    } else {\n-                        return reducedMotionPreference;\n+                    function removeChildrenAndAdd(parent, e) {\n+                        return removeChildren(parent).appendChild(e);\n                     }\n-                }\n \n-                function useVisualElement(Component, visualState, props, createVisualElement) {\n-                    var lazyContext = React.useContext(LazyContext);\n-                    var parent = useVisualElementContext();\n-                    var presenceContext = React.useContext(PresenceContext);\n-                    var shouldReduceMotion = useReducedMotionConfig();\n-                    var visualElementRef = React.useRef(undefined);\n-                    /**\n-                     * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n-                     */\n-                    if (!createVisualElement) createVisualElement = lazyContext.renderer;\n-                    if (!visualElementRef.current && createVisualElement) {\n-                        visualElementRef.current = createVisualElement(Component, {\n-                            visualState: visualState,\n-                            parent: parent,\n-                            props: props,\n-                            presenceId: presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.id,\n-                            blockInitialAnimation: (presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) === false,\n-                            shouldReduceMotion: shouldReduceMotion\n-                        });\n+                    function elt(tag, content, className, style) {\n+                        var e = document.createElement(tag);\n+                        if (className) {\n+                            e.className = className;\n+                        }\n+                        if (style) {\n+                            e.style.cssText = style;\n+                        }\n+                        if (typeof content == \"string\") {\n+                            e.appendChild(document.createTextNode(content));\n+                        } else if (content) {\n+                            for (var i = 0; i < content.length; ++i) {\n+                                e.appendChild(content[i]);\n+                            }\n+                        }\n+                        return e;\n                     }\n-                    var visualElement = visualElementRef.current;\n-                    useIsomorphicLayoutEffect(function() {\n-                        visualElement === null || visualElement === void 0 ? void 0 : visualElement.syncRender();\n-                    });\n-                    React.useEffect(function() {\n-                        var _a;\n-                        (_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.animationState) === null || _a === void 0 ? void 0 : _a.animateChanges();\n-                    });\n-                    useIsomorphicLayoutEffect(function() {\n-                        return function() {\n-                            return visualElement === null || visualElement === void 0 ? void 0 : visualElement.notifyUnmount();\n+                    // wrapper for elt, which removes the elt from the accessibility tree\n+                    function eltP(tag, content, className, style) {\n+                        var e = elt(tag, content, className, style);\n+                        e.setAttribute(\"role\", \"presentation\");\n+                        return e;\n+                    }\n+                    var range;\n+                    if (document.createRange) {\n+                        range = function(node, start, end, endNode) {\n+                            var r = document.createRange();\n+                            r.setEnd(endNode || node, end);\n+                            r.setStart(node, start);\n+                            return r;\n                         };\n-                    }, []);\n-                    return visualElement;\n-                }\n-\n-                function isRefObject(ref) {\n-                    return typeof ref === \"object\" && Object.prototype.hasOwnProperty.call(ref, \"current\");\n-                }\n+                    } else {\n+                        range = function(node, start, end) {\n+                            var r = document.body.createTextRange();\n+                            try {\n+                                r.moveToElementText(node.parentNode);\n+                            } catch (e) {\n+                                return r;\n+                            }\n+                            r.collapse(true);\n+                            r.moveEnd(\"character\", end);\n+                            r.moveStart(\"character\", start);\n+                            return r;\n+                        };\n+                    }\n \n-                /**\n-                 * Creates a ref function that, when called, hydrates the provided\n-                 * external ref and VisualElement.\n-                 */\n-                function useMotionRef(visualState, visualElement, externalRef) {\n-                    return React.useCallback(function(instance) {\n-                            var _a;\n-                            instance && ((_a = visualState.mount) === null || _a === void 0 ? void 0 : _a.call(visualState, instance));\n-                            if (visualElement) {\n-                                instance ? visualElement.mount(instance) : visualElement.unmount();\n+                    function contains(parent, child) {\n+                        if (child.nodeType == 3)\n+                        // Android browser always returns false when child is a textnode\n+                        {\n+                            child = child.parentNode;\n+                        }\n+                        if (parent.contains) {\n+                            return parent.contains(child);\n+                        }\n+                        do {\n+                            if (child.nodeType == 11) {\n+                                child = child.host;\n                             }\n-                            if (externalRef) {\n-                                if (typeof externalRef === \"function\") {\n-                                    externalRef(instance);\n-                                } else if (isRefObject(externalRef)) {\n-                                    externalRef.current = instance;\n-                                }\n+                            if (child == parent) {\n+                                return true;\n                             }\n-                        },\n-                        /**\n-                         * Only pass a new ref callback to React if we've received a visual element\n-                         * factory. Otherwise we'll be mounting/remounting every time externalRef\n-                         * or other dependencies change.\n-                         */\n-                        [visualElement]);\n-                }\n+                        } while (child = child.parentNode);\n+                    }\n \n-                /**\n-                 * Decides if the supplied variable is an array of variant labels\n-                 */\n-                function isVariantLabels(v) {\n-                    return Array.isArray(v);\n-                }\n-                /**\n-                 * Decides if the supplied variable is variant label\n-                 */\n-                function isVariantLabel(v) {\n-                    return typeof v === \"string\" || isVariantLabels(v);\n-                }\n-                /**\n-                 * Creates an object containing the latest state of every MotionValue on a VisualElement\n-                 */\n-                function getCurrent(visualElement) {\n-                    var current = {};\n-                    visualElement.forEachValue(function(value, key) {\n-                        return current[key] = value.get();\n-                    });\n-                    return current;\n-                }\n-                /**\n-                 * Creates an object containing the latest velocity of every MotionValue on a VisualElement\n-                 */\n-                function getVelocity$1(visualElement) {\n-                    var velocity = {};\n-                    visualElement.forEachValue(function(value, key) {\n-                        return velocity[key] = value.getVelocity();\n-                    });\n-                    return velocity;\n-                }\n+                    function activeElt() {\n+                        // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n+                        // IE < 10 will throw when accessed while the page is loading or in an iframe.\n+                        // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n+                        var activeElement;\n+                        try {\n+                            activeElement = document.activeElement;\n+                        } catch (e) {\n+                            activeElement = document.body || null;\n+                        }\n+                        while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) {\n+                            activeElement = activeElement.shadowRoot.activeElement;\n+                        }\n+                        return activeElement;\n+                    }\n \n-                function resolveVariantFromProps(props, definition, custom, currentValues, currentVelocity) {\n-                    var _a;\n-                    if (currentValues === void 0) {\n-                        currentValues = {};\n+                    function addClass(node, cls) {\n+                        var current = node.className;\n+                        if (!classTest(cls).test(current)) {\n+                            node.className += (current ? \" \" : \"\") + cls;\n+                        }\n                     }\n-                    if (currentVelocity === void 0) {\n-                        currentVelocity = {};\n+\n+                    function joinClasses(a, b) {\n+                        var as = a.split(\" \");\n+                        for (var i = 0; i < as.length; i++) {\n+                            if (as[i] && !classTest(as[i]).test(b)) {\n+                                b += \" \" + as[i];\n+                            }\n+                        }\n+                        return b;\n                     }\n-                    /**\n-                     * If the variant definition is a function, resolve.\n-                     */\n-                    if (typeof definition === \"function\") {\n-                        definition = definition(custom !== null && custom !== void 0 ? custom : props.custom, currentValues, currentVelocity);\n+                    var selectInput = function(node) {\n+                        node.select();\n+                    };\n+                    if (ios)\n+                    // Mobile Safari apparently has a bug where select() is broken.\n+                    {\n+                        selectInput = function(node) {\n+                            node.selectionStart = 0;\n+                            node.selectionEnd = node.value.length;\n+                        };\n+                    } else if (ie)\n+                    // Suppress mysterious IE10 errors\n+                    {\n+                        selectInput = function(node) {\n+                            try {\n+                                node.select();\n+                            } catch (_e) {}\n+                        };\n                     }\n-                    /**\n-                     * If the variant definition is a variant label, or\n-                     * the function returned a variant label, resolve.\n-                     */\n-                    if (typeof definition === \"string\") {\n-                        definition = (_a = props.variants) === null || _a === void 0 ? void 0 : _a[definition];\n+\n+                    function bind(f) {\n+                        var args = Array.prototype.slice.call(arguments, 1);\n+                        return function() {\n+                            return f.apply(null, args);\n+                        };\n                     }\n-                    /**\n-                     * At this point we've resolved both functions and variant labels,\n-                     * but the resolved variant label might itself have been a function.\n-                     * If so, resolve. This can only have returned a valid target object.\n-                     */\n-                    if (typeof definition === \"function\") {\n-                        definition = definition(custom !== null && custom !== void 0 ? custom : props.custom, currentValues, currentVelocity);\n+\n+                    function copyObj(obj, target, overwrite) {\n+                        if (!target) {\n+                            target = {};\n+                        }\n+                        for (var prop in obj) {\n+                            if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) {\n+                                target[prop] = obj[prop];\n+                            }\n+                        }\n+                        return target;\n                     }\n-                    return definition;\n-                }\n \n-                function resolveVariant(visualElement, definition, custom) {\n-                    var props = visualElement.getProps();\n-                    return resolveVariantFromProps(props, definition, custom !== null && custom !== void 0 ? custom : props.custom, getCurrent(visualElement), getVelocity$1(visualElement));\n-                }\n+                    // Counts the column offset in a string, taking tabs into account.\n+                    // Used mostly to find indentation.\n+                    function countColumn(string, end, tabSize, startIndex, startValue) {\n+                        if (end == null) {\n+                            end = string.search(/[^\\s\\u00a0]/);\n+                            if (end == -1) {\n+                                end = string.length;\n+                            }\n+                        }\n+                        for (var i = startIndex || 0, n = startValue || 0;;) {\n+                            var nextTab = string.indexOf(\"\\t\", i);\n+                            if (nextTab < 0 || nextTab >= end) {\n+                                return n + (end - i);\n+                            }\n+                            n += nextTab - i;\n+                            n += tabSize - n % tabSize;\n+                            i = nextTab + 1;\n+                        }\n+                    }\n+                    var Delayed = function() {\n+                        this.id = null;\n+                        this.f = null;\n+                        this.time = 0;\n+                        this.handler = bind(this.onTimeout, this);\n+                    };\n+                    Delayed.prototype.onTimeout = function(self) {\n+                        self.id = 0;\n+                        if (self.time <= +new Date()) {\n+                            self.f();\n+                        } else {\n+                            setTimeout(self.handler, self.time - +new Date());\n+                        }\n+                    };\n+                    Delayed.prototype.set = function(ms, f) {\n+                        this.f = f;\n+                        var time = +new Date() + ms;\n+                        if (!this.id || time < this.time) {\n+                            clearTimeout(this.id);\n+                            this.id = setTimeout(this.handler, ms);\n+                            this.time = time;\n+                        }\n+                    };\n \n-                function checkIfControllingVariants(props) {\n-                    var _a;\n-                    return typeof((_a = props.animate) === null || _a === void 0 ? void 0 : _a.start) === \"function\" || isVariantLabel(props.initial) || isVariantLabel(props.animate) || isVariantLabel(props.whileHover) || isVariantLabel(props.whileDrag) || isVariantLabel(props.whileTap) || isVariantLabel(props.whileFocus) || isVariantLabel(props.exit);\n-                }\n+                    function indexOf(array, elt) {\n+                        for (var i = 0; i < array.length; ++i) {\n+                            if (array[i] == elt) {\n+                                return i;\n+                            }\n+                        }\n+                        return -1;\n+                    }\n \n-                function checkIfVariantNode(props) {\n-                    return Boolean(checkIfControllingVariants(props) || props.variants);\n-                }\n+                    // Number of pixels added to scroller and sizer to hide scrollbar\n+                    var scrollerGap = 50;\n \n-                function getCurrentTreeVariants(props, context) {\n-                    if (checkIfControllingVariants(props)) {\n-                        var initial = props.initial,\n-                            animate = props.animate;\n-                        return {\n-                            initial: initial === false || isVariantLabel(initial) ? initial : undefined,\n-                            animate: isVariantLabel(animate) ? animate : undefined\n+                    // Returned or thrown by various protocols to signal 'I'm not\n+                    // handling this'.\n+                    var Pass = {\n+                        toString: function() {\n+                            return \"CodeMirror.Pass\";\n+                        }\n+                    };\n+\n+                    // Reused option objects for setSelection & friends\n+                    var sel_dontScroll = {\n+                            scroll: false\n+                        },\n+                        sel_mouse = {\n+                            origin: \"*mouse\"\n+                        },\n+                        sel_move = {\n+                            origin: \"+move\"\n                         };\n+\n+                    // The inverse of countColumn -- find the offset that corresponds to\n+                    // a particular column.\n+                    function findColumn(string, goal, tabSize) {\n+                        for (var pos = 0, col = 0;;) {\n+                            var nextTab = string.indexOf(\"\\t\", pos);\n+                            if (nextTab == -1) {\n+                                nextTab = string.length;\n+                            }\n+                            var skipped = nextTab - pos;\n+                            if (nextTab == string.length || col + skipped >= goal) {\n+                                return pos + Math.min(skipped, goal - col);\n+                            }\n+                            col += nextTab - pos;\n+                            col += tabSize - col % tabSize;\n+                            pos = nextTab + 1;\n+                            if (col >= goal) {\n+                                return pos;\n+                            }\n+                        }\n                     }\n-                    return props.inherit !== false ? context : {};\n-                }\n+                    var spaceStrs = [\"\"];\n \n-                function useCreateMotionContext(props) {\n-                    var _a = getCurrentTreeVariants(props, React.useContext(MotionContext)),\n-                        initial = _a.initial,\n-                        animate = _a.animate;\n-                    return React.useMemo(function() {\n-                        return {\n-                            initial: initial,\n-                            animate: animate\n-                        };\n-                    }, [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n-                }\n+                    function spaceStr(n) {\n+                        while (spaceStrs.length <= n) {\n+                            spaceStrs.push(lst(spaceStrs) + \" \");\n+                        }\n+                        return spaceStrs[n];\n+                    }\n \n-                function variantLabelsAsDependency(prop) {\n-                    return Array.isArray(prop) ? prop.join(\" \") : prop;\n-                }\n+                    function lst(arr) {\n+                        return arr[arr.length - 1];\n+                    }\n \n-                /**\n-                 * Creates a constant value over the lifecycle of a component.\n-                 *\n-                 * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n-                 * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n-                 * you can ensure that initialisers don't execute twice or more.\n-                 */\n-                function useConstant(init) {\n-                    var ref = React.useRef(null);\n-                    if (ref.current === null) {\n-                        ref.current = init();\n+                    function map(array, f) {\n+                        var out = [];\n+                        for (var i = 0; i < array.length; i++) {\n+                            out[i] = f(array[i], i);\n+                        }\n+                        return out;\n                     }\n-                    return ref.current;\n-                }\n \n-                /**\n-                 * This should only ever be modified on the client otherwise it'll\n-                 * persist through server requests. If we need instanced states we\n-                 * could lazy-init via root.\n-                 */\n-                var globalProjectionState = {\n-                    /**\n-                     * Global flag as to whether the tree has animated since the last time\n-                     * we resized the window\n-                     */\n-                    hasAnimatedSinceResize: true,\n-                    /**\n-                     * We set this to true once, on the first update. Any nodes added to the tree beyond that\n-                     * update will be given a `data-projection-id` attribute.\n-                     */\n-                    hasEverUpdated: false\n-                };\n-                var id$1 = 1;\n+                    function insertSorted(array, value, score) {\n+                        var pos = 0,\n+                            priority = score(value);\n+                        while (pos < array.length && score(array[pos]) <= priority) {\n+                            pos++;\n+                        }\n+                        array.splice(pos, 0, value);\n+                    }\n \n-                function useProjectionId() {\n-                    return useConstant(function() {\n-                        if (globalProjectionState.hasEverUpdated) {\n-                            return id$1++;\n+                    function nothing() {}\n+\n+                    function createObj(base, props) {\n+                        var inst;\n+                        if (Object.create) {\n+                            inst = Object.create(base);\n+                        } else {\n+                            nothing.prototype = base;\n+                            inst = new nothing();\n                         }\n-                    });\n-                }\n-                var LayoutGroupContext = React.createContext({});\n+                        if (props) {\n+                            copyObj(props, inst);\n+                        }\n+                        return inst;\n+                    }\n+                    var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n \n-                /**\n-                 * Internal, exported only for usage in Framer\n-                 */\n-                var SwitchLayoutGroupContext = React.createContext({});\n+                    function isWordCharBasic(ch) {\n+                        return /\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch));\n+                    }\n \n-                function useProjection(projectionId, _a, visualElement, ProjectionNodeConstructor) {\n-                    var _b;\n-                    var layoutId = _a.layoutId,\n-                        layout = _a.layout,\n-                        drag = _a.drag,\n-                        dragConstraints = _a.dragConstraints,\n-                        layoutScroll = _a.layoutScroll;\n-                    var initialPromotionConfig = React.useContext(SwitchLayoutGroupContext);\n-                    if (!ProjectionNodeConstructor || !visualElement || (visualElement === null || visualElement === void 0 ? void 0 : visualElement.projection)) {\n-                        return;\n+                    function isWordChar(ch, helper) {\n+                        if (!helper) {\n+                            return isWordCharBasic(ch);\n+                        }\n+                        if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) {\n+                            return true;\n+                        }\n+                        return helper.test(ch);\n                     }\n-                    visualElement.projection = new ProjectionNodeConstructor(projectionId, visualElement.getLatestValues(), (_b = visualElement.parent) === null || _b === void 0 ? void 0 : _b.projection);\n-                    visualElement.projection.setOptions({\n-                        layoutId: layoutId,\n-                        layout: layout,\n-                        alwaysMeasureLayout: Boolean(drag) || dragConstraints && isRefObject(dragConstraints),\n-                        visualElement: visualElement,\n-                        scheduleRender: function() {\n-                            return visualElement.scheduleRender();\n-                        },\n-                        /**\n-                         * TODO: Update options in an effect. This could be tricky as it'll be too late\n-                         * to update by the time layout animations run.\n-                         * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n-                         * ensuring it gets called if there's no potential layout animations.\n-                         *\n-                         */\n-                        animationType: typeof layout === \"string\" ? layout : \"both\",\n-                        initialPromotionConfig: initialPromotionConfig,\n-                        layoutScroll: layoutScroll\n-                    });\n-                }\n-                var VisualElementHandler = /** @class */ function(_super) {\n-                    tslib.__extends(VisualElementHandler, _super);\n \n-                    function VisualElementHandler() {\n-                        return _super !== null && _super.apply(this, arguments) || this;\n+                    function isEmpty(obj) {\n+                        for (var n in obj) {\n+                            if (obj.hasOwnProperty(n) && obj[n]) {\n+                                return false;\n+                            }\n+                        }\n+                        return true;\n                     }\n-                    /**\n-                     * Update visual element props as soon as we know this update is going to be commited.\n-                     */\n-                    VisualElementHandler.prototype.getSnapshotBeforeUpdate = function() {\n-                        this.updateProps();\n-                        return null;\n-                    };\n-                    VisualElementHandler.prototype.componentDidUpdate = function() {};\n-                    VisualElementHandler.prototype.updateProps = function() {\n-                        var _a = this.props,\n-                            visualElement = _a.visualElement,\n-                            props = _a.props;\n-                        if (visualElement) visualElement.setProps(props);\n-                    };\n-                    VisualElementHandler.prototype.render = function() {\n-                        return this.props.children;\n-                    };\n-                    return VisualElementHandler;\n-                }(React__default[\"default\"].Component);\n \n-                /**\n-                 * Create a `motion` component.\n-                 *\n-                 * This function accepts a Component argument, which can be either a string (ie \"div\"\n-                 * for `motion.div`), or an actual React component.\n-                 *\n-                 * Alongside this is a config option which provides a way of rendering the provided\n-                 * component \"offline\", or outside the React render cycle.\n-                 */\n-                function createMotionComponent(_a) {\n+                    // Extending unicode characters. A series of a non-extending char +\n+                    // any number of extending chars is treated as a single unit as far\n+                    // as editing and measuring is concerned. This is not fully correct,\n+                    // since some scripts/fonts/browsers also treat other configurations\n+                    // of code points as a group.\n+                    var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n+\n+                    function isExtendingChar(ch) {\n+                        return ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n+                    }\n+\n+                    // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n+                    function skipExtendingChars(str, pos, dir) {\n+                        while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) {\n+                            pos += dir;\n+                        }\n+                        return pos;\n+                    }\n+\n+                    // Returns the value from the range [`from`; `to`] that satisfies\n+                    // `pred` and is closest to `from`. Assumes that at least `to`\n+                    // satisfies `pred`. Supports `from` being greater than `to`.\n+                    function findFirst(pred, from, to) {\n+                        // At any point we are certain `to` satisfies `pred`, don't know\n+                        // whether `from` does.\n+                        var dir = from > to ? -1 : 1;\n+                        for (;;) {\n+                            if (from == to) {\n+                                return from;\n+                            }\n+                            var midF = (from + to) / 2,\n+                                mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n+                            if (mid == from) {\n+                                return pred(mid) ? from : to;\n+                            }\n+                            if (pred(mid)) {\n+                                to = mid;\n+                            } else {\n+                                from = mid + dir;\n+                            }\n+                        }\n+                    }\n+\n+                    // BIDI HELPERS\n+\n+                    function iterateBidiSections(order, from, to, f) {\n+                        if (!order) {\n+                            return f(from, to, \"ltr\", 0);\n+                        }\n+                        var found = false;\n+                        for (var i = 0; i < order.length; ++i) {\n+                            var part = order[i];\n+                            if (part.from < to && part.to > from || from == to && part.to == from) {\n+                                f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n+                                found = true;\n+                            }\n+                        }\n+                        if (!found) {\n+                            f(from, to, \"ltr\");\n+                        }\n+                    }\n+                    var bidiOther = null;\n+\n+                    function getBidiPartAt(order, ch, sticky) {\n+                        var found;\n+                        bidiOther = null;\n+                        for (var i = 0; i < order.length; ++i) {\n+                            var cur = order[i];\n+                            if (cur.from < ch && cur.to > ch) {\n+                                return i;\n+                            }\n+                            if (cur.to == ch) {\n+                                if (cur.from != cur.to && sticky == \"before\") {\n+                                    found = i;\n+                                } else {\n+                                    bidiOther = i;\n+                                }\n+                            }\n+                            if (cur.from == ch) {\n+                                if (cur.from != cur.to && sticky != \"before\") {\n+                                    found = i;\n+                                } else {\n+                                    bidiOther = i;\n+                                }\n+                            }\n+                        }\n+                        return found != null ? found : bidiOther;\n+                    }\n+\n+                    // Bidirectional ordering algorithm\n+                    // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n+                    // that this (partially) implements.\n+\n+                    // One-char codes used for character types:\n+                    // L (L):   Left-to-Right\n+                    // R (R):   Right-to-Left\n+                    // r (AL):  Right-to-Left Arabic\n+                    // 1 (EN):  European Number\n+                    // + (ES):  European Number Separator\n+                    // % (ET):  European Number Terminator\n+                    // n (AN):  Arabic Number\n+                    // , (CS):  Common Number Separator\n+                    // m (NSM): Non-Spacing Mark\n+                    // b (BN):  Boundary Neutral\n+                    // s (B):   Paragraph Separator\n+                    // t (S):   Segment Separator\n+                    // w (WS):  Whitespace\n+                    // N (ON):  Other Neutrals\n+\n+                    // Returns null if characters are ordered as they appear\n+                    // (left-to-right), or an array of sections ({from, to, level}\n+                    // objects) in the order in which they occur visually.\n+                    var bidiOrdering = function() {\n+                        // Character types for codepoints 0 to 0xff\n+                        var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n+                        // Character types for codepoints 0x600 to 0x6f9\n+                        var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n+\n+                        function charType(code) {\n+                            if (code <= 0xf7) {\n+                                return lowTypes.charAt(code);\n+                            } else if (0x590 <= code && code <= 0x5f4) {\n+                                return \"R\";\n+                            } else if (0x600 <= code && code <= 0x6f9) {\n+                                return arabicTypes.charAt(code - 0x600);\n+                            } else if (0x6ee <= code && code <= 0x8ac) {\n+                                return \"r\";\n+                            } else if (0x2000 <= code && code <= 0x200b) {\n+                                return \"w\";\n+                            } else if (code == 0x200c) {\n+                                return \"b\";\n+                            } else {\n+                                return \"L\";\n+                            }\n+                        }\n+                        var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n+                        var isNeutral = /[stwN]/,\n+                            isStrong = /[LRr]/,\n+                            countsAsLeft = /[Lb1n]/,\n+                            countsAsNum = /[1n]/;\n+\n+                        function BidiSpan(level, from, to) {\n+                            this.level = level;\n+                            this.from = from;\n+                            this.to = to;\n+                        }\n+                        return function(str, direction) {\n+                            var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n+                            if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) {\n+                                return false;\n+                            }\n+                            var len = str.length,\n+                                types = [];\n+                            for (var i = 0; i < len; ++i) {\n+                                types.push(charType(str.charCodeAt(i)));\n+                            }\n+\n+                            // W1. Examine each non-spacing mark (NSM) in the level run, and\n+                            // change the type of the NSM to the type of the previous\n+                            // character. If the NSM is at the start of the level run, it will\n+                            // get the type of sor.\n+                            for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n+                                var type = types[i$1];\n+                                if (type == \"m\") {\n+                                    types[i$1] = prev;\n+                                } else {\n+                                    prev = type;\n+                                }\n+                            }\n+\n+                            // W2. Search backwards from each instance of a European number\n+                            // until the first strong type (R, L, AL, or sor) is found. If an\n+                            // AL is found, change the type of the European number to Arabic\n+                            // number.\n+                            // W3. Change all ALs to R.\n+                            for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n+                                var type$1 = types[i$2];\n+                                if (type$1 == \"1\" && cur == \"r\") {\n+                                    types[i$2] = \"n\";\n+                                } else if (isStrong.test(type$1)) {\n+                                    cur = type$1;\n+                                    if (type$1 == \"r\") {\n+                                        types[i$2] = \"R\";\n+                                    }\n+                                }\n+                            }\n+\n+                            // W4. A single European separator between two European numbers\n+                            // changes to a European number. A single common separator between\n+                            // two numbers of the same type changes to that type.\n+                            for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n+                                var type$2 = types[i$3];\n+                                if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3 + 1] == \"1\") {\n+                                    types[i$3] = \"1\";\n+                                } else if (type$2 == \",\" && prev$1 == types[i$3 + 1] && (prev$1 == \"1\" || prev$1 == \"n\")) {\n+                                    types[i$3] = prev$1;\n+                                }\n+                                prev$1 = type$2;\n+                            }\n+\n+                            // W5. A sequence of European terminators adjacent to European\n+                            // numbers changes to all European numbers.\n+                            // W6. Otherwise, separators and terminators change to Other\n+                            // Neutral.\n+                            for (var i$4 = 0; i$4 < len; ++i$4) {\n+                                var type$3 = types[i$4];\n+                                if (type$3 == \",\") {\n+                                    types[i$4] = \"N\";\n+                                } else if (type$3 == \"%\") {\n+                                    var end = void 0;\n+                                    for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n+                                    var replace = i$4 && types[i$4 - 1] == \"!\" || end < len && types[end] == \"1\" ? \"1\" : \"N\";\n+                                    for (var j = i$4; j < end; ++j) {\n+                                        types[j] = replace;\n+                                    }\n+                                    i$4 = end - 1;\n+                                }\n+                            }\n+\n+                            // W7. Search backwards from each instance of a European number\n+                            // until the first strong type (R, L, or sor) is found. If an L is\n+                            // found, then change the type of the European number to L.\n+                            for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n+                                var type$4 = types[i$5];\n+                                if (cur$1 == \"L\" && type$4 == \"1\") {\n+                                    types[i$5] = \"L\";\n+                                } else if (isStrong.test(type$4)) {\n+                                    cur$1 = type$4;\n+                                }\n+                            }\n+\n+                            // N1. A sequence of neutrals takes the direction of the\n+                            // surrounding strong text if the text on both sides has the same\n+                            // direction. European and Arabic numbers act as if they were R in\n+                            // terms of their influence on neutrals. Start-of-level-run (sor)\n+                            // and end-of-level-run (eor) are used at level run boundaries.\n+                            // N2. Any remaining neutrals take the embedding direction.\n+                            for (var i$6 = 0; i$6 < len; ++i$6) {\n+                                if (isNeutral.test(types[i$6])) {\n+                                    var end$1 = void 0;\n+                                    for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n+                                    var before = (i$6 ? types[i$6 - 1] : outerType) == \"L\";\n+                                    var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n+                                    var replace$1 = before == after ? before ? \"L\" : \"R\" : outerType;\n+                                    for (var j$1 = i$6; j$1 < end$1; ++j$1) {\n+                                        types[j$1] = replace$1;\n+                                    }\n+                                    i$6 = end$1 - 1;\n+                                }\n+                            }\n+\n+                            // Here we depart from the documented algorithm, in order to avoid\n+                            // building up an actual levels array. Since there are only three\n+                            // levels (0, 1, 2) in an implementation that doesn't take\n+                            // explicit embedding into account, we can build up the order on\n+                            // the fly, without following the level-based algorithm.\n+                            var order = [],\n+                                m;\n+                            for (var i$7 = 0; i$7 < len;) {\n+                                if (countsAsLeft.test(types[i$7])) {\n+                                    var start = i$7;\n+                                    for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n+                                    order.push(new BidiSpan(0, start, i$7));\n+                                } else {\n+                                    var pos = i$7,\n+                                        at = order.length,\n+                                        isRTL = direction == \"rtl\" ? 1 : 0;\n+                                    for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n+                                    for (var j$2 = pos; j$2 < i$7;) {\n+                                        if (countsAsNum.test(types[j$2])) {\n+                                            if (pos < j$2) {\n+                                                order.splice(at, 0, new BidiSpan(1, pos, j$2));\n+                                                at += isRTL;\n+                                            }\n+                                            var nstart = j$2;\n+                                            for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n+                                            order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n+                                            at += isRTL;\n+                                            pos = j$2;\n+                                        } else {\n+                                            ++j$2;\n+                                        }\n+                                    }\n+                                    if (pos < i$7) {\n+                                        order.splice(at, 0, new BidiSpan(1, pos, i$7));\n+                                    }\n+                                }\n+                            }\n+                            if (direction == \"ltr\") {\n+                                if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n+                                    order[0].from = m[0].length;\n+                                    order.unshift(new BidiSpan(0, 0, m[0].length));\n+                                }\n+                                if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n+                                    lst(order).to -= m[0].length;\n+                                    order.push(new BidiSpan(0, len - m[0].length, len));\n+                                }\n+                            }\n+                            return direction == \"rtl\" ? order.reverse() : order;\n+                        };\n+                    }();\n+\n+                    // Get the bidi ordering for the given line (and cache it). Returns\n+                    // false for lines that are fully left-to-right, and an array of\n+                    // BidiSpan objects otherwise.\n+                    function getOrder(line, direction) {\n+                        var order = line.order;\n+                        if (order == null) {\n+                            order = line.order = bidiOrdering(line.text, direction);\n+                        }\n+                        return order;\n+                    }\n+\n+                    // EVENT HANDLING\n+\n+                    // Lightweight event framework. on/off also work on DOM nodes,\n+                    // registering native DOM handlers.\n+\n+                    var noHandlers = [];\n+                    var on = function(emitter, type, f) {\n+                        if (emitter.addEventListener) {\n+                            emitter.addEventListener(type, f, false);\n+                        } else if (emitter.attachEvent) {\n+                            emitter.attachEvent(\"on\" + type, f);\n+                        } else {\n+                            var map = emitter._handlers || (emitter._handlers = {});\n+                            map[type] = (map[type] || noHandlers).concat(f);\n+                        }\n+                    };\n+\n+                    function getHandlers(emitter, type) {\n+                        return emitter._handlers && emitter._handlers[type] || noHandlers;\n+                    }\n+\n+                    function off(emitter, type, f) {\n+                        if (emitter.removeEventListener) {\n+                            emitter.removeEventListener(type, f, false);\n+                        } else if (emitter.detachEvent) {\n+                            emitter.detachEvent(\"on\" + type, f);\n+                        } else {\n+                            var map = emitter._handlers,\n+                                arr = map && map[type];\n+                            if (arr) {\n+                                var index = indexOf(arr, f);\n+                                if (index > -1) {\n+                                    map[type] = arr.slice(0, index).concat(arr.slice(index + 1));\n+                                }\n+                            }\n+                        }\n+                    }\n+\n+                    function signal(emitter, type /*, values...*/ ) {\n+                        var handlers = getHandlers(emitter, type);\n+                        if (!handlers.length) {\n+                            return;\n+                        }\n+                        var args = Array.prototype.slice.call(arguments, 2);\n+                        for (var i = 0; i < handlers.length; ++i) {\n+                            handlers[i].apply(null, args);\n+                        }\n+                    }\n+\n+                    // The DOM events that CodeMirror handles can be overridden by\n+                    // registering a (non-DOM) handler on the editor for the event name,\n+                    // and preventDefault-ing the event in that handler.\n+                    function signalDOMEvent(cm, e, override) {\n+                        if (typeof e == \"string\") {\n+                            e = {\n+                                type: e,\n+                                preventDefault: function() {\n+                                    this.defaultPrevented = true;\n+                                }\n+                            };\n+                        }\n+                        signal(cm, override || e.type, cm, e);\n+                        return e_defaultPrevented(e) || e.codemirrorIgnore;\n+                    }\n+\n+                    function signalCursorActivity(cm) {\n+                        var arr = cm._handlers && cm._handlers.cursorActivity;\n+                        if (!arr) {\n+                            return;\n+                        }\n+                        var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n+                        for (var i = 0; i < arr.length; ++i) {\n+                            if (indexOf(set, arr[i]) == -1) {\n+                                set.push(arr[i]);\n+                            }\n+                        }\n+                    }\n+\n+                    function hasHandler(emitter, type) {\n+                        return getHandlers(emitter, type).length > 0;\n+                    }\n+\n+                    // Add on and off methods to a constructor's prototype, to make\n+                    // registering events on such objects more convenient.\n+                    function eventMixin(ctor) {\n+                        ctor.prototype.on = function(type, f) {\n+                            on(this, type, f);\n+                        };\n+                        ctor.prototype.off = function(type, f) {\n+                            off(this, type, f);\n+                        };\n+                    }\n+\n+                    // Due to the fact that we still support jurassic IE versions, some\n+                    // compatibility wrappers are needed.\n+\n+                    function e_preventDefault(e) {\n+                        if (e.preventDefault) {\n+                            e.preventDefault();\n+                        } else {\n+                            e.returnValue = false;\n+                        }\n+                    }\n+\n+                    function e_stopPropagation(e) {\n+                        if (e.stopPropagation) {\n+                            e.stopPropagation();\n+                        } else {\n+                            e.cancelBubble = true;\n+                        }\n+                    }\n+\n+                    function e_defaultPrevented(e) {\n+                        return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false;\n+                    }\n+\n+                    function e_stop(e) {\n+                        e_preventDefault(e);\n+                        e_stopPropagation(e);\n+                    }\n+\n+                    function e_target(e) {\n+                        return e.target || e.srcElement;\n+                    }\n+\n+                    function e_button(e) {\n+                        var b = e.which;\n+                        if (b == null) {\n+                            if (e.button & 1) {\n+                                b = 1;\n+                            } else if (e.button & 2) {\n+                                b = 3;\n+                            } else if (e.button & 4) {\n+                                b = 2;\n+                            }\n+                        }\n+                        if (mac && e.ctrlKey && b == 1) {\n+                            b = 3;\n+                        }\n+                        return b;\n+                    }\n+\n+                    // Detect drag-and-drop\n+                    var dragAndDrop = function() {\n+                        // There is *some* kind of drag-and-drop support in IE6-8, but I\n+                        // couldn't get it to work yet.\n+                        if (ie && ie_version < 9) {\n+                            return false;\n+                        }\n+                        var div = elt('div');\n+                        return \"draggable\" in div || \"dragDrop\" in div;\n+                    }();\n+                    var zwspSupported;\n+\n+                    function zeroWidthElement(measure) {\n+                        if (zwspSupported == null) {\n+                            var test = elt(\"span\", \"\\u200b\");\n+                            removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n+                            if (measure.firstChild.offsetHeight != 0) {\n+                                zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);\n+                            }\n+                        }\n+                        var node = zwspSupported ? elt(\"span\", \"\\u200b\") : elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n+                        node.setAttribute(\"cm-text\", \"\");\n+                        return node;\n+                    }\n+\n+                    // Feature-detect IE's crummy client rect reporting for bidi text\n+                    var badBidiRects;\n+\n+                    function hasBadBidiRects(measure) {\n+                        if (badBidiRects != null) {\n+                            return badBidiRects;\n+                        }\n+                        var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n+                        var r0 = range(txt, 0, 1).getBoundingClientRect();\n+                        var r1 = range(txt, 1, 2).getBoundingClientRect();\n+                        removeChildren(measure);\n+                        if (!r0 || r0.left == r0.right) {\n+                            return false;\n+                        } // Safari returns null in some cases (#2780)\n+                        return badBidiRects = r1.right - r0.right < 3;\n+                    }\n+\n+                    // See if \"\".split is the broken IE version, if so, provide an\n+                    // alternative way to split lines.\n+                    var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function(string) {\n+                        var pos = 0,\n+                            result = [],\n+                            l = string.length;\n+                        while (pos <= l) {\n+                            var nl = string.indexOf(\"\\n\", pos);\n+                            if (nl == -1) {\n+                                nl = string.length;\n+                            }\n+                            var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n+                            var rt = line.indexOf(\"\\r\");\n+                            if (rt != -1) {\n+                                result.push(line.slice(0, rt));\n+                                pos += rt + 1;\n+                            } else {\n+                                result.push(line);\n+                                pos = nl + 1;\n+                            }\n+                        }\n+                        return result;\n+                    } : function(string) {\n+                        return string.split(/\\r\\n?|\\n/);\n+                    };\n+                    var hasSelection = window.getSelection ? function(te) {\n+                        try {\n+                            return te.selectionStart != te.selectionEnd;\n+                        } catch (e) {\n+                            return false;\n+                        }\n+                    } : function(te) {\n+                        var range;\n+                        try {\n+                            range = te.ownerDocument.selection.createRange();\n+                        } catch (e) {}\n+                        if (!range || range.parentElement() != te) {\n+                            return false;\n+                        }\n+                        return range.compareEndPoints(\"StartToEnd\", range) != 0;\n+                    };\n+                    var hasCopyEvent = function() {\n+                        var e = elt(\"div\");\n+                        if (\"oncopy\" in e) {\n+                            return true;\n+                        }\n+                        e.setAttribute(\"oncopy\", \"return;\");\n+                        return typeof e.oncopy == \"function\";\n+                    }();\n+                    var badZoomedRects = null;\n+\n+                    function hasBadZoomedRects(measure) {\n+                        if (badZoomedRects != null) {\n+                            return badZoomedRects;\n+                        }\n+                        var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n+                        var normal = node.getBoundingClientRect();\n+                        var fromRange = range(node, 0, 1).getBoundingClientRect();\n+                        return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1;\n+                    }\n+\n+                    // Known modes, by name and by MIME\n+                    var modes = {},\n+                        mimeModes = {};\n+\n+                    // Extra arguments are stored as the mode's dependencies, which is\n+                    // used by (legacy) mechanisms like loadmode.js to automatically\n+                    // load a mode. (Preferred mechanism is the require/define calls.)\n+                    function defineMode(name, mode) {\n+                        if (arguments.length > 2) {\n+                            mode.dependencies = Array.prototype.slice.call(arguments, 2);\n+                        }\n+                        modes[name] = mode;\n+                    }\n+\n+                    function defineMIME(mime, spec) {\n+                        mimeModes[mime] = spec;\n+                    }\n+\n+                    // Given a MIME type, a {name, ...options} config object, or a name\n+                    // string, return a mode config object.\n+                    function resolveMode(spec) {\n+                        if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n+                            spec = mimeModes[spec];\n+                        } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n+                            var found = mimeModes[spec.name];\n+                            if (typeof found == \"string\") {\n+                                found = {\n+                                    name: found\n+                                };\n+                            }\n+                            spec = createObj(found, spec);\n+                            spec.name = found.name;\n+                        } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n+                            return resolveMode(\"application/xml\");\n+                        } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n+                            return resolveMode(\"application/json\");\n+                        }\n+                        if (typeof spec == \"string\") {\n+                            return {\n+                                name: spec\n+                            };\n+                        } else {\n+                            return spec || {\n+                                name: \"null\"\n+                            };\n+                        }\n+                    }\n+\n+                    // Given a mode spec (anything that resolveMode accepts), find and\n+                    // initialize an actual mode object.\n+                    function getMode(options, spec) {\n+                        spec = resolveMode(spec);\n+                        var mfactory = modes[spec.name];\n+                        if (!mfactory) {\n+                            return getMode(options, \"text/plain\");\n+                        }\n+                        var modeObj = mfactory(options, spec);\n+                        if (modeExtensions.hasOwnProperty(spec.name)) {\n+                            var exts = modeExtensions[spec.name];\n+                            for (var prop in exts) {\n+                                if (!exts.hasOwnProperty(prop)) {\n+                                    continue;\n+                                }\n+                                if (modeObj.hasOwnProperty(prop)) {\n+                                    modeObj[\"_\" + prop] = modeObj[prop];\n+                                }\n+                                modeObj[prop] = exts[prop];\n+                            }\n+                        }\n+                        modeObj.name = spec.name;\n+                        if (spec.helperType) {\n+                            modeObj.helperType = spec.helperType;\n+                        }\n+                        if (spec.modeProps) {\n+                            for (var prop$1 in spec.modeProps) {\n+                                modeObj[prop$1] = spec.modeProps[prop$1];\n+                            }\n+                        }\n+                        return modeObj;\n+                    }\n+\n+                    // This can be used to attach properties to mode objects from\n+                    // outside the actual mode definition.\n+                    var modeExtensions = {};\n+\n+                    function extendMode(mode, properties) {\n+                        var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : modeExtensions[mode] = {};\n+                        copyObj(properties, exts);\n+                    }\n+\n+                    function copyState(mode, state) {\n+                        if (state === true) {\n+                            return state;\n+                        }\n+                        if (mode.copyState) {\n+                            return mode.copyState(state);\n+                        }\n+                        var nstate = {};\n+                        for (var n in state) {\n+                            var val = state[n];\n+                            if (val instanceof Array) {\n+                                val = val.concat([]);\n+                            }\n+                            nstate[n] = val;\n+                        }\n+                        return nstate;\n+                    }\n+\n+                    // Given a mode and a state (for that mode), find the inner mode and\n+                    // state at the position that the state refers to.\n+                    function innerMode(mode, state) {\n+                        var info;\n+                        while (mode.innerMode) {\n+                            info = mode.innerMode(state);\n+                            if (!info || info.mode == mode) {\n+                                break;\n+                            }\n+                            state = info.state;\n+                            mode = info.mode;\n+                        }\n+                        return info || {\n+                            mode: mode,\n+                            state: state\n+                        };\n+                    }\n+\n+                    function startState(mode, a1, a2) {\n+                        return mode.startState ? mode.startState(a1, a2) : true;\n+                    }\n+\n+                    // STRING STREAM\n+\n+                    // Fed to the mode parsers, provides helper functions to make\n+                    // parsers more succinct.\n+\n+                    var StringStream = function(string, tabSize, lineOracle) {\n+                        this.pos = this.start = 0;\n+                        this.string = string;\n+                        this.tabSize = tabSize || 8;\n+                        this.lastColumnPos = this.lastColumnValue = 0;\n+                        this.lineStart = 0;\n+                        this.lineOracle = lineOracle;\n+                    };\n+                    StringStream.prototype.eol = function() {\n+                        return this.pos >= this.string.length;\n+                    };\n+                    StringStream.prototype.sol = function() {\n+                        return this.pos == this.lineStart;\n+                    };\n+                    StringStream.prototype.peek = function() {\n+                        return this.string.charAt(this.pos) || undefined;\n+                    };\n+                    StringStream.prototype.next = function() {\n+                        if (this.pos < this.string.length) {\n+                            return this.string.charAt(this.pos++);\n+                        }\n+                    };\n+                    StringStream.prototype.eat = function(match) {\n+                        var ch = this.string.charAt(this.pos);\n+                        var ok;\n+                        if (typeof match == \"string\") {\n+                            ok = ch == match;\n+                        } else {\n+                            ok = ch && (match.test ? match.test(ch) : match(ch));\n+                        }\n+                        if (ok) {\n+                            ++this.pos;\n+                            return ch;\n+                        }\n+                    };\n+                    StringStream.prototype.eatWhile = function(match) {\n+                        var start = this.pos;\n+                        while (this.eat(match)) {}\n+                        return this.pos > start;\n+                    };\n+                    StringStream.prototype.eatSpace = function() {\n+                        var start = this.pos;\n+                        while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) {\n+                            ++this.pos;\n+                        }\n+                        return this.pos > start;\n+                    };\n+                    StringStream.prototype.skipToEnd = function() {\n+                        this.pos = this.string.length;\n+                    };\n+                    StringStream.prototype.skipTo = function(ch) {\n+                        var found = this.string.indexOf(ch, this.pos);\n+                        if (found > -1) {\n+                            this.pos = found;\n+                            return true;\n+                        }\n+                    };\n+                    StringStream.prototype.backUp = function(n) {\n+                        this.pos -= n;\n+                    };\n+                    StringStream.prototype.column = function() {\n+                        if (this.lastColumnPos < this.start) {\n+                            this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n+                            this.lastColumnPos = this.start;\n+                        }\n+                        return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n+                    };\n+                    StringStream.prototype.indentation = function() {\n+                        return countColumn(this.string, null, this.tabSize) - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n+                    };\n+                    StringStream.prototype.match = function(pattern, consume, caseInsensitive) {\n+                        if (typeof pattern == \"string\") {\n+                            var cased = function(str) {\n+                                return caseInsensitive ? str.toLowerCase() : str;\n+                            };\n+                            var substr = this.string.substr(this.pos, pattern.length);\n+                            if (cased(substr) == cased(pattern)) {\n+                                if (consume !== false) {\n+                                    this.pos += pattern.length;\n+                                }\n+                                return true;\n+                            }\n+                        } else {\n+                            var match = this.string.slice(this.pos).match(pattern);\n+                            if (match && match.index > 0) {\n+                                return null;\n+                            }\n+                            if (match && consume !== false) {\n+                                this.pos += match[0].length;\n+                            }\n+                            return match;\n+                        }\n+                    };\n+                    StringStream.prototype.current = function() {\n+                        return this.string.slice(this.start, this.pos);\n+                    };\n+                    StringStream.prototype.hideFirstChars = function(n, inner) {\n+                        this.lineStart += n;\n+                        try {\n+                            return inner();\n+                        } finally {\n+                            this.lineStart -= n;\n+                        }\n+                    };\n+                    StringStream.prototype.lookAhead = function(n) {\n+                        var oracle = this.lineOracle;\n+                        return oracle && oracle.lookAhead(n);\n+                    };\n+                    StringStream.prototype.baseToken = function() {\n+                        var oracle = this.lineOracle;\n+                        return oracle && oracle.baseToken(this.pos);\n+                    };\n+\n+                    // Find the line object corresponding to the given line number.\n+                    function getLine(doc, n) {\n+                        n -= doc.first;\n+                        if (n < 0 || n >= doc.size) {\n+                            throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\");\n+                        }\n+                        var chunk = doc;\n+                        while (!chunk.lines) {\n+                            for (var i = 0;; ++i) {\n+                                var child = chunk.children[i],\n+                                    sz = child.chunkSize();\n+                                if (n < sz) {\n+                                    chunk = child;\n+                                    break;\n+                                }\n+                                n -= sz;\n+                            }\n+                        }\n+                        return chunk.lines[n];\n+                    }\n+\n+                    // Get the part of a document between two positions, as an array of\n+                    // strings.\n+                    function getBetween(doc, start, end) {\n+                        var out = [],\n+                            n = start.line;\n+                        doc.iter(start.line, end.line + 1, function(line) {\n+                            var text = line.text;\n+                            if (n == end.line) {\n+                                text = text.slice(0, end.ch);\n+                            }\n+                            if (n == start.line) {\n+                                text = text.slice(start.ch);\n+                            }\n+                            out.push(text);\n+                            ++n;\n+                        });\n+                        return out;\n+                    }\n+                    // Get the lines between from and to, as array of strings.\n+                    function getLines(doc, from, to) {\n+                        var out = [];\n+                        doc.iter(from, to, function(line) {\n+                            out.push(line.text);\n+                        }); // iter aborts when callback returns truthy value\n+                        return out;\n+                    }\n+\n+                    // Update the height of a line, propagating the height change\n+                    // upwards to parent nodes.\n+                    function updateLineHeight(line, height) {\n+                        var diff = height - line.height;\n+                        if (diff) {\n+                            for (var n = line; n; n = n.parent) {\n+                                n.height += diff;\n+                            }\n+                        }\n+                    }\n+\n+                    // Given a line object, find its line number by walking up through\n+                    // its parent links.\n+                    function lineNo(line) {\n+                        if (line.parent == null) {\n+                            return null;\n+                        }\n+                        var cur = line.parent,\n+                            no = indexOf(cur.lines, line);\n+                        for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n+                            for (var i = 0;; ++i) {\n+                                if (chunk.children[i] == cur) {\n+                                    break;\n+                                }\n+                                no += chunk.children[i].chunkSize();\n+                            }\n+                        }\n+                        return no + cur.first;\n+                    }\n+\n+                    // Find the line at the given vertical position, using the height\n+                    // information in the document tree.\n+                    function lineAtHeight(chunk, h) {\n+                        var n = chunk.first;\n+                        outer: do {\n+                            for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n+                                var child = chunk.children[i$1],\n+                                    ch = child.height;\n+                                if (h < ch) {\n+                                    chunk = child;\n+                                    continue outer;\n+                                }\n+                                h -= ch;\n+                                n += child.chunkSize();\n+                            }\n+                            return n;\n+                        } while (!chunk.lines);\n+                        var i = 0;\n+                        for (; i < chunk.lines.length; ++i) {\n+                            var line = chunk.lines[i],\n+                                lh = line.height;\n+                            if (h < lh) {\n+                                break;\n+                            }\n+                            h -= lh;\n+                        }\n+                        return n + i;\n+                    }\n+\n+                    function isLine(doc, l) {\n+                        return l >= doc.first && l < doc.first + doc.size;\n+                    }\n+\n+                    function lineNumberFor(options, i) {\n+                        return String(options.lineNumberFormatter(i + options.firstLineNumber));\n+                    }\n+\n+                    // A Pos instance represents a position within the text.\n+                    function Pos(line, ch, sticky) {\n+                        if (sticky === void 0) sticky = null;\n+                        if (!(this instanceof Pos)) {\n+                            return new Pos(line, ch, sticky);\n+                        }\n+                        this.line = line;\n+                        this.ch = ch;\n+                        this.sticky = sticky;\n+                    }\n+\n+                    // Compare two positions, return 0 if they are the same, a negative\n+                    // number when a is less, and a positive number otherwise.\n+                    function cmp(a, b) {\n+                        return a.line - b.line || a.ch - b.ch;\n+                    }\n+\n+                    function equalCursorPos(a, b) {\n+                        return a.sticky == b.sticky && cmp(a, b) == 0;\n+                    }\n+\n+                    function copyPos(x) {\n+                        return Pos(x.line, x.ch);\n+                    }\n+\n+                    function maxPos(a, b) {\n+                        return cmp(a, b) < 0 ? b : a;\n+                    }\n+\n+                    function minPos(a, b) {\n+                        return cmp(a, b) < 0 ? a : b;\n+                    }\n+\n+                    // Most of the external API clips given positions to make sure they\n+                    // actually exist within the document.\n+                    function clipLine(doc, n) {\n+                        return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));\n+                    }\n+\n+                    function clipPos(doc, pos) {\n+                        if (pos.line < doc.first) {\n+                            return Pos(doc.first, 0);\n+                        }\n+                        var last = doc.first + doc.size - 1;\n+                        if (pos.line > last) {\n+                            return Pos(last, getLine(doc, last).text.length);\n+                        }\n+                        return clipToLen(pos, getLine(doc, pos.line).text.length);\n+                    }\n+\n+                    function clipToLen(pos, linelen) {\n+                        var ch = pos.ch;\n+                        if (ch == null || ch > linelen) {\n+                            return Pos(pos.line, linelen);\n+                        } else if (ch < 0) {\n+                            return Pos(pos.line, 0);\n+                        } else {\n+                            return pos;\n+                        }\n+                    }\n+\n+                    function clipPosArray(doc, array) {\n+                        var out = [];\n+                        for (var i = 0; i < array.length; i++) {\n+                            out[i] = clipPos(doc, array[i]);\n+                        }\n+                        return out;\n+                    }\n+                    var SavedContext = function(state, lookAhead) {\n+                        this.state = state;\n+                        this.lookAhead = lookAhead;\n+                    };\n+                    var Context = function(doc, state, line, lookAhead) {\n+                        this.state = state;\n+                        this.doc = doc;\n+                        this.line = line;\n+                        this.maxLookAhead = lookAhead || 0;\n+                        this.baseTokens = null;\n+                        this.baseTokenPos = 1;\n+                    };\n+                    Context.prototype.lookAhead = function(n) {\n+                        var line = this.doc.getLine(this.line + n);\n+                        if (line != null && n > this.maxLookAhead) {\n+                            this.maxLookAhead = n;\n+                        }\n+                        return line;\n+                    };\n+                    Context.prototype.baseToken = function(n) {\n+                        if (!this.baseTokens) {\n+                            return null;\n+                        }\n+                        while (this.baseTokens[this.baseTokenPos] <= n) {\n+                            this.baseTokenPos += 2;\n+                        }\n+                        var type = this.baseTokens[this.baseTokenPos + 1];\n+                        return {\n+                            type: type && type.replace(/( |^)overlay .*/, \"\"),\n+                            size: this.baseTokens[this.baseTokenPos] - n\n+                        };\n+                    };\n+                    Context.prototype.nextLine = function() {\n+                        this.line++;\n+                        if (this.maxLookAhead > 0) {\n+                            this.maxLookAhead--;\n+                        }\n+                    };\n+                    Context.fromSaved = function(doc, saved, line) {\n+                        if (saved instanceof SavedContext) {\n+                            return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead);\n+                        } else {\n+                            return new Context(doc, copyState(doc.mode, saved), line);\n+                        }\n+                    };\n+                    Context.prototype.save = function(copy) {\n+                        var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n+                        return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state;\n+                    };\n+\n+                    // Compute a style array (an array starting with a mode generation\n+                    // -- for invalidation -- followed by pairs of end positions and\n+                    // style strings), which is used to highlight the tokens on the\n+                    // line.\n+                    function highlightLine(cm, line, context, forceToEnd) {\n+                        // A styles array always starts with a number identifying the\n+                        // mode/overlays that it is based on (for easy invalidation).\n+                        var st = [cm.state.modeGen],\n+                            lineClasses = {};\n+                        // Compute the base array of styles\n+                        runMode(cm, line.text, cm.doc.mode, context, function(end, style) {\n+                            return st.push(end, style);\n+                        }, lineClasses, forceToEnd);\n+                        var state = context.state;\n+\n+                        // Run overlays, adjust style array.\n+                        var loop = function(o) {\n+                            context.baseTokens = st;\n+                            var overlay = cm.state.overlays[o],\n+                                i = 1,\n+                                at = 0;\n+                            context.state = true;\n+                            runMode(cm, line.text, overlay.mode, context, function(end, style) {\n+                                var start = i;\n+                                // Ensure there's a token end at the current position, and that i points at it\n+                                while (at < end) {\n+                                    var i_end = st[i];\n+                                    if (i_end > end) {\n+                                        st.splice(i, 1, end, st[i + 1], i_end);\n+                                    }\n+                                    i += 2;\n+                                    at = Math.min(end, i_end);\n+                                }\n+                                if (!style) {\n+                                    return;\n+                                }\n+                                if (overlay.opaque) {\n+                                    st.splice(start, i - start, end, \"overlay \" + style);\n+                                    i = start + 2;\n+                                } else {\n+                                    for (; start < i; start += 2) {\n+                                        var cur = st[start + 1];\n+                                        st[start + 1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n+                                    }\n+                                }\n+                            }, lineClasses);\n+                            context.state = state;\n+                            context.baseTokens = null;\n+                            context.baseTokenPos = 1;\n+                        };\n+                        for (var o = 0; o < cm.state.overlays.length; ++o) loop(o);\n+                        return {\n+                            styles: st,\n+                            classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null\n+                        };\n+                    }\n+\n+                    function getLineStyles(cm, line, updateFrontier) {\n+                        if (!line.styles || line.styles[0] != cm.state.modeGen) {\n+                            var context = getContextBefore(cm, lineNo(line));\n+                            var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n+                            var result = highlightLine(cm, line, context);\n+                            if (resetState) {\n+                                context.state = resetState;\n+                            }\n+                            line.stateAfter = context.save(!resetState);\n+                            line.styles = result.styles;\n+                            if (result.classes) {\n+                                line.styleClasses = result.classes;\n+                            } else if (line.styleClasses) {\n+                                line.styleClasses = null;\n+                            }\n+                            if (updateFrontier === cm.doc.highlightFrontier) {\n+                                cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier);\n+                            }\n+                        }\n+                        return line.styles;\n+                    }\n+\n+                    function getContextBefore(cm, n, precise) {\n+                        var doc = cm.doc,\n+                            display = cm.display;\n+                        if (!doc.mode.startState) {\n+                            return new Context(doc, true, n);\n+                        }\n+                        var start = findStartLine(cm, n, precise);\n+                        var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n+                        var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n+                        doc.iter(start, n, function(line) {\n+                            processLine(cm, line.text, context);\n+                            var pos = context.line;\n+                            line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n+                            context.nextLine();\n+                        });\n+                        if (precise) {\n+                            doc.modeFrontier = context.line;\n+                        }\n+                        return context;\n+                    }\n+\n+                    // Lightweight form of highlight -- proceed over this line and\n+                    // update state, but don't save a style array. Used for lines that\n+                    // aren't currently visible.\n+                    function processLine(cm, text, context, startAt) {\n+                        var mode = cm.doc.mode;\n+                        var stream = new StringStream(text, cm.options.tabSize, context);\n+                        stream.start = stream.pos = startAt || 0;\n+                        if (text == \"\") {\n+                            callBlankLine(mode, context.state);\n+                        }\n+                        while (!stream.eol()) {\n+                            readToken(mode, stream, context.state);\n+                            stream.start = stream.pos;\n+                        }\n+                    }\n+\n+                    function callBlankLine(mode, state) {\n+                        if (mode.blankLine) {\n+                            return mode.blankLine(state);\n+                        }\n+                        if (!mode.innerMode) {\n+                            return;\n+                        }\n+                        var inner = innerMode(mode, state);\n+                        if (inner.mode.blankLine) {\n+                            return inner.mode.blankLine(inner.state);\n+                        }\n+                    }\n+\n+                    function readToken(mode, stream, state, inner) {\n+                        for (var i = 0; i < 10; i++) {\n+                            if (inner) {\n+                                inner[0] = innerMode(mode, state).mode;\n+                            }\n+                            var style = mode.token(stream, state);\n+                            if (stream.pos > stream.start) {\n+                                return style;\n+                            }\n+                        }\n+                        throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\");\n+                    }\n+                    var Token = function(stream, type, state) {\n+                        this.start = stream.start;\n+                        this.end = stream.pos;\n+                        this.string = stream.current();\n+                        this.type = type || null;\n+                        this.state = state;\n+                    };\n+\n+                    // Utility for getTokenAt and getLineTokens\n+                    function takeToken(cm, pos, precise, asArray) {\n+                        var doc = cm.doc,\n+                            mode = doc.mode,\n+                            style;\n+                        pos = clipPos(doc, pos);\n+                        var line = getLine(doc, pos.line),\n+                            context = getContextBefore(cm, pos.line, precise);\n+                        var stream = new StringStream(line.text, cm.options.tabSize, context),\n+                            tokens;\n+                        if (asArray) {\n+                            tokens = [];\n+                        }\n+                        while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n+                            stream.start = stream.pos;\n+                            style = readToken(mode, stream, context.state);\n+                            if (asArray) {\n+                                tokens.push(new Token(stream, style, copyState(doc.mode, context.state)));\n+                            }\n+                        }\n+                        return asArray ? tokens : new Token(stream, style, context.state);\n+                    }\n+\n+                    function extractLineClasses(type, output) {\n+                        if (type) {\n+                            for (;;) {\n+                                var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n+                                if (!lineClass) {\n+                                    break;\n+                                }\n+                                type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n+                                var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n+                                if (output[prop] == null) {\n+                                    output[prop] = lineClass[2];\n+                                } else if (!new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\").test(output[prop])) {\n+                                    output[prop] += \" \" + lineClass[2];\n+                                }\n+                            }\n+                        }\n+                        return type;\n+                    }\n+\n+                    // Run the given mode's parser over a line, calling f for each token.\n+                    function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n+                        var flattenSpans = mode.flattenSpans;\n+                        if (flattenSpans == null) {\n+                            flattenSpans = cm.options.flattenSpans;\n+                        }\n+                        var curStart = 0,\n+                            curStyle = null;\n+                        var stream = new StringStream(text, cm.options.tabSize, context),\n+                            style;\n+                        var inner = cm.options.addModeClass && [null];\n+                        if (text == \"\") {\n+                            extractLineClasses(callBlankLine(mode, context.state), lineClasses);\n+                        }\n+                        while (!stream.eol()) {\n+                            if (stream.pos > cm.options.maxHighlightLength) {\n+                                flattenSpans = false;\n+                                if (forceToEnd) {\n+                                    processLine(cm, text, context, stream.pos);\n+                                }\n+                                stream.pos = text.length;\n+                                style = null;\n+                            } else {\n+                                style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n+                            }\n+                            if (inner) {\n+                                var mName = inner[0].name;\n+                                if (mName) {\n+                                    style = \"m-\" + (style ? mName + \" \" + style : mName);\n+                                }\n+                            }\n+                            if (!flattenSpans || curStyle != style) {\n+                                while (curStart < stream.start) {\n+                                    curStart = Math.min(stream.start, curStart + 5000);\n+                                    f(curStart, curStyle);\n+                                }\n+                                curStyle = style;\n+                            }\n+                            stream.start = stream.pos;\n+                        }\n+                        while (curStart < stream.pos) {\n+                            // Webkit seems to refuse to render text nodes longer than 57444\n+                            // characters, and returns inaccurate measurements in nodes\n+                            // starting around 5000 chars.\n+                            var pos = Math.min(stream.pos, curStart + 5000);\n+                            f(pos, curStyle);\n+                            curStart = pos;\n+                        }\n+                    }\n+\n+                    // Finds the line to start with when starting a parse. Tries to\n+                    // find a line with a stateAfter, so that it can start with a\n+                    // valid state. If that fails, it returns the line with the\n+                    // smallest indentation, which tends to need the least context to\n+                    // parse correctly.\n+                    function findStartLine(cm, n, precise) {\n+                        var minindent,\n+                            minline,\n+                            doc = cm.doc;\n+                        var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n+                        for (var search = n; search > lim; --search) {\n+                            if (search <= doc.first) {\n+                                return doc.first;\n+                            }\n+                            var line = getLine(doc, search - 1),\n+                                after = line.stateAfter;\n+                            if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) {\n+                                return search;\n+                            }\n+                            var indented = countColumn(line.text, null, cm.options.tabSize);\n+                            if (minline == null || minindent > indented) {\n+                                minline = search - 1;\n+                                minindent = indented;\n+                            }\n+                        }\n+                        return minline;\n+                    }\n+\n+                    function retreatFrontier(doc, n) {\n+                        doc.modeFrontier = Math.min(doc.modeFrontier, n);\n+                        if (doc.highlightFrontier < n - 10) {\n+                            return;\n+                        }\n+                        var start = doc.first;\n+                        for (var line = n - 1; line > start; line--) {\n+                            var saved = getLine(doc, line).stateAfter;\n+                            // change is on 3\n+                            // state on line 1 looked ahead 2 -- so saw 3\n+                            // test 1 + 2 < 3 should cover this\n+                            if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n+                                start = line + 1;\n+                                break;\n+                            }\n+                        }\n+                        doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n+                    }\n+\n+                    // Optimize some code when these features are not used.\n+                    var sawReadOnlySpans = false,\n+                        sawCollapsedSpans = false;\n+\n+                    function seeReadOnlySpans() {\n+                        sawReadOnlySpans = true;\n+                    }\n+\n+                    function seeCollapsedSpans() {\n+                        sawCollapsedSpans = true;\n+                    }\n+\n+                    // TEXTMARKER SPANS\n+\n+                    function MarkedSpan(marker, from, to) {\n+                        this.marker = marker;\n+                        this.from = from;\n+                        this.to = to;\n+                    }\n+\n+                    // Search an array of spans for a span matching the given marker.\n+                    function getMarkedSpanFor(spans, marker) {\n+                        if (spans) {\n+                            for (var i = 0; i < spans.length; ++i) {\n+                                var span = spans[i];\n+                                if (span.marker == marker) {\n+                                    return span;\n+                                }\n+                            }\n+                        }\n+                    }\n+\n+                    // Remove a span from an array, returning undefined if no spans are\n+                    // left (we don't store arrays for lines without spans).\n+                    function removeMarkedSpan(spans, span) {\n+                        var r;\n+                        for (var i = 0; i < spans.length; ++i) {\n+                            if (spans[i] != span) {\n+                                (r || (r = [])).push(spans[i]);\n+                            }\n+                        }\n+                        return r;\n+                    }\n+\n+                    // Add a span to a line.\n+                    function addMarkedSpan(line, span, op) {\n+                        var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet()));\n+                        if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n+                            line.markedSpans.push(span);\n+                        } else {\n+                            line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n+                            if (inThisOp) {\n+                                inThisOp.add(line.markedSpans);\n+                            }\n+                        }\n+                        span.marker.attachLine(line);\n+                    }\n+\n+                    // Used for the algorithm that adjusts markers for a change in the\n+                    // document. These functions cut an array of spans at a given\n+                    // character position, returning an array of remaining chunks (or\n+                    // undefined if nothing remains).\n+                    function markedSpansBefore(old, startCh, isInsert) {\n+                        var nw;\n+                        if (old) {\n+                            for (var i = 0; i < old.length; ++i) {\n+                                var span = old[i],\n+                                    marker = span.marker;\n+                                var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n+                                if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n+                                    var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);\n+                                    (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n+                                }\n+                            }\n+                        }\n+                        return nw;\n+                    }\n+\n+                    function markedSpansAfter(old, endCh, isInsert) {\n+                        var nw;\n+                        if (old) {\n+                            for (var i = 0; i < old.length; ++i) {\n+                                var span = old[i],\n+                                    marker = span.marker;\n+                                var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n+                                if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n+                                    var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);\n+                                    (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, span.to == null ? null : span.to - endCh));\n+                                }\n+                            }\n+                        }\n+                        return nw;\n+                    }\n+\n+                    // Given a change object, compute the new set of marker spans that\n+                    // cover the line in which the change took place. Removes spans\n+                    // entirely within the change, reconnects spans belonging to the\n+                    // same marker that appear on both sides of the change, and cuts off\n+                    // spans partially within the change. Returns an array of span\n+                    // arrays with one element for each line in (after) the change.\n+                    function stretchSpansOverChange(doc, change) {\n+                        if (change.full) {\n+                            return null;\n+                        }\n+                        var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n+                        var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n+                        if (!oldFirst && !oldLast) {\n+                            return null;\n+                        }\n+                        var startCh = change.from.ch,\n+                            endCh = change.to.ch,\n+                            isInsert = cmp(change.from, change.to) == 0;\n+                        // Get the spans that 'stick out' on both sides\n+                        var first = markedSpansBefore(oldFirst, startCh, isInsert);\n+                        var last = markedSpansAfter(oldLast, endCh, isInsert);\n+\n+                        // Next, merge those two ends\n+                        var sameLine = change.text.length == 1,\n+                            offset = lst(change.text).length + (sameLine ? startCh : 0);\n+                        if (first) {\n+                            // Fix up .to properties of first\n+                            for (var i = 0; i < first.length; ++i) {\n+                                var span = first[i];\n+                                if (span.to == null) {\n+                                    var found = getMarkedSpanFor(last, span.marker);\n+                                    if (!found) {\n+                                        span.to = startCh;\n+                                    } else if (sameLine) {\n+                                        span.to = found.to == null ? null : found.to + offset;\n+                                    }\n+                                }\n+                            }\n+                        }\n+                        if (last) {\n+                            // Fix up .from in last (or move them into first in case of sameLine)\n+                            for (var i$1 = 0; i$1 < last.length; ++i$1) {\n+                                var span$1 = last[i$1];\n+                                if (span$1.to != null) {\n+                                    span$1.to += offset;\n+                                }\n+                                if (span$1.from == null) {\n+                                    var found$1 = getMarkedSpanFor(first, span$1.marker);\n+                                    if (!found$1) {\n+                                        span$1.from = offset;\n+                                        if (sameLine) {\n+                                            (first || (first = [])).push(span$1);\n+                                        }\n+                                    }\n+                                } else {\n+                                    span$1.from += offset;\n+                                    if (sameLine) {\n+                                        (first || (first = [])).push(span$1);\n+                                    }\n+                                }\n+                            }\n+                        }\n+                        // Make sure we didn't create any zero-length spans\n+                        if (first) {\n+                            first = clearEmptySpans(first);\n+                        }\n+                        if (last && last != first) {\n+                            last = clearEmptySpans(last);\n+                        }\n+                        var newMarkers = [first];\n+                        if (!sameLine) {\n+                            // Fill gap with whole-line-spans\n+                            var gap = change.text.length - 2,\n+                                gapMarkers;\n+                            if (gap > 0 && first) {\n+                                for (var i$2 = 0; i$2 < first.length; ++i$2) {\n+                                    if (first[i$2].to == null) {\n+                                        (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null));\n+                                    }\n+                                }\n+                            }\n+                            for (var i$3 = 0; i$3 < gap; ++i$3) {\n+                                newMarkers.push(gapMarkers);\n+                            }\n+                            newMarkers.push(last);\n+                        }\n+                        return newMarkers;\n+                    }\n+\n+                    // Remove spans that are empty and don't have a clearWhenEmpty\n+                    // option of false.\n+                    function clearEmptySpans(spans) {\n+                        for (var i = 0; i < spans.length; ++i) {\n+                            var span = spans[i];\n+                            if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) {\n+                                spans.splice(i--, 1);\n+                            }\n+                        }\n+                        if (!spans.length) {\n+                            return null;\n+                        }\n+                        return spans;\n+                    }\n+\n+                    // Used to 'clip' out readOnly ranges when making a change.\n+                    function removeReadOnlyRanges(doc, from, to) {\n+                        var markers = null;\n+                        doc.iter(from.line, to.line + 1, function(line) {\n+                            if (line.markedSpans) {\n+                                for (var i = 0; i < line.markedSpans.length; ++i) {\n+                                    var mark = line.markedSpans[i].marker;\n+                                    if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) {\n+                                        (markers || (markers = [])).push(mark);\n+                                    }\n+                                }\n+                            }\n+                        });\n+                        if (!markers) {\n+                            return null;\n+                        }\n+                        var parts = [{\n+                            from: from,\n+                            to: to\n+                        }];\n+                        for (var i = 0; i < markers.length; ++i) {\n+                            var mk = markers[i],\n+                                m = mk.find(0);\n+                            for (var j = 0; j < parts.length; ++j) {\n+                                var p = parts[j];\n+                                if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) {\n+                                    continue;\n+                                }\n+                                var newParts = [j, 1],\n+                                    dfrom = cmp(p.from, m.from),\n+                                    dto = cmp(p.to, m.to);\n+                                if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) {\n+                                    newParts.push({\n+                                        from: p.from,\n+                                        to: m.from\n+                                    });\n+                                }\n+                                if (dto > 0 || !mk.inclusiveRight && !dto) {\n+                                    newParts.push({\n+                                        from: m.to,\n+                                        to: p.to\n+                                    });\n+                                }\n+                                parts.splice.apply(parts, newParts);\n+                                j += newParts.length - 3;\n+                            }\n+                        }\n+                        return parts;\n+                    }\n+\n+                    // Connect or disconnect spans from a line.\n+                    function detachMarkedSpans(line) {\n+                        var spans = line.markedSpans;\n+                        if (!spans) {\n+                            return;\n+                        }\n+                        for (var i = 0; i < spans.length; ++i) {\n+                            spans[i].marker.detachLine(line);\n+                        }\n+                        line.markedSpans = null;\n+                    }\n+\n+                    function attachMarkedSpans(line, spans) {\n+                        if (!spans) {\n+                            return;\n+                        }\n+                        for (var i = 0; i < spans.length; ++i) {\n+                            spans[i].marker.attachLine(line);\n+                        }\n+                        line.markedSpans = spans;\n+                    }\n+\n+                    // Helpers used when computing which overlapping collapsed span\n+                    // counts as the larger one.\n+                    function extraLeft(marker) {\n+                        return marker.inclusiveLeft ? -1 : 0;\n+                    }\n+\n+                    function extraRight(marker) {\n+                        return marker.inclusiveRight ? 1 : 0;\n+                    }\n+\n+                    // Returns a number indicating which of two overlapping collapsed\n+                    // spans is larger (and thus includes the other). Falls back to\n+                    // comparing ids when the spans cover exactly the same range.\n+                    function compareCollapsedMarkers(a, b) {\n+                        var lenDiff = a.lines.length - b.lines.length;\n+                        if (lenDiff != 0) {\n+                            return lenDiff;\n+                        }\n+                        var aPos = a.find(),\n+                            bPos = b.find();\n+                        var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n+                        if (fromCmp) {\n+                            return -fromCmp;\n+                        }\n+                        var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n+                        if (toCmp) {\n+                            return toCmp;\n+                        }\n+                        return b.id - a.id;\n+                    }\n+\n+                    // Find out whether a line ends or starts in a collapsed span. If\n+                    // so, return the marker for that span.\n+                    function collapsedSpanAtSide(line, start) {\n+                        var sps = sawCollapsedSpans && line.markedSpans,\n+                            found;\n+                        if (sps) {\n+                            for (var sp = void 0, i = 0; i < sps.length; ++i) {\n+                                sp = sps[i];\n+                                if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n+                                    found = sp.marker;\n+                                }\n+                            }\n+                        }\n+                        return found;\n+                    }\n+\n+                    function collapsedSpanAtStart(line) {\n+                        return collapsedSpanAtSide(line, true);\n+                    }\n+\n+                    function collapsedSpanAtEnd(line) {\n+                        return collapsedSpanAtSide(line, false);\n+                    }\n+\n+                    function collapsedSpanAround(line, ch) {\n+                        var sps = sawCollapsedSpans && line.markedSpans,\n+                            found;\n+                        if (sps) {\n+                            for (var i = 0; i < sps.length; ++i) {\n+                                var sp = sps[i];\n+                                if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n+                                    found = sp.marker;\n+                                }\n+                            }\n+                        }\n+                        return found;\n+                    }\n+\n+                    // Test whether there exists a collapsed span that partially\n+                    // overlaps (covers the start or end, but not both) of a new span.\n+                    // Such overlap is not allowed.\n+                    function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n+                        var line = getLine(doc, lineNo);\n+                        var sps = sawCollapsedSpans && line.markedSpans;\n+                        if (sps) {\n+                            for (var i = 0; i < sps.length; ++i) {\n+                                var sp = sps[i];\n+                                if (!sp.marker.collapsed) {\n+                                    continue;\n+                                }\n+                                var found = sp.marker.find(0);\n+                                var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n+                                var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n+                                if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) {\n+                                    continue;\n+                                }\n+                                if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) {\n+                                    return true;\n+                                }\n+                            }\n+                        }\n+                    }\n+\n+                    // A visual line is a line as drawn on the screen. Folding, for\n+                    // example, can cause multiple logical lines to appear on the same\n+                    // visual line. This finds the start of the visual line that the\n+                    // given line is part of (usually that is the line itself).\n+                    function visualLine(line) {\n+                        var merged;\n+                        while (merged = collapsedSpanAtStart(line)) {\n+                            line = merged.find(-1, true).line;\n+                        }\n+                        return line;\n+                    }\n+\n+                    function visualLineEnd(line) {\n+                        var merged;\n+                        while (merged = collapsedSpanAtEnd(line)) {\n+                            line = merged.find(1, true).line;\n+                        }\n+                        return line;\n+                    }\n+\n+                    // Returns an array of logical lines that continue the visual line\n+                    // started by the argument, or undefined if there are no such lines.\n+                    function visualLineContinued(line) {\n+                        var merged, lines;\n+                        while (merged = collapsedSpanAtEnd(line)) {\n+                            line = merged.find(1, true).line;\n+                            (lines || (lines = [])).push(line);\n+                        }\n+                        return lines;\n+                    }\n+\n+                    // Get the line number of the start of the visual line that the\n+                    // given line number is part of.\n+                    function visualLineNo(doc, lineN) {\n+                        var line = getLine(doc, lineN),\n+                            vis = visualLine(line);\n+                        if (line == vis) {\n+                            return lineN;\n+                        }\n+                        return lineNo(vis);\n+                    }\n+\n+                    // Get the line number of the start of the next visual line after\n+                    // the given line.\n+                    function visualLineEndNo(doc, lineN) {\n+                        if (lineN > doc.lastLine()) {\n+                            return lineN;\n+                        }\n+                        var line = getLine(doc, lineN),\n+                            merged;\n+                        if (!lineIsHidden(doc, line)) {\n+                            return lineN;\n+                        }\n+                        while (merged = collapsedSpanAtEnd(line)) {\n+                            line = merged.find(1, true).line;\n+                        }\n+                        return lineNo(line) + 1;\n+                    }\n+\n+                    // Compute whether a line is hidden. Lines count as hidden when they\n+                    // are part of a visual line that starts with another line, or when\n+                    // they are entirely covered by collapsed, non-widget span.\n+                    function lineIsHidden(doc, line) {\n+                        var sps = sawCollapsedSpans && line.markedSpans;\n+                        if (sps) {\n+                            for (var sp = void 0, i = 0; i < sps.length; ++i) {\n+                                sp = sps[i];\n+                                if (!sp.marker.collapsed) {\n+                                    continue;\n+                                }\n+                                if (sp.from == null) {\n+                                    return true;\n+                                }\n+                                if (sp.marker.widgetNode) {\n+                                    continue;\n+                                }\n+                                if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) {\n+                                    return true;\n+                                }\n+                            }\n+                        }\n+                    }\n+\n+                    function lineIsHiddenInner(doc, line, span) {\n+                        if (span.to == null) {\n+                            var end = span.marker.find(1, true);\n+                            return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker));\n+                        }\n+                        if (span.marker.inclusiveRight && span.to == line.text.length) {\n+                            return true;\n+                        }\n+                        for (var sp = void 0, i = 0; i < line.markedSpans.length; ++i) {\n+                            sp = line.markedSpans[i];\n+                            if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && (sp.to == null || sp.to != span.from) && (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && lineIsHiddenInner(doc, line, sp)) {\n+                                return true;\n+                            }\n+                        }\n+                    }\n+\n+                    // Find the height above the given line.\n+                    function heightAtLine(lineObj) {\n+                        lineObj = visualLine(lineObj);\n+                        var h = 0,\n+                            chunk = lineObj.parent;\n+                        for (var i = 0; i < chunk.lines.length; ++i) {\n+                            var line = chunk.lines[i];\n+                            if (line == lineObj) {\n+                                break;\n+                            } else {\n+                                h += line.height;\n+                            }\n+                        }\n+                        for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n+                            for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n+                                var cur = p.children[i$1];\n+                                if (cur == chunk) {\n+                                    break;\n+                                } else {\n+                                    h += cur.height;\n+                                }\n+                            }\n+                        }\n+                        return h;\n+                    }\n+\n+                    // Compute the character length of a line, taking into account\n+                    // collapsed ranges (see markText) that might hide parts, and join\n+                    // other lines onto it.\n+                    function lineLength(line) {\n+                        if (line.height == 0) {\n+                            return 0;\n+                        }\n+                        var len = line.text.length,\n+                            merged,\n+                            cur = line;\n+                        while (merged = collapsedSpanAtStart(cur)) {\n+                            var found = merged.find(0, true);\n+                            cur = found.from.line;\n+                            len += found.from.ch - found.to.ch;\n+                        }\n+                        cur = line;\n+                        while (merged = collapsedSpanAtEnd(cur)) {\n+                            var found$1 = merged.find(0, true);\n+                            len -= cur.text.length - found$1.from.ch;\n+                            cur = found$1.to.line;\n+                            len += cur.text.length - found$1.to.ch;\n+                        }\n+                        return len;\n+                    }\n+\n+                    // Find the longest line in the document.\n+                    function findMaxLine(cm) {\n+                        var d = cm.display,\n+                            doc = cm.doc;\n+                        d.maxLine = getLine(doc, doc.first);\n+                        d.maxLineLength = lineLength(d.maxLine);\n+                        d.maxLineChanged = true;\n+                        doc.iter(function(line) {\n+                            var len = lineLength(line);\n+                            if (len > d.maxLineLength) {\n+                                d.maxLineLength = len;\n+                                d.maxLine = line;\n+                            }\n+                        });\n+                    }\n+\n+                    // LINE DATA STRUCTURE\n+\n+                    // Line objects. These hold state related to a line, including\n+                    // highlighting info (the styles array).\n+                    var Line = function(text, markedSpans, estimateHeight) {\n+                        this.text = text;\n+                        attachMarkedSpans(this, markedSpans);\n+                        this.height = estimateHeight ? estimateHeight(this) : 1;\n+                    };\n+                    Line.prototype.lineNo = function() {\n+                        return lineNo(this);\n+                    };\n+                    eventMixin(Line);\n+\n+                    // Change the content (text, markers) of a line. Automatically\n+                    // invalidates cached information and tries to re-estimate the\n+                    // line's height.\n+                    function updateLine(line, text, markedSpans, estimateHeight) {\n+                        line.text = text;\n+                        if (line.stateAfter) {\n+                            line.stateAfter = null;\n+                        }\n+                        if (line.styles) {\n+                            line.styles = null;\n+                        }\n+                        if (line.order != null) {\n+                            line.order = null;\n+                        }\n+                        detachMarkedSpans(line);\n+                        attachMarkedSpans(line, markedSpans);\n+                        var estHeight = estimateHeight ? estimateHeight(line) : 1;\n+                        if (estHeight != line.height) {\n+                            updateLineHeight(line, estHeight);\n+                        }\n+                    }\n+\n+                    // Detach a line from the document tree and its markers.\n+                    function cleanUpLine(line) {\n+                        line.parent = null;\n+                        detachMarkedSpans(line);\n+                    }\n+\n+                    // Convert a style as returned by a mode (either null, or a string\n+                    // containing one or more styles) to a CSS style. This is cached,\n+                    // and also looks for line-wide styles.\n+                    var styleToClassCache = {},\n+                        styleToClassCacheWithMode = {};\n+\n+                    function interpretTokenStyle(style, options) {\n+                        if (!style || /^\\s*$/.test(style)) {\n+                            return null;\n+                        }\n+                        var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n+                        return cache[style] || (cache[style] = style.replace(/\\S+/g, \"cm-$&\"));\n+                    }\n+\n+                    // Render the DOM representation of the text of a line. Also builds\n+                    // up a 'line map', which points at the DOM nodes that represent\n+                    // specific stretches of text, and is used by the measuring code.\n+                    // The returned object contains the DOM node, this map, and\n+                    // information about line-wide styles that were set by the mode.\n+                    function buildLineContent(cm, lineView) {\n+                        // The padding-right forces the element to have a 'border', which\n+                        // is needed on Webkit to be able to get line-level bounding\n+                        // rectangles for it (in measureChar).\n+                        var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n+                        var builder = {\n+                            pre: eltP(\"pre\", [content], \"CodeMirror-line\"),\n+                            content: content,\n+                            col: 0,\n+                            pos: 0,\n+                            cm: cm,\n+                            trailingSpace: false,\n+                            splitSpaces: cm.getOption(\"lineWrapping\")\n+                        };\n+                        lineView.measure = {};\n+\n+                        // Iterate over the logical lines that make up this visual line.\n+                        for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n+                            var line = i ? lineView.rest[i - 1] : lineView.line,\n+                                order = void 0;\n+                            builder.pos = 0;\n+                            builder.addToken = buildToken;\n+                            // Optionally wire in some hacks into the token-rendering\n+                            // algorithm, to deal with browser quirks.\n+                            if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) {\n+                                builder.addToken = buildTokenBadBidi(builder.addToken, order);\n+                            }\n+                            builder.map = [];\n+                            var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n+                            insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n+                            if (line.styleClasses) {\n+                                if (line.styleClasses.bgClass) {\n+                                    builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\");\n+                                }\n+                                if (line.styleClasses.textClass) {\n+                                    builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\");\n+                                }\n+                            }\n+\n+                            // Ensure at least a single node is present, for measuring.\n+                            if (builder.map.length == 0) {\n+                                builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));\n+                            }\n+\n+                            // Store the map and a cache object for the current logical line\n+                            if (i == 0) {\n+                                lineView.measure.map = builder.map;\n+                                lineView.measure.cache = {};\n+                            } else {\n+                                (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map);\n+                                (lineView.measure.caches || (lineView.measure.caches = [])).push({});\n+                            }\n+                        }\n+\n+                        // See issue #2901\n+                        if (webkit) {\n+                            var last = builder.content.lastChild;\n+                            if (/\\bcm-tab\\b/.test(last.className) || last.querySelector && last.querySelector(\".cm-tab\")) {\n+                                builder.content.className = \"cm-tab-wrap-hack\";\n+                            }\n+                        }\n+                        signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n+                        if (builder.pre.className) {\n+                            builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\");\n+                        }\n+                        return builder;\n+                    }\n+\n+                    function defaultSpecialCharPlaceholder(ch) {\n+                        var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n+                        token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n+                        token.setAttribute(\"aria-label\", token.title);\n+                        return token;\n+                    }\n+\n+                    // Build up the DOM representation for a single token, and add it to\n+                    // the line map. Takes care to render special characters separately.\n+                    function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n+                        if (!text) {\n+                            return;\n+                        }\n+                        var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n+                        var special = builder.cm.state.specialChars,\n+                            mustWrap = false;\n+                        var content;\n+                        if (!special.test(text)) {\n+                            builder.col += text.length;\n+                            content = document.createTextNode(displayText);\n+                            builder.map.push(builder.pos, builder.pos + text.length, content);\n+                            if (ie && ie_version < 9) {\n+                                mustWrap = true;\n+                            }\n+                            builder.pos += text.length;\n+                        } else {\n+                            content = document.createDocumentFragment();\n+                            var pos = 0;\n+                            while (true) {\n+                                special.lastIndex = pos;\n+                                var m = special.exec(text);\n+                                var skipped = m ? m.index - pos : text.length - pos;\n+                                if (skipped) {\n+                                    var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n+                                    if (ie && ie_version < 9) {\n+                                        content.appendChild(elt(\"span\", [txt]));\n+                                    } else {\n+                                        content.appendChild(txt);\n+                                    }\n+                                    builder.map.push(builder.pos, builder.pos + skipped, txt);\n+                                    builder.col += skipped;\n+                                    builder.pos += skipped;\n+                                }\n+                                if (!m) {\n+                                    break;\n+                                }\n+                                pos += skipped + 1;\n+                                var txt$1 = void 0;\n+                                if (m[0] == \"\\t\") {\n+                                    var tabSize = builder.cm.options.tabSize,\n+                                        tabWidth = tabSize - builder.col % tabSize;\n+                                    txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n+                                    txt$1.setAttribute(\"role\", \"presentation\");\n+                                    txt$1.setAttribute(\"cm-text\", \"\\t\");\n+                                    builder.col += tabWidth;\n+                                } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n+                                    txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n+                                    txt$1.setAttribute(\"cm-text\", m[0]);\n+                                    builder.col += 1;\n+                                } else {\n+                                    txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n+                                    txt$1.setAttribute(\"cm-text\", m[0]);\n+                                    if (ie && ie_version < 9) {\n+                                        content.appendChild(elt(\"span\", [txt$1]));\n+                                    } else {\n+                                        content.appendChild(txt$1);\n+                                    }\n+                                    builder.col += 1;\n+                                }\n+                                builder.map.push(builder.pos, builder.pos + 1, txt$1);\n+                                builder.pos++;\n+                            }\n+                        }\n+                        builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n+                        if (style || startStyle || endStyle || mustWrap || css || attributes) {\n+                            var fullStyle = style || \"\";\n+                            if (startStyle) {\n+                                fullStyle += startStyle;\n+                            }\n+                            if (endStyle) {\n+                                fullStyle += endStyle;\n+                            }\n+                            var token = elt(\"span\", [content], fullStyle, css);\n+                            if (attributes) {\n+                                for (var attr in attributes) {\n+                                    if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\") {\n+                                        token.setAttribute(attr, attributes[attr]);\n+                                    }\n+                                }\n+                            }\n+                            return builder.content.appendChild(token);\n+                        }\n+                        builder.content.appendChild(content);\n+                    }\n+\n+                    // Change some spaces to NBSP to prevent the browser from collapsing\n+                    // trailing spaces at the end of a line when rendering text (issue #1362).\n+                    function splitSpaces(text, trailingBefore) {\n+                        if (text.length > 1 && !/  /.test(text)) {\n+                            return text;\n+                        }\n+                        var spaceBefore = trailingBefore,\n+                            result = \"\";\n+                        for (var i = 0; i < text.length; i++) {\n+                            var ch = text.charAt(i);\n+                            if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) {\n+                                ch = \"\\u00a0\";\n+                            }\n+                            result += ch;\n+                            spaceBefore = ch == \" \";\n+                        }\n+                        return result;\n+                    }\n+\n+                    // Work around nonsense dimensions being reported for stretches of\n+                    // right-to-left text.\n+                    function buildTokenBadBidi(inner, order) {\n+                        return function(builder, text, style, startStyle, endStyle, css, attributes) {\n+                            style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n+                            var start = builder.pos,\n+                                end = start + text.length;\n+                            for (;;) {\n+                                // Find the part that overlaps with the start of this text\n+                                var part = void 0;\n+                                for (var i = 0; i < order.length; i++) {\n+                                    part = order[i];\n+                                    if (part.to > start && part.from <= start) {\n+                                        break;\n+                                    }\n+                                }\n+                                if (part.to >= end) {\n+                                    return inner(builder, text, style, startStyle, endStyle, css, attributes);\n+                                }\n+                                inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n+                                startStyle = null;\n+                                text = text.slice(part.to - start);\n+                                start = part.to;\n+                            }\n+                        };\n+                    }\n+\n+                    function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n+                        var widget = !ignoreWidget && marker.widgetNode;\n+                        if (widget) {\n+                            builder.map.push(builder.pos, builder.pos + size, widget);\n+                        }\n+                        if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n+                            if (!widget) {\n+                                widget = builder.content.appendChild(document.createElement(\"span\"));\n+                            }\n+                            widget.setAttribute(\"cm-marker\", marker.id);\n+                        }\n+                        if (widget) {\n+                            builder.cm.display.input.setUneditable(widget);\n+                            builder.content.appendChild(widget);\n+                        }\n+                        builder.pos += size;\n+                        builder.trailingSpace = false;\n+                    }\n+\n+                    // Outputs a number of spans to make up a line, taking highlighting\n+                    // and marked text into account.\n+                    function insertLineContent(line, builder, styles) {\n+                        var spans = line.markedSpans,\n+                            allText = line.text,\n+                            at = 0;\n+                        if (!spans) {\n+                            for (var i$1 = 1; i$1 < styles.length; i$1 += 2) {\n+                                builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1 + 1], builder.cm.options));\n+                            }\n+                            return;\n+                        }\n+                        var len = allText.length,\n+                            pos = 0,\n+                            i = 1,\n+                            text = \"\",\n+                            style,\n+                            css;\n+                        var nextChange = 0,\n+                            spanStyle,\n+                            spanEndStyle,\n+                            spanStartStyle,\n+                            collapsed,\n+                            attributes;\n+                        for (;;) {\n+                            if (nextChange == pos) {\n+                                // Update current marker set\n+                                spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n+                                attributes = null;\n+                                collapsed = null;\n+                                nextChange = Infinity;\n+                                var foundBookmarks = [],\n+                                    endStyles = void 0;\n+                                for (var j = 0; j < spans.length; ++j) {\n+                                    var sp = spans[j],\n+                                        m = sp.marker;\n+                                    if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n+                                        foundBookmarks.push(m);\n+                                    } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n+                                        if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n+                                            nextChange = sp.to;\n+                                            spanEndStyle = \"\";\n+                                        }\n+                                        if (m.className) {\n+                                            spanStyle += \" \" + m.className;\n+                                        }\n+                                        if (m.css) {\n+                                            css = (css ? css + \";\" : \"\") + m.css;\n+                                        }\n+                                        if (m.startStyle && sp.from == pos) {\n+                                            spanStartStyle += \" \" + m.startStyle;\n+                                        }\n+                                        if (m.endStyle && sp.to == nextChange) {\n+                                            (endStyles || (endStyles = [])).push(m.endStyle, sp.to);\n+                                        }\n+                                        // support for the old title property\n+                                        // https://github.com/codemirror/CodeMirror/pull/5673\n+                                        if (m.title) {\n+                                            (attributes || (attributes = {})).title = m.title;\n+                                        }\n+                                        if (m.attributes) {\n+                                            for (var attr in m.attributes) {\n+                                                (attributes || (attributes = {}))[attr] = m.attributes[attr];\n+                                            }\n+                                        }\n+                                        if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) {\n+                                            collapsed = sp;\n+                                        }\n+                                    } else if (sp.from > pos && nextChange > sp.from) {\n+                                        nextChange = sp.from;\n+                                    }\n+                                }\n+                                if (endStyles) {\n+                                    for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) {\n+                                        if (endStyles[j$1 + 1] == nextChange) {\n+                                            spanEndStyle += \" \" + endStyles[j$1];\n+                                        }\n+                                    }\n+                                }\n+                                if (!collapsed || collapsed.from == pos) {\n+                                    for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) {\n+                                        buildCollapsedSpan(builder, 0, foundBookmarks[j$2]);\n+                                    }\n+                                }\n+                                if (collapsed && (collapsed.from || 0) == pos) {\n+                                    buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, collapsed.marker, collapsed.from == null);\n+                                    if (collapsed.to == null) {\n+                                        return;\n+                                    }\n+                                    if (collapsed.to == pos) {\n+                                        collapsed = false;\n+                                    }\n+                                }\n+                            }\n+                            if (pos >= len) {\n+                                break;\n+                            }\n+                            var upto = Math.min(len, nextChange);\n+                            while (true) {\n+                                if (text) {\n+                                    var end = pos + text.length;\n+                                    if (!collapsed) {\n+                                        var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n+                                        builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n+                                    }\n+                                    if (end >= upto) {\n+                                        text = text.slice(upto - pos);\n+                                        pos = upto;\n+                                        break;\n+                                    }\n+                                    pos = end;\n+                                    spanStartStyle = \"\";\n+                                }\n+                                text = allText.slice(at, at = styles[i++]);\n+                                style = interpretTokenStyle(styles[i++], builder.cm.options);\n+                            }\n+                        }\n+                    }\n+\n+                    // These objects are used to represent the visible (currently drawn)\n+                    // part of the document. A LineView may correspond to multiple\n+                    // logical lines, if those are connected by collapsed ranges.\n+                    function LineView(doc, line, lineN) {\n+                        // The starting line\n+                        this.line = line;\n+                        // Continuing lines, if any\n+                        this.rest = visualLineContinued(line);\n+                        // Number of logical lines in this visual line\n+                        this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n+                        this.node = this.text = null;\n+                        this.hidden = lineIsHidden(doc, line);\n+                    }\n+\n+                    // Create a range of LineView objects for the given lines.\n+                    function buildViewArray(cm, from, to) {\n+                        var array = [],\n+                            nextPos;\n+                        for (var pos = from; pos < to; pos = nextPos) {\n+                            var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n+                            nextPos = pos + view.size;\n+                            array.push(view);\n+                        }\n+                        return array;\n+                    }\n+                    var operationGroup = null;\n+\n+                    function pushOperation(op) {\n+                        if (operationGroup) {\n+                            operationGroup.ops.push(op);\n+                        } else {\n+                            op.ownsGroup = operationGroup = {\n+                                ops: [op],\n+                                delayedCallbacks: []\n+                            };\n+                        }\n+                    }\n+\n+                    function fireCallbacksForOps(group) {\n+                        // Calls delayed callbacks and cursorActivity handlers until no\n+                        // new ones appear\n+                        var callbacks = group.delayedCallbacks,\n+                            i = 0;\n+                        do {\n+                            for (; i < callbacks.length; i++) {\n+                                callbacks[i].call(null);\n+                            }\n+                            for (var j = 0; j < group.ops.length; j++) {\n+                                var op = group.ops[j];\n+                                if (op.cursorActivityHandlers) {\n+                                    while (op.cursorActivityCalled < op.cursorActivityHandlers.length) {\n+                                        op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm);\n+                                    }\n+                                }\n+                            }\n+                        } while (i < callbacks.length);\n+                    }\n+\n+                    function finishOperation(op, endCb) {\n+                        var group = op.ownsGroup;\n+                        if (!group) {\n+                            return;\n+                        }\n+                        try {\n+                            fireCallbacksForOps(group);\n+                        } finally {\n+                            operationGroup = null;\n+                            endCb(group);\n+                        }\n+                    }\n+                    var orphanDelayedCallbacks = null;\n+\n+                    // Often, we want to signal events at a point where we are in the\n+                    // middle of some work, but don't want the handler to start calling\n+                    // other methods on the editor, which might be in an inconsistent\n+                    // state or simply not expect any other events to happen.\n+                    // signalLater looks whether there are any handlers, and schedules\n+                    // them to be executed when the last operation ends, or, if no\n+                    // operation is active, when a timeout fires.\n+                    function signalLater(emitter, type /*, values...*/ ) {\n+                        var arr = getHandlers(emitter, type);\n+                        if (!arr.length) {\n+                            return;\n+                        }\n+                        var args = Array.prototype.slice.call(arguments, 2),\n+                            list;\n+                        if (operationGroup) {\n+                            list = operationGroup.delayedCallbacks;\n+                        } else if (orphanDelayedCallbacks) {\n+                            list = orphanDelayedCallbacks;\n+                        } else {\n+                            list = orphanDelayedCallbacks = [];\n+                            setTimeout(fireOrphanDelayed, 0);\n+                        }\n+                        var loop = function(i) {\n+                            list.push(function() {\n+                                return arr[i].apply(null, args);\n+                            });\n+                        };\n+                        for (var i = 0; i < arr.length; ++i) loop(i);\n+                    }\n+\n+                    function fireOrphanDelayed() {\n+                        var delayed = orphanDelayedCallbacks;\n+                        orphanDelayedCallbacks = null;\n+                        for (var i = 0; i < delayed.length; ++i) {\n+                            delayed[i]();\n+                        }\n+                    }\n+\n+                    // When an aspect of a line changes, a string is added to\n+                    // lineView.changes. This updates the relevant part of the line's\n+                    // DOM structure.\n+                    function updateLineForChanges(cm, lineView, lineN, dims) {\n+                        for (var j = 0; j < lineView.changes.length; j++) {\n+                            var type = lineView.changes[j];\n+                            if (type == \"text\") {\n+                                updateLineText(cm, lineView);\n+                            } else if (type == \"gutter\") {\n+                                updateLineGutter(cm, lineView, lineN, dims);\n+                            } else if (type == \"class\") {\n+                                updateLineClasses(cm, lineView);\n+                            } else if (type == \"widget\") {\n+                                updateLineWidgets(cm, lineView, dims);\n+                            }\n+                        }\n+                        lineView.changes = null;\n+                    }\n+\n+                    // Lines with gutter elements, widgets or a background class need to\n+                    // be wrapped, and have the extra elements added to the wrapper div\n+                    function ensureLineWrapped(lineView) {\n+                        if (lineView.node == lineView.text) {\n+                            lineView.node = elt(\"div\", null, null, \"position: relative\");\n+                            if (lineView.text.parentNode) {\n+                                lineView.text.parentNode.replaceChild(lineView.node, lineView.text);\n+                            }\n+                            lineView.node.appendChild(lineView.text);\n+                            if (ie && ie_version < 8) {\n+                                lineView.node.style.zIndex = 2;\n+                            }\n+                        }\n+                        return lineView.node;\n+                    }\n+\n+                    function updateLineBackground(cm, lineView) {\n+                        var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n+                        if (cls) {\n+                            cls += \" CodeMirror-linebackground\";\n+                        }\n+                        if (lineView.background) {\n+                            if (cls) {\n+                                lineView.background.className = cls;\n+                            } else {\n+                                lineView.background.parentNode.removeChild(lineView.background);\n+                                lineView.background = null;\n+                            }\n+                        } else if (cls) {\n+                            var wrap = ensureLineWrapped(lineView);\n+                            lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n+                            cm.display.input.setUneditable(lineView.background);\n+                        }\n+                    }\n+\n+                    // Wrapper around buildLineContent which will reuse the structure\n+                    // in display.externalMeasured when possible.\n+                    function getLineContent(cm, lineView) {\n+                        var ext = cm.display.externalMeasured;\n+                        if (ext && ext.line == lineView.line) {\n+                            cm.display.externalMeasured = null;\n+                            lineView.measure = ext.measure;\n+                            return ext.built;\n+                        }\n+                        return buildLineContent(cm, lineView);\n+                    }\n+\n+                    // Redraw the line's text. Interacts with the background and text\n+                    // classes because the mode may output tokens that influence these\n+                    // classes.\n+                    function updateLineText(cm, lineView) {\n+                        var cls = lineView.text.className;\n+                        var built = getLineContent(cm, lineView);\n+                        if (lineView.text == lineView.node) {\n+                            lineView.node = built.pre;\n+                        }\n+                        lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n+                        lineView.text = built.pre;\n+                        if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n+                            lineView.bgClass = built.bgClass;\n+                            lineView.textClass = built.textClass;\n+                            updateLineClasses(cm, lineView);\n+                        } else if (cls) {\n+                            lineView.text.className = cls;\n+                        }\n+                    }\n+\n+                    function updateLineClasses(cm, lineView) {\n+                        updateLineBackground(cm, lineView);\n+                        if (lineView.line.wrapClass) {\n+                            ensureLineWrapped(lineView).className = lineView.line.wrapClass;\n+                        } else if (lineView.node != lineView.text) {\n+                            lineView.node.className = \"\";\n+                        }\n+                        var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n+                        lineView.text.className = textClass || \"\";\n+                    }\n+\n+                    function updateLineGutter(cm, lineView, lineN, dims) {\n+                        if (lineView.gutter) {\n+                            lineView.node.removeChild(lineView.gutter);\n+                            lineView.gutter = null;\n+                        }\n+                        if (lineView.gutterBackground) {\n+                            lineView.node.removeChild(lineView.gutterBackground);\n+                            lineView.gutterBackground = null;\n+                        }\n+                        if (lineView.line.gutterClass) {\n+                            var wrap = ensureLineWrapped(lineView);\n+                            lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass, \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + dims.gutterTotalWidth + \"px\");\n+                            cm.display.input.setUneditable(lineView.gutterBackground);\n+                            wrap.insertBefore(lineView.gutterBackground, lineView.text);\n+                        }\n+                        var markers = lineView.line.gutterMarkers;\n+                        if (cm.options.lineNumbers || markers) {\n+                            var wrap$1 = ensureLineWrapped(lineView);\n+                            var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\");\n+                            gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n+                            cm.display.input.setUneditable(gutterWrap);\n+                            wrap$1.insertBefore(gutterWrap, lineView.text);\n+                            if (lineView.line.gutterClass) {\n+                                gutterWrap.className += \" \" + lineView.line.gutterClass;\n+                            }\n+                            if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"])) {\n+                                lineView.lineNumber = gutterWrap.appendChild(elt(\"div\", lineNumberFor(cm.options, lineN), \"CodeMirror-linenumber CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[\"CodeMirror-linenumbers\"] + \"px; width: \" + cm.display.lineNumInnerWidth + \"px\"));\n+                            }\n+                            if (markers) {\n+                                for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n+                                    var id = cm.display.gutterSpecs[k].className,\n+                                        found = markers.hasOwnProperty(id) && markers[id];\n+                                    if (found) {\n+                                        gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[id] + \"px; width: \" + dims.gutterWidth[id] + \"px\"));\n+                                    }\n+                                }\n+                            }\n+                        }\n+                    }\n+\n+                    function updateLineWidgets(cm, lineView, dims) {\n+                        if (lineView.alignable) {\n+                            lineView.alignable = null;\n+                        }\n+                        var isWidget = classTest(\"CodeMirror-linewidget\");\n+                        for (var node = lineView.node.firstChild, next = void 0; node; node = next) {\n+                            next = node.nextSibling;\n+                            if (isWidget.test(node.className)) {\n+                                lineView.node.removeChild(node);\n+                            }\n+                        }\n+                        insertLineWidgets(cm, lineView, dims);\n+                    }\n+\n+                    // Build a line's DOM representation from scratch\n+                    function buildLineElement(cm, lineView, lineN, dims) {\n+                        var built = getLineContent(cm, lineView);\n+                        lineView.text = lineView.node = built.pre;\n+                        if (built.bgClass) {\n+                            lineView.bgClass = built.bgClass;\n+                        }\n+                        if (built.textClass) {\n+                            lineView.textClass = built.textClass;\n+                        }\n+                        updateLineClasses(cm, lineView);\n+                        updateLineGutter(cm, lineView, lineN, dims);\n+                        insertLineWidgets(cm, lineView, dims);\n+                        return lineView.node;\n+                    }\n+\n+                    // A lineView may contain multiple logical lines (when merged by\n+                    // collapsed spans). The widgets for all of them need to be drawn.\n+                    function insertLineWidgets(cm, lineView, dims) {\n+                        insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n+                        if (lineView.rest) {\n+                            for (var i = 0; i < lineView.rest.length; i++) {\n+                                insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false);\n+                            }\n+                        }\n+                    }\n+\n+                    function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n+                        if (!line.widgets) {\n+                            return;\n+                        }\n+                        var wrap = ensureLineWrapped(lineView);\n+                        for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n+                            var widget = ws[i],\n+                                node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n+                            if (!widget.handleMouseEvents) {\n+                                node.setAttribute(\"cm-ignore-events\", \"true\");\n+                            }\n+                            positionLineWidget(widget, node, lineView, dims);\n+                            cm.display.input.setUneditable(node);\n+                            if (allowAbove && widget.above) {\n+                                wrap.insertBefore(node, lineView.gutter || lineView.text);\n+                            } else {\n+                                wrap.appendChild(node);\n+                            }\n+                            signalLater(widget, \"redraw\");\n+                        }\n+                    }\n+\n+                    function positionLineWidget(widget, node, lineView, dims) {\n+                        if (widget.noHScroll) {\n+                            (lineView.alignable || (lineView.alignable = [])).push(node);\n+                            var width = dims.wrapperWidth;\n+                            node.style.left = dims.fixedPos + \"px\";\n+                            if (!widget.coverGutter) {\n+                                width -= dims.gutterTotalWidth;\n+                                node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n+                            }\n+                            node.style.width = width + \"px\";\n+                        }\n+                        if (widget.coverGutter) {\n+                            node.style.zIndex = 5;\n+                            node.style.position = \"relative\";\n+                            if (!widget.noHScroll) {\n+                                node.style.marginLeft = -dims.gutterTotalWidth + \"px\";\n+                            }\n+                        }\n+                    }\n+\n+                    function widgetHeight(widget) {\n+                        if (widget.height != null) {\n+                            return widget.height;\n+                        }\n+                        var cm = widget.doc.cm;\n+                        if (!cm) {\n+                            return 0;\n+                        }\n+                        if (!contains(document.body, widget.node)) {\n+                            var parentStyle = \"position: relative;\";\n+                            if (widget.coverGutter) {\n+                                parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\";\n+                            }\n+                            if (widget.noHScroll) {\n+                                parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\";\n+                            }\n+                            removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n+                        }\n+                        return widget.height = widget.node.parentNode.offsetHeight;\n+                    }\n+\n+                    // Return true when the given mouse event happened in a widget\n+                    function eventInWidget(display, e) {\n+                        for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n+                            if (!n || n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\" || n.parentNode == display.sizer && n != display.mover) {\n+                                return true;\n+                            }\n+                        }\n+                    }\n+\n+                    // POSITION MEASUREMENT\n+\n+                    function paddingTop(display) {\n+                        return display.lineSpace.offsetTop;\n+                    }\n+\n+                    function paddingVert(display) {\n+                        return display.mover.offsetHeight - display.lineSpace.offsetHeight;\n+                    }\n+\n+                    function paddingH(display) {\n+                        if (display.cachedPaddingH) {\n+                            return display.cachedPaddingH;\n+                        }\n+                        var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n+                        var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n+                        var data = {\n+                            left: parseInt(style.paddingLeft),\n+                            right: parseInt(style.paddingRight)\n+                        };\n+                        if (!isNaN(data.left) && !isNaN(data.right)) {\n+                            display.cachedPaddingH = data;\n+                        }\n+                        return data;\n+                    }\n+\n+                    function scrollGap(cm) {\n+                        return scrollerGap - cm.display.nativeBarWidth;\n+                    }\n+\n+                    function displayWidth(cm) {\n+                        return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth;\n+                    }\n+\n+                    function displayHeight(cm) {\n+                        return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight;\n+                    }\n+\n+                    // Ensure the lineView.wrapping.heights array is populated. This is\n+                    // an array of bottom offsets for the lines that make up a drawn\n+                    // line. When lineWrapping is on, there might be more than one\n+                    // height.\n+                    function ensureLineHeights(cm, lineView, rect) {\n+                        var wrapping = cm.options.lineWrapping;\n+                        var curWidth = wrapping && displayWidth(cm);\n+                        if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n+                            var heights = lineView.measure.heights = [];\n+                            if (wrapping) {\n+                                lineView.measure.width = curWidth;\n+                                var rects = lineView.text.firstChild.getClientRects();\n+                                for (var i = 0; i < rects.length - 1; i++) {\n+                                    var cur = rects[i],\n+                                        next = rects[i + 1];\n+                                    if (Math.abs(cur.bottom - next.bottom) > 2) {\n+                                        heights.push((cur.bottom + next.top) / 2 - rect.top);\n+                                    }\n+                                }\n+                            }\n+                            heights.push(rect.bottom - rect.top);\n+                        }\n+                    }\n+\n+                    // Find a line map (mapping character offsets to text nodes) and a\n+                    // measurement cache for the given line number. (A line view might\n+                    // contain multiple lines when collapsed ranges are present.)\n+                    function mapFromLineView(lineView, line, lineN) {\n+                        if (lineView.line == line) {\n+                            return {\n+                                map: lineView.measure.map,\n+                                cache: lineView.measure.cache\n+                            };\n+                        }\n+                        if (lineView.rest) {\n+                            for (var i = 0; i < lineView.rest.length; i++) {\n+                                if (lineView.rest[i] == line) {\n+                                    return {\n+                                        map: lineView.measure.maps[i],\n+                                        cache: lineView.measure.caches[i]\n+                                    };\n+                                }\n+                            }\n+                            for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) {\n+                                if (lineNo(lineView.rest[i$1]) > lineN) {\n+                                    return {\n+                                        map: lineView.measure.maps[i$1],\n+                                        cache: lineView.measure.caches[i$1],\n+                                        before: true\n+                                    };\n+                                }\n+                            }\n+                        }\n+                    }\n+\n+                    // Render a line into the hidden node display.externalMeasured. Used\n+                    // when measurement is needed for a line that's not in the viewport.\n+                    function updateExternalMeasurement(cm, line) {\n+                        line = visualLine(line);\n+                        var lineN = lineNo(line);\n+                        var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n+                        view.lineN = lineN;\n+                        var built = view.built = buildLineContent(cm, view);\n+                        view.text = built.pre;\n+                        removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n+                        return view;\n+                    }\n+\n+                    // Get a {top, bottom, left, right} box (in line-local coordinates)\n+                    // for a given character.\n+                    function measureChar(cm, line, ch, bias) {\n+                        return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);\n+                    }\n+\n+                    // Find a line view that corresponds to the given line number.\n+                    function findViewForLine(cm, lineN) {\n+                        if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) {\n+                            return cm.display.view[findViewIndex(cm, lineN)];\n+                        }\n+                        var ext = cm.display.externalMeasured;\n+                        if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) {\n+                            return ext;\n+                        }\n+                    }\n+\n+                    // Measurement can be split in two steps, the set-up work that\n+                    // applies to the whole line, and the measurement of the actual\n+                    // character. Functions like coordsChar, that need to do a lot of\n+                    // measurements in a row, can thus ensure that the set-up work is\n+                    // only done once.\n+                    function prepareMeasureForLine(cm, line) {\n+                        var lineN = lineNo(line);\n+                        var view = findViewForLine(cm, lineN);\n+                        if (view && !view.text) {\n+                            view = null;\n+                        } else if (view && view.changes) {\n+                            updateLineForChanges(cm, view, lineN, getDimensions(cm));\n+                            cm.curOp.forceUpdate = true;\n+                        }\n+                        if (!view) {\n+                            view = updateExternalMeasurement(cm, line);\n+                        }\n+                        var info = mapFromLineView(view, line, lineN);\n+                        return {\n+                            line: line,\n+                            view: view,\n+                            rect: null,\n+                            map: info.map,\n+                            cache: info.cache,\n+                            before: info.before,\n+                            hasHeights: false\n+                        };\n+                    }\n+\n+                    // Given a prepared measurement object, measures the position of an\n+                    // actual character (or fetches it from the cache).\n+                    function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n+                        if (prepared.before) {\n+                            ch = -1;\n+                        }\n+                        var key = ch + (bias || \"\"),\n+                            found;\n+                        if (prepared.cache.hasOwnProperty(key)) {\n+                            found = prepared.cache[key];\n+                        } else {\n+                            if (!prepared.rect) {\n+                                prepared.rect = prepared.view.text.getBoundingClientRect();\n+                            }\n+                            if (!prepared.hasHeights) {\n+                                ensureLineHeights(cm, prepared.view, prepared.rect);\n+                                prepared.hasHeights = true;\n+                            }\n+                            found = measureCharInner(cm, prepared, ch, bias);\n+                            if (!found.bogus) {\n+                                prepared.cache[key] = found;\n+                            }\n+                        }\n+                        return {\n+                            left: found.left,\n+                            right: found.right,\n+                            top: varHeight ? found.rtop : found.top,\n+                            bottom: varHeight ? found.rbottom : found.bottom\n+                        };\n+                    }\n+                    var nullRect = {\n+                        left: 0,\n+                        right: 0,\n+                        top: 0,\n+                        bottom: 0\n+                    };\n+\n+                    function nodeAndOffsetInLineMap(map, ch, bias) {\n+                        var node, start, end, collapse, mStart, mEnd;\n+                        // First, search the line map for the text node corresponding to,\n+                        // or closest to, the target character.\n+                        for (var i = 0; i < map.length; i += 3) {\n+                            mStart = map[i];\n+                            mEnd = map[i + 1];\n+                            if (ch < mStart) {\n+                                start = 0;\n+                                end = 1;\n+                                collapse = \"left\";\n+                            } else if (ch < mEnd) {\n+                                start = ch - mStart;\n+                                end = start + 1;\n+                            } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n+                                end = mEnd - mStart;\n+                                start = end - 1;\n+                                if (ch >= mEnd) {\n+                                    collapse = \"right\";\n+                                }\n+                            }\n+                            if (start != null) {\n+                                node = map[i + 2];\n+                                if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\")) {\n+                                    collapse = bias;\n+                                }\n+                                if (bias == \"left\" && start == 0) {\n+                                    while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n+                                        node = map[(i -= 3) + 2];\n+                                        collapse = \"left\";\n+                                    }\n+                                }\n+                                if (bias == \"right\" && start == mEnd - mStart) {\n+                                    while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n+                                        node = map[(i += 3) + 2];\n+                                        collapse = \"right\";\n+                                    }\n+                                }\n+                                break;\n+                            }\n+                        }\n+                        return {\n+                            node: node,\n+                            start: start,\n+                            end: end,\n+                            collapse: collapse,\n+                            coverStart: mStart,\n+                            coverEnd: mEnd\n+                        };\n+                    }\n+\n+                    function getUsefulRect(rects, bias) {\n+                        var rect = nullRect;\n+                        if (bias == \"left\") {\n+                            for (var i = 0; i < rects.length; i++) {\n+                                if ((rect = rects[i]).left != rect.right) {\n+                                    break;\n+                                }\n+                            }\n+                        } else {\n+                            for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n+                                if ((rect = rects[i$1]).left != rect.right) {\n+                                    break;\n+                                }\n+                            }\n+                        }\n+                        return rect;\n+                    }\n+\n+                    function measureCharInner(cm, prepared, ch, bias) {\n+                        var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n+                        var node = place.node,\n+                            start = place.start,\n+                            end = place.end,\n+                            collapse = place.collapse;\n+                        var rect;\n+                        if (node.nodeType == 3) {\n+                            // If it is a text node, use a range to retrieve the coordinates.\n+                            for (var i$1 = 0; i$1 < 4; i$1++) {\n+                                // Retry a maximum of 4 times when nonsense rectangles are returned\n+                                while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) {\n+                                    --start;\n+                                }\n+                                while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) {\n+                                    ++end;\n+                                }\n+                                if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) {\n+                                    rect = node.parentNode.getBoundingClientRect();\n+                                } else {\n+                                    rect = getUsefulRect(range(node, start, end).getClientRects(), bias);\n+                                }\n+                                if (rect.left || rect.right || start == 0) {\n+                                    break;\n+                                }\n+                                end = start;\n+                                start = start - 1;\n+                                collapse = \"right\";\n+                            }\n+                            if (ie && ie_version < 11) {\n+                                rect = maybeUpdateRectForZooming(cm.display.measure, rect);\n+                            }\n+                        } else {\n+                            // If it is a widget, simply get the box for the whole widget.\n+                            if (start > 0) {\n+                                collapse = bias = \"right\";\n+                            }\n+                            var rects;\n+                            if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) {\n+                                rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n+                            } else {\n+                                rect = node.getBoundingClientRect();\n+                            }\n+                        }\n+                        if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n+                            var rSpan = node.parentNode.getClientRects()[0];\n+                            if (rSpan) {\n+                                rect = {\n+                                    left: rSpan.left,\n+                                    right: rSpan.left + charWidth(cm.display),\n+                                    top: rSpan.top,\n+                                    bottom: rSpan.bottom\n+                                };\n+                            } else {\n+                                rect = nullRect;\n+                            }\n+                        }\n+                        var rtop = rect.top - prepared.rect.top,\n+                            rbot = rect.bottom - prepared.rect.top;\n+                        var mid = (rtop + rbot) / 2;\n+                        var heights = prepared.view.measure.heights;\n+                        var i = 0;\n+                        for (; i < heights.length - 1; i++) {\n+                            if (mid < heights[i]) {\n+                                break;\n+                            }\n+                        }\n+                        var top = i ? heights[i - 1] : 0,\n+                            bot = heights[i];\n+                        var result = {\n+                            left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n+                            right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n+                            top: top,\n+                            bottom: bot\n+                        };\n+                        if (!rect.left && !rect.right) {\n+                            result.bogus = true;\n+                        }\n+                        if (!cm.options.singleCursorHeightPerLine) {\n+                            result.rtop = rtop;\n+                            result.rbottom = rbot;\n+                        }\n+                        return result;\n+                    }\n+\n+                    // Work around problem with bounding client rects on ranges being\n+                    // returned incorrectly when zoomed on IE10 and below.\n+                    function maybeUpdateRectForZooming(measure, rect) {\n+                        if (!window.screen || screen.logicalXDPI == null || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) {\n+                            return rect;\n+                        }\n+                        var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n+                        var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n+                        return {\n+                            left: rect.left * scaleX,\n+                            right: rect.right * scaleX,\n+                            top: rect.top * scaleY,\n+                            bottom: rect.bottom * scaleY\n+                        };\n+                    }\n+\n+                    function clearLineMeasurementCacheFor(lineView) {\n+                        if (lineView.measure) {\n+                            lineView.measure.cache = {};\n+                            lineView.measure.heights = null;\n+                            if (lineView.rest) {\n+                                for (var i = 0; i < lineView.rest.length; i++) {\n+                                    lineView.measure.caches[i] = {};\n+                                }\n+                            }\n+                        }\n+                    }\n+\n+                    function clearLineMeasurementCache(cm) {\n+                        cm.display.externalMeasure = null;\n+                        removeChildren(cm.display.lineMeasure);\n+                        for (var i = 0; i < cm.display.view.length; i++) {\n+                            clearLineMeasurementCacheFor(cm.display.view[i]);\n+                        }\n+                    }\n+\n+                    function clearCaches(cm) {\n+                        clearLineMeasurementCache(cm);\n+                        cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n+                        if (!cm.options.lineWrapping) {\n+                            cm.display.maxLineChanged = true;\n+                        }\n+                        cm.display.lineNumChars = null;\n+                    }\n+\n+                    function pageScrollX() {\n+                        // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n+                        // which causes page_Offset and bounding client rects to use\n+                        // different reference viewports and invalidate our calculations.\n+                        if (chrome && android) {\n+                            return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft));\n+                        }\n+                        return window.pageXOffset || (document.documentElement || document.body).scrollLeft;\n+                    }\n+\n+                    function pageScrollY() {\n+                        if (chrome && android) {\n+                            return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop));\n+                        }\n+                        return window.pageYOffset || (document.documentElement || document.body).scrollTop;\n+                    }\n+\n+                    function widgetTopHeight(lineObj) {\n+                        var ref = visualLine(lineObj);\n+                        var widgets = ref.widgets;\n+                        var height = 0;\n+                        if (widgets) {\n+                            for (var i = 0; i < widgets.length; ++i) {\n+                                if (widgets[i].above) {\n+                                    height += widgetHeight(widgets[i]);\n+                                }\n+                            }\n+                        }\n+                        return height;\n+                    }\n+\n+                    // Converts a {top, bottom, left, right} box from line-local\n+                    // coordinates into another coordinate system. Context may be one of\n+                    // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n+                    // or \"page\".\n+                    function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n+                        if (!includeWidgets) {\n+                            var height = widgetTopHeight(lineObj);\n+                            rect.top += height;\n+                            rect.bottom += height;\n+                        }\n+                        if (context == \"line\") {\n+                            return rect;\n+                        }\n+                        if (!context) {\n+                            context = \"local\";\n+                        }\n+                        var yOff = heightAtLine(lineObj);\n+                        if (context == \"local\") {\n+                            yOff += paddingTop(cm.display);\n+                        } else {\n+                            yOff -= cm.display.viewOffset;\n+                        }\n+                        if (context == \"page\" || context == \"window\") {\n+                            var lOff = cm.display.lineSpace.getBoundingClientRect();\n+                            yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n+                            var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n+                            rect.left += xOff;\n+                            rect.right += xOff;\n+                        }\n+                        rect.top += yOff;\n+                        rect.bottom += yOff;\n+                        return rect;\n+                    }\n+\n+                    // Coverts a box from \"div\" coords to another coordinate system.\n+                    // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n+                    function fromCoordSystem(cm, coords, context) {\n+                        if (context == \"div\") {\n+                            return coords;\n+                        }\n+                        var left = coords.left,\n+                            top = coords.top;\n+                        // First move into \"page\" coordinate system\n+                        if (context == \"page\") {\n+                            left -= pageScrollX();\n+                            top -= pageScrollY();\n+                        } else if (context == \"local\" || !context) {\n+                            var localBox = cm.display.sizer.getBoundingClientRect();\n+                            left += localBox.left;\n+                            top += localBox.top;\n+                        }\n+                        var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n+                        return {\n+                            left: left - lineSpaceBox.left,\n+                            top: top - lineSpaceBox.top\n+                        };\n+                    }\n+\n+                    function charCoords(cm, pos, context, lineObj, bias) {\n+                        if (!lineObj) {\n+                            lineObj = getLine(cm.doc, pos.line);\n+                        }\n+                        return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);\n+                    }\n+\n+                    // Returns a box for a given cursor position, which may have an\n+                    // 'other' property containing the position of the secondary cursor\n+                    // on a bidi boundary.\n+                    // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n+                    // and after `char - 1` in writing order of `char - 1`\n+                    // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n+                    // and before `char` in writing order of `char`\n+                    // Examples (upper-case letters are RTL, lower-case are LTR):\n+                    //     Pos(0, 1, ...)\n+                    //     before   after\n+                    // ab     a|b     a|b\n+                    // aB     a|B     aB|\n+                    // Ab     |Ab     A|b\n+                    // AB     B|A     B|A\n+                    // Every position after the last character on a line is considered to stick\n+                    // to the last character on the line.\n+                    function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n+                        lineObj = lineObj || getLine(cm.doc, pos.line);\n+                        if (!preparedMeasure) {\n+                            preparedMeasure = prepareMeasureForLine(cm, lineObj);\n+                        }\n+\n+                        function get(ch, right) {\n+                            var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n+                            if (right) {\n+                                m.left = m.right;\n+                            } else {\n+                                m.right = m.left;\n+                            }\n+                            return intoCoordSystem(cm, lineObj, m, context);\n+                        }\n+                        var order = getOrder(lineObj, cm.doc.direction),\n+                            ch = pos.ch,\n+                            sticky = pos.sticky;\n+                        if (ch >= lineObj.text.length) {\n+                            ch = lineObj.text.length;\n+                            sticky = \"before\";\n+                        } else if (ch <= 0) {\n+                            ch = 0;\n+                            sticky = \"after\";\n+                        }\n+                        if (!order) {\n+                            return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\");\n+                        }\n+\n+                        function getBidi(ch, partPos, invert) {\n+                            var part = order[partPos],\n+                                right = part.level == 1;\n+                            return get(invert ? ch - 1 : ch, right != invert);\n+                        }\n+                        var partPos = getBidiPartAt(order, ch, sticky);\n+                        var other = bidiOther;\n+                        var val = getBidi(ch, partPos, sticky == \"before\");\n+                        if (other != null) {\n+                            val.other = getBidi(ch, other, sticky != \"before\");\n+                        }\n+                        return val;\n+                    }\n+\n+                    // Used to cheaply estimate the coordinates for a position. Used for\n+                    // intermediate scroll updates.\n+                    function estimateCoords(cm, pos) {\n+                        var left = 0;\n+                        pos = clipPos(cm.doc, pos);\n+                        if (!cm.options.lineWrapping) {\n+                            left = charWidth(cm.display) * pos.ch;\n+                        }\n+                        var lineObj = getLine(cm.doc, pos.line);\n+                        var top = heightAtLine(lineObj) + paddingTop(cm.display);\n+                        return {\n+                            left: left,\n+                            right: left,\n+                            top: top,\n+                            bottom: top + lineObj.height\n+                        };\n+                    }\n+\n+                    // Positions returned by coordsChar contain some extra information.\n+                    // xRel is the relative x position of the input coordinates compared\n+                    // to the found position (so xRel > 0 means the coordinates are to\n+                    // the right of the character position, for example). When outside\n+                    // is true, that means the coordinates lie outside the line's\n+                    // vertical range.\n+                    function PosWithInfo(line, ch, sticky, outside, xRel) {\n+                        var pos = Pos(line, ch, sticky);\n+                        pos.xRel = xRel;\n+                        if (outside) {\n+                            pos.outside = outside;\n+                        }\n+                        return pos;\n+                    }\n+\n+                    // Compute the character position closest to the given coordinates.\n+                    // Input must be lineSpace-local (\"div\" coordinate system).\n+                    function coordsChar(cm, x, y) {\n+                        var doc = cm.doc;\n+                        y += cm.display.viewOffset;\n+                        if (y < 0) {\n+                            return PosWithInfo(doc.first, 0, null, -1, -1);\n+                        }\n+                        var lineN = lineAtHeight(doc, y),\n+                            last = doc.first + doc.size - 1;\n+                        if (lineN > last) {\n+                            return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1);\n+                        }\n+                        if (x < 0) {\n+                            x = 0;\n+                        }\n+                        var lineObj = getLine(doc, lineN);\n+                        for (;;) {\n+                            var found = coordsCharInner(cm, lineObj, lineN, x, y);\n+                            var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n+                            if (!collapsed) {\n+                                return found;\n+                            }\n+                            var rangeEnd = collapsed.find(1);\n+                            if (rangeEnd.line == lineN) {\n+                                return rangeEnd;\n+                            }\n+                            lineObj = getLine(doc, lineN = rangeEnd.line);\n+                        }\n+                    }\n+\n+                    function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n+                        y -= widgetTopHeight(lineObj);\n+                        var end = lineObj.text.length;\n+                        var begin = findFirst(function(ch) {\n+                            return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y;\n+                        }, end, 0);\n+                        end = findFirst(function(ch) {\n+                            return measureCharPrepared(cm, preparedMeasure, ch).top > y;\n+                        }, begin, end);\n+                        return {\n+                            begin: begin,\n+                            end: end\n+                        };\n+                    }\n+\n+                    function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n+                        if (!preparedMeasure) {\n+                            preparedMeasure = prepareMeasureForLine(cm, lineObj);\n+                        }\n+                        var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n+                        return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop);\n+                    }\n+\n+                    // Returns true if the given side of a box is after the given\n+                    // coordinates, in top-to-bottom, left-to-right order.\n+                    function boxIsAfter(box, x, y, left) {\n+                        return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x;\n+                    }\n+\n+                    function coordsCharInner(cm, lineObj, lineNo, x, y) {\n+                        // Move y into line-local coordinate space\n+                        y -= heightAtLine(lineObj);\n+                        var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n+                        // When directly calling `measureCharPrepared`, we have to adjust\n+                        // for the widgets at this line.\n+                        var widgetHeight = widgetTopHeight(lineObj);\n+                        var begin = 0,\n+                            end = lineObj.text.length,\n+                            ltr = true;\n+                        var order = getOrder(lineObj, cm.doc.direction);\n+                        // If the line isn't plain left-to-right text, first figure out\n+                        // which bidi section the coordinates fall into.\n+                        if (order) {\n+                            var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)(cm, lineObj, lineNo, preparedMeasure, order, x, y);\n+                            ltr = part.level != 1;\n+                            // The awkward -1 offsets are needed because findFirst (called\n+                            // on these below) will treat its first bound as inclusive,\n+                            // second as exclusive, but we want to actually address the\n+                            // characters in the part's range\n+                            begin = ltr ? part.from : part.to - 1;\n+                            end = ltr ? part.to : part.from - 1;\n+                        }\n+\n+                        // A binary search to find the first character whose bounding box\n+                        // starts after the coordinates. If we run across any whose box wrap\n+                        // the coordinates, store that.\n+                        var chAround = null,\n+                            boxAround = null;\n+                        var ch = findFirst(function(ch) {\n+                            var box = measureCharPrepared(cm, preparedMeasure, ch);\n+                            box.top += widgetHeight;\n+                            box.bottom += widgetHeight;\n+                            if (!boxIsAfter(box, x, y, false)) {\n+                                return false;\n+                            }\n+                            if (box.top <= y && box.left <= x) {\n+                                chAround = ch;\n+                                boxAround = box;\n+                            }\n+                            return true;\n+                        }, begin, end);\n+                        var baseX,\n+                            sticky,\n+                            outside = false;\n+                        // If a box around the coordinates was found, use that\n+                        if (boxAround) {\n+                            // Distinguish coordinates nearer to the left or right side of the box\n+                            var atLeft = x - boxAround.left < boxAround.right - x,\n+                                atStart = atLeft == ltr;\n+                            ch = chAround + (atStart ? 0 : 1);\n+                            sticky = atStart ? \"after\" : \"before\";\n+                            baseX = atLeft ? boxAround.left : boxAround.right;\n+                        } else {\n+                            // (Adjust for extended bound, if necessary.)\n+                            if (!ltr && (ch == end || ch == begin)) {\n+                                ch++;\n+                            }\n+                            // To determine which side to associate with, get the box to the\n+                            // left of the character and compare it's vertical position to the\n+                            // coordinates\n+                            sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" : measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y == ltr ? \"after\" : \"before\";\n+                            // Now get accurate coordinates for this place, in order to get a\n+                            // base X position\n+                            var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n+                            baseX = coords.left;\n+                            outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n+                        }\n+                        ch = skipExtendingChars(lineObj.text, ch, 1);\n+                        return PosWithInfo(lineNo, ch, sticky, outside, x - baseX);\n+                    }\n+\n+                    function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n+                        // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n+                        // situation, we can take this ordering to correspond to the visual\n+                        // ordering. This finds the first part whose end is after the given\n+                        // coordinates.\n+                        var index = findFirst(function(i) {\n+                            var part = order[i],\n+                                ltr = part.level != 1;\n+                            return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"), \"line\", lineObj, preparedMeasure), x, y, true);\n+                        }, 0, order.length - 1);\n+                        var part = order[index];\n+                        // If this isn't the first part, the part's start is also after\n+                        // the coordinates, and the coordinates aren't on the same line as\n+                        // that start, move one part back.\n+                        if (index > 0) {\n+                            var ltr = part.level != 1;\n+                            var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"), \"line\", lineObj, preparedMeasure);\n+                            if (boxIsAfter(start, x, y, true) && start.top > y) {\n+                                part = order[index - 1];\n+                            }\n+                        }\n+                        return part;\n+                    }\n+\n+                    function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n+                        // In a wrapped line, rtl text on wrapping boundaries can do things\n+                        // that don't correspond to the ordering in our `order` array at\n+                        // all, so a binary search doesn't work, and we want to return a\n+                        // part that only spans one line so that the binary search in\n+                        // coordsCharInner is safe. As such, we first find the extent of the\n+                        // wrapped line, and then do a flat search in which we discard any\n+                        // spans that aren't on the line.\n+                        var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n+                        var begin = ref.begin;\n+                        var end = ref.end;\n+                        if (/\\s/.test(lineObj.text.charAt(end - 1))) {\n+                            end--;\n+                        }\n+                        var part = null,\n+                            closestDist = null;\n+                        for (var i = 0; i < order.length; i++) {\n+                            var p = order[i];\n+                            if (p.from >= end || p.to <= begin) {\n+                                continue;\n+                            }\n+                            var ltr = p.level != 1;\n+                            var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n+                            // Weigh against spans ending before this, so that they are only\n+                            // picked if nothing ends after\n+                            var dist = endX < x ? x - endX + 1e9 : endX - x;\n+                            if (!part || closestDist > dist) {\n+                                part = p;\n+                                closestDist = dist;\n+                            }\n+                        }\n+                        if (!part) {\n+                            part = order[order.length - 1];\n+                        }\n+                        // Clip the part to the wrapped line.\n+                        if (part.from < begin) {\n+                            part = {\n+                                from: begin,\n+                                to: part.to,\n+                                level: part.level\n+                            };\n+                        }\n+                        if (part.to > end) {\n+                            part = {\n+                                from: part.from,\n+                                to: end,\n+                                level: part.level\n+                            };\n+                        }\n+                        return part;\n+                    }\n+                    var measureText;\n+                    // Compute the default text height.\n+                    function textHeight(display) {\n+                        if (display.cachedTextHeight != null) {\n+                            return display.cachedTextHeight;\n+                        }\n+                        if (measureText == null) {\n+                            measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n+                            // Measure a bunch of lines, for browsers that compute\n+                            // fractional heights.\n+                            for (var i = 0; i < 49; ++i) {\n+                                measureText.appendChild(document.createTextNode(\"x\"));\n+                                measureText.appendChild(elt(\"br\"));\n+                            }\n+                            measureText.appendChild(document.createTextNode(\"x\"));\n+                        }\n+                        removeChildrenAndAdd(display.measure, measureText);\n+                        var height = measureText.offsetHeight / 50;\n+                        if (height > 3) {\n+                            display.cachedTextHeight = height;\n+                        }\n+                        removeChildren(display.measure);\n+                        return height || 1;\n+                    }\n+\n+                    // Compute the default character width.\n+                    function charWidth(display) {\n+                        if (display.cachedCharWidth != null) {\n+                            return display.cachedCharWidth;\n+                        }\n+                        var anchor = elt(\"span\", \"xxxxxxxxxx\");\n+                        var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n+                        removeChildrenAndAdd(display.measure, pre);\n+                        var rect = anchor.getBoundingClientRect(),\n+                            width = (rect.right - rect.left) / 10;\n+                        if (width > 2) {\n+                            display.cachedCharWidth = width;\n+                        }\n+                        return width || 10;\n+                    }\n+\n+                    // Do a bulk-read of the DOM positions and sizes needed to draw the\n+                    // view, so that we don't interleave reading and writing to the DOM.\n+                    function getDimensions(cm) {\n+                        var d = cm.display,\n+                            left = {},\n+                            width = {};\n+                        var gutterLeft = d.gutters.clientLeft;\n+                        for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n+                            var id = cm.display.gutterSpecs[i].className;\n+                            left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n+                            width[id] = n.clientWidth;\n+                        }\n+                        return {\n+                            fixedPos: compensateForHScroll(d),\n+                            gutterTotalWidth: d.gutters.offsetWidth,\n+                            gutterLeft: left,\n+                            gutterWidth: width,\n+                            wrapperWidth: d.wrapper.clientWidth\n+                        };\n+                    }\n+\n+                    // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n+                    // but using getBoundingClientRect to get a sub-pixel-accurate\n+                    // result.\n+                    function compensateForHScroll(display) {\n+                        return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;\n+                    }\n+\n+                    // Returns a function that estimates the height of a line, to use as\n+                    // first approximation until the line becomes visible (and is thus\n+                    // properly measurable).\n+                    function estimateHeight(cm) {\n+                        var th = textHeight(cm.display),\n+                            wrapping = cm.options.lineWrapping;\n+                        var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n+                        return function(line) {\n+                            if (lineIsHidden(cm.doc, line)) {\n+                                return 0;\n+                            }\n+                            var widgetsHeight = 0;\n+                            if (line.widgets) {\n+                                for (var i = 0; i < line.widgets.length; i++) {\n+                                    if (line.widgets[i].height) {\n+                                        widgetsHeight += line.widgets[i].height;\n+                                    }\n+                                }\n+                            }\n+                            if (wrapping) {\n+                                return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;\n+                            } else {\n+                                return widgetsHeight + th;\n+                            }\n+                        };\n+                    }\n+\n+                    function estimateLineHeights(cm) {\n+                        var doc = cm.doc,\n+                            est = estimateHeight(cm);\n+                        doc.iter(function(line) {\n+                            var estHeight = est(line);\n+                            if (estHeight != line.height) {\n+                                updateLineHeight(line, estHeight);\n+                            }\n+                        });\n+                    }\n+\n+                    // Given a mouse event, find the corresponding position. If liberal\n+                    // is false, it checks whether a gutter or scrollbar was clicked,\n+                    // and returns null if it was. forRect is used by rectangular\n+                    // selections, and tries to estimate a character position even for\n+                    // coordinates beyond the right of the text.\n+                    function posFromMouse(cm, e, liberal, forRect) {\n+                        var display = cm.display;\n+                        if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") {\n+                            return null;\n+                        }\n+                        var x,\n+                            y,\n+                            space = display.lineSpace.getBoundingClientRect();\n+                        // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n+                        try {\n+                            x = e.clientX - space.left;\n+                            y = e.clientY - space.top;\n+                        } catch (e$1) {\n+                            return null;\n+                        }\n+                        var coords = coordsChar(cm, x, y),\n+                            line;\n+                        if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n+                            var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n+                            coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n+                        }\n+                        return coords;\n+                    }\n+\n+                    // Find the view element corresponding to a given line. Return null\n+                    // when the line isn't visible.\n+                    function findViewIndex(cm, n) {\n+                        if (n >= cm.display.viewTo) {\n+                            return null;\n+                        }\n+                        n -= cm.display.viewFrom;\n+                        if (n < 0) {\n+                            return null;\n+                        }\n+                        var view = cm.display.view;\n+                        for (var i = 0; i < view.length; i++) {\n+                            n -= view[i].size;\n+                            if (n < 0) {\n+                                return i;\n+                            }\n+                        }\n+                    }\n+\n+                    // Updates the display.view data structure for a given change to the\n+                    // document. From and to are in pre-change coordinates. Lendiff is\n+                    // the amount of lines added or subtracted by the change. This is\n+                    // used for changes that span multiple lines, or change the way\n+                    // lines are divided into visual lines. regLineChange (below)\n+                    // registers single-line changes.\n+                    function regChange(cm, from, to, lendiff) {\n+                        if (from == null) {\n+                            from = cm.doc.first;\n+                        }\n+                        if (to == null) {\n+                            to = cm.doc.first + cm.doc.size;\n+                        }\n+                        if (!lendiff) {\n+                            lendiff = 0;\n+                        }\n+                        var display = cm.display;\n+                        if (lendiff && to < display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers > from)) {\n+                            display.updateLineNumbers = from;\n+                        }\n+                        cm.curOp.viewChanged = true;\n+                        if (from >= display.viewTo) {\n+                            // Change after\n+                            if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) {\n+                                resetView(cm);\n+                            }\n+                        } else if (to <= display.viewFrom) {\n+                            // Change before\n+                            if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n+                                resetView(cm);\n+                            } else {\n+                                display.viewFrom += lendiff;\n+                                display.viewTo += lendiff;\n+                            }\n+                        } else if (from <= display.viewFrom && to >= display.viewTo) {\n+                            // Full overlap\n+                            resetView(cm);\n+                        } else if (from <= display.viewFrom) {\n+                            // Top overlap\n+                            var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n+                            if (cut) {\n+                                display.view = display.view.slice(cut.index);\n+                                display.viewFrom = cut.lineN;\n+                                display.viewTo += lendiff;\n+                            } else {\n+                                resetView(cm);\n+                            }\n+                        } else if (to >= display.viewTo) {\n+                            // Bottom overlap\n+                            var cut$1 = viewCuttingPoint(cm, from, from, -1);\n+                            if (cut$1) {\n+                                display.view = display.view.slice(0, cut$1.index);\n+                                display.viewTo = cut$1.lineN;\n+                            } else {\n+                                resetView(cm);\n+                            }\n+                        } else {\n+                            // Gap in the middle\n+                            var cutTop = viewCuttingPoint(cm, from, from, -1);\n+                            var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n+                            if (cutTop && cutBot) {\n+                                display.view = display.view.slice(0, cutTop.index).concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)).concat(display.view.slice(cutBot.index));\n+                                display.viewTo += lendiff;\n+                            } else {\n+                                resetView(cm);\n+                            }\n+                        }\n+                        var ext = display.externalMeasured;\n+                        if (ext) {\n+                            if (to < ext.lineN) {\n+                                ext.lineN += lendiff;\n+                            } else if (from < ext.lineN + ext.size) {\n+                                display.externalMeasured = null;\n+                            }\n+                        }\n+                    }\n+\n+                    // Register a change to a single line. Type must be one of \"text\",\n+                    // \"gutter\", \"class\", \"widget\"\n+                    function regLineChange(cm, line, type) {\n+                        cm.curOp.viewChanged = true;\n+                        var display = cm.display,\n+                            ext = cm.display.externalMeasured;\n+                        if (ext && line >= ext.lineN && line < ext.lineN + ext.size) {\n+                            display.externalMeasured = null;\n+                        }\n+                        if (line < display.viewFrom || line >= display.viewTo) {\n+                            return;\n+                        }\n+                        var lineView = display.view[findViewIndex(cm, line)];\n+                        if (lineView.node == null) {\n+                            return;\n+                        }\n+                        var arr = lineView.changes || (lineView.changes = []);\n+                        if (indexOf(arr, type) == -1) {\n+                            arr.push(type);\n+                        }\n+                    }\n+\n+                    // Clear the view.\n+                    function resetView(cm) {\n+                        cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n+                        cm.display.view = [];\n+                        cm.display.viewOffset = 0;\n+                    }\n+\n+                    function viewCuttingPoint(cm, oldN, newN, dir) {\n+                        var index = findViewIndex(cm, oldN),\n+                            diff,\n+                            view = cm.display.view;\n+                        if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) {\n+                            return {\n+                                index: index,\n+                                lineN: newN\n+                            };\n+                        }\n+                        var n = cm.display.viewFrom;\n+                        for (var i = 0; i < index; i++) {\n+                            n += view[i].size;\n+                        }\n+                        if (n != oldN) {\n+                            if (dir > 0) {\n+                                if (index == view.length - 1) {\n+                                    return null;\n+                                }\n+                                diff = n + view[index].size - oldN;\n+                                index++;\n+                            } else {\n+                                diff = n - oldN;\n+                            }\n+                            oldN += diff;\n+                            newN += diff;\n+                        }\n+                        while (visualLineNo(cm.doc, newN) != newN) {\n+                            if (index == (dir < 0 ? 0 : view.length - 1)) {\n+                                return null;\n+                            }\n+                            newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n+                            index += dir;\n+                        }\n+                        return {\n+                            index: index,\n+                            lineN: newN\n+                        };\n+                    }\n+\n+                    // Force the view to cover a given range, adding empty view element\n+                    // or clipping off existing ones as needed.\n+                    function adjustView(cm, from, to) {\n+                        var display = cm.display,\n+                            view = display.view;\n+                        if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n+                            display.view = buildViewArray(cm, from, to);\n+                            display.viewFrom = from;\n+                        } else {\n+                            if (display.viewFrom > from) {\n+                                display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);\n+                            } else if (display.viewFrom < from) {\n+                                display.view = display.view.slice(findViewIndex(cm, from));\n+                            }\n+                            display.viewFrom = from;\n+                            if (display.viewTo < to) {\n+                                display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));\n+                            } else if (display.viewTo > to) {\n+                                display.view = display.view.slice(0, findViewIndex(cm, to));\n+                            }\n+                        }\n+                        display.viewTo = to;\n+                    }\n+\n+                    // Count the number of lines in the view whose DOM representation is\n+                    // out of date (or nonexistent).\n+                    function countDirtyView(cm) {\n+                        var view = cm.display.view,\n+                            dirty = 0;\n+                        for (var i = 0; i < view.length; i++) {\n+                            var lineView = view[i];\n+                            if (!lineView.hidden && (!lineView.node || lineView.changes)) {\n+                                ++dirty;\n+                            }\n+                        }\n+                        return dirty;\n+                    }\n+\n+                    function updateSelection(cm) {\n+                        cm.display.input.showSelection(cm.display.input.prepareSelection());\n+                    }\n+\n+                    function prepareSelection(cm, primary) {\n+                        if (primary === void 0) primary = true;\n+                        var doc = cm.doc,\n+                            result = {};\n+                        var curFragment = result.cursors = document.createDocumentFragment();\n+                        var selFragment = result.selection = document.createDocumentFragment();\n+                        var customCursor = cm.options.$customCursor;\n+                        if (customCursor) {\n+                            primary = true;\n+                        }\n+                        for (var i = 0; i < doc.sel.ranges.length; i++) {\n+                            if (!primary && i == doc.sel.primIndex) {\n+                                continue;\n+                            }\n+                            var range = doc.sel.ranges[i];\n+                            if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) {\n+                                continue;\n+                            }\n+                            var collapsed = range.empty();\n+                            if (customCursor) {\n+                                var head = customCursor(cm, range);\n+                                if (head) {\n+                                    drawSelectionCursor(cm, head, curFragment);\n+                                }\n+                            } else if (collapsed || cm.options.showCursorWhenSelecting) {\n+                                drawSelectionCursor(cm, range.head, curFragment);\n+                            }\n+                            if (!collapsed) {\n+                                drawSelectionRange(cm, range, selFragment);\n+                            }\n+                        }\n+                        return result;\n+                    }\n+\n+                    // Draws a cursor for the given range\n+                    function drawSelectionCursor(cm, head, output) {\n+                        var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n+                        var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n+                        cursor.style.left = pos.left + \"px\";\n+                        cursor.style.top = pos.top + \"px\";\n+                        cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n+                        if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n+                            var charPos = charCoords(cm, head, \"div\", null, null);\n+                            var width = charPos.right - charPos.left;\n+                            cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n+                        }\n+                        if (pos.other) {\n+                            // Secondary cursor, shown when on a 'jump' in bi-directional text\n+                            var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n+                            otherCursor.style.display = \"\";\n+                            otherCursor.style.left = pos.other.left + \"px\";\n+                            otherCursor.style.top = pos.other.top + \"px\";\n+                            otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n+                        }\n+                    }\n+\n+                    function cmpCoords(a, b) {\n+                        return a.top - b.top || a.left - b.left;\n+                    }\n+\n+                    // Draws the given range as a highlighted selection\n+                    function drawSelectionRange(cm, range, output) {\n+                        var display = cm.display,\n+                            doc = cm.doc;\n+                        var fragment = document.createDocumentFragment();\n+                        var padding = paddingH(cm.display),\n+                            leftSide = padding.left;\n+                        var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n+                        var docLTR = doc.direction == \"ltr\";\n+\n+                        function add(left, top, width, bottom) {\n+                            if (top < 0) {\n+                                top = 0;\n+                            }\n+                            top = Math.round(top);\n+                            bottom = Math.round(bottom);\n+                            fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", \"position: absolute; left: \" + left + \"px;\\n                             top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n                             height: \" + (bottom - top) + \"px\"));\n+                        }\n+\n+                        function drawForLine(line, fromArg, toArg) {\n+                            var lineObj = getLine(doc, line);\n+                            var lineLen = lineObj.text.length;\n+                            var start, end;\n+\n+                            function coords(ch, bias) {\n+                                return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias);\n+                            }\n+\n+                            function wrapX(pos, dir, side) {\n+                                var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n+                                var prop = dir == \"ltr\" == (side == \"after\") ? \"left\" : \"right\";\n+                                var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n+                                return coords(ch, prop)[prop];\n+                            }\n+                            var order = getOrder(lineObj, doc.direction);\n+                            iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir, i) {\n+                                var ltr = dir == \"ltr\";\n+                                var fromPos = coords(from, ltr ? \"left\" : \"right\");\n+                                var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n+                                var openStart = fromArg == null && from == 0,\n+                                    openEnd = toArg == null && to == lineLen;\n+                                var first = i == 0,\n+                                    last = !order || i == order.length - 1;\n+                                if (toPos.top - fromPos.top <= 3) {\n+                                    // Single line\n+                                    var openLeft = (docLTR ? openStart : openEnd) && first;\n+                                    var openRight = (docLTR ? openEnd : openStart) && last;\n+                                    var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n+                                    var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n+                                    add(left, fromPos.top, right - left, fromPos.bottom);\n+                                } else {\n+                                    // Multiple lines\n+                                    var topLeft, topRight, botLeft, botRight;\n+                                    if (ltr) {\n+                                        topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n+                                        topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n+                                        botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n+                                        botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n+                                    } else {\n+                                        topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n+                                        topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n+                                        botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n+                                        botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n+                                    }\n+                                    add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n+                                    if (fromPos.bottom < toPos.top) {\n+                                        add(leftSide, fromPos.bottom, null, toPos.top);\n+                                    }\n+                                    add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n+                                }\n+                                if (!start || cmpCoords(fromPos, start) < 0) {\n+                                    start = fromPos;\n+                                }\n+                                if (cmpCoords(toPos, start) < 0) {\n+                                    start = toPos;\n+                                }\n+                                if (!end || cmpCoords(fromPos, end) < 0) {\n+                                    end = fromPos;\n+                                }\n+                                if (cmpCoords(toPos, end) < 0) {\n+                                    end = toPos;\n+                                }\n+                            });\n+                            return {\n+                                start: start,\n+                                end: end\n+                            };\n+                        }\n+                        var sFrom = range.from(),\n+                            sTo = range.to();\n+                        if (sFrom.line == sTo.line) {\n+                            drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n+                        } else {\n+                            var fromLine = getLine(doc, sFrom.line),\n+                                toLine = getLine(doc, sTo.line);\n+                            var singleVLine = visualLine(fromLine) == visualLine(toLine);\n+                            var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n+                            var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n+                            if (singleVLine) {\n+                                if (leftEnd.top < rightStart.top - 2) {\n+                                    add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n+                                    add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n+                                } else {\n+                                    add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n+                                }\n+                            }\n+                            if (leftEnd.bottom < rightStart.top) {\n+                                add(leftSide, leftEnd.bottom, null, rightStart.top);\n+                            }\n+                        }\n+                        output.appendChild(fragment);\n+                    }\n+\n+                    // Cursor-blinking\n+                    function restartBlink(cm) {\n+                        if (!cm.state.focused) {\n+                            return;\n+                        }\n+                        var display = cm.display;\n+                        clearInterval(display.blinker);\n+                        var on = true;\n+                        display.cursorDiv.style.visibility = \"\";\n+                        if (cm.options.cursorBlinkRate > 0) {\n+                            display.blinker = setInterval(function() {\n+                                if (!cm.hasFocus()) {\n+                                    onBlur(cm);\n+                                }\n+                                display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n+                            }, cm.options.cursorBlinkRate);\n+                        } else if (cm.options.cursorBlinkRate < 0) {\n+                            display.cursorDiv.style.visibility = \"hidden\";\n+                        }\n+                    }\n+\n+                    function ensureFocus(cm) {\n+                        if (!cm.hasFocus()) {\n+                            cm.display.input.focus();\n+                            if (!cm.state.focused) {\n+                                onFocus(cm);\n+                            }\n+                        }\n+                    }\n+\n+                    function delayBlurEvent(cm) {\n+                        cm.state.delayingBlurEvent = true;\n+                        setTimeout(function() {\n+                            if (cm.state.delayingBlurEvent) {\n+                                cm.state.delayingBlurEvent = false;\n+                                if (cm.state.focused) {\n+                                    onBlur(cm);\n+                                }\n+                            }\n+                        }, 100);\n+                    }\n+\n+                    function onFocus(cm, e) {\n+                        if (cm.state.delayingBlurEvent && !cm.state.draggingText) {\n+                            cm.state.delayingBlurEvent = false;\n+                        }\n+                        if (cm.options.readOnly == \"nocursor\") {\n+                            return;\n+                        }\n+                        if (!cm.state.focused) {\n+                            signal(cm, \"focus\", cm, e);\n+                            cm.state.focused = true;\n+                            addClass(cm.display.wrapper, \"CodeMirror-focused\");\n+                            // This test prevents this from firing when a context\n+                            // menu is closed (since the input reset would kill the\n+                            // select-all detection hack)\n+                            if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n+                                cm.display.input.reset();\n+                                if (webkit) {\n+                                    setTimeout(function() {\n+                                        return cm.display.input.reset(true);\n+                                    }, 20);\n+                                } // Issue #1730\n+                            }\n+                            cm.display.input.receivedFocus();\n+                        }\n+                        restartBlink(cm);\n+                    }\n+\n+                    function onBlur(cm, e) {\n+                        if (cm.state.delayingBlurEvent) {\n+                            return;\n+                        }\n+                        if (cm.state.focused) {\n+                            signal(cm, \"blur\", cm, e);\n+                            cm.state.focused = false;\n+                            rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n+                        }\n+                        clearInterval(cm.display.blinker);\n+                        setTimeout(function() {\n+                            if (!cm.state.focused) {\n+                                cm.display.shift = false;\n+                            }\n+                        }, 150);\n+                    }\n+\n+                    // Read the actual heights of the rendered lines, and update their\n+                    // stored heights to match.\n+                    function updateHeightsInViewport(cm) {\n+                        var display = cm.display;\n+                        var prevBottom = display.lineDiv.offsetTop;\n+                        var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n+                        var oldHeight = display.lineDiv.getBoundingClientRect().top;\n+                        var mustScroll = 0;\n+                        for (var i = 0; i < display.view.length; i++) {\n+                            var cur = display.view[i],\n+                                wrapping = cm.options.lineWrapping;\n+                            var height = void 0,\n+                                width = 0;\n+                            if (cur.hidden) {\n+                                continue;\n+                            }\n+                            oldHeight += cur.line.height;\n+                            if (ie && ie_version < 8) {\n+                                var bot = cur.node.offsetTop + cur.node.offsetHeight;\n+                                height = bot - prevBottom;\n+                                prevBottom = bot;\n+                            } else {\n+                                var box = cur.node.getBoundingClientRect();\n+                                height = box.bottom - box.top;\n+                                // Check that lines don't extend past the right of the current\n+                                // editor width\n+                                if (!wrapping && cur.text.firstChild) {\n+                                    width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1;\n+                                }\n+                            }\n+                            var diff = cur.line.height - height;\n+                            if (diff > .005 || diff < -.005) {\n+                                if (oldHeight < viewTop) {\n+                                    mustScroll -= diff;\n+                                }\n+                                updateLineHeight(cur.line, height);\n+                                updateWidgetHeight(cur.line);\n+                                if (cur.rest) {\n+                                    for (var j = 0; j < cur.rest.length; j++) {\n+                                        updateWidgetHeight(cur.rest[j]);\n+                                    }\n+                                }\n+                            }\n+                            if (width > cm.display.sizerWidth) {\n+                                var chWidth = Math.ceil(width / charWidth(cm.display));\n+                                if (chWidth > cm.display.maxLineLength) {\n+                                    cm.display.maxLineLength = chWidth;\n+                                    cm.display.maxLine = cur.line;\n+                                    cm.display.maxLineChanged = true;\n+                                }\n+                            }\n+                        }\n+                        if (Math.abs(mustScroll) > 2) {\n+                            display.scroller.scrollTop += mustScroll;\n+                        }\n+                    }\n+\n+                    // Read and store the height of line widgets associated with the\n+                    // given line.\n+                    function updateWidgetHeight(line) {\n+                        if (line.widgets) {\n+                            for (var i = 0; i < line.widgets.length; ++i) {\n+                                var w = line.widgets[i],\n+                                    parent = w.node.parentNode;\n+                                if (parent) {\n+                                    w.height = parent.offsetHeight;\n+                                }\n+                            }\n+                        }\n+                    }\n+\n+                    // Compute the lines that are visible in a given viewport (defaults\n+                    // the the current scroll position). viewport may contain top,\n+                    // height, and ensure (see op.scrollToPos) properties.\n+                    function visibleLines(display, doc, viewport) {\n+                        var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n+                        top = Math.floor(top - paddingTop(display));\n+                        var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n+                        var from = lineAtHeight(doc, top),\n+                            to = lineAtHeight(doc, bottom);\n+                        // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n+                        // forces those lines into the viewport (if possible).\n+                        if (viewport && viewport.ensure) {\n+                            var ensureFrom = viewport.ensure.from.line,\n+                                ensureTo = viewport.ensure.to.line;\n+                            if (ensureFrom < from) {\n+                                from = ensureFrom;\n+                                to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n+                            } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n+                                from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n+                                to = ensureTo;\n+                            }\n+                        }\n+                        return {\n+                            from: from,\n+                            to: Math.max(to, from + 1)\n+                        };\n+                    }\n+\n+                    // SCROLLING THINGS INTO VIEW\n+\n+                    // If an editor sits on the top or bottom of the window, partially\n+                    // scrolled out of view, this ensures that the cursor is visible.\n+                    function maybeScrollWindow(cm, rect) {\n+                        if (signalDOMEvent(cm, \"scrollCursorIntoView\")) {\n+                            return;\n+                        }\n+                        var display = cm.display,\n+                            box = display.sizer.getBoundingClientRect(),\n+                            doScroll = null;\n+                        if (rect.top + box.top < 0) {\n+                            doScroll = true;\n+                        } else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) {\n+                            doScroll = false;\n+                        }\n+                        if (doScroll != null && !phantom) {\n+                            var scrollNode = elt(\"div\", \"\\u200b\", null, \"position: absolute;\\n                         top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n                         height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n                         left: \" + rect.left + \"px; width: \" + Math.max(2, rect.right - rect.left) + \"px;\");\n+                            cm.display.lineSpace.appendChild(scrollNode);\n+                            scrollNode.scrollIntoView(doScroll);\n+                            cm.display.lineSpace.removeChild(scrollNode);\n+                        }\n+                    }\n+\n+                    // Scroll a given position into view (immediately), verifying that\n+                    // it actually became visible (as line heights are accurately\n+                    // measured, the position of something may 'drift' during drawing).\n+                    function scrollPosIntoView(cm, pos, end, margin) {\n+                        if (margin == null) {\n+                            margin = 0;\n+                        }\n+                        var rect;\n+                        if (!cm.options.lineWrapping && pos == end) {\n+                            // Set pos and end to the cursor positions around the character pos sticks to\n+                            // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n+                            // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n+                            end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n+                            pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n+                        }\n+                        for (var limit = 0; limit < 5; limit++) {\n+                            var changed = false;\n+                            var coords = cursorCoords(cm, pos);\n+                            var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n+                            rect = {\n+                                left: Math.min(coords.left, endCoords.left),\n+                                top: Math.min(coords.top, endCoords.top) - margin,\n+                                right: Math.max(coords.left, endCoords.left),\n+                                bottom: Math.max(coords.bottom, endCoords.bottom) + margin\n+                            };\n+                            var scrollPos = calculateScrollPos(cm, rect);\n+                            var startTop = cm.doc.scrollTop,\n+                                startLeft = cm.doc.scrollLeft;\n+                            if (scrollPos.scrollTop != null) {\n+                                updateScrollTop(cm, scrollPos.scrollTop);\n+                                if (Math.abs(cm.doc.scrollTop - startTop) > 1) {\n+                                    changed = true;\n+                                }\n+                            }\n+                            if (scrollPos.scrollLeft != null) {\n+                                setScrollLeft(cm, scrollPos.scrollLeft);\n+                                if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) {\n+                                    changed = true;\n+                                }\n+                            }\n+                            if (!changed) {\n+                                break;\n+                            }\n+                        }\n+                        return rect;\n+                    }\n+\n+                    // Scroll a given set of coordinates into view (immediately).\n+                    function scrollIntoView(cm, rect) {\n+                        var scrollPos = calculateScrollPos(cm, rect);\n+                        if (scrollPos.scrollTop != null) {\n+                            updateScrollTop(cm, scrollPos.scrollTop);\n+                        }\n+                        if (scrollPos.scrollLeft != null) {\n+                            setScrollLeft(cm, scrollPos.scrollLeft);\n+                        }\n+                    }\n+\n+                    // Calculate a new scroll position needed to scroll the given\n+                    // rectangle into view. Returns an object with scrollTop and\n+                    // scrollLeft properties. When these are undefined, the\n+                    // vertical/horizontal position does not need to be adjusted.\n+                    function calculateScrollPos(cm, rect) {\n+                        var display = cm.display,\n+                            snapMargin = textHeight(cm.display);\n+                        if (rect.top < 0) {\n+                            rect.top = 0;\n+                        }\n+                        var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n+                        var screen = displayHeight(cm),\n+                            result = {};\n+                        if (rect.bottom - rect.top > screen) {\n+                            rect.bottom = rect.top + screen;\n+                        }\n+                        var docBottom = cm.doc.height + paddingVert(display);\n+                        var atTop = rect.top < snapMargin,\n+                            atBottom = rect.bottom > docBottom - snapMargin;\n+                        if (rect.top < screentop) {\n+                            result.scrollTop = atTop ? 0 : rect.top;\n+                        } else if (rect.bottom > screentop + screen) {\n+                            var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n+                            if (newTop != screentop) {\n+                                result.scrollTop = newTop;\n+                            }\n+                        }\n+                        var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n+                        var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n+                        var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n+                        var tooWide = rect.right - rect.left > screenw;\n+                        if (tooWide) {\n+                            rect.right = rect.left + screenw;\n+                        }\n+                        if (rect.left < 10) {\n+                            result.scrollLeft = 0;\n+                        } else if (rect.left < screenleft) {\n+                            result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10));\n+                        } else if (rect.right > screenw + screenleft - 3) {\n+                            result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw;\n+                        }\n+                        return result;\n+                    }\n+\n+                    // Store a relative adjustment to the scroll position in the current\n+                    // operation (to be applied when the operation finishes).\n+                    function addToScrollTop(cm, top) {\n+                        if (top == null) {\n+                            return;\n+                        }\n+                        resolveScrollToPos(cm);\n+                        cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n+                    }\n+\n+                    // Make sure that at the end of the operation the current cursor is\n+                    // shown.\n+                    function ensureCursorVisible(cm) {\n+                        resolveScrollToPos(cm);\n+                        var cur = cm.getCursor();\n+                        cm.curOp.scrollToPos = {\n+                            from: cur,\n+                            to: cur,\n+                            margin: cm.options.cursorScrollMargin\n+                        };\n+                    }\n+\n+                    function scrollToCoords(cm, x, y) {\n+                        if (x != null || y != null) {\n+                            resolveScrollToPos(cm);\n+                        }\n+                        if (x != null) {\n+                            cm.curOp.scrollLeft = x;\n+                        }\n+                        if (y != null) {\n+                            cm.curOp.scrollTop = y;\n+                        }\n+                    }\n+\n+                    function scrollToRange(cm, range) {\n+                        resolveScrollToPos(cm);\n+                        cm.curOp.scrollToPos = range;\n+                    }\n+\n+                    // When an operation has its scrollToPos property set, and another\n+                    // scroll action is applied before the end of the operation, this\n+                    // 'simulates' scrolling that position into view in a cheap way, so\n+                    // that the effect of intermediate scroll commands is not ignored.\n+                    function resolveScrollToPos(cm) {\n+                        var range = cm.curOp.scrollToPos;\n+                        if (range) {\n+                            cm.curOp.scrollToPos = null;\n+                            var from = estimateCoords(cm, range.from),\n+                                to = estimateCoords(cm, range.to);\n+                            scrollToCoordsRange(cm, from, to, range.margin);\n+                        }\n+                    }\n+\n+                    function scrollToCoordsRange(cm, from, to, margin) {\n+                        var sPos = calculateScrollPos(cm, {\n+                            left: Math.min(from.left, to.left),\n+                            top: Math.min(from.top, to.top) - margin,\n+                            right: Math.max(from.right, to.right),\n+                            bottom: Math.max(from.bottom, to.bottom) + margin\n+                        });\n+                        scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n+                    }\n+\n+                    // Sync the scrollable area and scrollbars, ensure the viewport\n+                    // covers the visible area.\n+                    function updateScrollTop(cm, val) {\n+                        if (Math.abs(cm.doc.scrollTop - val) < 2) {\n+                            return;\n+                        }\n+                        if (!gecko) {\n+                            updateDisplaySimple(cm, {\n+                                top: val\n+                            });\n+                        }\n+                        setScrollTop(cm, val, true);\n+                        if (gecko) {\n+                            updateDisplaySimple(cm);\n+                        }\n+                        startWorker(cm, 100);\n+                    }\n+\n+                    function setScrollTop(cm, val, forceScroll) {\n+                        val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n+                        if (cm.display.scroller.scrollTop == val && !forceScroll) {\n+                            return;\n+                        }\n+                        cm.doc.scrollTop = val;\n+                        cm.display.scrollbars.setScrollTop(val);\n+                        if (cm.display.scroller.scrollTop != val) {\n+                            cm.display.scroller.scrollTop = val;\n+                        }\n+                    }\n+\n+                    // Sync scroller and scrollbar, ensure the gutter elements are\n+                    // aligned.\n+                    function setScrollLeft(cm, val, isScroller, forceScroll) {\n+                        val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n+                        if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) {\n+                            return;\n+                        }\n+                        cm.doc.scrollLeft = val;\n+                        alignHorizontally(cm);\n+                        if (cm.display.scroller.scrollLeft != val) {\n+                            cm.display.scroller.scrollLeft = val;\n+                        }\n+                        cm.display.scrollbars.setScrollLeft(val);\n+                    }\n+\n+                    // SCROLLBARS\n+\n+                    // Prepare DOM reads needed to update the scrollbars. Done in one\n+                    // shot to minimize update/measure roundtrips.\n+                    function measureForScrollbars(cm) {\n+                        var d = cm.display,\n+                            gutterW = d.gutters.offsetWidth;\n+                        var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n+                        return {\n+                            clientHeight: d.scroller.clientHeight,\n+                            viewHeight: d.wrapper.clientHeight,\n+                            scrollWidth: d.scroller.scrollWidth,\n+                            clientWidth: d.scroller.clientWidth,\n+                            viewWidth: d.wrapper.clientWidth,\n+                            barLeft: cm.options.fixedGutter ? gutterW : 0,\n+                            docHeight: docH,\n+                            scrollHeight: docH + scrollGap(cm) + d.barHeight,\n+                            nativeBarWidth: d.nativeBarWidth,\n+                            gutterWidth: gutterW\n+                        };\n+                    }\n+                    var NativeScrollbars = function(place, scroll, cm) {\n+                        this.cm = cm;\n+                        var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n+                        var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n+                        vert.tabIndex = horiz.tabIndex = -1;\n+                        place(vert);\n+                        place(horiz);\n+                        on(vert, \"scroll\", function() {\n+                            if (vert.clientHeight) {\n+                                scroll(vert.scrollTop, \"vertical\");\n+                            }\n+                        });\n+                        on(horiz, \"scroll\", function() {\n+                            if (horiz.clientWidth) {\n+                                scroll(horiz.scrollLeft, \"horizontal\");\n+                            }\n+                        });\n+                        this.checkedZeroWidth = false;\n+                        // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n+                        if (ie && ie_version < 8) {\n+                            this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\";\n+                        }\n+                    };\n+                    NativeScrollbars.prototype.update = function(measure) {\n+                        var needsH = measure.scrollWidth > measure.clientWidth + 1;\n+                        var needsV = measure.scrollHeight > measure.clientHeight + 1;\n+                        var sWidth = measure.nativeBarWidth;\n+                        if (needsV) {\n+                            this.vert.style.display = \"block\";\n+                            this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n+                            var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n+                            // A bug in IE8 can cause this value to be negative, so guard it.\n+                            this.vert.firstChild.style.height = Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n+                        } else {\n+                            this.vert.scrollTop = 0;\n+                            this.vert.style.display = \"\";\n+                            this.vert.firstChild.style.height = \"0\";\n+                        }\n+                        if (needsH) {\n+                            this.horiz.style.display = \"block\";\n+                            this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n+                            this.horiz.style.left = measure.barLeft + \"px\";\n+                            var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n+                            this.horiz.firstChild.style.width = Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n+                        } else {\n+                            this.horiz.style.display = \"\";\n+                            this.horiz.firstChild.style.width = \"0\";\n+                        }\n+                        if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n+                            if (sWidth == 0) {\n+                                this.zeroWidthHack();\n+                            }\n+                            this.checkedZeroWidth = true;\n+                        }\n+                        return {\n+                            right: needsV ? sWidth : 0,\n+                            bottom: needsH ? sWidth : 0\n+                        };\n+                    };\n+                    NativeScrollbars.prototype.setScrollLeft = function(pos) {\n+                        if (this.horiz.scrollLeft != pos) {\n+                            this.horiz.scrollLeft = pos;\n+                        }\n+                        if (this.disableHoriz) {\n+                            this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\");\n+                        }\n+                    };\n+                    NativeScrollbars.prototype.setScrollTop = function(pos) {\n+                        if (this.vert.scrollTop != pos) {\n+                            this.vert.scrollTop = pos;\n+                        }\n+                        if (this.disableVert) {\n+                            this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\");\n+                        }\n+                    };\n+                    NativeScrollbars.prototype.zeroWidthHack = function() {\n+                        var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n+                        this.horiz.style.height = this.vert.style.width = w;\n+                        this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n+                        this.disableHoriz = new Delayed();\n+                        this.disableVert = new Delayed();\n+                    };\n+                    NativeScrollbars.prototype.enableZeroWidthBar = function(bar, delay, type) {\n+                        bar.style.pointerEvents = \"auto\";\n+\n+                        function maybeDisable() {\n+                            // To find out whether the scrollbar is still visible, we\n+                            // check whether the element under the pixel in the bottom\n+                            // right corner of the scrollbar box is the scrollbar box\n+                            // itself (when the bar is still visible) or its filler child\n+                            // (when the bar is hidden). If it is still visible, we keep\n+                            // it enabled, if it's hidden, we disable pointer events.\n+                            var box = bar.getBoundingClientRect();\n+                            var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n+                            if (elt != bar) {\n+                                bar.style.pointerEvents = \"none\";\n+                            } else {\n+                                delay.set(1000, maybeDisable);\n+                            }\n+                        }\n+                        delay.set(1000, maybeDisable);\n+                    };\n+                    NativeScrollbars.prototype.clear = function() {\n+                        var parent = this.horiz.parentNode;\n+                        parent.removeChild(this.horiz);\n+                        parent.removeChild(this.vert);\n+                    };\n+                    var NullScrollbars = function() {};\n+                    NullScrollbars.prototype.update = function() {\n+                        return {\n+                            bottom: 0,\n+                            right: 0\n+                        };\n+                    };\n+                    NullScrollbars.prototype.setScrollLeft = function() {};\n+                    NullScrollbars.prototype.setScrollTop = function() {};\n+                    NullScrollbars.prototype.clear = function() {};\n+\n+                    function updateScrollbars(cm, measure) {\n+                        if (!measure) {\n+                            measure = measureForScrollbars(cm);\n+                        }\n+                        var startWidth = cm.display.barWidth,\n+                            startHeight = cm.display.barHeight;\n+                        updateScrollbarsInner(cm, measure);\n+                        for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n+                            if (startWidth != cm.display.barWidth && cm.options.lineWrapping) {\n+                                updateHeightsInViewport(cm);\n+                            }\n+                            updateScrollbarsInner(cm, measureForScrollbars(cm));\n+                            startWidth = cm.display.barWidth;\n+                            startHeight = cm.display.barHeight;\n+                        }\n+                    }\n+\n+                    // Re-synchronize the fake scrollbars with the actual size of the\n+                    // content.\n+                    function updateScrollbarsInner(cm, measure) {\n+                        var d = cm.display;\n+                        var sizes = d.scrollbars.update(measure);\n+                        d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n+                        d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n+                        d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n+                        if (sizes.right && sizes.bottom) {\n+                            d.scrollbarFiller.style.display = \"block\";\n+                            d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n+                            d.scrollbarFiller.style.width = sizes.right + \"px\";\n+                        } else {\n+                            d.scrollbarFiller.style.display = \"\";\n+                        }\n+                        if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n+                            d.gutterFiller.style.display = \"block\";\n+                            d.gutterFiller.style.height = sizes.bottom + \"px\";\n+                            d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n+                        } else {\n+                            d.gutterFiller.style.display = \"\";\n+                        }\n+                    }\n+                    var scrollbarModel = {\n+                        \"native\": NativeScrollbars,\n+                        \"null\": NullScrollbars\n+                    };\n+\n+                    function initScrollbars(cm) {\n+                        if (cm.display.scrollbars) {\n+                            cm.display.scrollbars.clear();\n+                            if (cm.display.scrollbars.addClass) {\n+                                rmClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n+                            }\n+                        }\n+                        cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function(node) {\n+                            cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n+                            // Prevent clicks in the scrollbars from killing focus\n+                            on(node, \"mousedown\", function() {\n+                                if (cm.state.focused) {\n+                                    setTimeout(function() {\n+                                        return cm.display.input.focus();\n+                                    }, 0);\n+                                }\n+                            });\n+                            node.setAttribute(\"cm-not-content\", \"true\");\n+                        }, function(pos, axis) {\n+                            if (axis == \"horizontal\") {\n+                                setScrollLeft(cm, pos);\n+                            } else {\n+                                updateScrollTop(cm, pos);\n+                            }\n+                        }, cm);\n+                        if (cm.display.scrollbars.addClass) {\n+                            addClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n+                        }\n+                    }\n+\n+                    // Operations are used to wrap a series of changes to the editor\n+                    // state in such a way that each change won't have to update the\n+                    // cursor and display (which would be awkward, slow, and\n+                    // error-prone). Instead, display updates are batched and then all\n+                    // combined and executed at once.\n+\n+                    var nextOpId = 0;\n+                    // Start a new operation.\n+                    function startOperation(cm) {\n+                        cm.curOp = {\n+                            cm: cm,\n+                            viewChanged: false,\n+                            // Flag that indicates that lines might need to be redrawn\n+                            startHeight: cm.doc.height,\n+                            // Used to detect need to update scrollbar\n+                            forceUpdate: false,\n+                            // Used to force a redraw\n+                            updateInput: 0,\n+                            // Whether to reset the input textarea\n+                            typing: false,\n+                            // Whether this reset should be careful to leave existing text (for compositing)\n+                            changeObjs: null,\n+                            // Accumulated changes, for firing change events\n+                            cursorActivityHandlers: null,\n+                            // Set of handlers to fire cursorActivity on\n+                            cursorActivityCalled: 0,\n+                            // Tracks which cursorActivity handlers have been called already\n+                            selectionChanged: false,\n+                            // Whether the selection needs to be redrawn\n+                            updateMaxLine: false,\n+                            // Set when the widest line needs to be determined anew\n+                            scrollLeft: null,\n+                            scrollTop: null,\n+                            // Intermediate scroll position, not pushed to DOM yet\n+                            scrollToPos: null,\n+                            // Used to scroll to a specific position\n+                            focus: false,\n+                            id: ++nextOpId,\n+                            // Unique ID\n+                            markArrays: null // Used by addMarkedSpan\n+                        };\n+                        pushOperation(cm.curOp);\n+                    }\n+\n+                    // Finish an operation, updating the display and signalling delayed events\n+                    function endOperation(cm) {\n+                        var op = cm.curOp;\n+                        if (op) {\n+                            finishOperation(op, function(group) {\n+                                for (var i = 0; i < group.ops.length; i++) {\n+                                    group.ops[i].cm.curOp = null;\n+                                }\n+                                endOperations(group);\n+                            });\n+                        }\n+                    }\n+\n+                    // The DOM updates done when an operation finishes are batched so\n+                    // that the minimum number of relayouts are required.\n+                    function endOperations(group) {\n+                        var ops = group.ops;\n+                        for (var i = 0; i < ops.length; i++)\n+                        // Read DOM\n+                        {\n+                            endOperation_R1(ops[i]);\n+                        }\n+                        for (var i$1 = 0; i$1 < ops.length; i$1++)\n+                        // Write DOM (maybe)\n+                        {\n+                            endOperation_W1(ops[i$1]);\n+                        }\n+                        for (var i$2 = 0; i$2 < ops.length; i$2++)\n+                        // Read DOM\n+                        {\n+                            endOperation_R2(ops[i$2]);\n+                        }\n+                        for (var i$3 = 0; i$3 < ops.length; i$3++)\n+                        // Write DOM (maybe)\n+                        {\n+                            endOperation_W2(ops[i$3]);\n+                        }\n+                        for (var i$4 = 0; i$4 < ops.length; i$4++)\n+                        // Read DOM\n+                        {\n+                            endOperation_finish(ops[i$4]);\n+                        }\n+                    }\n+\n+                    function endOperation_R1(op) {\n+                        var cm = op.cm,\n+                            display = cm.display;\n+                        maybeClipScrollbars(cm);\n+                        if (op.updateMaxLine) {\n+                            findMaxLine(cm);\n+                        }\n+                        op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || op.scrollToPos.to.line >= display.viewTo) || display.maxLineChanged && cm.options.lineWrapping;\n+                        op.update = op.mustUpdate && new DisplayUpdate(cm, op.mustUpdate && {\n+                            top: op.scrollTop,\n+                            ensure: op.scrollToPos\n+                        }, op.forceUpdate);\n+                    }\n+\n+                    function endOperation_W1(op) {\n+                        op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n+                    }\n+\n+                    function endOperation_R2(op) {\n+                        var cm = op.cm,\n+                            display = cm.display;\n+                        if (op.updatedDisplay) {\n+                            updateHeightsInViewport(cm);\n+                        }\n+                        op.barMeasure = measureForScrollbars(cm);\n+\n+                        // If the max line changed since it was last measured, measure it,\n+                        // and ensure the document's width matches it.\n+                        // updateDisplay_W2 will use these properties to do the actual resizing\n+                        if (display.maxLineChanged && !cm.options.lineWrapping) {\n+                            op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n+                            cm.display.sizerWidth = op.adjustWidthTo;\n+                            op.barMeasure.scrollWidth = Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n+                            op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n+                        }\n+                        if (op.updatedDisplay || op.selectionChanged) {\n+                            op.preparedSelection = display.input.prepareSelection();\n+                        }\n+                    }\n+\n+                    function endOperation_W2(op) {\n+                        var cm = op.cm;\n+                        if (op.adjustWidthTo != null) {\n+                            cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n+                            if (op.maxScrollLeft < cm.doc.scrollLeft) {\n+                                setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);\n+                            }\n+                            cm.display.maxLineChanged = false;\n+                        }\n+                        var takeFocus = op.focus && op.focus == activeElt();\n+                        if (op.preparedSelection) {\n+                            cm.display.input.showSelection(op.preparedSelection, takeFocus);\n+                        }\n+                        if (op.updatedDisplay || op.startHeight != cm.doc.height) {\n+                            updateScrollbars(cm, op.barMeasure);\n+                        }\n+                        if (op.updatedDisplay) {\n+                            setDocumentHeight(cm, op.barMeasure);\n+                        }\n+                        if (op.selectionChanged) {\n+                            restartBlink(cm);\n+                        }\n+                        if (cm.state.focused && op.updateInput) {\n+                            cm.display.input.reset(op.typing);\n+                        }\n+                        if (takeFocus) {\n+                            ensureFocus(op.cm);\n+                        }\n+                    }\n+\n+                    function endOperation_finish(op) {\n+                        var cm = op.cm,\n+                            display = cm.display,\n+                            doc = cm.doc;\n+                        if (op.updatedDisplay) {\n+                            postUpdateDisplay(cm, op.update);\n+                        }\n+\n+                        // Abort mouse wheel delta measurement, when scrolling explicitly\n+                        if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) {\n+                            display.wheelStartX = display.wheelStartY = null;\n+                        }\n+\n+                        // Propagate the scroll position to the actual DOM scroller\n+                        if (op.scrollTop != null) {\n+                            setScrollTop(cm, op.scrollTop, op.forceScroll);\n+                        }\n+                        if (op.scrollLeft != null) {\n+                            setScrollLeft(cm, op.scrollLeft, true, true);\n+                        }\n+                        // If we need to scroll a specific position into view, do so.\n+                        if (op.scrollToPos) {\n+                            var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n+                            maybeScrollWindow(cm, rect);\n+                        }\n+\n+                        // Fire events for markers that are hidden/unidden by editing or\n+                        // undoing\n+                        var hidden = op.maybeHiddenMarkers,\n+                            unhidden = op.maybeUnhiddenMarkers;\n+                        if (hidden) {\n+                            for (var i = 0; i < hidden.length; ++i) {\n+                                if (!hidden[i].lines.length) {\n+                                    signal(hidden[i], \"hide\");\n+                                }\n+                            }\n+                        }\n+                        if (unhidden) {\n+                            for (var i$1 = 0; i$1 < unhidden.length; ++i$1) {\n+                                if (unhidden[i$1].lines.length) {\n+                                    signal(unhidden[i$1], \"unhide\");\n+                                }\n+                            }\n+                        }\n+                        if (display.wrapper.offsetHeight) {\n+                            doc.scrollTop = cm.display.scroller.scrollTop;\n+                        }\n+\n+                        // Fire change events, and delayed event handlers\n+                        if (op.changeObjs) {\n+                            signal(cm, \"changes\", cm, op.changeObjs);\n+                        }\n+                        if (op.update) {\n+                            op.update.finish();\n+                        }\n+                    }\n+\n+                    // Run the given function in an operation\n+                    function runInOp(cm, f) {\n+                        if (cm.curOp) {\n+                            return f();\n+                        }\n+                        startOperation(cm);\n+                        try {\n+                            return f();\n+                        } finally {\n+                            endOperation(cm);\n+                        }\n+                    }\n+                    // Wraps a function in an operation. Returns the wrapped function.\n+                    function operation(cm, f) {\n+                        return function() {\n+                            if (cm.curOp) {\n+                                return f.apply(cm, arguments);\n+                            }\n+                            startOperation(cm);\n+                            try {\n+                                return f.apply(cm, arguments);\n+                            } finally {\n+                                endOperation(cm);\n+                            }\n+                        };\n+                    }\n+                    // Used to add methods to editor and doc instances, wrapping them in\n+                    // operations.\n+                    function methodOp(f) {\n+                        return function() {\n+                            if (this.curOp) {\n+                                return f.apply(this, arguments);\n+                            }\n+                            startOperation(this);\n+                            try {\n+                                return f.apply(this, arguments);\n+                            } finally {\n+                                endOperation(this);\n+                            }\n+                        };\n+                    }\n+\n+                    function docMethodOp(f) {\n+                        return function() {\n+                            var cm = this.cm;\n+                            if (!cm || cm.curOp) {\n+                                return f.apply(this, arguments);\n+                            }\n+                            startOperation(cm);\n+                            try {\n+                                return f.apply(this, arguments);\n+                            } finally {\n+                                endOperation(cm);\n+                            }\n+                        };\n+                    }\n+\n+                    // HIGHLIGHT WORKER\n+\n+                    function startWorker(cm, time) {\n+                        if (cm.doc.highlightFrontier < cm.display.viewTo) {\n+                            cm.state.highlight.set(time, bind(highlightWorker, cm));\n+                        }\n+                    }\n+\n+                    function highlightWorker(cm) {\n+                        var doc = cm.doc;\n+                        if (doc.highlightFrontier >= cm.display.viewTo) {\n+                            return;\n+                        }\n+                        var end = +new Date() + cm.options.workTime;\n+                        var context = getContextBefore(cm, doc.highlightFrontier);\n+                        var changedLines = [];\n+                        doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) {\n+                            if (context.line >= cm.display.viewFrom) {\n+                                // Visible\n+                                var oldStyles = line.styles;\n+                                var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n+                                var highlighted = highlightLine(cm, line, context, true);\n+                                if (resetState) {\n+                                    context.state = resetState;\n+                                }\n+                                line.styles = highlighted.styles;\n+                                var oldCls = line.styleClasses,\n+                                    newCls = highlighted.classes;\n+                                if (newCls) {\n+                                    line.styleClasses = newCls;\n+                                } else if (oldCls) {\n+                                    line.styleClasses = null;\n+                                }\n+                                var ischange = !oldStyles || oldStyles.length != line.styles.length || oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n+                                for (var i = 0; !ischange && i < oldStyles.length; ++i) {\n+                                    ischange = oldStyles[i] != line.styles[i];\n+                                }\n+                                if (ischange) {\n+                                    changedLines.push(context.line);\n+                                }\n+                                line.stateAfter = context.save();\n+                                context.nextLine();\n+                            } else {\n+                                if (line.text.length <= cm.options.maxHighlightLength) {\n+                                    processLine(cm, line.text, context);\n+                                }\n+                                line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n+                                context.nextLine();\n+                            }\n+                            if (+new Date() > end) {\n+                                startWorker(cm, cm.options.workDelay);\n+                                return true;\n+                            }\n+                        });\n+                        doc.highlightFrontier = context.line;\n+                        doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n+                        if (changedLines.length) {\n+                            runInOp(cm, function() {\n+                                for (var i = 0; i < changedLines.length; i++) {\n+                                    regLineChange(cm, changedLines[i], \"text\");\n+                                }\n+                            });\n+                        }\n+                    }\n+\n+                    // DISPLAY DRAWING\n+\n+                    var DisplayUpdate = function(cm, viewport, force) {\n+                        var display = cm.display;\n+                        this.viewport = viewport;\n+                        // Store some values that we'll need later (but don't want to force a relayout for)\n+                        this.visible = visibleLines(display, cm.doc, viewport);\n+                        this.editorIsHidden = !display.wrapper.offsetWidth;\n+                        this.wrapperHeight = display.wrapper.clientHeight;\n+                        this.wrapperWidth = display.wrapper.clientWidth;\n+                        this.oldDisplayWidth = displayWidth(cm);\n+                        this.force = force;\n+                        this.dims = getDimensions(cm);\n+                        this.events = [];\n+                    };\n+                    DisplayUpdate.prototype.signal = function(emitter, type) {\n+                        if (hasHandler(emitter, type)) {\n+                            this.events.push(arguments);\n+                        }\n+                    };\n+                    DisplayUpdate.prototype.finish = function() {\n+                        for (var i = 0; i < this.events.length; i++) {\n+                            signal.apply(null, this.events[i]);\n+                        }\n+                    };\n+\n+                    function maybeClipScrollbars(cm) {\n+                        var display = cm.display;\n+                        if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n+                            display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n+                            display.heightForcer.style.height = scrollGap(cm) + \"px\";\n+                            display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n+                            display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n+                            display.scrollbarsClipped = true;\n+                        }\n+                    }\n+\n+                    function selectionSnapshot(cm) {\n+                        if (cm.hasFocus()) {\n+                            return null;\n+                        }\n+                        var active = activeElt();\n+                        if (!active || !contains(cm.display.lineDiv, active)) {\n+                            return null;\n+                        }\n+                        var result = {\n+                            activeElt: active\n+                        };\n+                        if (window.getSelection) {\n+                            var sel = window.getSelection();\n+                            if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n+                                result.anchorNode = sel.anchorNode;\n+                                result.anchorOffset = sel.anchorOffset;\n+                                result.focusNode = sel.focusNode;\n+                                result.focusOffset = sel.focusOffset;\n+                            }\n+                        }\n+                        return result;\n+                    }\n+\n+                    function restoreSelection(snapshot) {\n+                        if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) {\n+                            return;\n+                        }\n+                        snapshot.activeElt.focus();\n+                        if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) && snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n+                            var sel = window.getSelection(),\n+                                range = document.createRange();\n+                            range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n+                            range.collapse(false);\n+                            sel.removeAllRanges();\n+                            sel.addRange(range);\n+                            sel.extend(snapshot.focusNode, snapshot.focusOffset);\n+                        }\n+                    }\n+\n+                    // Does the actual updating of the line display. Bails out\n+                    // (returning false) when there is nothing to be done and forced is\n+                    // false.\n+                    function updateDisplayIfNeeded(cm, update) {\n+                        var display = cm.display,\n+                            doc = cm.doc;\n+                        if (update.editorIsHidden) {\n+                            resetView(cm);\n+                            return false;\n+                        }\n+\n+                        // Bail out if the visible area is already rendered and nothing changed.\n+                        if (!update.force && update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && display.renderedView == display.view && countDirtyView(cm) == 0) {\n+                            return false;\n+                        }\n+                        if (maybeUpdateLineNumberWidth(cm)) {\n+                            resetView(cm);\n+                            update.dims = getDimensions(cm);\n+                        }\n+\n+                        // Compute a suitable new viewport (from & to)\n+                        var end = doc.first + doc.size;\n+                        var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n+                        var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n+                        if (display.viewFrom < from && from - display.viewFrom < 20) {\n+                            from = Math.max(doc.first, display.viewFrom);\n+                        }\n+                        if (display.viewTo > to && display.viewTo - to < 20) {\n+                            to = Math.min(end, display.viewTo);\n+                        }\n+                        if (sawCollapsedSpans) {\n+                            from = visualLineNo(cm.doc, from);\n+                            to = visualLineEndNo(cm.doc, to);\n+                        }\n+                        var different = from != display.viewFrom || to != display.viewTo || display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n+                        adjustView(cm, from, to);\n+                        display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n+                        // Position the mover div to align with the current scroll position\n+                        cm.display.mover.style.top = display.viewOffset + \"px\";\n+                        var toUpdate = countDirtyView(cm);\n+                        if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) {\n+                            return false;\n+                        }\n+\n+                        // For big changes, we hide the enclosing element during the\n+                        // update, since that speeds up the operations on most browsers.\n+                        var selSnapshot = selectionSnapshot(cm);\n+                        if (toUpdate > 4) {\n+                            display.lineDiv.style.display = \"none\";\n+                        }\n+                        patchDisplay(cm, display.updateLineNumbers, update.dims);\n+                        if (toUpdate > 4) {\n+                            display.lineDiv.style.display = \"\";\n+                        }\n+                        display.renderedView = display.view;\n+                        // There might have been a widget with a focused element that got\n+                        // hidden or updated, if so re-focus it.\n+                        restoreSelection(selSnapshot);\n+\n+                        // Prevent selection and cursors from interfering with the scroll\n+                        // width and height.\n+                        removeChildren(display.cursorDiv);\n+                        removeChildren(display.selectionDiv);\n+                        display.gutters.style.height = display.sizer.style.minHeight = 0;\n+                        if (different) {\n+                            display.lastWrapHeight = update.wrapperHeight;\n+                            display.lastWrapWidth = update.wrapperWidth;\n+                            startWorker(cm, 400);\n+                        }\n+                        display.updateLineNumbers = null;\n+                        return true;\n+                    }\n+\n+                    function postUpdateDisplay(cm, update) {\n+                        var viewport = update.viewport;\n+                        for (var first = true;; first = false) {\n+                            if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n+                                // Clip forced viewport to actual scrollable area.\n+                                if (viewport && viewport.top != null) {\n+                                    viewport = {\n+                                        top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)\n+                                    };\n+                                }\n+                                // Updated line heights might result in the drawn area not\n+                                // actually covering the viewport. Keep looping until it does.\n+                                update.visible = visibleLines(cm.display, cm.doc, viewport);\n+                                if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) {\n+                                    break;\n+                                }\n+                            } else if (first) {\n+                                update.visible = visibleLines(cm.display, cm.doc, viewport);\n+                            }\n+                            if (!updateDisplayIfNeeded(cm, update)) {\n+                                break;\n+                            }\n+                            updateHeightsInViewport(cm);\n+                            var barMeasure = measureForScrollbars(cm);\n+                            updateSelection(cm);\n+                            updateScrollbars(cm, barMeasure);\n+                            setDocumentHeight(cm, barMeasure);\n+                            update.force = false;\n+                        }\n+                        update.signal(cm, \"update\", cm);\n+                        if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n+                            update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n+                            cm.display.reportedViewFrom = cm.display.viewFrom;\n+                            cm.display.reportedViewTo = cm.display.viewTo;\n+                        }\n+                    }\n+\n+                    function updateDisplaySimple(cm, viewport) {\n+                        var update = new DisplayUpdate(cm, viewport);\n+                        if (updateDisplayIfNeeded(cm, update)) {\n+                            updateHeightsInViewport(cm);\n+                            postUpdateDisplay(cm, update);\n+                            var barMeasure = measureForScrollbars(cm);\n+                            updateSelection(cm);\n+                            updateScrollbars(cm, barMeasure);\n+                            setDocumentHeight(cm, barMeasure);\n+                            update.finish();\n+                        }\n+                    }\n+\n+                    // Sync the actual display DOM structure with display.view, removing\n+                    // nodes for lines that are no longer in view, and creating the ones\n+                    // that are not there yet, and updating the ones that are out of\n+                    // date.\n+                    function patchDisplay(cm, updateNumbersFrom, dims) {\n+                        var display = cm.display,\n+                            lineNumbers = cm.options.lineNumbers;\n+                        var container = display.lineDiv,\n+                            cur = container.firstChild;\n+\n+                        function rm(node) {\n+                            var next = node.nextSibling;\n+                            // Works around a throw-scroll bug in OS X Webkit\n+                            if (webkit && mac && cm.display.currentWheelTarget == node) {\n+                                node.style.display = \"none\";\n+                            } else {\n+                                node.parentNode.removeChild(node);\n+                            }\n+                            return next;\n+                        }\n+                        var view = display.view,\n+                            lineN = display.viewFrom;\n+                        // Loop over the elements in the view, syncing cur (the DOM nodes\n+                        // in display.lineDiv) with the view as we go.\n+                        for (var i = 0; i < view.length; i++) {\n+                            var lineView = view[i];\n+                            if (lineView.hidden);\n+                            else if (!lineView.node || lineView.node.parentNode != container) {\n+                                // Not drawn yet\n+                                var node = buildLineElement(cm, lineView, lineN, dims);\n+                                container.insertBefore(node, cur);\n+                            } else {\n+                                // Already drawn\n+                                while (cur != lineView.node) {\n+                                    cur = rm(cur);\n+                                }\n+                                var updateNumber = lineNumbers && updateNumbersFrom != null && updateNumbersFrom <= lineN && lineView.lineNumber;\n+                                if (lineView.changes) {\n+                                    if (indexOf(lineView.changes, \"gutter\") > -1) {\n+                                        updateNumber = false;\n+                                    }\n+                                    updateLineForChanges(cm, lineView, lineN, dims);\n+                                }\n+                                if (updateNumber) {\n+                                    removeChildren(lineView.lineNumber);\n+                                    lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n+                                }\n+                                cur = lineView.node.nextSibling;\n+                            }\n+                            lineN += lineView.size;\n+                        }\n+                        while (cur) {\n+                            cur = rm(cur);\n+                        }\n+                    }\n+\n+                    function updateGutterSpace(display) {\n+                        var width = display.gutters.offsetWidth;\n+                        display.sizer.style.marginLeft = width + \"px\";\n+                        // Send an event to consumers responding to changes in gutter width.\n+                        signalLater(display, \"gutterChanged\", display);\n+                    }\n+\n+                    function setDocumentHeight(cm, measure) {\n+                        cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n+                        cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n+                        cm.display.gutters.style.height = measure.docHeight + cm.display.barHeight + scrollGap(cm) + \"px\";\n+                    }\n+\n+                    // Re-align line numbers and gutter marks to compensate for\n+                    // horizontal scrolling.\n+                    function alignHorizontally(cm) {\n+                        var display = cm.display,\n+                            view = display.view;\n+                        if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) {\n+                            return;\n+                        }\n+                        var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n+                        var gutterW = display.gutters.offsetWidth,\n+                            left = comp + \"px\";\n+                        for (var i = 0; i < view.length; i++) {\n+                            if (!view[i].hidden) {\n+                                if (cm.options.fixedGutter) {\n+                                    if (view[i].gutter) {\n+                                        view[i].gutter.style.left = left;\n+                                    }\n+                                    if (view[i].gutterBackground) {\n+                                        view[i].gutterBackground.style.left = left;\n+                                    }\n+                                }\n+                                var align = view[i].alignable;\n+                                if (align) {\n+                                    for (var j = 0; j < align.length; j++) {\n+                                        align[j].style.left = left;\n+                                    }\n+                                }\n+                            }\n+                        }\n+                        if (cm.options.fixedGutter) {\n+                            display.gutters.style.left = comp + gutterW + \"px\";\n+                        }\n+                    }\n+\n+                    // Used to ensure that the line number gutter is still the right\n+                    // size for the current document size. Returns true when an update\n+                    // is needed.\n+                    function maybeUpdateLineNumberWidth(cm) {\n+                        if (!cm.options.lineNumbers) {\n+                            return false;\n+                        }\n+                        var doc = cm.doc,\n+                            last = lineNumberFor(cm.options, doc.first + doc.size - 1),\n+                            display = cm.display;\n+                        if (last.length != display.lineNumChars) {\n+                            var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)], \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n+                            var innerW = test.firstChild.offsetWidth,\n+                                padding = test.offsetWidth - innerW;\n+                            display.lineGutter.style.width = \"\";\n+                            display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n+                            display.lineNumWidth = display.lineNumInnerWidth + padding;\n+                            display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n+                            display.lineGutter.style.width = display.lineNumWidth + \"px\";\n+                            updateGutterSpace(cm.display);\n+                            return true;\n+                        }\n+                        return false;\n+                    }\n+\n+                    function getGutters(gutters, lineNumbers) {\n+                        var result = [],\n+                            sawLineNumbers = false;\n+                        for (var i = 0; i < gutters.length; i++) {\n+                            var name = gutters[i],\n+                                style = null;\n+                            if (typeof name != \"string\") {\n+                                style = name.style;\n+                                name = name.className;\n+                            }\n+                            if (name == \"CodeMirror-linenumbers\") {\n+                                if (!lineNumbers) {\n+                                    continue;\n+                                } else {\n+                                    sawLineNumbers = true;\n+                                }\n+                            }\n+                            result.push({\n+                                className: name,\n+                                style: style\n+                            });\n+                        }\n+                        if (lineNumbers && !sawLineNumbers) {\n+                            result.push({\n+                                className: \"CodeMirror-linenumbers\",\n+                                style: null\n+                            });\n+                        }\n+                        return result;\n+                    }\n+\n+                    // Rebuild the gutter elements, ensure the margin to the left of the\n+                    // code matches their width.\n+                    function renderGutters(display) {\n+                        var gutters = display.gutters,\n+                            specs = display.gutterSpecs;\n+                        removeChildren(gutters);\n+                        display.lineGutter = null;\n+                        for (var i = 0; i < specs.length; ++i) {\n+                            var ref = specs[i];\n+                            var className = ref.className;\n+                            var style = ref.style;\n+                            var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n+                            if (style) {\n+                                gElt.style.cssText = style;\n+                            }\n+                            if (className == \"CodeMirror-linenumbers\") {\n+                                display.lineGutter = gElt;\n+                                gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n+                            }\n+                        }\n+                        gutters.style.display = specs.length ? \"\" : \"none\";\n+                        updateGutterSpace(display);\n+                    }\n+\n+                    function updateGutters(cm) {\n+                        renderGutters(cm.display);\n+                        regChange(cm);\n+                        alignHorizontally(cm);\n+                    }\n+\n+                    // The display handles the DOM integration, both for input reading\n+                    // and content drawing. It holds references to DOM nodes and\n+                    // display-related state.\n+\n+                    function Display(place, doc, input, options) {\n+                        var d = this;\n+                        this.input = input;\n+\n+                        // Covers bottom-right square when both scrollbars are present.\n+                        d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n+                        d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n+                        // Covers bottom of gutter when coverGutterNextToScrollbar is on\n+                        // and h scrollbar is present.\n+                        d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n+                        d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n+                        // Will contain the actual code, positioned to cover the viewport.\n+                        d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n+                        // Elements are added to these to represent selection and cursors.\n+                        d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n+                        d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n+                        // A visibility: hidden element used to find the size of things.\n+                        d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n+                        // When lines outside of the viewport are measured, they are drawn in this.\n+                        d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n+                        // Wraps everything that needs to exist inside the vertically-padded coordinate system\n+                        d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], null, \"position: relative; outline: none\");\n+                        var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n+                        // Moved around its parent to cover visible view.\n+                        d.mover = elt(\"div\", [lines], null, \"position: relative\");\n+                        // Set to the height of the document, allowing scrolling.\n+                        d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n+                        d.sizerWidth = null;\n+                        // Behavior of elts with overflow: auto and padding is\n+                        // inconsistent across browsers. This is used to ensure the\n+                        // scrollable area is big enough.\n+                        d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n+                        // Will contain the gutters, if any.\n+                        d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n+                        d.lineGutter = null;\n+                        // Actual scrollable element.\n+                        d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n+                        d.scroller.setAttribute(\"tabIndex\", \"-1\");\n+                        // The element in which the editor lives.\n+                        d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n+\n+                        // This attribute is respected by automatic translation systems such as Google Translate,\n+                        // and may also be respected by tools used by human translators.\n+                        d.wrapper.setAttribute('translate', 'no');\n+\n+                        // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n+                        if (ie && ie_version < 8) {\n+                            d.gutters.style.zIndex = -1;\n+                            d.scroller.style.paddingRight = 0;\n+                        }\n+                        if (!webkit && !(gecko && mobile)) {\n+                            d.scroller.draggable = true;\n+                        }\n+                        if (place) {\n+                            if (place.appendChild) {\n+                                place.appendChild(d.wrapper);\n+                            } else {\n+                                place(d.wrapper);\n+                            }\n+                        }\n+\n+                        // Current rendered range (may be bigger than the view window).\n+                        d.viewFrom = d.viewTo = doc.first;\n+                        d.reportedViewFrom = d.reportedViewTo = doc.first;\n+                        // Information about the rendered lines.\n+                        d.view = [];\n+                        d.renderedView = null;\n+                        // Holds info about a single rendered line when it was rendered\n+                        // for measurement, while not in view.\n+                        d.externalMeasured = null;\n+                        // Empty space (in pixels) above the view\n+                        d.viewOffset = 0;\n+                        d.lastWrapHeight = d.lastWrapWidth = 0;\n+                        d.updateLineNumbers = null;\n+                        d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n+                        d.scrollbarsClipped = false;\n+\n+                        // Used to only resize the line number gutter when necessary (when\n+                        // the amount of lines crosses a boundary that makes its width change)\n+                        d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n+                        // Set to true when a non-horizontal-scrolling line widget is\n+                        // added. As an optimization, line widget aligning is skipped when\n+                        // this is false.\n+                        d.alignWidgets = false;\n+                        d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n+\n+                        // Tracks the maximum line length so that the horizontal scrollbar\n+                        // can be kept static when scrolling.\n+                        d.maxLine = null;\n+                        d.maxLineLength = 0;\n+                        d.maxLineChanged = false;\n+\n+                        // Used for measuring wheel scrolling granularity\n+                        d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n+\n+                        // True when shift is held down.\n+                        d.shift = false;\n+\n+                        // Used to track whether anything happened since the context menu\n+                        // was opened.\n+                        d.selForContextMenu = null;\n+                        d.activeTouch = null;\n+                        d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n+                        renderGutters(d);\n+                        input.init(d);\n+                    }\n+\n+                    // Since the delta values reported on mouse wheel events are\n+                    // unstandardized between browsers and even browser versions, and\n+                    // generally horribly unpredictable, this code starts by measuring\n+                    // the scroll effect that the first few mouse wheel events have,\n+                    // and, from that, detects the way it can convert deltas to pixel\n+                    // offsets afterwards.\n+                    //\n+                    // The reason we want to know the amount a wheel event will scroll\n+                    // is that it gives us a chance to update the display before the\n+                    // actual scrolling happens, reducing flickering.\n+\n+                    var wheelSamples = 0,\n+                        wheelPixelsPerUnit = null;\n+                    // Fill in a browser-detected starting value on browsers where we\n+                    // know one. These don't have to be accurate -- the result of them\n+                    // being wrong would just be a slight flicker on the first wheel\n+                    // scroll (if it is large enough).\n+                    if (ie) {\n+                        wheelPixelsPerUnit = -.53;\n+                    } else if (gecko) {\n+                        wheelPixelsPerUnit = 15;\n+                    } else if (chrome) {\n+                        wheelPixelsPerUnit = -.7;\n+                    } else if (safari) {\n+                        wheelPixelsPerUnit = -1 / 3;\n+                    }\n+\n+                    function wheelEventDelta(e) {\n+                        var dx = e.wheelDeltaX,\n+                            dy = e.wheelDeltaY;\n+                        if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) {\n+                            dx = e.detail;\n+                        }\n+                        if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) {\n+                            dy = e.detail;\n+                        } else if (dy == null) {\n+                            dy = e.wheelDelta;\n+                        }\n+                        return {\n+                            x: dx,\n+                            y: dy\n+                        };\n+                    }\n+\n+                    function wheelEventPixels(e) {\n+                        var delta = wheelEventDelta(e);\n+                        delta.x *= wheelPixelsPerUnit;\n+                        delta.y *= wheelPixelsPerUnit;\n+                        return delta;\n+                    }\n+\n+                    function onScrollWheel(cm, e) {\n+                        var delta = wheelEventDelta(e),\n+                            dx = delta.x,\n+                            dy = delta.y;\n+                        var pixelsPerUnit = wheelPixelsPerUnit;\n+                        if (e.deltaMode === 0) {\n+                            dx = e.deltaX;\n+                            dy = e.deltaY;\n+                            pixelsPerUnit = 1;\n+                        }\n+                        var display = cm.display,\n+                            scroll = display.scroller;\n+                        // Quit if there's nothing to scroll here\n+                        var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n+                        var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n+                        if (!(dx && canScrollX || dy && canScrollY)) {\n+                            return;\n+                        }\n+\n+                        // Webkit browsers on OS X abort momentum scrolls when the target\n+                        // of the scroll event is removed from the scrollable element.\n+                        // This hack (see related code in patchDisplay) makes sure the\n+                        // element is kept around.\n+                        if (dy && mac && webkit) {\n+                            outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n+                                for (var i = 0; i < view.length; i++) {\n+                                    if (view[i].node == cur) {\n+                                        cm.display.currentWheelTarget = cur;\n+                                        break outer;\n+                                    }\n+                                }\n+                            }\n+                        }\n+\n+                        // On some browsers, horizontal scrolling will cause redraws to\n+                        // happen before the gutter has been realigned, causing it to\n+                        // wriggle around in a most unseemly way. When we have an\n+                        // estimated pixels/delta value, we just handle horizontal\n+                        // scrolling entirely here. It'll be slightly off from native, but\n+                        // better than glitching out.\n+                        if (dx && !gecko && !presto && pixelsPerUnit != null) {\n+                            if (dy && canScrollY) {\n+                                updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit));\n+                            }\n+                            setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n+                            // Only prevent default scrolling if vertical scrolling is\n+                            // actually possible. Otherwise, it causes vertical scroll\n+                            // jitter on OSX trackpads when deltaX is small and deltaY\n+                            // is large (issue #3579)\n+                            if (!dy || dy && canScrollY) {\n+                                e_preventDefault(e);\n+                            }\n+                            display.wheelStartX = null; // Abort measurement, if in progress\n+                            return;\n+                        }\n+\n+                        // 'Project' the visible viewport to cover the area that is being\n+                        // scrolled into view (if we know enough to estimate it).\n+                        if (dy && pixelsPerUnit != null) {\n+                            var pixels = dy * pixelsPerUnit;\n+                            var top = cm.doc.scrollTop,\n+                                bot = top + display.wrapper.clientHeight;\n+                            if (pixels < 0) {\n+                                top = Math.max(0, top + pixels - 50);\n+                            } else {\n+                                bot = Math.min(cm.doc.height, bot + pixels + 50);\n+                            }\n+                            updateDisplaySimple(cm, {\n+                                top: top,\n+                                bottom: bot\n+                            });\n+                        }\n+                        if (wheelSamples < 20 && e.deltaMode !== 0) {\n+                            if (display.wheelStartX == null) {\n+                                display.wheelStartX = scroll.scrollLeft;\n+                                display.wheelStartY = scroll.scrollTop;\n+                                display.wheelDX = dx;\n+                                display.wheelDY = dy;\n+                                setTimeout(function() {\n+                                    if (display.wheelStartX == null) {\n+                                        return;\n+                                    }\n+                                    var movedX = scroll.scrollLeft - display.wheelStartX;\n+                                    var movedY = scroll.scrollTop - display.wheelStartY;\n+                                    var sample = movedY && display.wheelDY && movedY / display.wheelDY || movedX && display.wheelDX && movedX / display.wheelDX;\n+                                    display.wheelStartX = display.wheelStartY = null;\n+                                    if (!sample) {\n+                                        return;\n+                                    }\n+                                    wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n+                                    ++wheelSamples;\n+                                }, 200);\n+                            } else {\n+                                display.wheelDX += dx;\n+                                display.wheelDY += dy;\n+                            }\n+                        }\n+                    }\n+\n+                    // Selection objects are immutable. A new one is created every time\n+                    // the selection changes. A selection is one or more non-overlapping\n+                    // (and non-touching) ranges, sorted, and an integer that indicates\n+                    // which one is the primary selection (the one that's scrolled into\n+                    // view, that getCursor returns, etc).\n+                    var Selection = function(ranges, primIndex) {\n+                        this.ranges = ranges;\n+                        this.primIndex = primIndex;\n+                    };\n+                    Selection.prototype.primary = function() {\n+                        return this.ranges[this.primIndex];\n+                    };\n+                    Selection.prototype.equals = function(other) {\n+                        if (other == this) {\n+                            return true;\n+                        }\n+                        if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) {\n+                            return false;\n+                        }\n+                        for (var i = 0; i < this.ranges.length; i++) {\n+                            var here = this.ranges[i],\n+                                there = other.ranges[i];\n+                            if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) {\n+                                return false;\n+                            }\n+                        }\n+                        return true;\n+                    };\n+                    Selection.prototype.deepCopy = function() {\n+                        var out = [];\n+                        for (var i = 0; i < this.ranges.length; i++) {\n+                            out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head));\n+                        }\n+                        return new Selection(out, this.primIndex);\n+                    };\n+                    Selection.prototype.somethingSelected = function() {\n+                        for (var i = 0; i < this.ranges.length; i++) {\n+                            if (!this.ranges[i].empty()) {\n+                                return true;\n+                            }\n+                        }\n+                        return false;\n+                    };\n+                    Selection.prototype.contains = function(pos, end) {\n+                        if (!end) {\n+                            end = pos;\n+                        }\n+                        for (var i = 0; i < this.ranges.length; i++) {\n+                            var range = this.ranges[i];\n+                            if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) {\n+                                return i;\n+                            }\n+                        }\n+                        return -1;\n+                    };\n+                    var Range = function(anchor, head) {\n+                        this.anchor = anchor;\n+                        this.head = head;\n+                    };\n+                    Range.prototype.from = function() {\n+                        return minPos(this.anchor, this.head);\n+                    };\n+                    Range.prototype.to = function() {\n+                        return maxPos(this.anchor, this.head);\n+                    };\n+                    Range.prototype.empty = function() {\n+                        return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;\n+                    };\n+\n+                    // Take an unsorted, potentially overlapping set of ranges, and\n+                    // build a selection out of it. 'Consumes' ranges array (modifying\n+                    // it).\n+                    function normalizeSelection(cm, ranges, primIndex) {\n+                        var mayTouch = cm && cm.options.selectionsMayTouch;\n+                        var prim = ranges[primIndex];\n+                        ranges.sort(function(a, b) {\n+                            return cmp(a.from(), b.from());\n+                        });\n+                        primIndex = indexOf(ranges, prim);\n+                        for (var i = 1; i < ranges.length; i++) {\n+                            var cur = ranges[i],\n+                                prev = ranges[i - 1];\n+                            var diff = cmp(prev.to(), cur.from());\n+                            if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n+                                var from = minPos(prev.from(), cur.from()),\n+                                    to = maxPos(prev.to(), cur.to());\n+                                var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n+                                if (i <= primIndex) {\n+                                    --primIndex;\n+                                }\n+                                ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n+                            }\n+                        }\n+                        return new Selection(ranges, primIndex);\n+                    }\n+\n+                    function simpleSelection(anchor, head) {\n+                        return new Selection([new Range(anchor, head || anchor)], 0);\n+                    }\n+\n+                    // Compute the position of the end of a change (its 'to' property\n+                    // refers to the pre-change end).\n+                    function changeEnd(change) {\n+                        if (!change.text) {\n+                            return change.to;\n+                        }\n+                        return Pos(change.from.line + change.text.length - 1, lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));\n+                    }\n+\n+                    // Adjust a position to refer to the post-change position of the\n+                    // same text, or the end of the change if the change covers it.\n+                    function adjustForChange(pos, change) {\n+                        if (cmp(pos, change.from) < 0) {\n+                            return pos;\n+                        }\n+                        if (cmp(pos, change.to) <= 0) {\n+                            return changeEnd(change);\n+                        }\n+                        var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1,\n+                            ch = pos.ch;\n+                        if (pos.line == change.to.line) {\n+                            ch += changeEnd(change).ch - change.to.ch;\n+                        }\n+                        return Pos(line, ch);\n+                    }\n+\n+                    function computeSelAfterChange(doc, change) {\n+                        var out = [];\n+                        for (var i = 0; i < doc.sel.ranges.length; i++) {\n+                            var range = doc.sel.ranges[i];\n+                            out.push(new Range(adjustForChange(range.anchor, change), adjustForChange(range.head, change)));\n+                        }\n+                        return normalizeSelection(doc.cm, out, doc.sel.primIndex);\n+                    }\n+\n+                    function offsetPos(pos, old, nw) {\n+                        if (pos.line == old.line) {\n+                            return Pos(nw.line, pos.ch - old.ch + nw.ch);\n+                        } else {\n+                            return Pos(nw.line + (pos.line - old.line), pos.ch);\n+                        }\n+                    }\n+\n+                    // Used by replaceSelections to allow moving the selection to the\n+                    // start or around the replaced test. Hint may be \"start\" or \"around\".\n+                    function computeReplacedSel(doc, changes, hint) {\n+                        var out = [];\n+                        var oldPrev = Pos(doc.first, 0),\n+                            newPrev = oldPrev;\n+                        for (var i = 0; i < changes.length; i++) {\n+                            var change = changes[i];\n+                            var from = offsetPos(change.from, oldPrev, newPrev);\n+                            var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n+                            oldPrev = change.to;\n+                            newPrev = to;\n+                            if (hint == \"around\") {\n+                                var range = doc.sel.ranges[i],\n+                                    inv = cmp(range.head, range.anchor) < 0;\n+                                out[i] = new Range(inv ? to : from, inv ? from : to);\n+                            } else {\n+                                out[i] = new Range(from, from);\n+                            }\n+                        }\n+                        return new Selection(out, doc.sel.primIndex);\n+                    }\n+\n+                    // Used to get the editor into a consistent state again when options change.\n+\n+                    function loadMode(cm) {\n+                        cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n+                        resetModeState(cm);\n+                    }\n+\n+                    function resetModeState(cm) {\n+                        cm.doc.iter(function(line) {\n+                            if (line.stateAfter) {\n+                                line.stateAfter = null;\n+                            }\n+                            if (line.styles) {\n+                                line.styles = null;\n+                            }\n+                        });\n+                        cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n+                        startWorker(cm, 100);\n+                        cm.state.modeGen++;\n+                        if (cm.curOp) {\n+                            regChange(cm);\n+                        }\n+                    }\n+\n+                    // DOCUMENT DATA STRUCTURE\n+\n+                    // By default, updates that start and end at the beginning of a line\n+                    // are treated specially, in order to make the association of line\n+                    // widgets and marker elements with the text behave more intuitive.\n+                    function isWholeLineUpdate(doc, change) {\n+                        return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore);\n+                    }\n+\n+                    // Perform a change on the document data structure.\n+                    function updateDoc(doc, change, markedSpans, estimateHeight) {\n+                        function spansFor(n) {\n+                            return markedSpans ? markedSpans[n] : null;\n+                        }\n+\n+                        function update(line, text, spans) {\n+                            updateLine(line, text, spans, estimateHeight);\n+                            signalLater(line, \"change\", line, change);\n+                        }\n+\n+                        function linesFor(start, end) {\n+                            var result = [];\n+                            for (var i = start; i < end; ++i) {\n+                                result.push(new Line(text[i], spansFor(i), estimateHeight));\n+                            }\n+                            return result;\n+                        }\n+                        var from = change.from,\n+                            to = change.to,\n+                            text = change.text;\n+                        var firstLine = getLine(doc, from.line),\n+                            lastLine = getLine(doc, to.line);\n+                        var lastText = lst(text),\n+                            lastSpans = spansFor(text.length - 1),\n+                            nlines = to.line - from.line;\n+\n+                        // Adjust the line structure\n+                        if (change.full) {\n+                            doc.insert(0, linesFor(0, text.length));\n+                            doc.remove(text.length, doc.size - text.length);\n+                        } else if (isWholeLineUpdate(doc, change)) {\n+                            // This is a whole-line replace. Treated specially to make\n+                            // sure line objects move the way they are supposed to.\n+                            var added = linesFor(0, text.length - 1);\n+                            update(lastLine, lastLine.text, lastSpans);\n+                            if (nlines) {\n+                                doc.remove(from.line, nlines);\n+                            }\n+                            if (added.length) {\n+                                doc.insert(from.line, added);\n+                            }\n+                        } else if (firstLine == lastLine) {\n+                            if (text.length == 1) {\n+                                update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n+                            } else {\n+                                var added$1 = linesFor(1, text.length - 1);\n+                                added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n+                                update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n+                                doc.insert(from.line + 1, added$1);\n+                            }\n+                        } else if (text.length == 1) {\n+                            update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n+                            doc.remove(from.line + 1, nlines);\n+                        } else {\n+                            update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n+                            update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n+                            var added$2 = linesFor(1, text.length - 1);\n+                            if (nlines > 1) {\n+                                doc.remove(from.line + 1, nlines - 1);\n+                            }\n+                            doc.insert(from.line + 1, added$2);\n+                        }\n+                        signalLater(doc, \"change\", doc, change);\n+                    }\n+\n+                    // Call f for all linked documents.\n+                    function linkedDocs(doc, f, sharedHistOnly) {\n+                        function propagate(doc, skip, sharedHist) {\n+                            if (doc.linked) {\n+                                for (var i = 0; i < doc.linked.length; ++i) {\n+                                    var rel = doc.linked[i];\n+                                    if (rel.doc == skip) {\n+                                        continue;\n+                                    }\n+                                    var shared = sharedHist && rel.sharedHist;\n+                                    if (sharedHistOnly && !shared) {\n+                                        continue;\n+                                    }\n+                                    f(rel.doc, shared);\n+                                    propagate(rel.doc, doc, shared);\n+                                }\n+                            }\n+                        }\n+                        propagate(doc, null, true);\n+                    }\n+\n+                    // Attach a document to an editor.\n+                    function attachDoc(cm, doc) {\n+                        if (doc.cm) {\n+                            throw new Error(\"This document is already in use.\");\n+                        }\n+                        cm.doc = doc;\n+                        doc.cm = cm;\n+                        estimateLineHeights(cm);\n+                        loadMode(cm);\n+                        setDirectionClass(cm);\n+                        cm.options.direction = doc.direction;\n+                        if (!cm.options.lineWrapping) {\n+                            findMaxLine(cm);\n+                        }\n+                        cm.options.mode = doc.modeOption;\n+                        regChange(cm);\n+                    }\n+\n+                    function setDirectionClass(cm) {\n+                        (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n+                    }\n+\n+                    function directionChanged(cm) {\n+                        runInOp(cm, function() {\n+                            setDirectionClass(cm);\n+                            regChange(cm);\n+                        });\n+                    }\n+\n+                    function History(prev) {\n+                        // Arrays of change events and selections. Doing something adds an\n+                        // event to done and clears undo. Undoing moves events from done\n+                        // to undone, redoing moves them in the other direction.\n+                        this.done = [];\n+                        this.undone = [];\n+                        this.undoDepth = prev ? prev.undoDepth : Infinity;\n+                        // Used to track when changes can be merged into a single undo\n+                        // event\n+                        this.lastModTime = this.lastSelTime = 0;\n+                        this.lastOp = this.lastSelOp = null;\n+                        this.lastOrigin = this.lastSelOrigin = null;\n+                        // Used by the isClean() method\n+                        this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n+                    }\n+\n+                    // Create a history change event from an updateDoc-style change\n+                    // object.\n+                    function historyChangeFromChange(doc, change) {\n+                        var histChange = {\n+                            from: copyPos(change.from),\n+                            to: changeEnd(change),\n+                            text: getBetween(doc, change.from, change.to)\n+                        };\n+                        attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n+                        linkedDocs(doc, function(doc) {\n+                            return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n+                        }, true);\n+                        return histChange;\n+                    }\n+\n+                    // Pop all selection events off the end of a history array. Stop at\n+                    // a change event.\n+                    function clearSelectionEvents(array) {\n+                        while (array.length) {\n+                            var last = lst(array);\n+                            if (last.ranges) {\n+                                array.pop();\n+                            } else {\n+                                break;\n+                            }\n+                        }\n+                    }\n+\n+                    // Find the top change event in the history. Pop off selection\n+                    // events that are in the way.\n+                    function lastChangeEvent(hist, force) {\n+                        if (force) {\n+                            clearSelectionEvents(hist.done);\n+                            return lst(hist.done);\n+                        } else if (hist.done.length && !lst(hist.done).ranges) {\n+                            return lst(hist.done);\n+                        } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n+                            hist.done.pop();\n+                            return lst(hist.done);\n+                        }\n+                    }\n+\n+                    // Register a change in the history. Merges changes that are within\n+                    // a single operation, or are close together with an origin that\n+                    // allows merging (starting with \"+\") into a single event.\n+                    function addChangeToHistory(doc, change, selAfter, opId) {\n+                        var hist = doc.history;\n+                        hist.undone.length = 0;\n+                        var time = +new Date(),\n+                            cur;\n+                        var last;\n+                        if ((hist.lastOp == opId || hist.lastOrigin == change.origin && change.origin && (change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500) || change.origin.charAt(0) == \"*\")) && (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n+                            // Merge this change into the last event\n+                            last = lst(cur.changes);\n+                            if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n+                                // Optimized case for simple insertion -- don't want to add\n+                                // new changesets for every character typed\n+                                last.to = changeEnd(change);\n+                            } else {\n+                                // Add new sub-event\n+                                cur.changes.push(historyChangeFromChange(doc, change));\n+                            }\n+                        } else {\n+                            // Can not be merged, start a new event.\n+                            var before = lst(hist.done);\n+                            if (!before || !before.ranges) {\n+                                pushSelectionToHistory(doc.sel, hist.done);\n+                            }\n+                            cur = {\n+                                changes: [historyChangeFromChange(doc, change)],\n+                                generation: hist.generation\n+                            };\n+                            hist.done.push(cur);\n+                            while (hist.done.length > hist.undoDepth) {\n+                                hist.done.shift();\n+                                if (!hist.done[0].ranges) {\n+                                    hist.done.shift();\n+                                }\n+                            }\n+                        }\n+                        hist.done.push(selAfter);\n+                        hist.generation = ++hist.maxGeneration;\n+                        hist.lastModTime = hist.lastSelTime = time;\n+                        hist.lastOp = hist.lastSelOp = opId;\n+                        hist.lastOrigin = hist.lastSelOrigin = change.origin;\n+                        if (!last) {\n+                            signal(doc, \"historyAdded\");\n+                        }\n+                    }\n+\n+                    function selectionEventCanBeMerged(doc, origin, prev, sel) {\n+                        var ch = origin.charAt(0);\n+                        return ch == \"*\" || ch == \"+\" && prev.ranges.length == sel.ranges.length && prev.somethingSelected() == sel.somethingSelected() && new Date() - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);\n+                    }\n+\n+                    // Called whenever the selection changes, sets the new selection as\n+                    // the pending selection in the history, and pushes the old pending\n+                    // selection into the 'done' array when it was significantly\n+                    // different (in number of selected ranges, emptiness, or time).\n+                    function addSelectionToHistory(doc, sel, opId, options) {\n+                        var hist = doc.history,\n+                            origin = options && options.origin;\n+\n+                        // A new event is started when the previous origin does not match\n+                        // the current, or the origins don't allow matching. Origins\n+                        // starting with * are always merged, those starting with + are\n+                        // merged when similar and close together in time.\n+                        if (opId == hist.lastSelOp || origin && hist.lastSelOrigin == origin && (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) {\n+                            hist.done[hist.done.length - 1] = sel;\n+                        } else {\n+                            pushSelectionToHistory(sel, hist.done);\n+                        }\n+                        hist.lastSelTime = +new Date();\n+                        hist.lastSelOrigin = origin;\n+                        hist.lastSelOp = opId;\n+                        if (options && options.clearRedo !== false) {\n+                            clearSelectionEvents(hist.undone);\n+                        }\n+                    }\n+\n+                    function pushSelectionToHistory(sel, dest) {\n+                        var top = lst(dest);\n+                        if (!(top && top.ranges && top.equals(sel))) {\n+                            dest.push(sel);\n+                        }\n+                    }\n+\n+                    // Used to store marked span information in the history.\n+                    function attachLocalSpans(doc, change, from, to) {\n+                        var existing = change[\"spans_\" + doc.id],\n+                            n = 0;\n+                        doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) {\n+                            if (line.markedSpans) {\n+                                (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans;\n+                            }\n+                            ++n;\n+                        });\n+                    }\n+\n+                    // When un/re-doing restores text containing marked spans, those\n+                    // that have been explicitly cleared should not be restored.\n+                    function removeClearedSpans(spans) {\n+                        if (!spans) {\n+                            return null;\n+                        }\n+                        var out;\n+                        for (var i = 0; i < spans.length; ++i) {\n+                            if (spans[i].marker.explicitlyCleared) {\n+                                if (!out) {\n+                                    out = spans.slice(0, i);\n+                                }\n+                            } else if (out) {\n+                                out.push(spans[i]);\n+                            }\n+                        }\n+                        return !out ? spans : out.length ? out : null;\n+                    }\n+\n+                    // Retrieve and filter the old marked spans stored in a change event.\n+                    function getOldSpans(doc, change) {\n+                        var found = change[\"spans_\" + doc.id];\n+                        if (!found) {\n+                            return null;\n+                        }\n+                        var nw = [];\n+                        for (var i = 0; i < change.text.length; ++i) {\n+                            nw.push(removeClearedSpans(found[i]));\n+                        }\n+                        return nw;\n+                    }\n+\n+                    // Used for un/re-doing changes from the history. Combines the\n+                    // result of computing the existing spans with the set of spans that\n+                    // existed in the history (so that deleting around a span and then\n+                    // undoing brings back the span).\n+                    function mergeOldSpans(doc, change) {\n+                        var old = getOldSpans(doc, change);\n+                        var stretched = stretchSpansOverChange(doc, change);\n+                        if (!old) {\n+                            return stretched;\n+                        }\n+                        if (!stretched) {\n+                            return old;\n+                        }\n+                        for (var i = 0; i < old.length; ++i) {\n+                            var oldCur = old[i],\n+                                stretchCur = stretched[i];\n+                            if (oldCur && stretchCur) {\n+                                spans: for (var j = 0; j < stretchCur.length; ++j) {\n+                                    var span = stretchCur[j];\n+                                    for (var k = 0; k < oldCur.length; ++k) {\n+                                        if (oldCur[k].marker == span.marker) {\n+                                            continue spans;\n+                                        }\n+                                    }\n+                                    oldCur.push(span);\n+                                }\n+                            }\n+                            else if (stretchCur) {\n+                                old[i] = stretchCur;\n+                            }\n+                        }\n+                        return old;\n+                    }\n+\n+                    // Used both to provide a JSON-safe object in .getHistory, and, when\n+                    // detaching a document, to split the history in two\n+                    function copyHistoryArray(events, newGroup, instantiateSel) {\n+                        var copy = [];\n+                        for (var i = 0; i < events.length; ++i) {\n+                            var event = events[i];\n+                            if (event.ranges) {\n+                                copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n+                                continue;\n+                            }\n+                            var changes = event.changes,\n+                                newChanges = [];\n+                            copy.push({\n+                                changes: newChanges\n+                            });\n+                            for (var j = 0; j < changes.length; ++j) {\n+                                var change = changes[j],\n+                                    m = void 0;\n+                                newChanges.push({\n+                                    from: change.from,\n+                                    to: change.to,\n+                                    text: change.text\n+                                });\n+                                if (newGroup) {\n+                                    for (var prop in change) {\n+                                        if (m = prop.match(/^spans_(\\d+)$/)) {\n+                                            if (indexOf(newGroup, Number(m[1])) > -1) {\n+                                                lst(newChanges)[prop] = change[prop];\n+                                                delete change[prop];\n+                                            }\n+                                        }\n+                                    }\n+                                }\n+                            }\n+                        }\n+                        return copy;\n+                    }\n+\n+                    // The 'scroll' parameter given to many of these indicated whether\n+                    // the new cursor position should be scrolled into view after\n+                    // modifying the selection.\n+\n+                    // If shift is held or the extend flag is set, extends a range to\n+                    // include a given position (and optionally a second position).\n+                    // Otherwise, simply returns the range between the given positions.\n+                    // Used for cursor motion and such.\n+                    function extendRange(range, head, other, extend) {\n+                        if (extend) {\n+                            var anchor = range.anchor;\n+                            if (other) {\n+                                var posBefore = cmp(head, anchor) < 0;\n+                                if (posBefore != cmp(other, anchor) < 0) {\n+                                    anchor = head;\n+                                    head = other;\n+                                } else if (posBefore != cmp(head, other) < 0) {\n+                                    head = other;\n+                                }\n+                            }\n+                            return new Range(anchor, head);\n+                        } else {\n+                            return new Range(other || head, head);\n+                        }\n+                    }\n+\n+                    // Extend the primary selection range, discard the rest.\n+                    function extendSelection(doc, head, other, options, extend) {\n+                        if (extend == null) {\n+                            extend = doc.cm && (doc.cm.display.shift || doc.extend);\n+                        }\n+                        setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n+                    }\n+\n+                    // Extend all selections (pos is an array of selections with length\n+                    // equal the number of selections)\n+                    function extendSelections(doc, heads, options) {\n+                        var out = [];\n+                        var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n+                        for (var i = 0; i < doc.sel.ranges.length; i++) {\n+                            out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend);\n+                        }\n+                        var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n+                        setSelection(doc, newSel, options);\n+                    }\n+\n+                    // Updates a single range in the selection.\n+                    function replaceOneSelection(doc, i, range, options) {\n+                        var ranges = doc.sel.ranges.slice(0);\n+                        ranges[i] = range;\n+                        setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n+                    }\n+\n+                    // Reset the selection to a single range.\n+                    function setSimpleSelection(doc, anchor, head, options) {\n+                        setSelection(doc, simpleSelection(anchor, head), options);\n+                    }\n+\n+                    // Give beforeSelectionChange handlers a change to influence a\n+                    // selection update.\n+                    function filterSelectionChange(doc, sel, options) {\n+                        var obj = {\n+                            ranges: sel.ranges,\n+                            update: function(ranges) {\n+                                this.ranges = [];\n+                                for (var i = 0; i < ranges.length; i++) {\n+                                    this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), clipPos(doc, ranges[i].head));\n+                                }\n+                            },\n+                            origin: options && options.origin\n+                        };\n+                        signal(doc, \"beforeSelectionChange\", doc, obj);\n+                        if (doc.cm) {\n+                            signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj);\n+                        }\n+                        if (obj.ranges != sel.ranges) {\n+                            return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1);\n+                        } else {\n+                            return sel;\n+                        }\n+                    }\n+\n+                    function setSelectionReplaceHistory(doc, sel, options) {\n+                        var done = doc.history.done,\n+                            last = lst(done);\n+                        if (last && last.ranges) {\n+                            done[done.length - 1] = sel;\n+                            setSelectionNoUndo(doc, sel, options);\n+                        } else {\n+                            setSelection(doc, sel, options);\n+                        }\n+                    }\n+\n+                    // Set a new selection.\n+                    function setSelection(doc, sel, options) {\n+                        setSelectionNoUndo(doc, sel, options);\n+                        addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n+                    }\n+\n+                    function setSelectionNoUndo(doc, sel, options) {\n+                        if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\")) {\n+                            sel = filterSelectionChange(doc, sel, options);\n+                        }\n+                        var bias = options && options.bias || (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n+                        setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n+                        if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\") {\n+                            ensureCursorVisible(doc.cm);\n+                        }\n+                    }\n+\n+                    function setSelectionInner(doc, sel) {\n+                        if (sel.equals(doc.sel)) {\n+                            return;\n+                        }\n+                        doc.sel = sel;\n+                        if (doc.cm) {\n+                            doc.cm.curOp.updateInput = 1;\n+                            doc.cm.curOp.selectionChanged = true;\n+                            signalCursorActivity(doc.cm);\n+                        }\n+                        signalLater(doc, \"cursorActivity\", doc);\n+                    }\n+\n+                    // Verify that the selection does not partially select any atomic\n+                    // marked ranges.\n+                    function reCheckSelection(doc) {\n+                        setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n+                    }\n+\n+                    // Return a selection that does not partially select any atomic\n+                    // ranges.\n+                    function skipAtomicInSelection(doc, sel, bias, mayClear) {\n+                        var out;\n+                        for (var i = 0; i < sel.ranges.length; i++) {\n+                            var range = sel.ranges[i];\n+                            var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n+                            var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n+                            var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n+                            if (out || newAnchor != range.anchor || newHead != range.head) {\n+                                if (!out) {\n+                                    out = sel.ranges.slice(0, i);\n+                                }\n+                                out[i] = new Range(newAnchor, newHead);\n+                            }\n+                        }\n+                        return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel;\n+                    }\n+\n+                    function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n+                        var line = getLine(doc, pos.line);\n+                        if (line.markedSpans) {\n+                            for (var i = 0; i < line.markedSpans.length; ++i) {\n+                                var sp = line.markedSpans[i],\n+                                    m = sp.marker;\n+\n+                                // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n+                                // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n+                                // is with selectLeft/Right\n+                                var preventCursorLeft = \"selectLeft\" in m ? !m.selectLeft : m.inclusiveLeft;\n+                                var preventCursorRight = \"selectRight\" in m ? !m.selectRight : m.inclusiveRight;\n+                                if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n+                                    if (mayClear) {\n+                                        signal(m, \"beforeCursorEnter\");\n+                                        if (m.explicitlyCleared) {\n+                                            if (!line.markedSpans) {\n+                                                break;\n+                                            } else {\n+                                                --i;\n+                                                continue;\n+                                            }\n+                                        }\n+                                    }\n+                                    if (!m.atomic) {\n+                                        continue;\n+                                    }\n+                                    if (oldPos) {\n+                                        var near = m.find(dir < 0 ? 1 : -1),\n+                                            diff = void 0;\n+                                        if (dir < 0 ? preventCursorRight : preventCursorLeft) {\n+                                            near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null);\n+                                        }\n+                                        if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) {\n+                                            return skipAtomicInner(doc, near, pos, dir, mayClear);\n+                                        }\n+                                    }\n+                                    var far = m.find(dir < 0 ? -1 : 1);\n+                                    if (dir < 0 ? preventCursorLeft : preventCursorRight) {\n+                                        far = movePos(doc, far, dir, far.line == pos.line ? line : null);\n+                                    }\n+                                    return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null;\n+                                }\n+                            }\n+                        }\n+                        return pos;\n+                    }\n+\n+                    // Ensure a given position is not inside an atomic range.\n+                    function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n+                        var dir = bias || 1;\n+                        var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, dir, true) || skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true);\n+                        if (!found) {\n+                            doc.cantEdit = true;\n+                            return Pos(doc.first, 0);\n+                        }\n+                        return found;\n+                    }\n+\n+                    function movePos(doc, pos, dir, line) {\n+                        if (dir < 0 && pos.ch == 0) {\n+                            if (pos.line > doc.first) {\n+                                return clipPos(doc, Pos(pos.line - 1));\n+                            } else {\n+                                return null;\n+                            }\n+                        } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n+                            if (pos.line < doc.first + doc.size - 1) {\n+                                return Pos(pos.line + 1, 0);\n+                            } else {\n+                                return null;\n+                            }\n+                        } else {\n+                            return new Pos(pos.line, pos.ch + dir);\n+                        }\n+                    }\n+\n+                    function selectAll(cm) {\n+                        cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n+                    }\n+\n+                    // UPDATING\n+\n+                    // Allow \"beforeChange\" event handlers to influence a change\n+                    function filterChange(doc, change, update) {\n+                        var obj = {\n+                            canceled: false,\n+                            from: change.from,\n+                            to: change.to,\n+                            text: change.text,\n+                            origin: change.origin,\n+                            cancel: function() {\n+                                return obj.canceled = true;\n+                            }\n+                        };\n+                        if (update) {\n+                            obj.update = function(from, to, text, origin) {\n+                                if (from) {\n+                                    obj.from = clipPos(doc, from);\n+                                }\n+                                if (to) {\n+                                    obj.to = clipPos(doc, to);\n+                                }\n+                                if (text) {\n+                                    obj.text = text;\n+                                }\n+                                if (origin !== undefined) {\n+                                    obj.origin = origin;\n+                                }\n+                            };\n+                        }\n+                        signal(doc, \"beforeChange\", doc, obj);\n+                        if (doc.cm) {\n+                            signal(doc.cm, \"beforeChange\", doc.cm, obj);\n+                        }\n+                        if (obj.canceled) {\n+                            if (doc.cm) {\n+                                doc.cm.curOp.updateInput = 2;\n+                            }\n+                            return null;\n+                        }\n+                        return {\n+                            from: obj.from,\n+                            to: obj.to,\n+                            text: obj.text,\n+                            origin: obj.origin\n+                        };\n+                    }\n+\n+                    // Apply a change to a document, and add it to the document's\n+                    // history, and propagating it to all linked documents.\n+                    function makeChange(doc, change, ignoreReadOnly) {\n+                        if (doc.cm) {\n+                            if (!doc.cm.curOp) {\n+                                return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);\n+                            }\n+                            if (doc.cm.state.suppressEdits) {\n+                                return;\n+                            }\n+                        }\n+                        if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n+                            change = filterChange(doc, change, true);\n+                            if (!change) {\n+                                return;\n+                            }\n+                        }\n+\n+                        // Possibly split or suppress the update based on the presence\n+                        // of read-only spans in its range.\n+                        var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n+                        if (split) {\n+                            for (var i = split.length - 1; i >= 0; --i) {\n+                                makeChangeInner(doc, {\n+                                    from: split[i].from,\n+                                    to: split[i].to,\n+                                    text: i ? [\"\"] : change.text,\n+                                    origin: change.origin\n+                                });\n+                            }\n+                        } else {\n+                            makeChangeInner(doc, change);\n+                        }\n+                    }\n+\n+                    function makeChangeInner(doc, change) {\n+                        if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) {\n+                            return;\n+                        }\n+                        var selAfter = computeSelAfterChange(doc, change);\n+                        addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n+                        makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n+                        var rebased = [];\n+                        linkedDocs(doc, function(doc, sharedHist) {\n+                            if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n+                                rebaseHist(doc.history, change);\n+                                rebased.push(doc.history);\n+                            }\n+                            makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n+                        });\n+                    }\n+\n+                    // Revert a change stored in a document's history.\n+                    function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n+                        var suppress = doc.cm && doc.cm.state.suppressEdits;\n+                        if (suppress && !allowSelectionOnly) {\n+                            return;\n+                        }\n+                        var hist = doc.history,\n+                            event,\n+                            selAfter = doc.sel;\n+                        var source = type == \"undo\" ? hist.done : hist.undone,\n+                            dest = type == \"undo\" ? hist.undone : hist.done;\n+\n+                        // Verify that there is a useable event (so that ctrl-z won't\n+                        // needlessly clear selection events)\n+                        var i = 0;\n+                        for (; i < source.length; i++) {\n+                            event = source[i];\n+                            if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) {\n+                                break;\n+                            }\n+                        }\n+                        if (i == source.length) {\n+                            return;\n+                        }\n+                        hist.lastOrigin = hist.lastSelOrigin = null;\n+                        for (;;) {\n+                            event = source.pop();\n+                            if (event.ranges) {\n+                                pushSelectionToHistory(event, dest);\n+                                if (allowSelectionOnly && !event.equals(doc.sel)) {\n+                                    setSelection(doc, event, {\n+                                        clearRedo: false\n+                                    });\n+                                    return;\n+                                }\n+                                selAfter = event;\n+                            } else if (suppress) {\n+                                source.push(event);\n+                                return;\n+                            } else {\n+                                break;\n+                            }\n+                        }\n+\n+                        // Build up a reverse change object to add to the opposite history\n+                        // stack (redo when undoing, and vice versa).\n+                        var antiChanges = [];\n+                        pushSelectionToHistory(selAfter, dest);\n+                        dest.push({\n+                            changes: antiChanges,\n+                            generation: hist.generation\n+                        });\n+                        hist.generation = event.generation || ++hist.maxGeneration;\n+                        var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n+                        var loop = function(i) {\n+                            var change = event.changes[i];\n+                            change.origin = type;\n+                            if (filter && !filterChange(doc, change, false)) {\n+                                source.length = 0;\n+                                return {};\n+                            }\n+                            antiChanges.push(historyChangeFromChange(doc, change));\n+                            var after = i ? computeSelAfterChange(doc, change) : lst(source);\n+                            makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n+                            if (!i && doc.cm) {\n+                                doc.cm.scrollIntoView({\n+                                    from: change.from,\n+                                    to: changeEnd(change)\n+                                });\n+                            }\n+                            var rebased = [];\n+\n+                            // Propagate to the linked documents\n+                            linkedDocs(doc, function(doc, sharedHist) {\n+                                if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n+                                    rebaseHist(doc.history, change);\n+                                    rebased.push(doc.history);\n+                                }\n+                                makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n+                            });\n+                        };\n+                        for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n+                            var returned = loop(i$1);\n+                            if (returned) return returned.v;\n+                        }\n+                    }\n+\n+                    // Sub-views need their line numbers shifted when text is added\n+                    // above or below them in the parent document.\n+                    function shiftDoc(doc, distance) {\n+                        if (distance == 0) {\n+                            return;\n+                        }\n+                        doc.first += distance;\n+                        doc.sel = new Selection(map(doc.sel.ranges, function(range) {\n+                            return new Range(Pos(range.anchor.line + distance, range.anchor.ch), Pos(range.head.line + distance, range.head.ch));\n+                        }), doc.sel.primIndex);\n+                        if (doc.cm) {\n+                            regChange(doc.cm, doc.first, doc.first - distance, distance);\n+                            for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) {\n+                                regLineChange(doc.cm, l, \"gutter\");\n+                            }\n+                        }\n+                    }\n+\n+                    // More lower-level change function, handling only a single document\n+                    // (not linked ones).\n+                    function makeChangeSingleDoc(doc, change, selAfter, spans) {\n+                        if (doc.cm && !doc.cm.curOp) {\n+                            return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);\n+                        }\n+                        if (change.to.line < doc.first) {\n+                            shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n+                            return;\n+                        }\n+                        if (change.from.line > doc.lastLine()) {\n+                            return;\n+                        }\n+\n+                        // Clip the change to the size of this doc\n+                        if (change.from.line < doc.first) {\n+                            var shift = change.text.length - 1 - (doc.first - change.from.line);\n+                            shiftDoc(doc, shift);\n+                            change = {\n+                                from: Pos(doc.first, 0),\n+                                to: Pos(change.to.line + shift, change.to.ch),\n+                                text: [lst(change.text)],\n+                                origin: change.origin\n+                            };\n+                        }\n+                        var last = doc.lastLine();\n+                        if (change.to.line > last) {\n+                            change = {\n+                                from: change.from,\n+                                to: Pos(last, getLine(doc, last).text.length),\n+                                text: [change.text[0]],\n+                                origin: change.origin\n+                            };\n+                        }\n+                        change.removed = getBetween(doc, change.from, change.to);\n+                        if (!selAfter) {\n+                            selAfter = computeSelAfterChange(doc, change);\n+                        }\n+                        if (doc.cm) {\n+                            makeChangeSingleDocInEditor(doc.cm, change, spans);\n+                        } else {\n+                            updateDoc(doc, change, spans);\n+                        }\n+                        setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n+                        if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) {\n+                            doc.cantEdit = false;\n+                        }\n+                    }\n+\n+                    // Handle the interaction of a change to a document with the editor\n+                    // that this document is part of.\n+                    function makeChangeSingleDocInEditor(cm, change, spans) {\n+                        var doc = cm.doc,\n+                            display = cm.display,\n+                            from = change.from,\n+                            to = change.to;\n+                        var recomputeMaxLength = false,\n+                            checkWidthStart = from.line;\n+                        if (!cm.options.lineWrapping) {\n+                            checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n+                            doc.iter(checkWidthStart, to.line + 1, function(line) {\n+                                if (line == display.maxLine) {\n+                                    recomputeMaxLength = true;\n+                                    return true;\n+                                }\n+                            });\n+                        }\n+                        if (doc.sel.contains(change.from, change.to) > -1) {\n+                            signalCursorActivity(cm);\n+                        }\n+                        updateDoc(doc, change, spans, estimateHeight(cm));\n+                        if (!cm.options.lineWrapping) {\n+                            doc.iter(checkWidthStart, from.line + change.text.length, function(line) {\n+                                var len = lineLength(line);\n+                                if (len > display.maxLineLength) {\n+                                    display.maxLine = line;\n+                                    display.maxLineLength = len;\n+                                    display.maxLineChanged = true;\n+                                    recomputeMaxLength = false;\n+                                }\n+                            });\n+                            if (recomputeMaxLength) {\n+                                cm.curOp.updateMaxLine = true;\n+                            }\n+                        }\n+                        retreatFrontier(doc, from.line);\n+                        startWorker(cm, 400);\n+                        var lendiff = change.text.length - (to.line - from.line) - 1;\n+                        // Remember that these lines changed, for updating the display\n+                        if (change.full) {\n+                            regChange(cm);\n+                        } else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) {\n+                            regLineChange(cm, from.line, \"text\");\n+                        } else {\n+                            regChange(cm, from.line, to.line + 1, lendiff);\n+                        }\n+                        var changesHandler = hasHandler(cm, \"changes\"),\n+                            changeHandler = hasHandler(cm, \"change\");\n+                        if (changeHandler || changesHandler) {\n+                            var obj = {\n+                                from: from,\n+                                to: to,\n+                                text: change.text,\n+                                removed: change.removed,\n+                                origin: change.origin\n+                            };\n+                            if (changeHandler) {\n+                                signalLater(cm, \"change\", cm, obj);\n+                            }\n+                            if (changesHandler) {\n+                                (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);\n+                            }\n+                        }\n+                        cm.display.selForContextMenu = null;\n+                    }\n+\n+                    function replaceRange(doc, code, from, to, origin) {\n+                        var assign;\n+                        if (!to) {\n+                            to = from;\n+                        }\n+                        if (cmp(to, from) < 0) {\n+                            assign = [to, from], from = assign[0], to = assign[1];\n+                        }\n+                        if (typeof code == \"string\") {\n+                            code = doc.splitLines(code);\n+                        }\n+                        makeChange(doc, {\n+                            from: from,\n+                            to: to,\n+                            text: code,\n+                            origin: origin\n+                        });\n+                    }\n+\n+                    // Rebasing/resetting history to deal with externally-sourced changes\n+\n+                    function rebaseHistSelSingle(pos, from, to, diff) {\n+                        if (to < pos.line) {\n+                            pos.line += diff;\n+                        } else if (from < pos.line) {\n+                            pos.line = from;\n+                            pos.ch = 0;\n+                        }\n+                    }\n+\n+                    // Tries to rebase an array of history events given a change in the\n+                    // document. If the change touches the same lines as the event, the\n+                    // event, and everything 'behind' it, is discarded. If the change is\n+                    // before the event, the event's positions are updated. Uses a\n+                    // copy-on-write scheme for the positions, to avoid having to\n+                    // reallocate them all on every rebase, but also avoid problems with\n+                    // shared position objects being unsafely updated.\n+                    function rebaseHistArray(array, from, to, diff) {\n+                        for (var i = 0; i < array.length; ++i) {\n+                            var sub = array[i],\n+                                ok = true;\n+                            if (sub.ranges) {\n+                                if (!sub.copied) {\n+                                    sub = array[i] = sub.deepCopy();\n+                                    sub.copied = true;\n+                                }\n+                                for (var j = 0; j < sub.ranges.length; j++) {\n+                                    rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n+                                    rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n+                                }\n+                                continue;\n+                            }\n+                            for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n+                                var cur = sub.changes[j$1];\n+                                if (to < cur.from.line) {\n+                                    cur.from = Pos(cur.from.line + diff, cur.from.ch);\n+                                    cur.to = Pos(cur.to.line + diff, cur.to.ch);\n+                                } else if (from <= cur.to.line) {\n+                                    ok = false;\n+                                    break;\n+                                }\n+                            }\n+                            if (!ok) {\n+                                array.splice(0, i + 1);\n+                                i = 0;\n+                            }\n+                        }\n+                    }\n+\n+                    function rebaseHist(hist, change) {\n+                        var from = change.from.line,\n+                            to = change.to.line,\n+                            diff = change.text.length - (to - from) - 1;\n+                        rebaseHistArray(hist.done, from, to, diff);\n+                        rebaseHistArray(hist.undone, from, to, diff);\n+                    }\n+\n+                    // Utility for applying a change to a line by handle or number,\n+                    // returning the number and optionally registering the line as\n+                    // changed.\n+                    function changeLine(doc, handle, changeType, op) {\n+                        var no = handle,\n+                            line = handle;\n+                        if (typeof handle == \"number\") {\n+                            line = getLine(doc, clipLine(doc, handle));\n+                        } else {\n+                            no = lineNo(handle);\n+                        }\n+                        if (no == null) {\n+                            return null;\n+                        }\n+                        if (op(line, no) && doc.cm) {\n+                            regLineChange(doc.cm, no, changeType);\n+                        }\n+                        return line;\n+                    }\n+\n+                    // The document is represented as a BTree consisting of leaves, with\n+                    // chunk of lines in them, and branches, with up to ten leaves or\n+                    // other branch nodes below them. The top node is always a branch\n+                    // node, and is the document object itself (meaning it has\n+                    // additional methods and properties).\n+                    //\n+                    // All nodes have parent links. The tree is used both to go from\n+                    // line numbers to line objects, and to go from objects to numbers.\n+                    // It also indexes by height, and is used to convert between height\n+                    // and line object, and to find the total height of the document.\n+                    //\n+                    // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n+\n+                    function LeafChunk(lines) {\n+                        this.lines = lines;\n+                        this.parent = null;\n+                        var height = 0;\n+                        for (var i = 0; i < lines.length; ++i) {\n+                            lines[i].parent = this;\n+                            height += lines[i].height;\n+                        }\n+                        this.height = height;\n+                    }\n+                    LeafChunk.prototype = {\n+                        chunkSize: function() {\n+                            return this.lines.length;\n+                        },\n+                        // Remove the n lines at offset 'at'.\n+                        removeInner: function(at, n) {\n+                            for (var i = at, e = at + n; i < e; ++i) {\n+                                var line = this.lines[i];\n+                                this.height -= line.height;\n+                                cleanUpLine(line);\n+                                signalLater(line, \"delete\");\n+                            }\n+                            this.lines.splice(at, n);\n+                        },\n+                        // Helper used to collapse a small branch into a single leaf.\n+                        collapse: function(lines) {\n+                            lines.push.apply(lines, this.lines);\n+                        },\n+                        // Insert the given array of lines at offset 'at', count them as\n+                        // having the given height.\n+                        insertInner: function(at, lines, height) {\n+                            this.height += height;\n+                            this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n+                            for (var i = 0; i < lines.length; ++i) {\n+                                lines[i].parent = this;\n+                            }\n+                        },\n+                        // Used to iterate over a part of the tree.\n+                        iterN: function(at, n, op) {\n+                            for (var e = at + n; at < e; ++at) {\n+                                if (op(this.lines[at])) {\n+                                    return true;\n+                                }\n+                            }\n+                        }\n+                    };\n+\n+                    function BranchChunk(children) {\n+                        this.children = children;\n+                        var size = 0,\n+                            height = 0;\n+                        for (var i = 0; i < children.length; ++i) {\n+                            var ch = children[i];\n+                            size += ch.chunkSize();\n+                            height += ch.height;\n+                            ch.parent = this;\n+                        }\n+                        this.size = size;\n+                        this.height = height;\n+                        this.parent = null;\n+                    }\n+                    BranchChunk.prototype = {\n+                        chunkSize: function() {\n+                            return this.size;\n+                        },\n+                        removeInner: function(at, n) {\n+                            this.size -= n;\n+                            for (var i = 0; i < this.children.length; ++i) {\n+                                var child = this.children[i],\n+                                    sz = child.chunkSize();\n+                                if (at < sz) {\n+                                    var rm = Math.min(n, sz - at),\n+                                        oldHeight = child.height;\n+                                    child.removeInner(at, rm);\n+                                    this.height -= oldHeight - child.height;\n+                                    if (sz == rm) {\n+                                        this.children.splice(i--, 1);\n+                                        child.parent = null;\n+                                    }\n+                                    if ((n -= rm) == 0) {\n+                                        break;\n+                                    }\n+                                    at = 0;\n+                                } else {\n+                                    at -= sz;\n+                                }\n+                            }\n+                            // If the result is smaller than 25 lines, ensure that it is a\n+                            // single leaf node.\n+                            if (this.size - n < 25 && (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n+                                var lines = [];\n+                                this.collapse(lines);\n+                                this.children = [new LeafChunk(lines)];\n+                                this.children[0].parent = this;\n+                            }\n+                        },\n+                        collapse: function(lines) {\n+                            for (var i = 0; i < this.children.length; ++i) {\n+                                this.children[i].collapse(lines);\n+                            }\n+                        },\n+                        insertInner: function(at, lines, height) {\n+                            this.size += lines.length;\n+                            this.height += height;\n+                            for (var i = 0; i < this.children.length; ++i) {\n+                                var child = this.children[i],\n+                                    sz = child.chunkSize();\n+                                if (at <= sz) {\n+                                    child.insertInner(at, lines, height);\n+                                    if (child.lines && child.lines.length > 50) {\n+                                        // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n+                                        // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n+                                        var remaining = child.lines.length % 25 + 25;\n+                                        for (var pos = remaining; pos < child.lines.length;) {\n+                                            var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n+                                            child.height -= leaf.height;\n+                                            this.children.splice(++i, 0, leaf);\n+                                            leaf.parent = this;\n+                                        }\n+                                        child.lines = child.lines.slice(0, remaining);\n+                                        this.maybeSpill();\n+                                    }\n+                                    break;\n+                                }\n+                                at -= sz;\n+                            }\n+                        },\n+                        // When a node has grown, check whether it should be split.\n+                        maybeSpill: function() {\n+                            if (this.children.length <= 10) {\n+                                return;\n+                            }\n+                            var me = this;\n+                            do {\n+                                var spilled = me.children.splice(me.children.length - 5, 5);\n+                                var sibling = new BranchChunk(spilled);\n+                                if (!me.parent) {\n+                                    // Become the parent node\n+                                    var copy = new BranchChunk(me.children);\n+                                    copy.parent = me;\n+                                    me.children = [copy, sibling];\n+                                    me = copy;\n+                                } else {\n+                                    me.size -= sibling.size;\n+                                    me.height -= sibling.height;\n+                                    var myIndex = indexOf(me.parent.children, me);\n+                                    me.parent.children.splice(myIndex + 1, 0, sibling);\n+                                }\n+                                sibling.parent = me.parent;\n+                            } while (me.children.length > 10);\n+                            me.parent.maybeSpill();\n+                        },\n+                        iterN: function(at, n, op) {\n+                            for (var i = 0; i < this.children.length; ++i) {\n+                                var child = this.children[i],\n+                                    sz = child.chunkSize();\n+                                if (at < sz) {\n+                                    var used = Math.min(n, sz - at);\n+                                    if (child.iterN(at, used, op)) {\n+                                        return true;\n+                                    }\n+                                    if ((n -= used) == 0) {\n+                                        break;\n+                                    }\n+                                    at = 0;\n+                                } else {\n+                                    at -= sz;\n+                                }\n+                            }\n+                        }\n+                    };\n+\n+                    // Line widgets are block elements displayed above or below a line.\n+\n+                    var LineWidget = function(doc, node, options) {\n+                        if (options) {\n+                            for (var opt in options) {\n+                                if (options.hasOwnProperty(opt)) {\n+                                    this[opt] = options[opt];\n+                                }\n+                            }\n+                        }\n+                        this.doc = doc;\n+                        this.node = node;\n+                    };\n+                    LineWidget.prototype.clear = function() {\n+                        var cm = this.doc.cm,\n+                            ws = this.line.widgets,\n+                            line = this.line,\n+                            no = lineNo(line);\n+                        if (no == null || !ws) {\n+                            return;\n+                        }\n+                        for (var i = 0; i < ws.length; ++i) {\n+                            if (ws[i] == this) {\n+                                ws.splice(i--, 1);\n+                            }\n+                        }\n+                        if (!ws.length) {\n+                            line.widgets = null;\n+                        }\n+                        var height = widgetHeight(this);\n+                        updateLineHeight(line, Math.max(0, line.height - height));\n+                        if (cm) {\n+                            runInOp(cm, function() {\n+                                adjustScrollWhenAboveVisible(cm, line, -height);\n+                                regLineChange(cm, no, \"widget\");\n+                            });\n+                            signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n+                        }\n+                    };\n+                    LineWidget.prototype.changed = function() {\n+                        var this$1 = this;\n+                        var oldH = this.height,\n+                            cm = this.doc.cm,\n+                            line = this.line;\n+                        this.height = null;\n+                        var diff = widgetHeight(this) - oldH;\n+                        if (!diff) {\n+                            return;\n+                        }\n+                        if (!lineIsHidden(this.doc, line)) {\n+                            updateLineHeight(line, line.height + diff);\n+                        }\n+                        if (cm) {\n+                            runInOp(cm, function() {\n+                                cm.curOp.forceUpdate = true;\n+                                adjustScrollWhenAboveVisible(cm, line, diff);\n+                                signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n+                            });\n+                        }\n+                    };\n+                    eventMixin(LineWidget);\n+\n+                    function adjustScrollWhenAboveVisible(cm, line, diff) {\n+                        if (heightAtLine(line) < (cm.curOp && cm.curOp.scrollTop || cm.doc.scrollTop)) {\n+                            addToScrollTop(cm, diff);\n+                        }\n+                    }\n+\n+                    function addLineWidget(doc, handle, node, options) {\n+                        var widget = new LineWidget(doc, node, options);\n+                        var cm = doc.cm;\n+                        if (cm && widget.noHScroll) {\n+                            cm.display.alignWidgets = true;\n+                        }\n+                        changeLine(doc, handle, \"widget\", function(line) {\n+                            var widgets = line.widgets || (line.widgets = []);\n+                            if (widget.insertAt == null) {\n+                                widgets.push(widget);\n+                            } else {\n+                                widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget);\n+                            }\n+                            widget.line = line;\n+                            if (cm && !lineIsHidden(doc, line)) {\n+                                var aboveVisible = heightAtLine(line) < doc.scrollTop;\n+                                updateLineHeight(line, line.height + widgetHeight(widget));\n+                                if (aboveVisible) {\n+                                    addToScrollTop(cm, widget.height);\n+                                }\n+                                cm.curOp.forceUpdate = true;\n+                            }\n+                            return true;\n+                        });\n+                        if (cm) {\n+                            signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle));\n+                        }\n+                        return widget;\n+                    }\n+\n+                    // TEXTMARKERS\n+\n+                    // Created with markText and setBookmark methods. A TextMarker is a\n+                    // handle that can be used to clear or find a marked position in the\n+                    // document. Line objects hold arrays (markedSpans) containing\n+                    // {from, to, marker} object pointing to such marker objects, and\n+                    // indicating that such a marker is present on that line. Multiple\n+                    // lines may point to the same marker when it spans across lines.\n+                    // The spans will have null for their from/to properties when the\n+                    // marker continues beyond the start/end of the line. Markers have\n+                    // links back to the lines they currently touch.\n+\n+                    // Collapsed markers have unique ids, in order to be able to order\n+                    // them, which is needed for uniquely determining an outer marker\n+                    // when they overlap (they may nest, but not partially overlap).\n+                    var nextMarkerId = 0;\n+                    var TextMarker = function(doc, type) {\n+                        this.lines = [];\n+                        this.type = type;\n+                        this.doc = doc;\n+                        this.id = ++nextMarkerId;\n+                    };\n+\n+                    // Clear the marker.\n+                    TextMarker.prototype.clear = function() {\n+                        if (this.explicitlyCleared) {\n+                            return;\n+                        }\n+                        var cm = this.doc.cm,\n+                            withOp = cm && !cm.curOp;\n+                        if (withOp) {\n+                            startOperation(cm);\n+                        }\n+                        if (hasHandler(this, \"clear\")) {\n+                            var found = this.find();\n+                            if (found) {\n+                                signalLater(this, \"clear\", found.from, found.to);\n+                            }\n+                        }\n+                        var min = null,\n+                            max = null;\n+                        for (var i = 0; i < this.lines.length; ++i) {\n+                            var line = this.lines[i];\n+                            var span = getMarkedSpanFor(line.markedSpans, this);\n+                            if (cm && !this.collapsed) {\n+                                regLineChange(cm, lineNo(line), \"text\");\n+                            } else if (cm) {\n+                                if (span.to != null) {\n+                                    max = lineNo(line);\n+                                }\n+                                if (span.from != null) {\n+                                    min = lineNo(line);\n+                                }\n+                            }\n+                            line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n+                            if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) {\n+                                updateLineHeight(line, textHeight(cm.display));\n+                            }\n+                        }\n+                        if (cm && this.collapsed && !cm.options.lineWrapping) {\n+                            for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n+                                var visual = visualLine(this.lines[i$1]),\n+                                    len = lineLength(visual);\n+                                if (len > cm.display.maxLineLength) {\n+                                    cm.display.maxLine = visual;\n+                                    cm.display.maxLineLength = len;\n+                                    cm.display.maxLineChanged = true;\n+                                }\n+                            }\n+                        }\n+                        if (min != null && cm && this.collapsed) {\n+                            regChange(cm, min, max + 1);\n+                        }\n+                        this.lines.length = 0;\n+                        this.explicitlyCleared = true;\n+                        if (this.atomic && this.doc.cantEdit) {\n+                            this.doc.cantEdit = false;\n+                            if (cm) {\n+                                reCheckSelection(cm.doc);\n+                            }\n+                        }\n+                        if (cm) {\n+                            signalLater(cm, \"markerCleared\", cm, this, min, max);\n+                        }\n+                        if (withOp) {\n+                            endOperation(cm);\n+                        }\n+                        if (this.parent) {\n+                            this.parent.clear();\n+                        }\n+                    };\n+\n+                    // Find the position of the marker in the document. Returns a {from,\n+                    // to} object by default. Side can be passed to get a specific side\n+                    // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n+                    // Pos objects returned contain a line object, rather than a line\n+                    // number (used to prevent looking up the same line twice).\n+                    TextMarker.prototype.find = function(side, lineObj) {\n+                        if (side == null && this.type == \"bookmark\") {\n+                            side = 1;\n+                        }\n+                        var from, to;\n+                        for (var i = 0; i < this.lines.length; ++i) {\n+                            var line = this.lines[i];\n+                            var span = getMarkedSpanFor(line.markedSpans, this);\n+                            if (span.from != null) {\n+                                from = Pos(lineObj ? line : lineNo(line), span.from);\n+                                if (side == -1) {\n+                                    return from;\n+                                }\n+                            }\n+                            if (span.to != null) {\n+                                to = Pos(lineObj ? line : lineNo(line), span.to);\n+                                if (side == 1) {\n+                                    return to;\n+                                }\n+                            }\n+                        }\n+                        return from && {\n+                            from: from,\n+                            to: to\n+                        };\n+                    };\n+\n+                    // Signals that the marker's widget changed, and surrounding layout\n+                    // should be recomputed.\n+                    TextMarker.prototype.changed = function() {\n+                        var this$1 = this;\n+                        var pos = this.find(-1, true),\n+                            widget = this,\n+                            cm = this.doc.cm;\n+                        if (!pos || !cm) {\n+                            return;\n+                        }\n+                        runInOp(cm, function() {\n+                            var line = pos.line,\n+                                lineN = lineNo(pos.line);\n+                            var view = findViewForLine(cm, lineN);\n+                            if (view) {\n+                                clearLineMeasurementCacheFor(view);\n+                                cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n+                            }\n+                            cm.curOp.updateMaxLine = true;\n+                            if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n+                                var oldHeight = widget.height;\n+                                widget.height = null;\n+                                var dHeight = widgetHeight(widget) - oldHeight;\n+                                if (dHeight) {\n+                                    updateLineHeight(line, line.height + dHeight);\n+                                }\n+                            }\n+                            signalLater(cm, \"markerChanged\", cm, this$1);\n+                        });\n+                    };\n+                    TextMarker.prototype.attachLine = function(line) {\n+                        if (!this.lines.length && this.doc.cm) {\n+                            var op = this.doc.cm.curOp;\n+                            if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) {\n+                                (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);\n+                            }\n+                        }\n+                        this.lines.push(line);\n+                    };\n+                    TextMarker.prototype.detachLine = function(line) {\n+                        this.lines.splice(indexOf(this.lines, line), 1);\n+                        if (!this.lines.length && this.doc.cm) {\n+                            var op = this.doc.cm.curOp;\n+                            (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n+                        }\n+                    };\n+                    eventMixin(TextMarker);\n+\n+                    // Create a marker, wire it up to the right lines, and\n+                    function markText(doc, from, to, options, type) {\n+                        // Shared markers (across linked documents) are handled separately\n+                        // (markTextShared will call out to this again, once per\n+                        // document).\n+                        if (options && options.shared) {\n+                            return markTextShared(doc, from, to, options, type);\n+                        }\n+                        // Ensure we are in an operation.\n+                        if (doc.cm && !doc.cm.curOp) {\n+                            return operation(doc.cm, markText)(doc, from, to, options, type);\n+                        }\n+                        var marker = new TextMarker(doc, type),\n+                            diff = cmp(from, to);\n+                        if (options) {\n+                            copyObj(options, marker, false);\n+                        }\n+                        // Don't connect empty markers unless clearWhenEmpty is false\n+                        if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) {\n+                            return marker;\n+                        }\n+                        if (marker.replacedWith) {\n+                            // Showing up as a widget implies collapsed (widget replaces text)\n+                            marker.collapsed = true;\n+                            marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n+                            if (!options.handleMouseEvents) {\n+                                marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\");\n+                            }\n+                            if (options.insertLeft) {\n+                                marker.widgetNode.insertLeft = true;\n+                            }\n+                        }\n+                        if (marker.collapsed) {\n+                            if (conflictingCollapsedRange(doc, from.line, from, to, marker) || from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) {\n+                                throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");\n+                            }\n+                            seeCollapsedSpans();\n+                        }\n+                        if (marker.addToHistory) {\n+                            addChangeToHistory(doc, {\n+                                from: from,\n+                                to: to,\n+                                origin: \"markText\"\n+                            }, doc.sel, NaN);\n+                        }\n+                        var curLine = from.line,\n+                            cm = doc.cm,\n+                            updateMaxLine;\n+                        doc.iter(curLine, to.line + 1, function(line) {\n+                            if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) {\n+                                updateMaxLine = true;\n+                            }\n+                            if (marker.collapsed && curLine != from.line) {\n+                                updateLineHeight(line, 0);\n+                            }\n+                            addMarkedSpan(line, new MarkedSpan(marker, curLine == from.line ? from.ch : null, curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n+                            ++curLine;\n+                        });\n+                        // lineIsHidden depends on the presence of the spans, so needs a second pass\n+                        if (marker.collapsed) {\n+                            doc.iter(from.line, to.line + 1, function(line) {\n+                                if (lineIsHidden(doc, line)) {\n+                                    updateLineHeight(line, 0);\n+                                }\n+                            });\n+                        }\n+                        if (marker.clearOnEnter) {\n+                            on(marker, \"beforeCursorEnter\", function() {\n+                                return marker.clear();\n+                            });\n+                        }\n+                        if (marker.readOnly) {\n+                            seeReadOnlySpans();\n+                            if (doc.history.done.length || doc.history.undone.length) {\n+                                doc.clearHistory();\n+                            }\n+                        }\n+                        if (marker.collapsed) {\n+                            marker.id = ++nextMarkerId;\n+                            marker.atomic = true;\n+                        }\n+                        if (cm) {\n+                            // Sync editor state\n+                            if (updateMaxLine) {\n+                                cm.curOp.updateMaxLine = true;\n+                            }\n+                            if (marker.collapsed) {\n+                                regChange(cm, from.line, to.line + 1);\n+                            } else if (marker.className || marker.startStyle || marker.endStyle || marker.css || marker.attributes || marker.title) {\n+                                for (var i = from.line; i <= to.line; i++) {\n+                                    regLineChange(cm, i, \"text\");\n+                                }\n+                            }\n+                            if (marker.atomic) {\n+                                reCheckSelection(cm.doc);\n+                            }\n+                            signalLater(cm, \"markerAdded\", cm, marker);\n+                        }\n+                        return marker;\n+                    }\n+\n+                    // SHARED TEXTMARKERS\n+\n+                    // A shared marker spans multiple linked documents. It is\n+                    // implemented as a meta-marker-object controlling multiple normal\n+                    // markers.\n+                    var SharedTextMarker = function(markers, primary) {\n+                        this.markers = markers;\n+                        this.primary = primary;\n+                        for (var i = 0; i < markers.length; ++i) {\n+                            markers[i].parent = this;\n+                        }\n+                    };\n+                    SharedTextMarker.prototype.clear = function() {\n+                        if (this.explicitlyCleared) {\n+                            return;\n+                        }\n+                        this.explicitlyCleared = true;\n+                        for (var i = 0; i < this.markers.length; ++i) {\n+                            this.markers[i].clear();\n+                        }\n+                        signalLater(this, \"clear\");\n+                    };\n+                    SharedTextMarker.prototype.find = function(side, lineObj) {\n+                        return this.primary.find(side, lineObj);\n+                    };\n+                    eventMixin(SharedTextMarker);\n+\n+                    function markTextShared(doc, from, to, options, type) {\n+                        options = copyObj(options);\n+                        options.shared = false;\n+                        var markers = [markText(doc, from, to, options, type)],\n+                            primary = markers[0];\n+                        var widget = options.widgetNode;\n+                        linkedDocs(doc, function(doc) {\n+                            if (widget) {\n+                                options.widgetNode = widget.cloneNode(true);\n+                            }\n+                            markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n+                            for (var i = 0; i < doc.linked.length; ++i) {\n+                                if (doc.linked[i].isParent) {\n+                                    return;\n+                                }\n+                            }\n+                            primary = lst(markers);\n+                        });\n+                        return new SharedTextMarker(markers, primary);\n+                    }\n+\n+                    function findSharedMarkers(doc) {\n+                        return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function(m) {\n+                            return m.parent;\n+                        });\n+                    }\n+\n+                    function copySharedMarkers(doc, markers) {\n+                        for (var i = 0; i < markers.length; i++) {\n+                            var marker = markers[i],\n+                                pos = marker.find();\n+                            var mFrom = doc.clipPos(pos.from),\n+                                mTo = doc.clipPos(pos.to);\n+                            if (cmp(mFrom, mTo)) {\n+                                var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n+                                marker.markers.push(subMark);\n+                                subMark.parent = marker;\n+                            }\n+                        }\n+                    }\n+\n+                    function detachSharedMarkers(markers) {\n+                        var loop = function(i) {\n+                            var marker = markers[i],\n+                                linked = [marker.primary.doc];\n+                            linkedDocs(marker.primary.doc, function(d) {\n+                                return linked.push(d);\n+                            });\n+                            for (var j = 0; j < marker.markers.length; j++) {\n+                                var subMarker = marker.markers[j];\n+                                if (indexOf(linked, subMarker.doc) == -1) {\n+                                    subMarker.parent = null;\n+                                    marker.markers.splice(j--, 1);\n+                                }\n+                            }\n+                        };\n+                        for (var i = 0; i < markers.length; i++) loop(i);\n+                    }\n+                    var nextDocId = 0;\n+                    var Doc = function(text, mode, firstLine, lineSep, direction) {\n+                        if (!(this instanceof Doc)) {\n+                            return new Doc(text, mode, firstLine, lineSep, direction);\n+                        }\n+                        if (firstLine == null) {\n+                            firstLine = 0;\n+                        }\n+                        BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n+                        this.first = firstLine;\n+                        this.scrollTop = this.scrollLeft = 0;\n+                        this.cantEdit = false;\n+                        this.cleanGeneration = 1;\n+                        this.modeFrontier = this.highlightFrontier = firstLine;\n+                        var start = Pos(firstLine, 0);\n+                        this.sel = simpleSelection(start);\n+                        this.history = new History(null);\n+                        this.id = ++nextDocId;\n+                        this.modeOption = mode;\n+                        this.lineSep = lineSep;\n+                        this.direction = direction == \"rtl\" ? \"rtl\" : \"ltr\";\n+                        this.extend = false;\n+                        if (typeof text == \"string\") {\n+                            text = this.splitLines(text);\n+                        }\n+                        updateDoc(this, {\n+                            from: start,\n+                            to: start,\n+                            text: text\n+                        });\n+                        setSelection(this, simpleSelection(start), sel_dontScroll);\n+                    };\n+                    Doc.prototype = createObj(BranchChunk.prototype, {\n+                        constructor: Doc,\n+                        // Iterate over the document. Supports two forms -- with only one\n+                        // argument, it calls that for each line in the document. With\n+                        // three, it iterates over the range given by the first two (with\n+                        // the second being non-inclusive).\n+                        iter: function(from, to, op) {\n+                            if (op) {\n+                                this.iterN(from - this.first, to - from, op);\n+                            } else {\n+                                this.iterN(this.first, this.first + this.size, from);\n+                            }\n+                        },\n+                        // Non-public interface for adding and removing lines.\n+                        insert: function(at, lines) {\n+                            var height = 0;\n+                            for (var i = 0; i < lines.length; ++i) {\n+                                height += lines[i].height;\n+                            }\n+                            this.insertInner(at - this.first, lines, height);\n+                        },\n+                        remove: function(at, n) {\n+                            this.removeInner(at - this.first, n);\n+                        },\n+                        // From here, the methods are part of the public interface. Most\n+                        // are also available from CodeMirror (editor) instances.\n+\n+                        getValue: function(lineSep) {\n+                            var lines = getLines(this, this.first, this.first + this.size);\n+                            if (lineSep === false) {\n+                                return lines;\n+                            }\n+                            return lines.join(lineSep || this.lineSeparator());\n+                        },\n+                        setValue: docMethodOp(function(code) {\n+                            var top = Pos(this.first, 0),\n+                                last = this.first + this.size - 1;\n+                            makeChange(this, {\n+                                from: top,\n+                                to: Pos(last, getLine(this, last).text.length),\n+                                text: this.splitLines(code),\n+                                origin: \"setValue\",\n+                                full: true\n+                            }, true);\n+                            if (this.cm) {\n+                                scrollToCoords(this.cm, 0, 0);\n+                            }\n+                            setSelection(this, simpleSelection(top), sel_dontScroll);\n+                        }),\n+                        replaceRange: function(code, from, to, origin) {\n+                            from = clipPos(this, from);\n+                            to = to ? clipPos(this, to) : from;\n+                            replaceRange(this, code, from, to, origin);\n+                        },\n+                        getRange: function(from, to, lineSep) {\n+                            var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n+                            if (lineSep === false) {\n+                                return lines;\n+                            }\n+                            if (lineSep === '') {\n+                                return lines.join('');\n+                            }\n+                            return lines.join(lineSep || this.lineSeparator());\n+                        },\n+                        getLine: function(line) {\n+                            var l = this.getLineHandle(line);\n+                            return l && l.text;\n+                        },\n+                        getLineHandle: function(line) {\n+                            if (isLine(this, line)) {\n+                                return getLine(this, line);\n+                            }\n+                        },\n+                        getLineNumber: function(line) {\n+                            return lineNo(line);\n+                        },\n+                        getLineHandleVisualStart: function(line) {\n+                            if (typeof line == \"number\") {\n+                                line = getLine(this, line);\n+                            }\n+                            return visualLine(line);\n+                        },\n+                        lineCount: function() {\n+                            return this.size;\n+                        },\n+                        firstLine: function() {\n+                            return this.first;\n+                        },\n+                        lastLine: function() {\n+                            return this.first + this.size - 1;\n+                        },\n+                        clipPos: function(pos) {\n+                            return clipPos(this, pos);\n+                        },\n+                        getCursor: function(start) {\n+                            var range = this.sel.primary(),\n+                                pos;\n+                            if (start == null || start == \"head\") {\n+                                pos = range.head;\n+                            } else if (start == \"anchor\") {\n+                                pos = range.anchor;\n+                            } else if (start == \"end\" || start == \"to\" || start === false) {\n+                                pos = range.to();\n+                            } else {\n+                                pos = range.from();\n+                            }\n+                            return pos;\n+                        },\n+                        listSelections: function() {\n+                            return this.sel.ranges;\n+                        },\n+                        somethingSelected: function() {\n+                            return this.sel.somethingSelected();\n+                        },\n+                        setCursor: docMethodOp(function(line, ch, options) {\n+                            setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n+                        }),\n+                        setSelection: docMethodOp(function(anchor, head, options) {\n+                            setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n+                        }),\n+                        extendSelection: docMethodOp(function(head, other, options) {\n+                            extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n+                        }),\n+                        extendSelections: docMethodOp(function(heads, options) {\n+                            extendSelections(this, clipPosArray(this, heads), options);\n+                        }),\n+                        extendSelectionsBy: docMethodOp(function(f, options) {\n+                            var heads = map(this.sel.ranges, f);\n+                            extendSelections(this, clipPosArray(this, heads), options);\n+                        }),\n+                        setSelections: docMethodOp(function(ranges, primary, options) {\n+                            if (!ranges.length) {\n+                                return;\n+                            }\n+                            var out = [];\n+                            for (var i = 0; i < ranges.length; i++) {\n+                                out[i] = new Range(clipPos(this, ranges[i].anchor), clipPos(this, ranges[i].head || ranges[i].anchor));\n+                            }\n+                            if (primary == null) {\n+                                primary = Math.min(ranges.length - 1, this.sel.primIndex);\n+                            }\n+                            setSelection(this, normalizeSelection(this.cm, out, primary), options);\n+                        }),\n+                        addSelection: docMethodOp(function(anchor, head, options) {\n+                            var ranges = this.sel.ranges.slice(0);\n+                            ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n+                            setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n+                        }),\n+                        getSelection: function(lineSep) {\n+                            var ranges = this.sel.ranges,\n+                                lines;\n+                            for (var i = 0; i < ranges.length; i++) {\n+                                var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n+                                lines = lines ? lines.concat(sel) : sel;\n+                            }\n+                            if (lineSep === false) {\n+                                return lines;\n+                            } else {\n+                                return lines.join(lineSep || this.lineSeparator());\n+                            }\n+                        },\n+                        getSelections: function(lineSep) {\n+                            var parts = [],\n+                                ranges = this.sel.ranges;\n+                            for (var i = 0; i < ranges.length; i++) {\n+                                var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n+                                if (lineSep !== false) {\n+                                    sel = sel.join(lineSep || this.lineSeparator());\n+                                }\n+                                parts[i] = sel;\n+                            }\n+                            return parts;\n+                        },\n+                        replaceSelection: function(code, collapse, origin) {\n+                            var dup = [];\n+                            for (var i = 0; i < this.sel.ranges.length; i++) {\n+                                dup[i] = code;\n+                            }\n+                            this.replaceSelections(dup, collapse, origin || \"+input\");\n+                        },\n+                        replaceSelections: docMethodOp(function(code, collapse, origin) {\n+                            var changes = [],\n+                                sel = this.sel;\n+                            for (var i = 0; i < sel.ranges.length; i++) {\n+                                var range = sel.ranges[i];\n+                                changes[i] = {\n+                                    from: range.from(),\n+                                    to: range.to(),\n+                                    text: this.splitLines(code[i]),\n+                                    origin: origin\n+                                };\n+                            }\n+                            var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n+                            for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) {\n+                                makeChange(this, changes[i$1]);\n+                            }\n+                            if (newSel) {\n+                                setSelectionReplaceHistory(this, newSel);\n+                            } else if (this.cm) {\n+                                ensureCursorVisible(this.cm);\n+                            }\n+                        }),\n+                        undo: docMethodOp(function() {\n+                            makeChangeFromHistory(this, \"undo\");\n+                        }),\n+                        redo: docMethodOp(function() {\n+                            makeChangeFromHistory(this, \"redo\");\n+                        }),\n+                        undoSelection: docMethodOp(function() {\n+                            makeChangeFromHistory(this, \"undo\", true);\n+                        }),\n+                        redoSelection: docMethodOp(function() {\n+                            makeChangeFromHistory(this, \"redo\", true);\n+                        }),\n+                        setExtending: function(val) {\n+                            this.extend = val;\n+                        },\n+                        getExtending: function() {\n+                            return this.extend;\n+                        },\n+                        historySize: function() {\n+                            var hist = this.history,\n+                                done = 0,\n+                                undone = 0;\n+                            for (var i = 0; i < hist.done.length; i++) {\n+                                if (!hist.done[i].ranges) {\n+                                    ++done;\n+                                }\n+                            }\n+                            for (var i$1 = 0; i$1 < hist.undone.length; i$1++) {\n+                                if (!hist.undone[i$1].ranges) {\n+                                    ++undone;\n+                                }\n+                            }\n+                            return {\n+                                undo: done,\n+                                redo: undone\n+                            };\n+                        },\n+                        clearHistory: function() {\n+                            var this$1 = this;\n+                            this.history = new History(this.history);\n+                            linkedDocs(this, function(doc) {\n+                                return doc.history = this$1.history;\n+                            }, true);\n+                        },\n+                        markClean: function() {\n+                            this.cleanGeneration = this.changeGeneration(true);\n+                        },\n+                        changeGeneration: function(forceSplit) {\n+                            if (forceSplit) {\n+                                this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null;\n+                            }\n+                            return this.history.generation;\n+                        },\n+                        isClean: function(gen) {\n+                            return this.history.generation == (gen || this.cleanGeneration);\n+                        },\n+                        getHistory: function() {\n+                            return {\n+                                done: copyHistoryArray(this.history.done),\n+                                undone: copyHistoryArray(this.history.undone)\n+                            };\n+                        },\n+                        setHistory: function(histData) {\n+                            var hist = this.history = new History(this.history);\n+                            hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n+                            hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n+                        },\n+                        setGutterMarker: docMethodOp(function(line, gutterID, value) {\n+                            return changeLine(this, line, \"gutter\", function(line) {\n+                                var markers = line.gutterMarkers || (line.gutterMarkers = {});\n+                                markers[gutterID] = value;\n+                                if (!value && isEmpty(markers)) {\n+                                    line.gutterMarkers = null;\n+                                }\n+                                return true;\n+                            });\n+                        }),\n+                        clearGutter: docMethodOp(function(gutterID) {\n+                            var this$1 = this;\n+                            this.iter(function(line) {\n+                                if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n+                                    changeLine(this$1, line, \"gutter\", function() {\n+                                        line.gutterMarkers[gutterID] = null;\n+                                        if (isEmpty(line.gutterMarkers)) {\n+                                            line.gutterMarkers = null;\n+                                        }\n+                                        return true;\n+                                    });\n+                                }\n+                            });\n+                        }),\n+                        lineInfo: function(line) {\n+                            var n;\n+                            if (typeof line == \"number\") {\n+                                if (!isLine(this, line)) {\n+                                    return null;\n+                                }\n+                                n = line;\n+                                line = getLine(this, line);\n+                                if (!line) {\n+                                    return null;\n+                                }\n+                            } else {\n+                                n = lineNo(line);\n+                                if (n == null) {\n+                                    return null;\n+                                }\n+                            }\n+                            return {\n+                                line: n,\n+                                handle: line,\n+                                text: line.text,\n+                                gutterMarkers: line.gutterMarkers,\n+                                textClass: line.textClass,\n+                                bgClass: line.bgClass,\n+                                wrapClass: line.wrapClass,\n+                                widgets: line.widgets\n+                            };\n+                        },\n+                        addLineClass: docMethodOp(function(handle, where, cls) {\n+                            return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function(line) {\n+                                var prop = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n+                                if (!line[prop]) {\n+                                    line[prop] = cls;\n+                                } else if (classTest(cls).test(line[prop])) {\n+                                    return false;\n+                                } else {\n+                                    line[prop] += \" \" + cls;\n+                                }\n+                                return true;\n+                            });\n+                        }),\n+                        removeLineClass: docMethodOp(function(handle, where, cls) {\n+                            return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function(line) {\n+                                var prop = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n+                                var cur = line[prop];\n+                                if (!cur) {\n+                                    return false;\n+                                } else if (cls == null) {\n+                                    line[prop] = null;\n+                                } else {\n+                                    var found = cur.match(classTest(cls));\n+                                    if (!found) {\n+                                        return false;\n+                                    }\n+                                    var end = found.index + found[0].length;\n+                                    line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n+                                }\n+                                return true;\n+                            });\n+                        }),\n+                        addLineWidget: docMethodOp(function(handle, node, options) {\n+                            return addLineWidget(this, handle, node, options);\n+                        }),\n+                        removeLineWidget: function(widget) {\n+                            widget.clear();\n+                        },\n+                        markText: function(from, to, options) {\n+                            return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\");\n+                        },\n+                        setBookmark: function(pos, options) {\n+                            var realOpts = {\n+                                replacedWith: options && (options.nodeType == null ? options.widget : options),\n+                                insertLeft: options && options.insertLeft,\n+                                clearWhenEmpty: false,\n+                                shared: options && options.shared,\n+                                handleMouseEvents: options && options.handleMouseEvents\n+                            };\n+                            pos = clipPos(this, pos);\n+                            return markText(this, pos, pos, realOpts, \"bookmark\");\n+                        },\n+                        findMarksAt: function(pos) {\n+                            pos = clipPos(this, pos);\n+                            var markers = [],\n+                                spans = getLine(this, pos.line).markedSpans;\n+                            if (spans) {\n+                                for (var i = 0; i < spans.length; ++i) {\n+                                    var span = spans[i];\n+                                    if ((span.from == null || span.from <= pos.ch) && (span.to == null || span.to >= pos.ch)) {\n+                                        markers.push(span.marker.parent || span.marker);\n+                                    }\n+                                }\n+                            }\n+                            return markers;\n+                        },\n+                        findMarks: function(from, to, filter) {\n+                            from = clipPos(this, from);\n+                            to = clipPos(this, to);\n+                            var found = [],\n+                                lineNo = from.line;\n+                            this.iter(from.line, to.line + 1, function(line) {\n+                                var spans = line.markedSpans;\n+                                if (spans) {\n+                                    for (var i = 0; i < spans.length; i++) {\n+                                        var span = spans[i];\n+                                        if (!(span.to != null && lineNo == from.line && from.ch >= span.to || span.from == null && lineNo != from.line || span.from != null && lineNo == to.line && span.from >= to.ch) && (!filter || filter(span.marker))) {\n+                                            found.push(span.marker.parent || span.marker);\n+                                        }\n+                                    }\n+                                }\n+                                ++lineNo;\n+                            });\n+                            return found;\n+                        },\n+                        getAllMarks: function() {\n+                            var markers = [];\n+                            this.iter(function(line) {\n+                                var sps = line.markedSpans;\n+                                if (sps) {\n+                                    for (var i = 0; i < sps.length; ++i) {\n+                                        if (sps[i].from != null) {\n+                                            markers.push(sps[i].marker);\n+                                        }\n+                                    }\n+                                }\n+                            });\n+                            return markers;\n+                        },\n+                        posFromIndex: function(off) {\n+                            var ch,\n+                                lineNo = this.first,\n+                                sepSize = this.lineSeparator().length;\n+                            this.iter(function(line) {\n+                                var sz = line.text.length + sepSize;\n+                                if (sz > off) {\n+                                    ch = off;\n+                                    return true;\n+                                }\n+                                off -= sz;\n+                                ++lineNo;\n+                            });\n+                            return clipPos(this, Pos(lineNo, ch));\n+                        },\n+                        indexFromPos: function(coords) {\n+                            coords = clipPos(this, coords);\n+                            var index = coords.ch;\n+                            if (coords.line < this.first || coords.ch < 0) {\n+                                return 0;\n+                            }\n+                            var sepSize = this.lineSeparator().length;\n+                            this.iter(this.first, coords.line, function(line) {\n+                                // iter aborts when callback returns a truthy value\n+                                index += line.text.length + sepSize;\n+                            });\n+                            return index;\n+                        },\n+                        copy: function(copyHistory) {\n+                            var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction);\n+                            doc.scrollTop = this.scrollTop;\n+                            doc.scrollLeft = this.scrollLeft;\n+                            doc.sel = this.sel;\n+                            doc.extend = false;\n+                            if (copyHistory) {\n+                                doc.history.undoDepth = this.history.undoDepth;\n+                                doc.setHistory(this.getHistory());\n+                            }\n+                            return doc;\n+                        },\n+                        linkedDoc: function(options) {\n+                            if (!options) {\n+                                options = {};\n+                            }\n+                            var from = this.first,\n+                                to = this.first + this.size;\n+                            if (options.from != null && options.from > from) {\n+                                from = options.from;\n+                            }\n+                            if (options.to != null && options.to < to) {\n+                                to = options.to;\n+                            }\n+                            var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n+                            if (options.sharedHist) {\n+                                copy.history = this.history;\n+                            }\n+                            (this.linked || (this.linked = [])).push({\n+                                doc: copy,\n+                                sharedHist: options.sharedHist\n+                            });\n+                            copy.linked = [{\n+                                doc: this,\n+                                isParent: true,\n+                                sharedHist: options.sharedHist\n+                            }];\n+                            copySharedMarkers(copy, findSharedMarkers(this));\n+                            return copy;\n+                        },\n+                        unlinkDoc: function(other) {\n+                            if (other instanceof CodeMirror) {\n+                                other = other.doc;\n+                            }\n+                            if (this.linked) {\n+                                for (var i = 0; i < this.linked.length; ++i) {\n+                                    var link = this.linked[i];\n+                                    if (link.doc != other) {\n+                                        continue;\n+                                    }\n+                                    this.linked.splice(i, 1);\n+                                    other.unlinkDoc(this);\n+                                    detachSharedMarkers(findSharedMarkers(this));\n+                                    break;\n+                                }\n+                            }\n+                            // If the histories were shared, split them again\n+                            if (other.history == this.history) {\n+                                var splitIds = [other.id];\n+                                linkedDocs(other, function(doc) {\n+                                    return splitIds.push(doc.id);\n+                                }, true);\n+                                other.history = new History(null);\n+                                other.history.done = copyHistoryArray(this.history.done, splitIds);\n+                                other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n+                            }\n+                        },\n+                        iterLinkedDocs: function(f) {\n+                            linkedDocs(this, f);\n+                        },\n+                        getMode: function() {\n+                            return this.mode;\n+                        },\n+                        getEditor: function() {\n+                            return this.cm;\n+                        },\n+                        splitLines: function(str) {\n+                            if (this.lineSep) {\n+                                return str.split(this.lineSep);\n+                            }\n+                            return splitLinesAuto(str);\n+                        },\n+                        lineSeparator: function() {\n+                            return this.lineSep || \"\\n\";\n+                        },\n+                        setDirection: docMethodOp(function(dir) {\n+                            if (dir != \"rtl\") {\n+                                dir = \"ltr\";\n+                            }\n+                            if (dir == this.direction) {\n+                                return;\n+                            }\n+                            this.direction = dir;\n+                            this.iter(function(line) {\n+                                return line.order = null;\n+                            });\n+                            if (this.cm) {\n+                                directionChanged(this.cm);\n+                            }\n+                        })\n+                    });\n+\n+                    // Public alias.\n+                    Doc.prototype.eachLine = Doc.prototype.iter;\n+\n+                    // Kludge to work around strange IE behavior where it'll sometimes\n+                    // re-fire a series of drag-related events right after the drop (#1551)\n+                    var lastDrop = 0;\n+\n+                    function onDrop(e) {\n+                        var cm = this;\n+                        clearDragCursor(cm);\n+                        if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n+                            return;\n+                        }\n+                        e_preventDefault(e);\n+                        if (ie) {\n+                            lastDrop = +new Date();\n+                        }\n+                        var pos = posFromMouse(cm, e, true),\n+                            files = e.dataTransfer.files;\n+                        if (!pos || cm.isReadOnly()) {\n+                            return;\n+                        }\n+                        // Might be a file drop, in which case we simply extract the text\n+                        // and insert it.\n+                        if (files && files.length && window.FileReader && window.File) {\n+                            var n = files.length,\n+                                text = Array(n),\n+                                read = 0;\n+                            var markAsReadAndPasteIfAllFilesAreRead = function() {\n+                                if (++read == n) {\n+                                    operation(cm, function() {\n+                                        pos = clipPos(cm.doc, pos);\n+                                        var change = {\n+                                            from: pos,\n+                                            to: pos,\n+                                            text: cm.doc.splitLines(text.filter(function(t) {\n+                                                return t != null;\n+                                            }).join(cm.doc.lineSeparator())),\n+                                            origin: \"paste\"\n+                                        };\n+                                        makeChange(cm.doc, change);\n+                                        setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n+                                    })();\n+                                }\n+                            };\n+                            var readTextFromFile = function(file, i) {\n+                                if (cm.options.allowDropFileTypes && indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n+                                    markAsReadAndPasteIfAllFilesAreRead();\n+                                    return;\n+                                }\n+                                var reader = new FileReader();\n+                                reader.onerror = function() {\n+                                    return markAsReadAndPasteIfAllFilesAreRead();\n+                                };\n+                                reader.onload = function() {\n+                                    var content = reader.result;\n+                                    if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n+                                        markAsReadAndPasteIfAllFilesAreRead();\n+                                        return;\n+                                    }\n+                                    text[i] = content;\n+                                    markAsReadAndPasteIfAllFilesAreRead();\n+                                };\n+                                reader.readAsText(file);\n+                            };\n+                            for (var i = 0; i < files.length; i++) {\n+                                readTextFromFile(files[i], i);\n+                            }\n+                        } else {\n+                            // Normal drop\n+                            // Don't do a replace if the drop happened inside of the selected text.\n+                            if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n+                                cm.state.draggingText(e);\n+                                // Ensure the editor is re-focused\n+                                setTimeout(function() {\n+                                    return cm.display.input.focus();\n+                                }, 20);\n+                                return;\n+                            }\n+                            try {\n+                                var text$1 = e.dataTransfer.getData(\"Text\");\n+                                if (text$1) {\n+                                    var selected;\n+                                    if (cm.state.draggingText && !cm.state.draggingText.copy) {\n+                                        selected = cm.listSelections();\n+                                    }\n+                                    setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n+                                    if (selected) {\n+                                        for (var i$1 = 0; i$1 < selected.length; ++i$1) {\n+                                            replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\");\n+                                        }\n+                                    }\n+                                    cm.replaceSelection(text$1, \"around\", \"paste\");\n+                                    cm.display.input.focus();\n+                                }\n+                            } catch (e$1) {}\n+                        }\n+                    }\n+\n+                    function onDragStart(cm, e) {\n+                        if (ie && (!cm.state.draggingText || +new Date() - lastDrop < 100)) {\n+                            e_stop(e);\n+                            return;\n+                        }\n+                        if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n+                            return;\n+                        }\n+                        e.dataTransfer.setData(\"Text\", cm.getSelection());\n+                        e.dataTransfer.effectAllowed = \"copyMove\";\n+\n+                        // Use dummy image instead of default browsers image.\n+                        // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n+                        if (e.dataTransfer.setDragImage && !safari) {\n+                            var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n+                            img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n+                            if (presto) {\n+                                img.width = img.height = 1;\n+                                cm.display.wrapper.appendChild(img);\n+                                // Force a relayout, or Opera won't use our image for some obscure reason\n+                                img._top = img.offsetTop;\n+                            }\n+                            e.dataTransfer.setDragImage(img, 0, 0);\n+                            if (presto) {\n+                                img.parentNode.removeChild(img);\n+                            }\n+                        }\n+                    }\n+\n+                    function onDragOver(cm, e) {\n+                        var pos = posFromMouse(cm, e);\n+                        if (!pos) {\n+                            return;\n+                        }\n+                        var frag = document.createDocumentFragment();\n+                        drawSelectionCursor(cm, pos, frag);\n+                        if (!cm.display.dragCursor) {\n+                            cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n+                            cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n+                        }\n+                        removeChildrenAndAdd(cm.display.dragCursor, frag);\n+                    }\n+\n+                    function clearDragCursor(cm) {\n+                        if (cm.display.dragCursor) {\n+                            cm.display.lineSpace.removeChild(cm.display.dragCursor);\n+                            cm.display.dragCursor = null;\n+                        }\n+                    }\n+\n+                    // These must be handled carefully, because naively registering a\n+                    // handler for each editor will cause the editors to never be\n+                    // garbage collected.\n+\n+                    function forEachCodeMirror(f) {\n+                        if (!document.getElementsByClassName) {\n+                            return;\n+                        }\n+                        var byClass = document.getElementsByClassName(\"CodeMirror\"),\n+                            editors = [];\n+                        for (var i = 0; i < byClass.length; i++) {\n+                            var cm = byClass[i].CodeMirror;\n+                            if (cm) {\n+                                editors.push(cm);\n+                            }\n+                        }\n+                        if (editors.length) {\n+                            editors[0].operation(function() {\n+                                for (var i = 0; i < editors.length; i++) {\n+                                    f(editors[i]);\n+                                }\n+                            });\n+                        }\n+                    }\n+                    var globalsRegistered = false;\n+\n+                    function ensureGlobalHandlers() {\n+                        if (globalsRegistered) {\n+                            return;\n+                        }\n+                        registerGlobalHandlers();\n+                        globalsRegistered = true;\n+                    }\n+\n+                    function registerGlobalHandlers() {\n+                        // When the window resizes, we need to refresh active editors.\n+                        var resizeTimer;\n+                        on(window, \"resize\", function() {\n+                            if (resizeTimer == null) {\n+                                resizeTimer = setTimeout(function() {\n+                                    resizeTimer = null;\n+                                    forEachCodeMirror(onResize);\n+                                }, 100);\n+                            }\n+                        });\n+                        // When the window loses focus, we want to show the editor as blurred\n+                        on(window, \"blur\", function() {\n+                            return forEachCodeMirror(onBlur);\n+                        });\n+                    }\n+                    // Called when the window resizes\n+                    function onResize(cm) {\n+                        var d = cm.display;\n+                        // Might be a text scaling operation, clear size caches.\n+                        d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n+                        d.scrollbarsClipped = false;\n+                        cm.setSize();\n+                    }\n+                    var keyNames = {\n+                        3: \"Pause\",\n+                        8: \"Backspace\",\n+                        9: \"Tab\",\n+                        13: \"Enter\",\n+                        16: \"Shift\",\n+                        17: \"Ctrl\",\n+                        18: \"Alt\",\n+                        19: \"Pause\",\n+                        20: \"CapsLock\",\n+                        27: \"Esc\",\n+                        32: \"Space\",\n+                        33: \"PageUp\",\n+                        34: \"PageDown\",\n+                        35: \"End\",\n+                        36: \"Home\",\n+                        37: \"Left\",\n+                        38: \"Up\",\n+                        39: \"Right\",\n+                        40: \"Down\",\n+                        44: \"PrintScrn\",\n+                        45: \"Insert\",\n+                        46: \"Delete\",\n+                        59: \";\",\n+                        61: \"=\",\n+                        91: \"Mod\",\n+                        92: \"Mod\",\n+                        93: \"Mod\",\n+                        106: \"*\",\n+                        107: \"=\",\n+                        109: \"-\",\n+                        110: \".\",\n+                        111: \"/\",\n+                        145: \"ScrollLock\",\n+                        173: \"-\",\n+                        186: \";\",\n+                        187: \"=\",\n+                        188: \",\",\n+                        189: \"-\",\n+                        190: \".\",\n+                        191: \"/\",\n+                        192: \"`\",\n+                        219: \"[\",\n+                        220: \"\\\\\",\n+                        221: \"]\",\n+                        222: \"'\",\n+                        224: \"Mod\",\n+                        63232: \"Up\",\n+                        63233: \"Down\",\n+                        63234: \"Left\",\n+                        63235: \"Right\",\n+                        63272: \"Delete\",\n+                        63273: \"Home\",\n+                        63275: \"End\",\n+                        63276: \"PageUp\",\n+                        63277: \"PageDown\",\n+                        63302: \"Insert\"\n+                    };\n+\n+                    // Number keys\n+                    for (var i = 0; i < 10; i++) {\n+                        keyNames[i + 48] = keyNames[i + 96] = String(i);\n+                    }\n+                    // Alphabetic keys\n+                    for (var i$1 = 65; i$1 <= 90; i$1++) {\n+                        keyNames[i$1] = String.fromCharCode(i$1);\n+                    }\n+                    // Function keys\n+                    for (var i$2 = 1; i$2 <= 12; i$2++) {\n+                        keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2;\n+                    }\n+                    var keyMap = {};\n+                    keyMap.basic = {\n+                        \"Left\": \"goCharLeft\",\n+                        \"Right\": \"goCharRight\",\n+                        \"Up\": \"goLineUp\",\n+                        \"Down\": \"goLineDown\",\n+                        \"End\": \"goLineEnd\",\n+                        \"Home\": \"goLineStartSmart\",\n+                        \"PageUp\": \"goPageUp\",\n+                        \"PageDown\": \"goPageDown\",\n+                        \"Delete\": \"delCharAfter\",\n+                        \"Backspace\": \"delCharBefore\",\n+                        \"Shift-Backspace\": \"delCharBefore\",\n+                        \"Tab\": \"defaultTab\",\n+                        \"Shift-Tab\": \"indentAuto\",\n+                        \"Enter\": \"newlineAndIndent\",\n+                        \"Insert\": \"toggleOverwrite\",\n+                        \"Esc\": \"singleSelection\"\n+                    };\n+                    // Note that the save and find-related commands aren't defined by\n+                    // default. User code or addons can define them. Unknown commands\n+                    // are simply ignored.\n+                    keyMap.pcDefault = {\n+                        \"Ctrl-A\": \"selectAll\",\n+                        \"Ctrl-D\": \"deleteLine\",\n+                        \"Ctrl-Z\": \"undo\",\n+                        \"Shift-Ctrl-Z\": \"redo\",\n+                        \"Ctrl-Y\": \"redo\",\n+                        \"Ctrl-Home\": \"goDocStart\",\n+                        \"Ctrl-End\": \"goDocEnd\",\n+                        \"Ctrl-Up\": \"goLineUp\",\n+                        \"Ctrl-Down\": \"goLineDown\",\n+                        \"Ctrl-Left\": \"goGroupLeft\",\n+                        \"Ctrl-Right\": \"goGroupRight\",\n+                        \"Alt-Left\": \"goLineStart\",\n+                        \"Alt-Right\": \"goLineEnd\",\n+                        \"Ctrl-Backspace\": \"delGroupBefore\",\n+                        \"Ctrl-Delete\": \"delGroupAfter\",\n+                        \"Ctrl-S\": \"save\",\n+                        \"Ctrl-F\": \"find\",\n+                        \"Ctrl-G\": \"findNext\",\n+                        \"Shift-Ctrl-G\": \"findPrev\",\n+                        \"Shift-Ctrl-F\": \"replace\",\n+                        \"Shift-Ctrl-R\": \"replaceAll\",\n+                        \"Ctrl-[\": \"indentLess\",\n+                        \"Ctrl-]\": \"indentMore\",\n+                        \"Ctrl-U\": \"undoSelection\",\n+                        \"Shift-Ctrl-U\": \"redoSelection\",\n+                        \"Alt-U\": \"redoSelection\",\n+                        \"fallthrough\": \"basic\"\n+                    };\n+                    // Very basic readline/emacs-style bindings, which are standard on Mac.\n+                    keyMap.emacsy = {\n+                        \"Ctrl-F\": \"goCharRight\",\n+                        \"Ctrl-B\": \"goCharLeft\",\n+                        \"Ctrl-P\": \"goLineUp\",\n+                        \"Ctrl-N\": \"goLineDown\",\n+                        \"Ctrl-A\": \"goLineStart\",\n+                        \"Ctrl-E\": \"goLineEnd\",\n+                        \"Ctrl-V\": \"goPageDown\",\n+                        \"Shift-Ctrl-V\": \"goPageUp\",\n+                        \"Ctrl-D\": \"delCharAfter\",\n+                        \"Ctrl-H\": \"delCharBefore\",\n+                        \"Alt-Backspace\": \"delWordBefore\",\n+                        \"Ctrl-K\": \"killLine\",\n+                        \"Ctrl-T\": \"transposeChars\",\n+                        \"Ctrl-O\": \"openLine\"\n+                    };\n+                    keyMap.macDefault = {\n+                        \"Cmd-A\": \"selectAll\",\n+                        \"Cmd-D\": \"deleteLine\",\n+                        \"Cmd-Z\": \"undo\",\n+                        \"Shift-Cmd-Z\": \"redo\",\n+                        \"Cmd-Y\": \"redo\",\n+                        \"Cmd-Home\": \"goDocStart\",\n+                        \"Cmd-Up\": \"goDocStart\",\n+                        \"Cmd-End\": \"goDocEnd\",\n+                        \"Cmd-Down\": \"goDocEnd\",\n+                        \"Alt-Left\": \"goGroupLeft\",\n+                        \"Alt-Right\": \"goGroupRight\",\n+                        \"Cmd-Left\": \"goLineLeft\",\n+                        \"Cmd-Right\": \"goLineRight\",\n+                        \"Alt-Backspace\": \"delGroupBefore\",\n+                        \"Ctrl-Alt-Backspace\": \"delGroupAfter\",\n+                        \"Alt-Delete\": \"delGroupAfter\",\n+                        \"Cmd-S\": \"save\",\n+                        \"Cmd-F\": \"find\",\n+                        \"Cmd-G\": \"findNext\",\n+                        \"Shift-Cmd-G\": \"findPrev\",\n+                        \"Cmd-Alt-F\": \"replace\",\n+                        \"Shift-Cmd-Alt-F\": \"replaceAll\",\n+                        \"Cmd-[\": \"indentLess\",\n+                        \"Cmd-]\": \"indentMore\",\n+                        \"Cmd-Backspace\": \"delWrappedLineLeft\",\n+                        \"Cmd-Delete\": \"delWrappedLineRight\",\n+                        \"Cmd-U\": \"undoSelection\",\n+                        \"Shift-Cmd-U\": \"redoSelection\",\n+                        \"Ctrl-Up\": \"goDocStart\",\n+                        \"Ctrl-Down\": \"goDocEnd\",\n+                        \"fallthrough\": [\"basic\", \"emacsy\"]\n+                    };\n+                    keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n+\n+                    // KEYMAP DISPATCH\n+\n+                    function normalizeKeyName(name) {\n+                        var parts = name.split(/-(?!$)/);\n+                        name = parts[parts.length - 1];\n+                        var alt, ctrl, shift, cmd;\n+                        for (var i = 0; i < parts.length - 1; i++) {\n+                            var mod = parts[i];\n+                            if (/^(cmd|meta|m)$/i.test(mod)) {\n+                                cmd = true;\n+                            } else if (/^a(lt)?$/i.test(mod)) {\n+                                alt = true;\n+                            } else if (/^(c|ctrl|control)$/i.test(mod)) {\n+                                ctrl = true;\n+                            } else if (/^s(hift)?$/i.test(mod)) {\n+                                shift = true;\n+                            } else {\n+                                throw new Error(\"Unrecognized modifier name: \" + mod);\n+                            }\n+                        }\n+                        if (alt) {\n+                            name = \"Alt-\" + name;\n+                        }\n+                        if (ctrl) {\n+                            name = \"Ctrl-\" + name;\n+                        }\n+                        if (cmd) {\n+                            name = \"Cmd-\" + name;\n+                        }\n+                        if (shift) {\n+                            name = \"Shift-\" + name;\n+                        }\n+                        return name;\n+                    }\n+\n+                    // This is a kludge to keep keymaps mostly working as raw objects\n+                    // (backwards compatibility) while at the same time support features\n+                    // like normalization and multi-stroke key bindings. It compiles a\n+                    // new normalized keymap, and then updates the old object to reflect\n+                    // this.\n+                    function normalizeKeyMap(keymap) {\n+                        var copy = {};\n+                        for (var keyname in keymap) {\n+                            if (keymap.hasOwnProperty(keyname)) {\n+                                var value = keymap[keyname];\n+                                if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) {\n+                                    continue;\n+                                }\n+                                if (value == \"...\") {\n+                                    delete keymap[keyname];\n+                                    continue;\n+                                }\n+                                var keys = map(keyname.split(\" \"), normalizeKeyName);\n+                                for (var i = 0; i < keys.length; i++) {\n+                                    var val = void 0,\n+                                        name = void 0;\n+                                    if (i == keys.length - 1) {\n+                                        name = keys.join(\" \");\n+                                        val = value;\n+                                    } else {\n+                                        name = keys.slice(0, i + 1).join(\" \");\n+                                        val = \"...\";\n+                                    }\n+                                    var prev = copy[name];\n+                                    if (!prev) {\n+                                        copy[name] = val;\n+                                    } else if (prev != val) {\n+                                        throw new Error(\"Inconsistent bindings for \" + name);\n+                                    }\n+                                }\n+                                delete keymap[keyname];\n+                            }\n+                        }\n+                        for (var prop in copy) {\n+                            keymap[prop] = copy[prop];\n+                        }\n+                        return keymap;\n+                    }\n+\n+                    function lookupKey(key, map, handle, context) {\n+                        map = getKeyMap(map);\n+                        var found = map.call ? map.call(key, context) : map[key];\n+                        if (found === false) {\n+                            return \"nothing\";\n+                        }\n+                        if (found === \"...\") {\n+                            return \"multi\";\n+                        }\n+                        if (found != null && handle(found)) {\n+                            return \"handled\";\n+                        }\n+                        if (map.fallthrough) {\n+                            if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\") {\n+                                return lookupKey(key, map.fallthrough, handle, context);\n+                            }\n+                            for (var i = 0; i < map.fallthrough.length; i++) {\n+                                var result = lookupKey(key, map.fallthrough[i], handle, context);\n+                                if (result) {\n+                                    return result;\n+                                }\n+                            }\n+                        }\n+                    }\n+\n+                    // Modifier key presses don't count as 'real' key presses for the\n+                    // purpose of keymap fallthrough.\n+                    function isModifierKey(value) {\n+                        var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n+                        return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\";\n+                    }\n+\n+                    function addModifierNames(name, event, noShift) {\n+                        var base = name;\n+                        if (event.altKey && base != \"Alt\") {\n+                            name = \"Alt-\" + name;\n+                        }\n+                        if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") {\n+                            name = \"Ctrl-\" + name;\n+                        }\n+                        if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") {\n+                            name = \"Cmd-\" + name;\n+                        }\n+                        if (!noShift && event.shiftKey && base != \"Shift\") {\n+                            name = \"Shift-\" + name;\n+                        }\n+                        return name;\n+                    }\n+\n+                    // Look up the name of a key as indicated by an event object.\n+                    function keyName(event, noShift) {\n+                        if (presto && event.keyCode == 34 && event[\"char\"]) {\n+                            return false;\n+                        }\n+                        var name = keyNames[event.keyCode];\n+                        if (name == null || event.altGraphKey) {\n+                            return false;\n+                        }\n+                        // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n+                        // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n+                        if (event.keyCode == 3 && event.code) {\n+                            name = event.code;\n+                        }\n+                        return addModifierNames(name, event, noShift);\n+                    }\n+\n+                    function getKeyMap(val) {\n+                        return typeof val == \"string\" ? keyMap[val] : val;\n+                    }\n+\n+                    // Helper for deleting text near the selection(s), used to implement\n+                    // backspace, delete, and similar functionality.\n+                    function deleteNearSelection(cm, compute) {\n+                        var ranges = cm.doc.sel.ranges,\n+                            kill = [];\n+                        // Build up a set of ranges to kill first, merging overlapping\n+                        // ranges.\n+                        for (var i = 0; i < ranges.length; i++) {\n+                            var toKill = compute(ranges[i]);\n+                            while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n+                                var replaced = kill.pop();\n+                                if (cmp(replaced.from, toKill.from) < 0) {\n+                                    toKill.from = replaced.from;\n+                                    break;\n+                                }\n+                            }\n+                            kill.push(toKill);\n+                        }\n+                        // Next, remove those actual ranges.\n+                        runInOp(cm, function() {\n+                            for (var i = kill.length - 1; i >= 0; i--) {\n+                                replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\");\n+                            }\n+                            ensureCursorVisible(cm);\n+                        });\n+                    }\n+\n+                    function moveCharLogically(line, ch, dir) {\n+                        var target = skipExtendingChars(line.text, ch + dir, dir);\n+                        return target < 0 || target > line.text.length ? null : target;\n+                    }\n+\n+                    function moveLogically(line, start, dir) {\n+                        var ch = moveCharLogically(line, start.ch, dir);\n+                        return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\");\n+                    }\n+\n+                    function endOfLine(visually, cm, lineObj, lineNo, dir) {\n+                        if (visually) {\n+                            if (cm.doc.direction == \"rtl\") {\n+                                dir = -dir;\n+                            }\n+                            var order = getOrder(lineObj, cm.doc.direction);\n+                            if (order) {\n+                                var part = dir < 0 ? lst(order) : order[0];\n+                                var moveInStorageOrder = dir < 0 == (part.level == 1);\n+                                var sticky = moveInStorageOrder ? \"after\" : \"before\";\n+                                var ch;\n+                                // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n+                                // it could be that the last bidi part is not on the last visual line,\n+                                // since visual lines contain content order-consecutive chunks.\n+                                // Thus, in rtl, we are looking for the first (content-order) character\n+                                // in the rtl chunk that is on the last line (that is, the same line\n+                                // as the last (content-order) character).\n+                                if (part.level > 0 || cm.doc.direction == \"rtl\") {\n+                                    var prep = prepareMeasureForLine(cm, lineObj);\n+                                    ch = dir < 0 ? lineObj.text.length - 1 : 0;\n+                                    var targetTop = measureCharPrepared(cm, prep, ch).top;\n+                                    ch = findFirst(function(ch) {\n+                                        return measureCharPrepared(cm, prep, ch).top == targetTop;\n+                                    }, dir < 0 == (part.level == 1) ? part.from : part.to - 1, ch);\n+                                    if (sticky == \"before\") {\n+                                        ch = moveCharLogically(lineObj, ch, 1);\n+                                    }\n+                                } else {\n+                                    ch = dir < 0 ? part.to : part.from;\n+                                }\n+                                return new Pos(lineNo, ch, sticky);\n+                            }\n+                        }\n+                        return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\");\n+                    }\n+\n+                    function moveVisually(cm, line, start, dir) {\n+                        var bidi = getOrder(line, cm.doc.direction);\n+                        if (!bidi) {\n+                            return moveLogically(line, start, dir);\n+                        }\n+                        if (start.ch >= line.text.length) {\n+                            start.ch = line.text.length;\n+                            start.sticky = \"before\";\n+                        } else if (start.ch <= 0) {\n+                            start.ch = 0;\n+                            start.sticky = \"after\";\n+                        }\n+                        var partPos = getBidiPartAt(bidi, start.ch, start.sticky),\n+                            part = bidi[partPos];\n+                        if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n+                            // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n+                            // nothing interesting happens.\n+                            return moveLogically(line, start, dir);\n+                        }\n+                        var mv = function(pos, dir) {\n+                            return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir);\n+                        };\n+                        var prep;\n+                        var getWrappedLineExtent = function(ch) {\n+                            if (!cm.options.lineWrapping) {\n+                                return {\n+                                    begin: 0,\n+                                    end: line.text.length\n+                                };\n+                            }\n+                            prep = prep || prepareMeasureForLine(cm, line);\n+                            return wrappedLineExtentChar(cm, line, prep, ch);\n+                        };\n+                        var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n+                        if (cm.doc.direction == \"rtl\" || part.level == 1) {\n+                            var moveInStorageOrder = part.level == 1 == dir < 0;\n+                            var ch = mv(start, moveInStorageOrder ? 1 : -1);\n+                            if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n+                                // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n+                                var sticky = moveInStorageOrder ? \"before\" : \"after\";\n+                                return new Pos(start.line, ch, sticky);\n+                            }\n+                        }\n+\n+                        // Case 3: Could not move within this bidi part in this visual line, so leave\n+                        // the current bidi part\n+\n+                        var searchInVisualLine = function(partPos, dir, wrappedLineExtent) {\n+                            var getRes = function(ch, moveInStorageOrder) {\n+                                return moveInStorageOrder ? new Pos(start.line, mv(ch, 1), \"before\") : new Pos(start.line, ch, \"after\");\n+                            };\n+                            for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n+                                var part = bidi[partPos];\n+                                var moveInStorageOrder = dir > 0 == (part.level != 1);\n+                                var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n+                                if (part.from <= ch && ch < part.to) {\n+                                    return getRes(ch, moveInStorageOrder);\n+                                }\n+                                ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n+                                if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) {\n+                                    return getRes(ch, moveInStorageOrder);\n+                                }\n+                            }\n+                        };\n+\n+                        // Case 3a: Look for other bidi parts on the same visual line\n+                        var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n+                        if (res) {\n+                            return res;\n+                        }\n+\n+                        // Case 3b: Look for other bidi parts on the next visual line\n+                        var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n+                        if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n+                            res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n+                            if (res) {\n+                                return res;\n+                            }\n+                        }\n+\n+                        // Case 4: Nowhere to move\n+                        return null;\n+                    }\n+\n+                    // Commands are parameter-less actions that can be performed on an\n+                    // editor, mostly used for keybindings.\n+                    var commands = {\n+                        selectAll: selectAll,\n+                        singleSelection: function(cm) {\n+                            return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll);\n+                        },\n+                        killLine: function(cm) {\n+                            return deleteNearSelection(cm, function(range) {\n+                                if (range.empty()) {\n+                                    var len = getLine(cm.doc, range.head.line).text.length;\n+                                    if (range.head.ch == len && range.head.line < cm.lastLine()) {\n+                                        return {\n+                                            from: range.head,\n+                                            to: Pos(range.head.line + 1, 0)\n+                                        };\n+                                    } else {\n+                                        return {\n+                                            from: range.head,\n+                                            to: Pos(range.head.line, len)\n+                                        };\n+                                    }\n+                                } else {\n+                                    return {\n+                                        from: range.from(),\n+                                        to: range.to()\n+                                    };\n+                                }\n+                            });\n+                        },\n+                        deleteLine: function(cm) {\n+                            return deleteNearSelection(cm, function(range) {\n+                                return {\n+                                    from: Pos(range.from().line, 0),\n+                                    to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n+                                };\n+                            });\n+                        },\n+                        delLineLeft: function(cm) {\n+                            return deleteNearSelection(cm, function(range) {\n+                                return {\n+                                    from: Pos(range.from().line, 0),\n+                                    to: range.from()\n+                                };\n+                            });\n+                        },\n+                        delWrappedLineLeft: function(cm) {\n+                            return deleteNearSelection(cm, function(range) {\n+                                var top = cm.charCoords(range.head, \"div\").top + 5;\n+                                var leftPos = cm.coordsChar({\n+                                    left: 0,\n+                                    top: top\n+                                }, \"div\");\n+                                return {\n+                                    from: leftPos,\n+                                    to: range.from()\n+                                };\n+                            });\n+                        },\n+                        delWrappedLineRight: function(cm) {\n+                            return deleteNearSelection(cm, function(range) {\n+                                var top = cm.charCoords(range.head, \"div\").top + 5;\n+                                var rightPos = cm.coordsChar({\n+                                    left: cm.display.lineDiv.offsetWidth + 100,\n+                                    top: top\n+                                }, \"div\");\n+                                return {\n+                                    from: range.from(),\n+                                    to: rightPos\n+                                };\n+                            });\n+                        },\n+                        undo: function(cm) {\n+                            return cm.undo();\n+                        },\n+                        redo: function(cm) {\n+                            return cm.redo();\n+                        },\n+                        undoSelection: function(cm) {\n+                            return cm.undoSelection();\n+                        },\n+                        redoSelection: function(cm) {\n+                            return cm.redoSelection();\n+                        },\n+                        goDocStart: function(cm) {\n+                            return cm.extendSelection(Pos(cm.firstLine(), 0));\n+                        },\n+                        goDocEnd: function(cm) {\n+                            return cm.extendSelection(Pos(cm.lastLine()));\n+                        },\n+                        goLineStart: function(cm) {\n+                            return cm.extendSelectionsBy(function(range) {\n+                                return lineStart(cm, range.head.line);\n+                            }, {\n+                                origin: \"+move\",\n+                                bias: 1\n+                            });\n+                        },\n+                        goLineStartSmart: function(cm) {\n+                            return cm.extendSelectionsBy(function(range) {\n+                                return lineStartSmart(cm, range.head);\n+                            }, {\n+                                origin: \"+move\",\n+                                bias: 1\n+                            });\n+                        },\n+                        goLineEnd: function(cm) {\n+                            return cm.extendSelectionsBy(function(range) {\n+                                return lineEnd(cm, range.head.line);\n+                            }, {\n+                                origin: \"+move\",\n+                                bias: -1\n+                            });\n+                        },\n+                        goLineRight: function(cm) {\n+                            return cm.extendSelectionsBy(function(range) {\n+                                var top = cm.cursorCoords(range.head, \"div\").top + 5;\n+                                return cm.coordsChar({\n+                                    left: cm.display.lineDiv.offsetWidth + 100,\n+                                    top: top\n+                                }, \"div\");\n+                            }, sel_move);\n+                        },\n+                        goLineLeft: function(cm) {\n+                            return cm.extendSelectionsBy(function(range) {\n+                                var top = cm.cursorCoords(range.head, \"div\").top + 5;\n+                                return cm.coordsChar({\n+                                    left: 0,\n+                                    top: top\n+                                }, \"div\");\n+                            }, sel_move);\n+                        },\n+                        goLineLeftSmart: function(cm) {\n+                            return cm.extendSelectionsBy(function(range) {\n+                                var top = cm.cursorCoords(range.head, \"div\").top + 5;\n+                                var pos = cm.coordsChar({\n+                                    left: 0,\n+                                    top: top\n+                                }, \"div\");\n+                                if (pos.ch < cm.getLine(pos.line).search(/\\S/)) {\n+                                    return lineStartSmart(cm, range.head);\n+                                }\n+                                return pos;\n+                            }, sel_move);\n+                        },\n+                        goLineUp: function(cm) {\n+                            return cm.moveV(-1, \"line\");\n+                        },\n+                        goLineDown: function(cm) {\n+                            return cm.moveV(1, \"line\");\n+                        },\n+                        goPageUp: function(cm) {\n+                            return cm.moveV(-1, \"page\");\n+                        },\n+                        goPageDown: function(cm) {\n+                            return cm.moveV(1, \"page\");\n+                        },\n+                        goCharLeft: function(cm) {\n+                            return cm.moveH(-1, \"char\");\n+                        },\n+                        goCharRight: function(cm) {\n+                            return cm.moveH(1, \"char\");\n+                        },\n+                        goColumnLeft: function(cm) {\n+                            return cm.moveH(-1, \"column\");\n+                        },\n+                        goColumnRight: function(cm) {\n+                            return cm.moveH(1, \"column\");\n+                        },\n+                        goWordLeft: function(cm) {\n+                            return cm.moveH(-1, \"word\");\n+                        },\n+                        goGroupRight: function(cm) {\n+                            return cm.moveH(1, \"group\");\n+                        },\n+                        goGroupLeft: function(cm) {\n+                            return cm.moveH(-1, \"group\");\n+                        },\n+                        goWordRight: function(cm) {\n+                            return cm.moveH(1, \"word\");\n+                        },\n+                        delCharBefore: function(cm) {\n+                            return cm.deleteH(-1, \"codepoint\");\n+                        },\n+                        delCharAfter: function(cm) {\n+                            return cm.deleteH(1, \"char\");\n+                        },\n+                        delWordBefore: function(cm) {\n+                            return cm.deleteH(-1, \"word\");\n+                        },\n+                        delWordAfter: function(cm) {\n+                            return cm.deleteH(1, \"word\");\n+                        },\n+                        delGroupBefore: function(cm) {\n+                            return cm.deleteH(-1, \"group\");\n+                        },\n+                        delGroupAfter: function(cm) {\n+                            return cm.deleteH(1, \"group\");\n+                        },\n+                        indentAuto: function(cm) {\n+                            return cm.indentSelection(\"smart\");\n+                        },\n+                        indentMore: function(cm) {\n+                            return cm.indentSelection(\"add\");\n+                        },\n+                        indentLess: function(cm) {\n+                            return cm.indentSelection(\"subtract\");\n+                        },\n+                        insertTab: function(cm) {\n+                            return cm.replaceSelection(\"\\t\");\n+                        },\n+                        insertSoftTab: function(cm) {\n+                            var spaces = [],\n+                                ranges = cm.listSelections(),\n+                                tabSize = cm.options.tabSize;\n+                            for (var i = 0; i < ranges.length; i++) {\n+                                var pos = ranges[i].from();\n+                                var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n+                                spaces.push(spaceStr(tabSize - col % tabSize));\n+                            }\n+                            cm.replaceSelections(spaces);\n+                        },\n+                        defaultTab: function(cm) {\n+                            if (cm.somethingSelected()) {\n+                                cm.indentSelection(\"add\");\n+                            } else {\n+                                cm.execCommand(\"insertTab\");\n+                            }\n+                        },\n+                        // Swap the two chars left and right of each selection's head.\n+                        // Move cursor behind the two swapped characters afterwards.\n+                        //\n+                        // Doesn't consider line feeds a character.\n+                        // Doesn't scan more than one line above to find a character.\n+                        // Doesn't do anything on an empty line.\n+                        // Doesn't do anything with non-empty selections.\n+                        transposeChars: function(cm) {\n+                            return runInOp(cm, function() {\n+                                var ranges = cm.listSelections(),\n+                                    newSel = [];\n+                                for (var i = 0; i < ranges.length; i++) {\n+                                    if (!ranges[i].empty()) {\n+                                        continue;\n+                                    }\n+                                    var cur = ranges[i].head,\n+                                        line = getLine(cm.doc, cur.line).text;\n+                                    if (line) {\n+                                        if (cur.ch == line.length) {\n+                                            cur = new Pos(cur.line, cur.ch - 1);\n+                                        }\n+                                        if (cur.ch > 0) {\n+                                            cur = new Pos(cur.line, cur.ch + 1);\n+                                            cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n+                                        } else if (cur.line > cm.doc.first) {\n+                                            var prev = getLine(cm.doc, cur.line - 1).text;\n+                                            if (prev) {\n+                                                cur = new Pos(cur.line, 1);\n+                                                cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + prev.charAt(prev.length - 1), Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n+                                            }\n+                                        }\n+                                    }\n+                                    newSel.push(new Range(cur, cur));\n+                                }\n+                                cm.setSelections(newSel);\n+                            });\n+                        },\n+                        newlineAndIndent: function(cm) {\n+                            return runInOp(cm, function() {\n+                                var sels = cm.listSelections();\n+                                for (var i = sels.length - 1; i >= 0; i--) {\n+                                    cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\");\n+                                }\n+                                sels = cm.listSelections();\n+                                for (var i$1 = 0; i$1 < sels.length; i$1++) {\n+                                    cm.indentLine(sels[i$1].from().line, null, true);\n+                                }\n+                                ensureCursorVisible(cm);\n+                            });\n+                        },\n+                        openLine: function(cm) {\n+                            return cm.replaceSelection(\"\\n\", \"start\");\n+                        },\n+                        toggleOverwrite: function(cm) {\n+                            return cm.toggleOverwrite();\n+                        }\n+                    };\n+\n+                    function lineStart(cm, lineN) {\n+                        var line = getLine(cm.doc, lineN);\n+                        var visual = visualLine(line);\n+                        if (visual != line) {\n+                            lineN = lineNo(visual);\n+                        }\n+                        return endOfLine(true, cm, visual, lineN, 1);\n+                    }\n+\n+                    function lineEnd(cm, lineN) {\n+                        var line = getLine(cm.doc, lineN);\n+                        var visual = visualLineEnd(line);\n+                        if (visual != line) {\n+                            lineN = lineNo(visual);\n+                        }\n+                        return endOfLine(true, cm, line, lineN, -1);\n+                    }\n+\n+                    function lineStartSmart(cm, pos) {\n+                        var start = lineStart(cm, pos.line);\n+                        var line = getLine(cm.doc, start.line);\n+                        var order = getOrder(line, cm.doc.direction);\n+                        if (!order || order[0].level == 0) {\n+                            var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n+                            var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n+                            return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky);\n+                        }\n+                        return start;\n+                    }\n+\n+                    // Run a handler that was bound to a key.\n+                    function doHandleBinding(cm, bound, dropShift) {\n+                        if (typeof bound == \"string\") {\n+                            bound = commands[bound];\n+                            if (!bound) {\n+                                return false;\n+                            }\n+                        }\n+                        // Ensure previous input has been read, so that the handler sees a\n+                        // consistent view of the document\n+                        cm.display.input.ensurePolled();\n+                        var prevShift = cm.display.shift,\n+                            done = false;\n+                        try {\n+                            if (cm.isReadOnly()) {\n+                                cm.state.suppressEdits = true;\n+                            }\n+                            if (dropShift) {\n+                                cm.display.shift = false;\n+                            }\n+                            done = bound(cm) != Pass;\n+                        } finally {\n+                            cm.display.shift = prevShift;\n+                            cm.state.suppressEdits = false;\n+                        }\n+                        return done;\n+                    }\n+\n+                    function lookupKeyForEditor(cm, name, handle) {\n+                        for (var i = 0; i < cm.state.keyMaps.length; i++) {\n+                            var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n+                            if (result) {\n+                                return result;\n+                            }\n+                        }\n+                        return cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm) || lookupKey(name, cm.options.keyMap, handle, cm);\n+                    }\n+\n+                    // Note that, despite the name, this function is also used to check\n+                    // for bound mouse clicks.\n+\n+                    var stopSeq = new Delayed();\n+\n+                    function dispatchKey(cm, name, e, handle) {\n+                        var seq = cm.state.keySeq;\n+                        if (seq) {\n+                            if (isModifierKey(name)) {\n+                                return \"handled\";\n+                            }\n+                            if (/\\'$/.test(name)) {\n+                                cm.state.keySeq = null;\n+                            } else {\n+                                stopSeq.set(50, function() {\n+                                    if (cm.state.keySeq == seq) {\n+                                        cm.state.keySeq = null;\n+                                        cm.display.input.reset();\n+                                    }\n+                                });\n+                            }\n+                            if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) {\n+                                return true;\n+                            }\n+                        }\n+                        return dispatchKeyInner(cm, name, e, handle);\n+                    }\n+\n+                    function dispatchKeyInner(cm, name, e, handle) {\n+                        var result = lookupKeyForEditor(cm, name, handle);\n+                        if (result == \"multi\") {\n+                            cm.state.keySeq = name;\n+                        }\n+                        if (result == \"handled\") {\n+                            signalLater(cm, \"keyHandled\", cm, name, e);\n+                        }\n+                        if (result == \"handled\" || result == \"multi\") {\n+                            e_preventDefault(e);\n+                            restartBlink(cm);\n+                        }\n+                        return !!result;\n+                    }\n+\n+                    // Handle a key from the keydown event.\n+                    function handleKeyBinding(cm, e) {\n+                        var name = keyName(e, true);\n+                        if (!name) {\n+                            return false;\n+                        }\n+                        if (e.shiftKey && !cm.state.keySeq) {\n+                            // First try to resolve full name (including 'Shift-'). Failing\n+                            // that, see if there is a cursor-motion command (starting with\n+                            // 'go') bound to the keyname without 'Shift-'.\n+                            return dispatchKey(cm, \"Shift-\" + name, e, function(b) {\n+                                return doHandleBinding(cm, b, true);\n+                            }) || dispatchKey(cm, name, e, function(b) {\n+                                if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion) {\n+                                    return doHandleBinding(cm, b);\n+                                }\n+                            });\n+                        } else {\n+                            return dispatchKey(cm, name, e, function(b) {\n+                                return doHandleBinding(cm, b);\n+                            });\n+                        }\n+                    }\n+\n+                    // Handle a key from the keypress event\n+                    function handleCharBinding(cm, e, ch) {\n+                        return dispatchKey(cm, \"'\" + ch + \"'\", e, function(b) {\n+                            return doHandleBinding(cm, b, true);\n+                        });\n+                    }\n+                    var lastStoppedKey = null;\n+\n+                    function onKeyDown(e) {\n+                        var cm = this;\n+                        if (e.target && e.target != cm.display.input.getField()) {\n+                            return;\n+                        }\n+                        cm.curOp.focus = activeElt();\n+                        if (signalDOMEvent(cm, e)) {\n+                            return;\n+                        }\n+                        // IE does strange things with escape.\n+                        if (ie && ie_version < 11 && e.keyCode == 27) {\n+                            e.returnValue = false;\n+                        }\n+                        var code = e.keyCode;\n+                        cm.display.shift = code == 16 || e.shiftKey;\n+                        var handled = handleKeyBinding(cm, e);\n+                        if (presto) {\n+                            lastStoppedKey = handled ? code : null;\n+                            // Opera has no cut event... we try to at least catch the key combo\n+                            if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) {\n+                                cm.replaceSelection(\"\", null, \"cut\");\n+                            }\n+                        }\n+                        if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand) {\n+                            document.execCommand(\"cut\");\n+                        }\n+\n+                        // Turn mouse into crosshair when Alt is held on Mac.\n+                        if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className)) {\n+                            showCrossHair(cm);\n+                        }\n+                    }\n+\n+                    function showCrossHair(cm) {\n+                        var lineDiv = cm.display.lineDiv;\n+                        addClass(lineDiv, \"CodeMirror-crosshair\");\n+\n+                        function up(e) {\n+                            if (e.keyCode == 18 || !e.altKey) {\n+                                rmClass(lineDiv, \"CodeMirror-crosshair\");\n+                                off(document, \"keyup\", up);\n+                                off(document, \"mouseover\", up);\n+                            }\n+                        }\n+                        on(document, \"keyup\", up);\n+                        on(document, \"mouseover\", up);\n+                    }\n+\n+                    function onKeyUp(e) {\n+                        if (e.keyCode == 16) {\n+                            this.doc.sel.shift = false;\n+                        }\n+                        signalDOMEvent(this, e);\n+                    }\n+\n+                    function onKeyPress(e) {\n+                        var cm = this;\n+                        if (e.target && e.target != cm.display.input.getField()) {\n+                            return;\n+                        }\n+                        if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) {\n+                            return;\n+                        }\n+                        var keyCode = e.keyCode,\n+                            charCode = e.charCode;\n+                        if (presto && keyCode == lastStoppedKey) {\n+                            lastStoppedKey = null;\n+                            e_preventDefault(e);\n+                            return;\n+                        }\n+                        if (presto && (!e.which || e.which < 10) && handleKeyBinding(cm, e)) {\n+                            return;\n+                        }\n+                        var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n+                        // Some browsers fire keypress events for backspace\n+                        if (ch == \"\\x08\") {\n+                            return;\n+                        }\n+                        if (handleCharBinding(cm, e, ch)) {\n+                            return;\n+                        }\n+                        cm.display.input.onKeyPress(e);\n+                    }\n+                    var DOUBLECLICK_DELAY = 400;\n+                    var PastClick = function(time, pos, button) {\n+                        this.time = time;\n+                        this.pos = pos;\n+                        this.button = button;\n+                    };\n+                    PastClick.prototype.compare = function(time, pos, button) {\n+                        return this.time + DOUBLECLICK_DELAY > time && cmp(pos, this.pos) == 0 && button == this.button;\n+                    };\n+                    var lastClick, lastDoubleClick;\n+\n+                    function clickRepeat(pos, button) {\n+                        var now = +new Date();\n+                        if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n+                            lastClick = lastDoubleClick = null;\n+                            return \"triple\";\n+                        } else if (lastClick && lastClick.compare(now, pos, button)) {\n+                            lastDoubleClick = new PastClick(now, pos, button);\n+                            lastClick = null;\n+                            return \"double\";\n+                        } else {\n+                            lastClick = new PastClick(now, pos, button);\n+                            lastDoubleClick = null;\n+                            return \"single\";\n+                        }\n+                    }\n+\n+                    // A mouse down can be a single click, double click, triple click,\n+                    // start of selection drag, start of text drag, new cursor\n+                    // (ctrl-click), rectangle drag (alt-drag), or xwin\n+                    // middle-click-paste. Or it might be a click on something we should\n+                    // not interfere with, such as a scrollbar or widget.\n+                    function onMouseDown(e) {\n+                        var cm = this,\n+                            display = cm.display;\n+                        if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) {\n+                            return;\n+                        }\n+                        display.input.ensurePolled();\n+                        display.shift = e.shiftKey;\n+                        if (eventInWidget(display, e)) {\n+                            if (!webkit) {\n+                                // Briefly turn off draggability, to allow widgets to do\n+                                // normal dragging things.\n+                                display.scroller.draggable = false;\n+                                setTimeout(function() {\n+                                    return display.scroller.draggable = true;\n+                                }, 100);\n+                            }\n+                            return;\n+                        }\n+                        if (clickInGutter(cm, e)) {\n+                            return;\n+                        }\n+                        var pos = posFromMouse(cm, e),\n+                            button = e_button(e),\n+                            repeat = pos ? clickRepeat(pos, button) : \"single\";\n+                        window.focus();\n+\n+                        // #3261: make sure, that we're not starting a second selection\n+                        if (button == 1 && cm.state.selectingText) {\n+                            cm.state.selectingText(e);\n+                        }\n+                        if (pos && handleMappedButton(cm, button, pos, repeat, e)) {\n+                            return;\n+                        }\n+                        if (button == 1) {\n+                            if (pos) {\n+                                leftButtonDown(cm, pos, repeat, e);\n+                            } else if (e_target(e) == display.scroller) {\n+                                e_preventDefault(e);\n+                            }\n+                        } else if (button == 2) {\n+                            if (pos) {\n+                                extendSelection(cm.doc, pos);\n+                            }\n+                            setTimeout(function() {\n+                                return display.input.focus();\n+                            }, 20);\n+                        } else if (button == 3) {\n+                            if (captureRightClick) {\n+                                cm.display.input.onContextMenu(e);\n+                            } else {\n+                                delayBlurEvent(cm);\n+                            }\n+                        }\n+                    }\n+\n+                    function handleMappedButton(cm, button, pos, repeat, event) {\n+                        var name = \"Click\";\n+                        if (repeat == \"double\") {\n+                            name = \"Double\" + name;\n+                        } else if (repeat == \"triple\") {\n+                            name = \"Triple\" + name;\n+                        }\n+                        name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n+                        return dispatchKey(cm, addModifierNames(name, event), event, function(bound) {\n+                            if (typeof bound == \"string\") {\n+                                bound = commands[bound];\n+                            }\n+                            if (!bound) {\n+                                return false;\n+                            }\n+                            var done = false;\n+                            try {\n+                                if (cm.isReadOnly()) {\n+                                    cm.state.suppressEdits = true;\n+                                }\n+                                done = bound(cm, pos) != Pass;\n+                            } finally {\n+                                cm.state.suppressEdits = false;\n+                            }\n+                            return done;\n+                        });\n+                    }\n+\n+                    function configureMouse(cm, repeat, event) {\n+                        var option = cm.getOption(\"configureMouse\");\n+                        var value = option ? option(cm, repeat, event) : {};\n+                        if (value.unit == null) {\n+                            var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n+                            value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n+                        }\n+                        if (value.extend == null || cm.doc.extend) {\n+                            value.extend = cm.doc.extend || event.shiftKey;\n+                        }\n+                        if (value.addNew == null) {\n+                            value.addNew = mac ? event.metaKey : event.ctrlKey;\n+                        }\n+                        if (value.moveOnDrag == null) {\n+                            value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey);\n+                        }\n+                        return value;\n+                    }\n+\n+                    function leftButtonDown(cm, pos, repeat, event) {\n+                        if (ie) {\n+                            setTimeout(bind(ensureFocus, cm), 0);\n+                        } else {\n+                            cm.curOp.focus = activeElt();\n+                        }\n+                        var behavior = configureMouse(cm, repeat, event);\n+                        var sel = cm.doc.sel,\n+                            contained;\n+                        if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && repeat == \"single\" && (contained = sel.contains(pos)) > -1 && (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) {\n+                            leftButtonStartDrag(cm, event, pos, behavior);\n+                        } else {\n+                            leftButtonSelect(cm, event, pos, behavior);\n+                        }\n+                    }\n+\n+                    // Start a text drag. When it ends, see if any dragging actually\n+                    // happen, and treat as a click if it didn't.\n+                    function leftButtonStartDrag(cm, event, pos, behavior) {\n+                        var display = cm.display,\n+                            moved = false;\n+                        var dragEnd = operation(cm, function(e) {\n+                            if (webkit) {\n+                                display.scroller.draggable = false;\n+                            }\n+                            cm.state.draggingText = false;\n+                            if (cm.state.delayingBlurEvent) {\n+                                if (cm.hasFocus()) {\n+                                    cm.state.delayingBlurEvent = false;\n+                                } else {\n+                                    delayBlurEvent(cm);\n+                                }\n+                            }\n+                            off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n+                            off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n+                            off(display.scroller, \"dragstart\", dragStart);\n+                            off(display.scroller, \"drop\", dragEnd);\n+                            if (!moved) {\n+                                e_preventDefault(e);\n+                                if (!behavior.addNew) {\n+                                    extendSelection(cm.doc, pos, null, null, behavior.extend);\n+                                }\n+                                // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n+                                if (webkit && !safari || ie && ie_version == 9) {\n+                                    setTimeout(function() {\n+                                        display.wrapper.ownerDocument.body.focus({\n+                                            preventScroll: true\n+                                        });\n+                                        display.input.focus();\n+                                    }, 20);\n+                                } else {\n+                                    display.input.focus();\n+                                }\n+                            }\n+                        });\n+                        var mouseMove = function(e2) {\n+                            moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n+                        };\n+                        var dragStart = function() {\n+                            return moved = true;\n+                        };\n+                        // Let the drag handler handle this.\n+                        if (webkit) {\n+                            display.scroller.draggable = true;\n+                        }\n+                        cm.state.draggingText = dragEnd;\n+                        dragEnd.copy = !behavior.moveOnDrag;\n+                        on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n+                        on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n+                        on(display.scroller, \"dragstart\", dragStart);\n+                        on(display.scroller, \"drop\", dragEnd);\n+                        cm.state.delayingBlurEvent = true;\n+                        setTimeout(function() {\n+                            return display.input.focus();\n+                        }, 20);\n+                        // IE's approach to draggable\n+                        if (display.scroller.dragDrop) {\n+                            display.scroller.dragDrop();\n+                        }\n+                    }\n+\n+                    function rangeForUnit(cm, pos, unit) {\n+                        if (unit == \"char\") {\n+                            return new Range(pos, pos);\n+                        }\n+                        if (unit == \"word\") {\n+                            return cm.findWordAt(pos);\n+                        }\n+                        if (unit == \"line\") {\n+                            return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n+                        }\n+                        var result = unit(cm, pos);\n+                        return new Range(result.from, result.to);\n+                    }\n+\n+                    // Normal selection, as opposed to text dragging.\n+                    function leftButtonSelect(cm, event, start, behavior) {\n+                        if (ie) {\n+                            delayBlurEvent(cm);\n+                        }\n+                        var display = cm.display,\n+                            doc = cm.doc;\n+                        e_preventDefault(event);\n+                        var ourRange,\n+                            ourIndex,\n+                            startSel = doc.sel,\n+                            ranges = startSel.ranges;\n+                        if (behavior.addNew && !behavior.extend) {\n+                            ourIndex = doc.sel.contains(start);\n+                            if (ourIndex > -1) {\n+                                ourRange = ranges[ourIndex];\n+                            } else {\n+                                ourRange = new Range(start, start);\n+                            }\n+                        } else {\n+                            ourRange = doc.sel.primary();\n+                            ourIndex = doc.sel.primIndex;\n+                        }\n+                        if (behavior.unit == \"rectangle\") {\n+                            if (!behavior.addNew) {\n+                                ourRange = new Range(start, start);\n+                            }\n+                            start = posFromMouse(cm, event, true, true);\n+                            ourIndex = -1;\n+                        } else {\n+                            var range = rangeForUnit(cm, start, behavior.unit);\n+                            if (behavior.extend) {\n+                                ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend);\n+                            } else {\n+                                ourRange = range;\n+                            }\n+                        }\n+                        if (!behavior.addNew) {\n+                            ourIndex = 0;\n+                            setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n+                            startSel = doc.sel;\n+                        } else if (ourIndex == -1) {\n+                            ourIndex = ranges.length;\n+                            setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), {\n+                                scroll: false,\n+                                origin: \"*mouse\"\n+                            });\n+                        } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n+                            setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), {\n+                                scroll: false,\n+                                origin: \"*mouse\"\n+                            });\n+                            startSel = doc.sel;\n+                        } else {\n+                            replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n+                        }\n+                        var lastPos = start;\n+\n+                        function extendTo(pos) {\n+                            if (cmp(lastPos, pos) == 0) {\n+                                return;\n+                            }\n+                            lastPos = pos;\n+                            if (behavior.unit == \"rectangle\") {\n+                                var ranges = [],\n+                                    tabSize = cm.options.tabSize;\n+                                var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n+                                var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n+                                var left = Math.min(startCol, posCol),\n+                                    right = Math.max(startCol, posCol);\n+                                for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); line <= end; line++) {\n+                                    var text = getLine(doc, line).text,\n+                                        leftPos = findColumn(text, left, tabSize);\n+                                    if (left == right) {\n+                                        ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));\n+                                    } else if (text.length > leftPos) {\n+                                        ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize))));\n+                                    }\n+                                }\n+                                if (!ranges.length) {\n+                                    ranges.push(new Range(start, start));\n+                                }\n+                                setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), {\n+                                    origin: \"*mouse\",\n+                                    scroll: false\n+                                });\n+                                cm.scrollIntoView(pos);\n+                            } else {\n+                                var oldRange = ourRange;\n+                                var range = rangeForUnit(cm, pos, behavior.unit);\n+                                var anchor = oldRange.anchor,\n+                                    head;\n+                                if (cmp(range.anchor, anchor) > 0) {\n+                                    head = range.head;\n+                                    anchor = minPos(oldRange.from(), range.anchor);\n+                                } else {\n+                                    head = range.anchor;\n+                                    anchor = maxPos(oldRange.to(), range.head);\n+                                }\n+                                var ranges$1 = startSel.ranges.slice(0);\n+                                ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n+                                setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n+                            }\n+                        }\n+                        var editorSize = display.wrapper.getBoundingClientRect();\n+                        // Used to ensure timeout re-tries don't fire when another extend\n+                        // happened in the meantime (clearTimeout isn't reliable -- at\n+                        // least on Chrome, the timeouts still happen even when cleared,\n+                        // if the clear happens after their scheduled firing time).\n+                        var counter = 0;\n+\n+                        function extend(e) {\n+                            var curCount = ++counter;\n+                            var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n+                            if (!cur) {\n+                                return;\n+                            }\n+                            if (cmp(cur, lastPos) != 0) {\n+                                cm.curOp.focus = activeElt();\n+                                extendTo(cur);\n+                                var visible = visibleLines(display, doc);\n+                                if (cur.line >= visible.to || cur.line < visible.from) {\n+                                    setTimeout(operation(cm, function() {\n+                                        if (counter == curCount) {\n+                                            extend(e);\n+                                        }\n+                                    }), 150);\n+                                }\n+                            } else {\n+                                var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n+                                if (outside) {\n+                                    setTimeout(operation(cm, function() {\n+                                        if (counter != curCount) {\n+                                            return;\n+                                        }\n+                                        display.scroller.scrollTop += outside;\n+                                        extend(e);\n+                                    }), 50);\n+                                }\n+                            }\n+                        }\n+\n+                        function done(e) {\n+                            cm.state.selectingText = false;\n+                            counter = Infinity;\n+                            // If e is null or undefined we interpret this as someone trying\n+                            // to explicitly cancel the selection rather than the user\n+                            // letting go of the mouse button.\n+                            if (e) {\n+                                e_preventDefault(e);\n+                                display.input.focus();\n+                            }\n+                            off(display.wrapper.ownerDocument, \"mousemove\", move);\n+                            off(display.wrapper.ownerDocument, \"mouseup\", up);\n+                            doc.history.lastSelOrigin = null;\n+                        }\n+                        var move = operation(cm, function(e) {\n+                            if (e.buttons === 0 || !e_button(e)) {\n+                                done(e);\n+                            } else {\n+                                extend(e);\n+                            }\n+                        });\n+                        var up = operation(cm, done);\n+                        cm.state.selectingText = up;\n+                        on(display.wrapper.ownerDocument, \"mousemove\", move);\n+                        on(display.wrapper.ownerDocument, \"mouseup\", up);\n+                    }\n+\n+                    // Used when mouse-selecting to adjust the anchor to the proper side\n+                    // of a bidi jump depending on the visual position of the head.\n+                    function bidiSimplify(cm, range) {\n+                        var anchor = range.anchor;\n+                        var head = range.head;\n+                        var anchorLine = getLine(cm.doc, anchor.line);\n+                        if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) {\n+                            return range;\n+                        }\n+                        var order = getOrder(anchorLine);\n+                        if (!order) {\n+                            return range;\n+                        }\n+                        var index = getBidiPartAt(order, anchor.ch, anchor.sticky),\n+                            part = order[index];\n+                        if (part.from != anchor.ch && part.to != anchor.ch) {\n+                            return range;\n+                        }\n+                        var boundary = index + (part.from == anchor.ch == (part.level != 1) ? 0 : 1);\n+                        if (boundary == 0 || boundary == order.length) {\n+                            return range;\n+                        }\n+\n+                        // Compute the relative visual position of the head compared to the\n+                        // anchor (<0 is to the left, >0 to the right)\n+                        var leftSide;\n+                        if (head.line != anchor.line) {\n+                            leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n+                        } else {\n+                            var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n+                            var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n+                            if (headIndex == boundary - 1 || headIndex == boundary) {\n+                                leftSide = dir < 0;\n+                            } else {\n+                                leftSide = dir > 0;\n+                            }\n+                        }\n+                        var usePart = order[boundary + (leftSide ? -1 : 0)];\n+                        var from = leftSide == (usePart.level == 1);\n+                        var ch = from ? usePart.from : usePart.to,\n+                            sticky = from ? \"after\" : \"before\";\n+                        return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head);\n+                    }\n+\n+                    // Determines whether an event happened in the gutter, and fires the\n+                    // handlers for the corresponding event.\n+                    function gutterEvent(cm, e, type, prevent) {\n+                        var mX, mY;\n+                        if (e.touches) {\n+                            mX = e.touches[0].clientX;\n+                            mY = e.touches[0].clientY;\n+                        } else {\n+                            try {\n+                                mX = e.clientX;\n+                                mY = e.clientY;\n+                            } catch (e$1) {\n+                                return false;\n+                            }\n+                        }\n+                        if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) {\n+                            return false;\n+                        }\n+                        if (prevent) {\n+                            e_preventDefault(e);\n+                        }\n+                        var display = cm.display;\n+                        var lineBox = display.lineDiv.getBoundingClientRect();\n+                        if (mY > lineBox.bottom || !hasHandler(cm, type)) {\n+                            return e_defaultPrevented(e);\n+                        }\n+                        mY -= lineBox.top - display.viewOffset;\n+                        for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n+                            var g = display.gutters.childNodes[i];\n+                            if (g && g.getBoundingClientRect().right >= mX) {\n+                                var line = lineAtHeight(cm.doc, mY);\n+                                var gutter = cm.display.gutterSpecs[i];\n+                                signal(cm, type, cm, line, gutter.className, e);\n+                                return e_defaultPrevented(e);\n+                            }\n+                        }\n+                    }\n+\n+                    function clickInGutter(cm, e) {\n+                        return gutterEvent(cm, e, \"gutterClick\", true);\n+                    }\n+\n+                    // CONTEXT MENU HANDLING\n+\n+                    // To make the context menu work, we need to briefly unhide the\n+                    // textarea (making it as unobtrusive as possible) to let the\n+                    // right-click take effect on it.\n+                    function onContextMenu(cm, e) {\n+                        if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) {\n+                            return;\n+                        }\n+                        if (signalDOMEvent(cm, e, \"contextmenu\")) {\n+                            return;\n+                        }\n+                        if (!captureRightClick) {\n+                            cm.display.input.onContextMenu(e);\n+                        }\n+                    }\n+\n+                    function contextMenuInGutter(cm, e) {\n+                        if (!hasHandler(cm, \"gutterContextMenu\")) {\n+                            return false;\n+                        }\n+                        return gutterEvent(cm, e, \"gutterContextMenu\", false);\n+                    }\n+\n+                    function themeChanged(cm) {\n+                        cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") + cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n+                        clearCaches(cm);\n+                    }\n+                    var Init = {\n+                        toString: function() {\n+                            return \"CodeMirror.Init\";\n+                        }\n+                    };\n+                    var defaults = {};\n+                    var optionHandlers = {};\n+\n+                    function defineOptions(CodeMirror) {\n+                        var optionHandlers = CodeMirror.optionHandlers;\n+\n+                        function option(name, deflt, handle, notOnInit) {\n+                            CodeMirror.defaults[name] = deflt;\n+                            if (handle) {\n+                                optionHandlers[name] = notOnInit ? function(cm, val, old) {\n+                                    if (old != Init) {\n+                                        handle(cm, val, old);\n+                                    }\n+                                } : handle;\n+                            }\n+                        }\n+                        CodeMirror.defineOption = option;\n+\n+                        // Passed to option handlers when there is no old value.\n+                        CodeMirror.Init = Init;\n+\n+                        // These two are, on init, called from the constructor because they\n+                        // have to be initialized before the editor can start at all.\n+                        option(\"value\", \"\", function(cm, val) {\n+                            return cm.setValue(val);\n+                        }, true);\n+                        option(\"mode\", null, function(cm, val) {\n+                            cm.doc.modeOption = val;\n+                            loadMode(cm);\n+                        }, true);\n+                        option(\"indentUnit\", 2, loadMode, true);\n+                        option(\"indentWithTabs\", false);\n+                        option(\"smartIndent\", true);\n+                        option(\"tabSize\", 4, function(cm) {\n+                            resetModeState(cm);\n+                            clearCaches(cm);\n+                            regChange(cm);\n+                        }, true);\n+                        option(\"lineSeparator\", null, function(cm, val) {\n+                            cm.doc.lineSep = val;\n+                            if (!val) {\n+                                return;\n+                            }\n+                            var newBreaks = [],\n+                                lineNo = cm.doc.first;\n+                            cm.doc.iter(function(line) {\n+                                for (var pos = 0;;) {\n+                                    var found = line.text.indexOf(val, pos);\n+                                    if (found == -1) {\n+                                        break;\n+                                    }\n+                                    pos = found + val.length;\n+                                    newBreaks.push(Pos(lineNo, found));\n+                                }\n+                                lineNo++;\n+                            });\n+                            for (var i = newBreaks.length - 1; i >= 0; i--) {\n+                                replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length));\n+                            }\n+                        });\n+                        option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function(cm, val, old) {\n+                            cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n+                            if (old != Init) {\n+                                cm.refresh();\n+                            }\n+                        });\n+                        option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function(cm) {\n+                            return cm.refresh();\n+                        }, true);\n+                        option(\"electricChars\", true);\n+                        option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function() {\n+                            throw new Error(\"inputStyle can not (yet) be changed in a running editor\"); // FIXME\n+                        }, true);\n+                        option(\"spellcheck\", false, function(cm, val) {\n+                            return cm.getInputField().spellcheck = val;\n+                        }, true);\n+                        option(\"autocorrect\", false, function(cm, val) {\n+                            return cm.getInputField().autocorrect = val;\n+                        }, true);\n+                        option(\"autocapitalize\", false, function(cm, val) {\n+                            return cm.getInputField().autocapitalize = val;\n+                        }, true);\n+                        option(\"rtlMoveVisually\", !windows);\n+                        option(\"wholeLineUpdateBefore\", true);\n+                        option(\"theme\", \"default\", function(cm) {\n+                            themeChanged(cm);\n+                            updateGutters(cm);\n+                        }, true);\n+                        option(\"keyMap\", \"default\", function(cm, val, old) {\n+                            var next = getKeyMap(val);\n+                            var prev = old != Init && getKeyMap(old);\n+                            if (prev && prev.detach) {\n+                                prev.detach(cm, next);\n+                            }\n+                            if (next.attach) {\n+                                next.attach(cm, prev || null);\n+                            }\n+                        });\n+                        option(\"extraKeys\", null);\n+                        option(\"configureMouse\", null);\n+                        option(\"lineWrapping\", false, wrappingChanged, true);\n+                        option(\"gutters\", [], function(cm, val) {\n+                            cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n+                            updateGutters(cm);\n+                        }, true);\n+                        option(\"fixedGutter\", true, function(cm, val) {\n+                            cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n+                            cm.refresh();\n+                        }, true);\n+                        option(\"coverGutterNextToScrollbar\", false, function(cm) {\n+                            return updateScrollbars(cm);\n+                        }, true);\n+                        option(\"scrollbarStyle\", \"native\", function(cm) {\n+                            initScrollbars(cm);\n+                            updateScrollbars(cm);\n+                            cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n+                            cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n+                        }, true);\n+                        option(\"lineNumbers\", false, function(cm, val) {\n+                            cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n+                            updateGutters(cm);\n+                        }, true);\n+                        option(\"firstLineNumber\", 1, updateGutters, true);\n+                        option(\"lineNumberFormatter\", function(integer) {\n+                            return integer;\n+                        }, updateGutters, true);\n+                        option(\"showCursorWhenSelecting\", false, updateSelection, true);\n+                        option(\"resetSelectionOnContextMenu\", true);\n+                        option(\"lineWiseCopyCut\", true);\n+                        option(\"pasteLinesPerSelection\", true);\n+                        option(\"selectionsMayTouch\", false);\n+                        option(\"readOnly\", false, function(cm, val) {\n+                            if (val == \"nocursor\") {\n+                                onBlur(cm);\n+                                cm.display.input.blur();\n+                            }\n+                            cm.display.input.readOnlyChanged(val);\n+                        });\n+                        option(\"screenReaderLabel\", null, function(cm, val) {\n+                            val = val === '' ? null : val;\n+                            cm.display.input.screenReaderLabelChanged(val);\n+                        });\n+                        option(\"disableInput\", false, function(cm, val) {\n+                            if (!val) {\n+                                cm.display.input.reset();\n+                            }\n+                        }, true);\n+                        option(\"dragDrop\", true, dragDropChanged);\n+                        option(\"allowDropFileTypes\", null);\n+                        option(\"cursorBlinkRate\", 530);\n+                        option(\"cursorScrollMargin\", 0);\n+                        option(\"cursorHeight\", 1, updateSelection, true);\n+                        option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n+                        option(\"workTime\", 100);\n+                        option(\"workDelay\", 100);\n+                        option(\"flattenSpans\", true, resetModeState, true);\n+                        option(\"addModeClass\", false, resetModeState, true);\n+                        option(\"pollInterval\", 100);\n+                        option(\"undoDepth\", 200, function(cm, val) {\n+                            return cm.doc.history.undoDepth = val;\n+                        });\n+                        option(\"historyEventDelay\", 1250);\n+                        option(\"viewportMargin\", 10, function(cm) {\n+                            return cm.refresh();\n+                        }, true);\n+                        option(\"maxHighlightLength\", 10000, resetModeState, true);\n+                        option(\"moveInputWithCursor\", true, function(cm, val) {\n+                            if (!val) {\n+                                cm.display.input.resetPosition();\n+                            }\n+                        });\n+                        option(\"tabindex\", null, function(cm, val) {\n+                            return cm.display.input.getField().tabIndex = val || \"\";\n+                        });\n+                        option(\"autofocus\", null);\n+                        option(\"direction\", \"ltr\", function(cm, val) {\n+                            return cm.doc.setDirection(val);\n+                        }, true);\n+                        option(\"phrases\", null);\n+                    }\n+\n+                    function dragDropChanged(cm, value, old) {\n+                        var wasOn = old && old != Init;\n+                        if (!value != !wasOn) {\n+                            var funcs = cm.display.dragFunctions;\n+                            var toggle = value ? on : off;\n+                            toggle(cm.display.scroller, \"dragstart\", funcs.start);\n+                            toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n+                            toggle(cm.display.scroller, \"dragover\", funcs.over);\n+                            toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n+                            toggle(cm.display.scroller, \"drop\", funcs.drop);\n+                        }\n+                    }\n+\n+                    function wrappingChanged(cm) {\n+                        if (cm.options.lineWrapping) {\n+                            addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n+                            cm.display.sizer.style.minWidth = \"\";\n+                            cm.display.sizerWidth = null;\n+                        } else {\n+                            rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n+                            findMaxLine(cm);\n+                        }\n+                        estimateLineHeights(cm);\n+                        regChange(cm);\n+                        clearCaches(cm);\n+                        setTimeout(function() {\n+                            return updateScrollbars(cm);\n+                        }, 100);\n+                    }\n+\n+                    // A CodeMirror instance represents an editor. This is the object\n+                    // that user code is usually dealing with.\n+\n+                    function CodeMirror(place, options) {\n+                        var this$1 = this;\n+                        if (!(this instanceof CodeMirror)) {\n+                            return new CodeMirror(place, options);\n+                        }\n+                        this.options = options = options ? copyObj(options) : {};\n+                        // Determine effective options based on given values and defaults.\n+                        copyObj(defaults, options, false);\n+                        var doc = options.value;\n+                        if (typeof doc == \"string\") {\n+                            doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction);\n+                        } else if (options.mode) {\n+                            doc.modeOption = options.mode;\n+                        }\n+                        this.doc = doc;\n+                        var input = new CodeMirror.inputStyles[options.inputStyle](this);\n+                        var display = this.display = new Display(place, doc, input, options);\n+                        display.wrapper.CodeMirror = this;\n+                        themeChanged(this);\n+                        if (options.lineWrapping) {\n+                            this.display.wrapper.className += \" CodeMirror-wrap\";\n+                        }\n+                        initScrollbars(this);\n+                        this.state = {\n+                            keyMaps: [],\n+                            // stores maps added by addKeyMap\n+                            overlays: [],\n+                            // highlighting overlays, as added by addOverlay\n+                            modeGen: 0,\n+                            // bumped when mode/overlay changes, used to invalidate highlighting info\n+                            overwrite: false,\n+                            delayingBlurEvent: false,\n+                            focused: false,\n+                            suppressEdits: false,\n+                            // used to disable editing during key handlers when in readOnly mode\n+                            pasteIncoming: -1,\n+                            cutIncoming: -1,\n+                            // help recognize paste/cut edits in input.poll\n+                            selectingText: false,\n+                            draggingText: false,\n+                            highlight: new Delayed(),\n+                            // stores highlight worker timeout\n+                            keySeq: null,\n+                            // Unfinished key sequence\n+                            specialChars: null\n+                        };\n+                        if (options.autofocus && !mobile) {\n+                            display.input.focus();\n+                        }\n+\n+                        // Override magic textarea content restore that IE sometimes does\n+                        // on our hidden textarea on reload\n+                        if (ie && ie_version < 11) {\n+                            setTimeout(function() {\n+                                return this$1.display.input.reset(true);\n+                            }, 20);\n+                        }\n+                        registerEventHandlers(this);\n+                        ensureGlobalHandlers();\n+                        startOperation(this);\n+                        this.curOp.forceUpdate = true;\n+                        attachDoc(this, doc);\n+                        if (options.autofocus && !mobile || this.hasFocus()) {\n+                            setTimeout(function() {\n+                                if (this$1.hasFocus() && !this$1.state.focused) {\n+                                    onFocus(this$1);\n+                                }\n+                            }, 20);\n+                        } else {\n+                            onBlur(this);\n+                        }\n+                        for (var opt in optionHandlers) {\n+                            if (optionHandlers.hasOwnProperty(opt)) {\n+                                optionHandlers[opt](this, options[opt], Init);\n+                            }\n+                        }\n+                        maybeUpdateLineNumberWidth(this);\n+                        if (options.finishInit) {\n+                            options.finishInit(this);\n+                        }\n+                        for (var i = 0; i < initHooks.length; ++i) {\n+                            initHooks[i](this);\n+                        }\n+                        endOperation(this);\n+                        // Suppress optimizelegibility in Webkit, since it breaks text\n+                        // measuring on line wrapping boundaries.\n+                        if (webkit && options.lineWrapping && getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\") {\n+                            display.lineDiv.style.textRendering = \"auto\";\n+                        }\n+                    }\n+\n+                    // The default configuration options.\n+                    CodeMirror.defaults = defaults;\n+                    // Functions to run when options are changed.\n+                    CodeMirror.optionHandlers = optionHandlers;\n+\n+                    // Attach the necessary event handlers when initializing the editor\n+                    function registerEventHandlers(cm) {\n+                        var d = cm.display;\n+                        on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n+                        // Older IE's will not fire a second mousedown for a double click\n+                        if (ie && ie_version < 11) {\n+                            on(d.scroller, \"dblclick\", operation(cm, function(e) {\n+                                if (signalDOMEvent(cm, e)) {\n+                                    return;\n+                                }\n+                                var pos = posFromMouse(cm, e);\n+                                if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) {\n+                                    return;\n+                                }\n+                                e_preventDefault(e);\n+                                var word = cm.findWordAt(pos);\n+                                extendSelection(cm.doc, word.anchor, word.head);\n+                            }));\n+                        } else {\n+                            on(d.scroller, \"dblclick\", function(e) {\n+                                return signalDOMEvent(cm, e) || e_preventDefault(e);\n+                            });\n+                        }\n+                        // Some browsers fire contextmenu *after* opening the menu, at\n+                        // which point we can't mess with it anymore. Context menu is\n+                        // handled in onMouseDown for these browsers.\n+                        on(d.scroller, \"contextmenu\", function(e) {\n+                            return onContextMenu(cm, e);\n+                        });\n+                        on(d.input.getField(), \"contextmenu\", function(e) {\n+                            if (!d.scroller.contains(e.target)) {\n+                                onContextMenu(cm, e);\n+                            }\n+                        });\n+\n+                        // Used to suppress mouse event handling when a touch happens\n+                        var touchFinished,\n+                            prevTouch = {\n+                                end: 0\n+                            };\n+\n+                        function finishTouch() {\n+                            if (d.activeTouch) {\n+                                touchFinished = setTimeout(function() {\n+                                    return d.activeTouch = null;\n+                                }, 1000);\n+                                prevTouch = d.activeTouch;\n+                                prevTouch.end = +new Date();\n+                            }\n+                        }\n+\n+                        function isMouseLikeTouchEvent(e) {\n+                            if (e.touches.length != 1) {\n+                                return false;\n+                            }\n+                            var touch = e.touches[0];\n+                            return touch.radiusX <= 1 && touch.radiusY <= 1;\n+                        }\n+\n+                        function farAway(touch, other) {\n+                            if (other.left == null) {\n+                                return true;\n+                            }\n+                            var dx = other.left - touch.left,\n+                                dy = other.top - touch.top;\n+                            return dx * dx + dy * dy > 20 * 20;\n+                        }\n+                        on(d.scroller, \"touchstart\", function(e) {\n+                            if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n+                                d.input.ensurePolled();\n+                                clearTimeout(touchFinished);\n+                                var now = +new Date();\n+                                d.activeTouch = {\n+                                    start: now,\n+                                    moved: false,\n+                                    prev: now - prevTouch.end <= 300 ? prevTouch : null\n+                                };\n+                                if (e.touches.length == 1) {\n+                                    d.activeTouch.left = e.touches[0].pageX;\n+                                    d.activeTouch.top = e.touches[0].pageY;\n+                                }\n+                            }\n+                        });\n+                        on(d.scroller, \"touchmove\", function() {\n+                            if (d.activeTouch) {\n+                                d.activeTouch.moved = true;\n+                            }\n+                        });\n+                        on(d.scroller, \"touchend\", function(e) {\n+                            var touch = d.activeTouch;\n+                            if (touch && !eventInWidget(d, e) && touch.left != null && !touch.moved && new Date() - touch.start < 300) {\n+                                var pos = cm.coordsChar(d.activeTouch, \"page\"),\n+                                    range;\n+                                if (!touch.prev || farAway(touch, touch.prev))\n+                                // Single tap\n+                                {\n+                                    range = new Range(pos, pos);\n+                                } else if (!touch.prev.prev || farAway(touch, touch.prev.prev))\n+                                // Double tap\n+                                {\n+                                    range = cm.findWordAt(pos);\n+                                } else\n+                                // Triple tap\n+                                {\n+                                    range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n+                                }\n+                                cm.setSelection(range.anchor, range.head);\n+                                cm.focus();\n+                                e_preventDefault(e);\n+                            }\n+                            finishTouch();\n+                        });\n+                        on(d.scroller, \"touchcancel\", finishTouch);\n+\n+                        // Sync scrolling between fake scrollbars and real scrollable\n+                        // area, ensure viewport is updated when scrolling.\n+                        on(d.scroller, \"scroll\", function() {\n+                            if (d.scroller.clientHeight) {\n+                                updateScrollTop(cm, d.scroller.scrollTop);\n+                                setScrollLeft(cm, d.scroller.scrollLeft, true);\n+                                signal(cm, \"scroll\", cm);\n+                            }\n+                        });\n+\n+                        // Listen to wheel events in order to try and update the viewport on time.\n+                        on(d.scroller, \"mousewheel\", function(e) {\n+                            return onScrollWheel(cm, e);\n+                        });\n+                        on(d.scroller, \"DOMMouseScroll\", function(e) {\n+                            return onScrollWheel(cm, e);\n+                        });\n+\n+                        // Prevent wrapper from ever scrolling\n+                        on(d.wrapper, \"scroll\", function() {\n+                            return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0;\n+                        });\n+                        d.dragFunctions = {\n+                            enter: function(e) {\n+                                if (!signalDOMEvent(cm, e)) {\n+                                    e_stop(e);\n+                                }\n+                            },\n+                            over: function(e) {\n+                                if (!signalDOMEvent(cm, e)) {\n+                                    onDragOver(cm, e);\n+                                    e_stop(e);\n+                                }\n+                            },\n+                            start: function(e) {\n+                                return onDragStart(cm, e);\n+                            },\n+                            drop: operation(cm, onDrop),\n+                            leave: function(e) {\n+                                if (!signalDOMEvent(cm, e)) {\n+                                    clearDragCursor(cm);\n+                                }\n+                            }\n+                        };\n+                        var inp = d.input.getField();\n+                        on(inp, \"keyup\", function(e) {\n+                            return onKeyUp.call(cm, e);\n+                        });\n+                        on(inp, \"keydown\", operation(cm, onKeyDown));\n+                        on(inp, \"keypress\", operation(cm, onKeyPress));\n+                        on(inp, \"focus\", function(e) {\n+                            return onFocus(cm, e);\n+                        });\n+                        on(inp, \"blur\", function(e) {\n+                            return onBlur(cm, e);\n+                        });\n+                    }\n+                    var initHooks = [];\n+                    CodeMirror.defineInitHook = function(f) {\n+                        return initHooks.push(f);\n+                    };\n+\n+                    // Indent the given line. The how parameter can be \"smart\",\n+                    // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n+                    // (typically set to true for forced single-line indents), empty\n+                    // lines are not indented, and places where the mode returns Pass\n+                    // are left alone.\n+                    function indentLine(cm, n, how, aggressive) {\n+                        var doc = cm.doc,\n+                            state;\n+                        if (how == null) {\n+                            how = \"add\";\n+                        }\n+                        if (how == \"smart\") {\n+                            // Fall back to \"prev\" when the mode doesn't have an indentation\n+                            // method.\n+                            if (!doc.mode.indent) {\n+                                how = \"prev\";\n+                            } else {\n+                                state = getContextBefore(cm, n).state;\n+                            }\n+                        }\n+                        var tabSize = cm.options.tabSize;\n+                        var line = getLine(doc, n),\n+                            curSpace = countColumn(line.text, null, tabSize);\n+                        if (line.stateAfter) {\n+                            line.stateAfter = null;\n+                        }\n+                        var curSpaceString = line.text.match(/^\\s*/)[0],\n+                            indentation;\n+                        if (!aggressive && !/\\S/.test(line.text)) {\n+                            indentation = 0;\n+                            how = \"not\";\n+                        } else if (how == \"smart\") {\n+                            indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n+                            if (indentation == Pass || indentation > 150) {\n+                                if (!aggressive) {\n+                                    return;\n+                                }\n+                                how = \"prev\";\n+                            }\n+                        }\n+                        if (how == \"prev\") {\n+                            if (n > doc.first) {\n+                                indentation = countColumn(getLine(doc, n - 1).text, null, tabSize);\n+                            } else {\n+                                indentation = 0;\n+                            }\n+                        } else if (how == \"add\") {\n+                            indentation = curSpace + cm.options.indentUnit;\n+                        } else if (how == \"subtract\") {\n+                            indentation = curSpace - cm.options.indentUnit;\n+                        } else if (typeof how == \"number\") {\n+                            indentation = curSpace + how;\n+                        }\n+                        indentation = Math.max(0, indentation);\n+                        var indentString = \"\",\n+                            pos = 0;\n+                        if (cm.options.indentWithTabs) {\n+                            for (var i = Math.floor(indentation / tabSize); i; --i) {\n+                                pos += tabSize;\n+                                indentString += \"\\t\";\n+                            }\n+                        }\n+                        if (pos < indentation) {\n+                            indentString += spaceStr(indentation - pos);\n+                        }\n+                        if (indentString != curSpaceString) {\n+                            replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n+                            line.stateAfter = null;\n+                            return true;\n+                        } else {\n+                            // Ensure that, if the cursor was in the whitespace at the start\n+                            // of the line, it is moved to the end of that space.\n+                            for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n+                                var range = doc.sel.ranges[i$1];\n+                                if (range.head.line == n && range.head.ch < curSpaceString.length) {\n+                                    var pos$1 = Pos(n, curSpaceString.length);\n+                                    replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n+                                    break;\n+                                }\n+                            }\n+                        }\n+                    }\n+\n+                    // This will be set to a {lineWise: bool, text: [string]} object, so\n+                    // that, when pasting, we know what kind of selections the copied\n+                    // text was made out of.\n+                    var lastCopied = null;\n+\n+                    function setLastCopied(newLastCopied) {\n+                        lastCopied = newLastCopied;\n+                    }\n+\n+                    function applyTextInput(cm, inserted, deleted, sel, origin) {\n+                        var doc = cm.doc;\n+                        cm.display.shift = false;\n+                        if (!sel) {\n+                            sel = doc.sel;\n+                        }\n+                        var recent = +new Date() - 200;\n+                        var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n+                        var textLines = splitLinesAuto(inserted),\n+                            multiPaste = null;\n+                        // When pasting N lines into N selections, insert one line per selection\n+                        if (paste && sel.ranges.length > 1) {\n+                            if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n+                                if (sel.ranges.length % lastCopied.text.length == 0) {\n+                                    multiPaste = [];\n+                                    for (var i = 0; i < lastCopied.text.length; i++) {\n+                                        multiPaste.push(doc.splitLines(lastCopied.text[i]));\n+                                    }\n+                                }\n+                            } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n+                                multiPaste = map(textLines, function(l) {\n+                                    return [l];\n+                                });\n+                            }\n+                        }\n+                        var updateInput = cm.curOp.updateInput;\n+                        // Normal behavior is to insert the new text into every selection\n+                        for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n+                            var range = sel.ranges[i$1];\n+                            var from = range.from(),\n+                                to = range.to();\n+                            if (range.empty()) {\n+                                if (deleted && deleted > 0)\n+                                // Handle deletion\n+                                {\n+                                    from = Pos(from.line, from.ch - deleted);\n+                                } else if (cm.state.overwrite && !paste)\n+                                // Handle overwrite\n+                                {\n+                                    to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length));\n+                                } else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\")) {\n+                                    from = to = Pos(from.line, 0);\n+                                }\n+                            }\n+                            var changeEvent = {\n+                                from: from,\n+                                to: to,\n+                                text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n+                                origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")\n+                            };\n+                            makeChange(cm.doc, changeEvent);\n+                            signalLater(cm, \"inputRead\", cm, changeEvent);\n+                        }\n+                        if (inserted && !paste) {\n+                            triggerElectric(cm, inserted);\n+                        }\n+                        ensureCursorVisible(cm);\n+                        if (cm.curOp.updateInput < 2) {\n+                            cm.curOp.updateInput = updateInput;\n+                        }\n+                        cm.curOp.typing = true;\n+                        cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n+                    }\n+\n+                    function handlePaste(e, cm) {\n+                        var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n+                        if (pasted) {\n+                            e.preventDefault();\n+                            if (!cm.isReadOnly() && !cm.options.disableInput) {\n+                                runInOp(cm, function() {\n+                                    return applyTextInput(cm, pasted, 0, null, \"paste\");\n+                                });\n+                            }\n+                            return true;\n+                        }\n+                    }\n+\n+                    function triggerElectric(cm, inserted) {\n+                        // When an 'electric' character is inserted, immediately trigger a reindent\n+                        if (!cm.options.electricChars || !cm.options.smartIndent) {\n+                            return;\n+                        }\n+                        var sel = cm.doc.sel;\n+                        for (var i = sel.ranges.length - 1; i >= 0; i--) {\n+                            var range = sel.ranges[i];\n+                            if (range.head.ch > 100 || i && sel.ranges[i - 1].head.line == range.head.line) {\n+                                continue;\n+                            }\n+                            var mode = cm.getModeAt(range.head);\n+                            var indented = false;\n+                            if (mode.electricChars) {\n+                                for (var j = 0; j < mode.electricChars.length; j++) {\n+                                    if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n+                                        indented = indentLine(cm, range.head.line, \"smart\");\n+                                        break;\n+                                    }\n+                                }\n+                            } else if (mode.electricInput) {\n+                                if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) {\n+                                    indented = indentLine(cm, range.head.line, \"smart\");\n+                                }\n+                            }\n+                            if (indented) {\n+                                signalLater(cm, \"electricInput\", cm, range.head.line);\n+                            }\n+                        }\n+                    }\n+\n+                    function copyableRanges(cm) {\n+                        var text = [],\n+                            ranges = [];\n+                        for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n+                            var line = cm.doc.sel.ranges[i].head.line;\n+                            var lineRange = {\n+                                anchor: Pos(line, 0),\n+                                head: Pos(line + 1, 0)\n+                            };\n+                            ranges.push(lineRange);\n+                            text.push(cm.getRange(lineRange.anchor, lineRange.head));\n+                        }\n+                        return {\n+                            text: text,\n+                            ranges: ranges\n+                        };\n+                    }\n+\n+                    function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n+                        field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n+                        field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n+                        field.setAttribute(\"spellcheck\", !!spellcheck);\n+                    }\n+\n+                    function hiddenTextarea() {\n+                        var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n+                        var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n+                        // The textarea is kept positioned near the cursor to prevent the\n+                        // fact that it'll be scrolled into view on input from scrolling\n+                        // our fake cursor out of view. On webkit, when wrap=off, paste is\n+                        // very slow. So make the area wide instead.\n+                        if (webkit) {\n+                            te.style.width = \"1000px\";\n+                        } else {\n+                            te.setAttribute(\"wrap\", \"off\");\n+                        }\n+                        // If border: 0; -- iOS fails to open keyboard (issue #1287)\n+                        if (ios) {\n+                            te.style.border = \"1px solid black\";\n+                        }\n+                        disableBrowserMagic(te);\n+                        return div;\n+                    }\n+\n+                    // The publicly visible API. Note that methodOp(f) means\n+                    // 'wrap f in an operation, performed on its `this` parameter'.\n+\n+                    // This is not the complete set of editor methods. Most of the\n+                    // methods defined on the Doc type are also injected into\n+                    // CodeMirror.prototype, for backwards compatibility and\n+                    // convenience.\n+\n+                    function addEditorMethods(CodeMirror) {\n+                        var optionHandlers = CodeMirror.optionHandlers;\n+                        var helpers = CodeMirror.helpers = {};\n+                        CodeMirror.prototype = {\n+                            constructor: CodeMirror,\n+                            focus: function() {\n+                                window.focus();\n+                                this.display.input.focus();\n+                            },\n+                            setOption: function(option, value) {\n+                                var options = this.options,\n+                                    old = options[option];\n+                                if (options[option] == value && option != \"mode\") {\n+                                    return;\n+                                }\n+                                options[option] = value;\n+                                if (optionHandlers.hasOwnProperty(option)) {\n+                                    operation(this, optionHandlers[option])(this, value, old);\n+                                }\n+                                signal(this, \"optionChange\", this, option);\n+                            },\n+                            getOption: function(option) {\n+                                return this.options[option];\n+                            },\n+                            getDoc: function() {\n+                                return this.doc;\n+                            },\n+                            addKeyMap: function(map, bottom) {\n+                                this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n+                            },\n+                            removeKeyMap: function(map) {\n+                                var maps = this.state.keyMaps;\n+                                for (var i = 0; i < maps.length; ++i) {\n+                                    if (maps[i] == map || maps[i].name == map) {\n+                                        maps.splice(i, 1);\n+                                        return true;\n+                                    }\n+                                }\n+                            },\n+                            addOverlay: methodOp(function(spec, options) {\n+                                var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n+                                if (mode.startState) {\n+                                    throw new Error(\"Overlays may not be stateful.\");\n+                                }\n+                                insertSorted(this.state.overlays, {\n+                                    mode: mode,\n+                                    modeSpec: spec,\n+                                    opaque: options && options.opaque,\n+                                    priority: options && options.priority || 0\n+                                }, function(overlay) {\n+                                    return overlay.priority;\n+                                });\n+                                this.state.modeGen++;\n+                                regChange(this);\n+                            }),\n+                            removeOverlay: methodOp(function(spec) {\n+                                var overlays = this.state.overlays;\n+                                for (var i = 0; i < overlays.length; ++i) {\n+                                    var cur = overlays[i].modeSpec;\n+                                    if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n+                                        overlays.splice(i, 1);\n+                                        this.state.modeGen++;\n+                                        regChange(this);\n+                                        return;\n+                                    }\n+                                }\n+                            }),\n+                            indentLine: methodOp(function(n, dir, aggressive) {\n+                                if (typeof dir != \"string\" && typeof dir != \"number\") {\n+                                    if (dir == null) {\n+                                        dir = this.options.smartIndent ? \"smart\" : \"prev\";\n+                                    } else {\n+                                        dir = dir ? \"add\" : \"subtract\";\n+                                    }\n+                                }\n+                                if (isLine(this.doc, n)) {\n+                                    indentLine(this, n, dir, aggressive);\n+                                }\n+                            }),\n+                            indentSelection: methodOp(function(how) {\n+                                var ranges = this.doc.sel.ranges,\n+                                    end = -1;\n+                                for (var i = 0; i < ranges.length; i++) {\n+                                    var range = ranges[i];\n+                                    if (!range.empty()) {\n+                                        var from = range.from(),\n+                                            to = range.to();\n+                                        var start = Math.max(end, from.line);\n+                                        end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n+                                        for (var j = start; j < end; ++j) {\n+                                            indentLine(this, j, how);\n+                                        }\n+                                        var newRanges = this.doc.sel.ranges;\n+                                        if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) {\n+                                            replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll);\n+                                        }\n+                                    } else if (range.head.line > end) {\n+                                        indentLine(this, range.head.line, how, true);\n+                                        end = range.head.line;\n+                                        if (i == this.doc.sel.primIndex) {\n+                                            ensureCursorVisible(this);\n+                                        }\n+                                    }\n+                                }\n+                            }),\n+                            // Fetch the parser token for a given character. Useful for hacks\n+                            // that want to inspect the mode state (say, for completion).\n+                            getTokenAt: function(pos, precise) {\n+                                return takeToken(this, pos, precise);\n+                            },\n+                            getLineTokens: function(line, precise) {\n+                                return takeToken(this, Pos(line), precise, true);\n+                            },\n+                            getTokenTypeAt: function(pos) {\n+                                pos = clipPos(this.doc, pos);\n+                                var styles = getLineStyles(this, getLine(this.doc, pos.line));\n+                                var before = 0,\n+                                    after = (styles.length - 1) / 2,\n+                                    ch = pos.ch;\n+                                var type;\n+                                if (ch == 0) {\n+                                    type = styles[2];\n+                                } else {\n+                                    for (;;) {\n+                                        var mid = before + after >> 1;\n+                                        if ((mid ? styles[mid * 2 - 1] : 0) >= ch) {\n+                                            after = mid;\n+                                        } else if (styles[mid * 2 + 1] < ch) {\n+                                            before = mid + 1;\n+                                        } else {\n+                                            type = styles[mid * 2 + 2];\n+                                            break;\n+                                        }\n+                                    }\n+                                }\n+                                var cut = type ? type.indexOf(\"overlay \") : -1;\n+                                return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);\n+                            },\n+                            getModeAt: function(pos) {\n+                                var mode = this.doc.mode;\n+                                if (!mode.innerMode) {\n+                                    return mode;\n+                                }\n+                                return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode;\n+                            },\n+                            getHelper: function(pos, type) {\n+                                return this.getHelpers(pos, type)[0];\n+                            },\n+                            getHelpers: function(pos, type) {\n+                                var found = [];\n+                                if (!helpers.hasOwnProperty(type)) {\n+                                    return found;\n+                                }\n+                                var help = helpers[type],\n+                                    mode = this.getModeAt(pos);\n+                                if (typeof mode[type] == \"string\") {\n+                                    if (help[mode[type]]) {\n+                                        found.push(help[mode[type]]);\n+                                    }\n+                                } else if (mode[type]) {\n+                                    for (var i = 0; i < mode[type].length; i++) {\n+                                        var val = help[mode[type][i]];\n+                                        if (val) {\n+                                            found.push(val);\n+                                        }\n+                                    }\n+                                } else if (mode.helperType && help[mode.helperType]) {\n+                                    found.push(help[mode.helperType]);\n+                                } else if (help[mode.name]) {\n+                                    found.push(help[mode.name]);\n+                                }\n+                                for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n+                                    var cur = help._global[i$1];\n+                                    if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) {\n+                                        found.push(cur.val);\n+                                    }\n+                                }\n+                                return found;\n+                            },\n+                            getStateAfter: function(line, precise) {\n+                                var doc = this.doc;\n+                                line = clipLine(doc, line == null ? doc.first + doc.size - 1 : line);\n+                                return getContextBefore(this, line + 1, precise).state;\n+                            },\n+                            cursorCoords: function(start, mode) {\n+                                var pos,\n+                                    range = this.doc.sel.primary();\n+                                if (start == null) {\n+                                    pos = range.head;\n+                                } else if (typeof start == \"object\") {\n+                                    pos = clipPos(this.doc, start);\n+                                } else {\n+                                    pos = start ? range.from() : range.to();\n+                                }\n+                                return cursorCoords(this, pos, mode || \"page\");\n+                            },\n+                            charCoords: function(pos, mode) {\n+                                return charCoords(this, clipPos(this.doc, pos), mode || \"page\");\n+                            },\n+                            coordsChar: function(coords, mode) {\n+                                coords = fromCoordSystem(this, coords, mode || \"page\");\n+                                return coordsChar(this, coords.left, coords.top);\n+                            },\n+                            lineAtHeight: function(height, mode) {\n+                                height = fromCoordSystem(this, {\n+                                    top: height,\n+                                    left: 0\n+                                }, mode || \"page\").top;\n+                                return lineAtHeight(this.doc, height + this.display.viewOffset);\n+                            },\n+                            heightAtLine: function(line, mode, includeWidgets) {\n+                                var end = false,\n+                                    lineObj;\n+                                if (typeof line == \"number\") {\n+                                    var last = this.doc.first + this.doc.size - 1;\n+                                    if (line < this.doc.first) {\n+                                        line = this.doc.first;\n+                                    } else if (line > last) {\n+                                        line = last;\n+                                        end = true;\n+                                    }\n+                                    lineObj = getLine(this.doc, line);\n+                                } else {\n+                                    lineObj = line;\n+                                }\n+                                return intoCoordSystem(this, lineObj, {\n+                                    top: 0,\n+                                    left: 0\n+                                }, mode || \"page\", includeWidgets || end).top + (end ? this.doc.height - heightAtLine(lineObj) : 0);\n+                            },\n+                            defaultTextHeight: function() {\n+                                return textHeight(this.display);\n+                            },\n+                            defaultCharWidth: function() {\n+                                return charWidth(this.display);\n+                            },\n+                            getViewport: function() {\n+                                return {\n+                                    from: this.display.viewFrom,\n+                                    to: this.display.viewTo\n+                                };\n+                            },\n+                            addWidget: function(pos, node, scroll, vert, horiz) {\n+                                var display = this.display;\n+                                pos = cursorCoords(this, clipPos(this.doc, pos));\n+                                var top = pos.bottom,\n+                                    left = pos.left;\n+                                node.style.position = \"absolute\";\n+                                node.setAttribute(\"cm-ignore-events\", \"true\");\n+                                this.display.input.setUneditable(node);\n+                                display.sizer.appendChild(node);\n+                                if (vert == \"over\") {\n+                                    top = pos.top;\n+                                } else if (vert == \"above\" || vert == \"near\") {\n+                                    var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n+                                        hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n+                                    // Default to positioning above (if specified and possible); otherwise default to positioning below\n+                                    if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) {\n+                                        top = pos.top - node.offsetHeight;\n+                                    } else if (pos.bottom + node.offsetHeight <= vspace) {\n+                                        top = pos.bottom;\n+                                    }\n+                                    if (left + node.offsetWidth > hspace) {\n+                                        left = hspace - node.offsetWidth;\n+                                    }\n+                                }\n+                                node.style.top = top + \"px\";\n+                                node.style.left = node.style.right = \"\";\n+                                if (horiz == \"right\") {\n+                                    left = display.sizer.clientWidth - node.offsetWidth;\n+                                    node.style.right = \"0px\";\n+                                } else {\n+                                    if (horiz == \"left\") {\n+                                        left = 0;\n+                                    } else if (horiz == \"middle\") {\n+                                        left = (display.sizer.clientWidth - node.offsetWidth) / 2;\n+                                    }\n+                                    node.style.left = left + \"px\";\n+                                }\n+                                if (scroll) {\n+                                    scrollIntoView(this, {\n+                                        left: left,\n+                                        top: top,\n+                                        right: left + node.offsetWidth,\n+                                        bottom: top + node.offsetHeight\n+                                    });\n+                                }\n+                            },\n+                            triggerOnKeyDown: methodOp(onKeyDown),\n+                            triggerOnKeyPress: methodOp(onKeyPress),\n+                            triggerOnKeyUp: onKeyUp,\n+                            triggerOnMouseDown: methodOp(onMouseDown),\n+                            execCommand: function(cmd) {\n+                                if (commands.hasOwnProperty(cmd)) {\n+                                    return commands[cmd].call(null, this);\n+                                }\n+                            },\n+                            triggerElectric: methodOp(function(text) {\n+                                triggerElectric(this, text);\n+                            }),\n+                            findPosH: function(from, amount, unit, visually) {\n+                                var dir = 1;\n+                                if (amount < 0) {\n+                                    dir = -1;\n+                                    amount = -amount;\n+                                }\n+                                var cur = clipPos(this.doc, from);\n+                                for (var i = 0; i < amount; ++i) {\n+                                    cur = findPosH(this.doc, cur, dir, unit, visually);\n+                                    if (cur.hitSide) {\n+                                        break;\n+                                    }\n+                                }\n+                                return cur;\n+                            },\n+                            moveH: methodOp(function(dir, unit) {\n+                                var this$1 = this;\n+                                this.extendSelectionsBy(function(range) {\n+                                    if (this$1.display.shift || this$1.doc.extend || range.empty()) {\n+                                        return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually);\n+                                    } else {\n+                                        return dir < 0 ? range.from() : range.to();\n+                                    }\n+                                }, sel_move);\n+                            }),\n+                            deleteH: methodOp(function(dir, unit) {\n+                                var sel = this.doc.sel,\n+                                    doc = this.doc;\n+                                if (sel.somethingSelected()) {\n+                                    doc.replaceSelection(\"\", null, \"+delete\");\n+                                } else {\n+                                    deleteNearSelection(this, function(range) {\n+                                        var other = findPosH(doc, range.head, dir, unit, false);\n+                                        return dir < 0 ? {\n+                                            from: other,\n+                                            to: range.head\n+                                        } : {\n+                                            from: range.head,\n+                                            to: other\n+                                        };\n+                                    });\n+                                }\n+                            }),\n+                            findPosV: function(from, amount, unit, goalColumn) {\n+                                var dir = 1,\n+                                    x = goalColumn;\n+                                if (amount < 0) {\n+                                    dir = -1;\n+                                    amount = -amount;\n+                                }\n+                                var cur = clipPos(this.doc, from);\n+                                for (var i = 0; i < amount; ++i) {\n+                                    var coords = cursorCoords(this, cur, \"div\");\n+                                    if (x == null) {\n+                                        x = coords.left;\n+                                    } else {\n+                                        coords.left = x;\n+                                    }\n+                                    cur = findPosV(this, coords, dir, unit);\n+                                    if (cur.hitSide) {\n+                                        break;\n+                                    }\n+                                }\n+                                return cur;\n+                            },\n+                            moveV: methodOp(function(dir, unit) {\n+                                var this$1 = this;\n+                                var doc = this.doc,\n+                                    goals = [];\n+                                var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n+                                doc.extendSelectionsBy(function(range) {\n+                                    if (collapse) {\n+                                        return dir < 0 ? range.from() : range.to();\n+                                    }\n+                                    var headPos = cursorCoords(this$1, range.head, \"div\");\n+                                    if (range.goalColumn != null) {\n+                                        headPos.left = range.goalColumn;\n+                                    }\n+                                    goals.push(headPos.left);\n+                                    var pos = findPosV(this$1, headPos, dir, unit);\n+                                    if (unit == \"page\" && range == doc.sel.primary()) {\n+                                        addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top);\n+                                    }\n+                                    return pos;\n+                                }, sel_move);\n+                                if (goals.length) {\n+                                    for (var i = 0; i < doc.sel.ranges.length; i++) {\n+                                        doc.sel.ranges[i].goalColumn = goals[i];\n+                                    }\n+                                }\n+                            }),\n+                            // Find the word at the given position (as returned by coordsChar).\n+                            findWordAt: function(pos) {\n+                                var doc = this.doc,\n+                                    line = getLine(doc, pos.line).text;\n+                                var start = pos.ch,\n+                                    end = pos.ch;\n+                                if (line) {\n+                                    var helper = this.getHelper(pos, \"wordChars\");\n+                                    if ((pos.sticky == \"before\" || end == line.length) && start) {\n+                                        --start;\n+                                    } else {\n+                                        ++end;\n+                                    }\n+                                    var startChar = line.charAt(start);\n+                                    var check = isWordChar(startChar, helper) ? function(ch) {\n+                                        return isWordChar(ch, helper);\n+                                    } : /\\s/.test(startChar) ? function(ch) {\n+                                        return /\\s/.test(ch);\n+                                    } : function(ch) {\n+                                        return !/\\s/.test(ch) && !isWordChar(ch);\n+                                    };\n+                                    while (start > 0 && check(line.charAt(start - 1))) {\n+                                        --start;\n+                                    }\n+                                    while (end < line.length && check(line.charAt(end))) {\n+                                        ++end;\n+                                    }\n+                                }\n+                                return new Range(Pos(pos.line, start), Pos(pos.line, end));\n+                            },\n+                            toggleOverwrite: function(value) {\n+                                if (value != null && value == this.state.overwrite) {\n+                                    return;\n+                                }\n+                                if (this.state.overwrite = !this.state.overwrite) {\n+                                    addClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n+                                } else {\n+                                    rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n+                                }\n+                                signal(this, \"overwriteToggle\", this, this.state.overwrite);\n+                            },\n+                            hasFocus: function() {\n+                                return this.display.input.getField() == activeElt();\n+                            },\n+                            isReadOnly: function() {\n+                                return !!(this.options.readOnly || this.doc.cantEdit);\n+                            },\n+                            scrollTo: methodOp(function(x, y) {\n+                                scrollToCoords(this, x, y);\n+                            }),\n+                            getScrollInfo: function() {\n+                                var scroller = this.display.scroller;\n+                                return {\n+                                    left: scroller.scrollLeft,\n+                                    top: scroller.scrollTop,\n+                                    height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n+                                    width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n+                                    clientHeight: displayHeight(this),\n+                                    clientWidth: displayWidth(this)\n+                                };\n+                            },\n+                            scrollIntoView: methodOp(function(range, margin) {\n+                                if (range == null) {\n+                                    range = {\n+                                        from: this.doc.sel.primary().head,\n+                                        to: null\n+                                    };\n+                                    if (margin == null) {\n+                                        margin = this.options.cursorScrollMargin;\n+                                    }\n+                                } else if (typeof range == \"number\") {\n+                                    range = {\n+                                        from: Pos(range, 0),\n+                                        to: null\n+                                    };\n+                                } else if (range.from == null) {\n+                                    range = {\n+                                        from: range,\n+                                        to: null\n+                                    };\n+                                }\n+                                if (!range.to) {\n+                                    range.to = range.from;\n+                                }\n+                                range.margin = margin || 0;\n+                                if (range.from.line != null) {\n+                                    scrollToRange(this, range);\n+                                } else {\n+                                    scrollToCoordsRange(this, range.from, range.to, range.margin);\n+                                }\n+                            }),\n+                            setSize: methodOp(function(width, height) {\n+                                var this$1 = this;\n+                                var interpret = function(val) {\n+                                    return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val;\n+                                };\n+                                if (width != null) {\n+                                    this.display.wrapper.style.width = interpret(width);\n+                                }\n+                                if (height != null) {\n+                                    this.display.wrapper.style.height = interpret(height);\n+                                }\n+                                if (this.options.lineWrapping) {\n+                                    clearLineMeasurementCache(this);\n+                                }\n+                                var lineNo = this.display.viewFrom;\n+                                this.doc.iter(lineNo, this.display.viewTo, function(line) {\n+                                    if (line.widgets) {\n+                                        for (var i = 0; i < line.widgets.length; i++) {\n+                                            if (line.widgets[i].noHScroll) {\n+                                                regLineChange(this$1, lineNo, \"widget\");\n+                                                break;\n+                                            }\n+                                        }\n+                                    }\n+                                    ++lineNo;\n+                                });\n+                                this.curOp.forceUpdate = true;\n+                                signal(this, \"refresh\", this);\n+                            }),\n+                            operation: function(f) {\n+                                return runInOp(this, f);\n+                            },\n+                            startOperation: function() {\n+                                return startOperation(this);\n+                            },\n+                            endOperation: function() {\n+                                return endOperation(this);\n+                            },\n+                            refresh: methodOp(function() {\n+                                var oldHeight = this.display.cachedTextHeight;\n+                                regChange(this);\n+                                this.curOp.forceUpdate = true;\n+                                clearCaches(this);\n+                                scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n+                                updateGutterSpace(this.display);\n+                                if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping) {\n+                                    estimateLineHeights(this);\n+                                }\n+                                signal(this, \"refresh\", this);\n+                            }),\n+                            swapDoc: methodOp(function(doc) {\n+                                var old = this.doc;\n+                                old.cm = null;\n+                                // Cancel the current text selection if any (#5821)\n+                                if (this.state.selectingText) {\n+                                    this.state.selectingText();\n+                                }\n+                                attachDoc(this, doc);\n+                                clearCaches(this);\n+                                this.display.input.reset();\n+                                scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n+                                this.curOp.forceScroll = true;\n+                                signalLater(this, \"swapDoc\", this, old);\n+                                return old;\n+                            }),\n+                            phrase: function(phraseText) {\n+                                var phrases = this.options.phrases;\n+                                return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText;\n+                            },\n+                            getInputField: function() {\n+                                return this.display.input.getField();\n+                            },\n+                            getWrapperElement: function() {\n+                                return this.display.wrapper;\n+                            },\n+                            getScrollerElement: function() {\n+                                return this.display.scroller;\n+                            },\n+                            getGutterElement: function() {\n+                                return this.display.gutters;\n+                            }\n+                        };\n+                        eventMixin(CodeMirror);\n+                        CodeMirror.registerHelper = function(type, name, value) {\n+                            if (!helpers.hasOwnProperty(type)) {\n+                                helpers[type] = CodeMirror[type] = {\n+                                    _global: []\n+                                };\n+                            }\n+                            helpers[type][name] = value;\n+                        };\n+                        CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n+                            CodeMirror.registerHelper(type, name, value);\n+                            helpers[type]._global.push({\n+                                pred: predicate,\n+                                val: value\n+                            });\n+                        };\n+                    }\n+\n+                    // Used for horizontal relative motion. Dir is -1 or 1 (left or\n+                    // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n+                    // doesn't cross line boundaries), \"word\" (across next word), or\n+                    // \"group\" (to the start of next group of word or\n+                    // non-word-non-whitespace chars). The visually param controls\n+                    // whether, in right-to-left text, direction 1 means to move towards\n+                    // the next index in the string, or towards the character to the right\n+                    // of the current position. The resulting position will have a\n+                    // hitSide=true property if it reached the end of the document.\n+                    function findPosH(doc, pos, dir, unit, visually) {\n+                        var oldPos = pos;\n+                        var origDir = dir;\n+                        var lineObj = getLine(doc, pos.line);\n+                        var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n+\n+                        function findNextLine() {\n+                            var l = pos.line + lineDir;\n+                            if (l < doc.first || l >= doc.first + doc.size) {\n+                                return false;\n+                            }\n+                            pos = new Pos(l, pos.ch, pos.sticky);\n+                            return lineObj = getLine(doc, l);\n+                        }\n+\n+                        function moveOnce(boundToLine) {\n+                            var next;\n+                            if (unit == \"codepoint\") {\n+                                var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n+                                if (isNaN(ch)) {\n+                                    next = null;\n+                                } else {\n+                                    var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n+                                    next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n+                                }\n+                            } else if (visually) {\n+                                next = moveVisually(doc.cm, lineObj, pos, dir);\n+                            } else {\n+                                next = moveLogically(lineObj, pos, dir);\n+                            }\n+                            if (next == null) {\n+                                if (!boundToLine && findNextLine()) {\n+                                    pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir);\n+                                } else {\n+                                    return false;\n+                                }\n+                            } else {\n+                                pos = next;\n+                            }\n+                            return true;\n+                        }\n+                        if (unit == \"char\" || unit == \"codepoint\") {\n+                            moveOnce();\n+                        } else if (unit == \"column\") {\n+                            moveOnce(true);\n+                        } else if (unit == \"word\" || unit == \"group\") {\n+                            var sawType = null,\n+                                group = unit == \"group\";\n+                            var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n+                            for (var first = true;; first = false) {\n+                                if (dir < 0 && !moveOnce(!first)) {\n+                                    break;\n+                                }\n+                                var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n+                                var type = isWordChar(cur, helper) ? \"w\" : group && cur == \"\\n\" ? \"n\" : !group || /\\s/.test(cur) ? null : \"p\";\n+                                if (group && !first && !type) {\n+                                    type = \"s\";\n+                                }\n+                                if (sawType && sawType != type) {\n+                                    if (dir < 0) {\n+                                        dir = 1;\n+                                        moveOnce();\n+                                        pos.sticky = \"after\";\n+                                    }\n+                                    break;\n+                                }\n+                                if (type) {\n+                                    sawType = type;\n+                                }\n+                                if (dir > 0 && !moveOnce(!first)) {\n+                                    break;\n+                                }\n+                            }\n+                        }\n+                        var result = skipAtomic(doc, pos, oldPos, origDir, true);\n+                        if (equalCursorPos(oldPos, result)) {\n+                            result.hitSide = true;\n+                        }\n+                        return result;\n+                    }\n+\n+                    // For relative vertical movement. Dir may be -1 or 1. Unit can be\n+                    // \"page\" or \"line\". The resulting position will have a hitSide=true\n+                    // property if it reached the end of the document.\n+                    function findPosV(cm, pos, dir, unit) {\n+                        var doc = cm.doc,\n+                            x = pos.left,\n+                            y;\n+                        if (unit == \"page\") {\n+                            var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n+                            var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n+                            y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n+                        } else if (unit == \"line\") {\n+                            y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n+                        }\n+                        var target;\n+                        for (;;) {\n+                            target = coordsChar(cm, x, y);\n+                            if (!target.outside) {\n+                                break;\n+                            }\n+                            if (dir < 0 ? y <= 0 : y >= doc.height) {\n+                                target.hitSide = true;\n+                                break;\n+                            }\n+                            y += dir * 5;\n+                        }\n+                        return target;\n+                    }\n+\n+                    // CONTENTEDITABLE INPUT STYLE\n+\n+                    var ContentEditableInput = function(cm) {\n+                        this.cm = cm;\n+                        this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n+                        this.polling = new Delayed();\n+                        this.composing = null;\n+                        this.gracePeriod = false;\n+                        this.readDOMTimeout = null;\n+                    };\n+                    ContentEditableInput.prototype.init = function(display) {\n+                        var this$1 = this;\n+                        var input = this,\n+                            cm = input.cm;\n+                        var div = input.div = display.lineDiv;\n+                        div.contentEditable = true;\n+                        disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n+\n+                        function belongsToInput(e) {\n+                            for (var t = e.target; t; t = t.parentNode) {\n+                                if (t == div) {\n+                                    return true;\n+                                }\n+                                if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) {\n+                                    break;\n+                                }\n+                            }\n+                            return false;\n+                        }\n+                        on(div, \"paste\", function(e) {\n+                            if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n+                                return;\n+                            }\n+                            // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n+                            if (ie_version <= 11) {\n+                                setTimeout(operation(cm, function() {\n+                                    return this$1.updateFromDOM();\n+                                }), 20);\n+                            }\n+                        });\n+                        on(div, \"compositionstart\", function(e) {\n+                            this$1.composing = {\n+                                data: e.data,\n+                                done: false\n+                            };\n+                        });\n+                        on(div, \"compositionupdate\", function(e) {\n+                            if (!this$1.composing) {\n+                                this$1.composing = {\n+                                    data: e.data,\n+                                    done: false\n+                                };\n+                            }\n+                        });\n+                        on(div, \"compositionend\", function(e) {\n+                            if (this$1.composing) {\n+                                if (e.data != this$1.composing.data) {\n+                                    this$1.readFromDOMSoon();\n+                                }\n+                                this$1.composing.done = true;\n+                            }\n+                        });\n+                        on(div, \"touchstart\", function() {\n+                            return input.forceCompositionEnd();\n+                        });\n+                        on(div, \"input\", function() {\n+                            if (!this$1.composing) {\n+                                this$1.readFromDOMSoon();\n+                            }\n+                        });\n+\n+                        function onCopyCut(e) {\n+                            if (!belongsToInput(e) || signalDOMEvent(cm, e)) {\n+                                return;\n+                            }\n+                            if (cm.somethingSelected()) {\n+                                setLastCopied({\n+                                    lineWise: false,\n+                                    text: cm.getSelections()\n+                                });\n+                                if (e.type == \"cut\") {\n+                                    cm.replaceSelection(\"\", null, \"cut\");\n+                                }\n+                            } else if (!cm.options.lineWiseCopyCut) {\n+                                return;\n+                            } else {\n+                                var ranges = copyableRanges(cm);\n+                                setLastCopied({\n+                                    lineWise: true,\n+                                    text: ranges.text\n+                                });\n+                                if (e.type == \"cut\") {\n+                                    cm.operation(function() {\n+                                        cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n+                                        cm.replaceSelection(\"\", null, \"cut\");\n+                                    });\n+                                }\n+                            }\n+                            if (e.clipboardData) {\n+                                e.clipboardData.clearData();\n+                                var content = lastCopied.text.join(\"\\n\");\n+                                // iOS exposes the clipboard API, but seems to discard content inserted into it\n+                                e.clipboardData.setData(\"Text\", content);\n+                                if (e.clipboardData.getData(\"Text\") == content) {\n+                                    e.preventDefault();\n+                                    return;\n+                                }\n+                            }\n+                            // Old-fashioned briefly-focus-a-textarea hack\n+                            var kludge = hiddenTextarea(),\n+                                te = kludge.firstChild;\n+                            cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n+                            te.value = lastCopied.text.join(\"\\n\");\n+                            var hadFocus = activeElt();\n+                            selectInput(te);\n+                            setTimeout(function() {\n+                                cm.display.lineSpace.removeChild(kludge);\n+                                hadFocus.focus();\n+                                if (hadFocus == div) {\n+                                    input.showPrimarySelection();\n+                                }\n+                            }, 50);\n+                        }\n+                        on(div, \"copy\", onCopyCut);\n+                        on(div, \"cut\", onCopyCut);\n+                    };\n+                    ContentEditableInput.prototype.screenReaderLabelChanged = function(label) {\n+                        // Label for screenreaders, accessibility\n+                        if (label) {\n+                            this.div.setAttribute('aria-label', label);\n+                        } else {\n+                            this.div.removeAttribute('aria-label');\n+                        }\n+                    };\n+                    ContentEditableInput.prototype.prepareSelection = function() {\n+                        var result = prepareSelection(this.cm, false);\n+                        result.focus = activeElt() == this.div;\n+                        return result;\n+                    };\n+                    ContentEditableInput.prototype.showSelection = function(info, takeFocus) {\n+                        if (!info || !this.cm.display.view.length) {\n+                            return;\n+                        }\n+                        if (info.focus || takeFocus) {\n+                            this.showPrimarySelection();\n+                        }\n+                        this.showMultipleSelections(info);\n+                    };\n+                    ContentEditableInput.prototype.getSelection = function() {\n+                        return this.cm.display.wrapper.ownerDocument.getSelection();\n+                    };\n+                    ContentEditableInput.prototype.showPrimarySelection = function() {\n+                        var sel = this.getSelection(),\n+                            cm = this.cm,\n+                            prim = cm.doc.sel.primary();\n+                        var from = prim.from(),\n+                            to = prim.to();\n+                        if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n+                            sel.removeAllRanges();\n+                            return;\n+                        }\n+                        var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n+                        var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n+                        if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && cmp(minPos(curAnchor, curFocus), from) == 0 && cmp(maxPos(curAnchor, curFocus), to) == 0) {\n+                            return;\n+                        }\n+                        var view = cm.display.view;\n+                        var start = from.line >= cm.display.viewFrom && posToDOM(cm, from) || {\n+                            node: view[0].measure.map[2],\n+                            offset: 0\n+                        };\n+                        var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n+                        if (!end) {\n+                            var measure = view[view.length - 1].measure;\n+                            var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n+                            end = {\n+                                node: map[map.length - 1],\n+                                offset: map[map.length - 2] - map[map.length - 3]\n+                            };\n+                        }\n+                        if (!start || !end) {\n+                            sel.removeAllRanges();\n+                            return;\n+                        }\n+                        var old = sel.rangeCount && sel.getRangeAt(0),\n+                            rng;\n+                        try {\n+                            rng = range(start.node, start.offset, end.offset, end.node);\n+                        } catch (e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n+                        if (rng) {\n+                            if (!gecko && cm.state.focused) {\n+                                sel.collapse(start.node, start.offset);\n+                                if (!rng.collapsed) {\n+                                    sel.removeAllRanges();\n+                                    sel.addRange(rng);\n+                                }\n+                            } else {\n+                                sel.removeAllRanges();\n+                                sel.addRange(rng);\n+                            }\n+                            if (old && sel.anchorNode == null) {\n+                                sel.addRange(old);\n+                            } else if (gecko) {\n+                                this.startGracePeriod();\n+                            }\n+                        }\n+                        this.rememberSelection();\n+                    };\n+                    ContentEditableInput.prototype.startGracePeriod = function() {\n+                        var this$1 = this;\n+                        clearTimeout(this.gracePeriod);\n+                        this.gracePeriod = setTimeout(function() {\n+                            this$1.gracePeriod = false;\n+                            if (this$1.selectionChanged()) {\n+                                this$1.cm.operation(function() {\n+                                    return this$1.cm.curOp.selectionChanged = true;\n+                                });\n+                            }\n+                        }, 20);\n+                    };\n+                    ContentEditableInput.prototype.showMultipleSelections = function(info) {\n+                        removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n+                        removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n+                    };\n+                    ContentEditableInput.prototype.rememberSelection = function() {\n+                        var sel = this.getSelection();\n+                        this.lastAnchorNode = sel.anchorNode;\n+                        this.lastAnchorOffset = sel.anchorOffset;\n+                        this.lastFocusNode = sel.focusNode;\n+                        this.lastFocusOffset = sel.focusOffset;\n+                    };\n+                    ContentEditableInput.prototype.selectionInEditor = function() {\n+                        var sel = this.getSelection();\n+                        if (!sel.rangeCount) {\n+                            return false;\n+                        }\n+                        var node = sel.getRangeAt(0).commonAncestorContainer;\n+                        return contains(this.div, node);\n+                    };\n+                    ContentEditableInput.prototype.focus = function() {\n+                        if (this.cm.options.readOnly != \"nocursor\") {\n+                            if (!this.selectionInEditor() || activeElt() != this.div) {\n+                                this.showSelection(this.prepareSelection(), true);\n+                            }\n+                            this.div.focus();\n+                        }\n+                    };\n+                    ContentEditableInput.prototype.blur = function() {\n+                        this.div.blur();\n+                    };\n+                    ContentEditableInput.prototype.getField = function() {\n+                        return this.div;\n+                    };\n+                    ContentEditableInput.prototype.supportsTouch = function() {\n+                        return true;\n+                    };\n+                    ContentEditableInput.prototype.receivedFocus = function() {\n+                        var this$1 = this;\n+                        var input = this;\n+                        if (this.selectionInEditor()) {\n+                            setTimeout(function() {\n+                                return this$1.pollSelection();\n+                            }, 20);\n+                        } else {\n+                            runInOp(this.cm, function() {\n+                                return input.cm.curOp.selectionChanged = true;\n+                            });\n+                        }\n+\n+                        function poll() {\n+                            if (input.cm.state.focused) {\n+                                input.pollSelection();\n+                                input.polling.set(input.cm.options.pollInterval, poll);\n+                            }\n+                        }\n+                        this.polling.set(this.cm.options.pollInterval, poll);\n+                    };\n+                    ContentEditableInput.prototype.selectionChanged = function() {\n+                        var sel = this.getSelection();\n+                        return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset;\n+                    };\n+                    ContentEditableInput.prototype.pollSelection = function() {\n+                        if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) {\n+                            return;\n+                        }\n+                        var sel = this.getSelection(),\n+                            cm = this.cm;\n+                        // On Android Chrome (version 56, at least), backspacing into an\n+                        // uneditable block element will put the cursor in that element,\n+                        // and then, because it's not editable, hide the virtual keyboard.\n+                        // Because Android doesn't allow us to actually detect backspace\n+                        // presses in a sane way, this code checks for when that happens\n+                        // and simulates a backspace press in this case.\n+                        if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n+                            this.cm.triggerOnKeyDown({\n+                                type: \"keydown\",\n+                                keyCode: 8,\n+                                preventDefault: Math.abs\n+                            });\n+                            this.blur();\n+                            this.focus();\n+                            return;\n+                        }\n+                        if (this.composing) {\n+                            return;\n+                        }\n+                        this.rememberSelection();\n+                        var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n+                        var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n+                        if (anchor && head) {\n+                            runInOp(cm, function() {\n+                                setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n+                                if (anchor.bad || head.bad) {\n+                                    cm.curOp.selectionChanged = true;\n+                                }\n+                            });\n+                        }\n+                    };\n+                    ContentEditableInput.prototype.pollContent = function() {\n+                        if (this.readDOMTimeout != null) {\n+                            clearTimeout(this.readDOMTimeout);\n+                            this.readDOMTimeout = null;\n+                        }\n+                        var cm = this.cm,\n+                            display = cm.display,\n+                            sel = cm.doc.sel.primary();\n+                        var from = sel.from(),\n+                            to = sel.to();\n+                        if (from.ch == 0 && from.line > cm.firstLine()) {\n+                            from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length);\n+                        }\n+                        if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) {\n+                            to = Pos(to.line + 1, 0);\n+                        }\n+                        if (from.line < display.viewFrom || to.line > display.viewTo - 1) {\n+                            return false;\n+                        }\n+                        var fromIndex, fromLine, fromNode;\n+                        if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n+                            fromLine = lineNo(display.view[0].line);\n+                            fromNode = display.view[0].node;\n+                        } else {\n+                            fromLine = lineNo(display.view[fromIndex].line);\n+                            fromNode = display.view[fromIndex - 1].node.nextSibling;\n+                        }\n+                        var toIndex = findViewIndex(cm, to.line);\n+                        var toLine, toNode;\n+                        if (toIndex == display.view.length - 1) {\n+                            toLine = display.viewTo - 1;\n+                            toNode = display.lineDiv.lastChild;\n+                        } else {\n+                            toLine = lineNo(display.view[toIndex + 1].line) - 1;\n+                            toNode = display.view[toIndex + 1].node.previousSibling;\n+                        }\n+                        if (!fromNode) {\n+                            return false;\n+                        }\n+                        var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n+                        var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n+                        while (newText.length > 1 && oldText.length > 1) {\n+                            if (lst(newText) == lst(oldText)) {\n+                                newText.pop();\n+                                oldText.pop();\n+                                toLine--;\n+                            } else if (newText[0] == oldText[0]) {\n+                                newText.shift();\n+                                oldText.shift();\n+                                fromLine++;\n+                            } else {\n+                                break;\n+                            }\n+                        }\n+                        var cutFront = 0,\n+                            cutEnd = 0;\n+                        var newTop = newText[0],\n+                            oldTop = oldText[0],\n+                            maxCutFront = Math.min(newTop.length, oldTop.length);\n+                        while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) {\n+                            ++cutFront;\n+                        }\n+                        var newBot = lst(newText),\n+                            oldBot = lst(oldText);\n+                        var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), oldBot.length - (oldText.length == 1 ? cutFront : 0));\n+                        while (cutEnd < maxCutEnd && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n+                            ++cutEnd;\n+                        }\n+                        // Try to move start of change to start of selection if ambiguous\n+                        if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n+                            while (cutFront && cutFront > from.ch && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n+                                cutFront--;\n+                                cutEnd++;\n+                            }\n+                        }\n+                        newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n+                        newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n+                        var chFrom = Pos(fromLine, cutFront);\n+                        var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n+                        if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n+                            replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n+                            return true;\n+                        }\n+                    };\n+                    ContentEditableInput.prototype.ensurePolled = function() {\n+                        this.forceCompositionEnd();\n+                    };\n+                    ContentEditableInput.prototype.reset = function() {\n+                        this.forceCompositionEnd();\n+                    };\n+                    ContentEditableInput.prototype.forceCompositionEnd = function() {\n+                        if (!this.composing) {\n+                            return;\n+                        }\n+                        clearTimeout(this.readDOMTimeout);\n+                        this.composing = null;\n+                        this.updateFromDOM();\n+                        this.div.blur();\n+                        this.div.focus();\n+                    };\n+                    ContentEditableInput.prototype.readFromDOMSoon = function() {\n+                        var this$1 = this;\n+                        if (this.readDOMTimeout != null) {\n+                            return;\n+                        }\n+                        this.readDOMTimeout = setTimeout(function() {\n+                            this$1.readDOMTimeout = null;\n+                            if (this$1.composing) {\n+                                if (this$1.composing.done) {\n+                                    this$1.composing = null;\n+                                } else {\n+                                    return;\n+                                }\n+                            }\n+                            this$1.updateFromDOM();\n+                        }, 80);\n+                    };\n+                    ContentEditableInput.prototype.updateFromDOM = function() {\n+                        var this$1 = this;\n+                        if (this.cm.isReadOnly() || !this.pollContent()) {\n+                            runInOp(this.cm, function() {\n+                                return regChange(this$1.cm);\n+                            });\n+                        }\n+                    };\n+                    ContentEditableInput.prototype.setUneditable = function(node) {\n+                        node.contentEditable = \"false\";\n+                    };\n+                    ContentEditableInput.prototype.onKeyPress = function(e) {\n+                        if (e.charCode == 0 || this.composing) {\n+                            return;\n+                        }\n+                        e.preventDefault();\n+                        if (!this.cm.isReadOnly()) {\n+                            operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0);\n+                        }\n+                    };\n+                    ContentEditableInput.prototype.readOnlyChanged = function(val) {\n+                        this.div.contentEditable = String(val != \"nocursor\");\n+                    };\n+                    ContentEditableInput.prototype.onContextMenu = function() {};\n+                    ContentEditableInput.prototype.resetPosition = function() {};\n+                    ContentEditableInput.prototype.needsContentAttribute = true;\n+\n+                    function posToDOM(cm, pos) {\n+                        var view = findViewForLine(cm, pos.line);\n+                        if (!view || view.hidden) {\n+                            return null;\n+                        }\n+                        var line = getLine(cm.doc, pos.line);\n+                        var info = mapFromLineView(view, line, pos.line);\n+                        var order = getOrder(line, cm.doc.direction),\n+                            side = \"left\";\n+                        if (order) {\n+                            var partPos = getBidiPartAt(order, pos.ch);\n+                            side = partPos % 2 ? \"right\" : \"left\";\n+                        }\n+                        var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n+                        result.offset = result.collapse == \"right\" ? result.end : result.start;\n+                        return result;\n+                    }\n+\n+                    function isInGutter(node) {\n+                        for (var scan = node; scan; scan = scan.parentNode) {\n+                            if (/CodeMirror-gutter-wrapper/.test(scan.className)) {\n+                                return true;\n+                            }\n+                        }\n+                        return false;\n+                    }\n+\n+                    function badPos(pos, bad) {\n+                        if (bad) {\n+                            pos.bad = true;\n+                        }\n+                        return pos;\n+                    }\n+\n+                    function domTextBetween(cm, from, to, fromLine, toLine) {\n+                        var text = \"\",\n+                            closing = false,\n+                            lineSep = cm.doc.lineSeparator(),\n+                            extraLinebreak = false;\n+\n+                        function recognizeMarker(id) {\n+                            return function(marker) {\n+                                return marker.id == id;\n+                            };\n+                        }\n+\n+                        function close() {\n+                            if (closing) {\n+                                text += lineSep;\n+                                if (extraLinebreak) {\n+                                    text += lineSep;\n+                                }\n+                                closing = extraLinebreak = false;\n+                            }\n+                        }\n+\n+                        function addText(str) {\n+                            if (str) {\n+                                close();\n+                                text += str;\n+                            }\n+                        }\n+\n+                        function walk(node) {\n+                            if (node.nodeType == 1) {\n+                                var cmText = node.getAttribute(\"cm-text\");\n+                                if (cmText) {\n+                                    addText(cmText);\n+                                    return;\n+                                }\n+                                var markerID = node.getAttribute(\"cm-marker\"),\n+                                    range;\n+                                if (markerID) {\n+                                    var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n+                                    if (found.length && (range = found[0].find(0))) {\n+                                        addText(getBetween(cm.doc, range.from, range.to).join(lineSep));\n+                                    }\n+                                    return;\n+                                }\n+                                if (node.getAttribute(\"contenteditable\") == \"false\") {\n+                                    return;\n+                                }\n+                                var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n+                                if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) {\n+                                    return;\n+                                }\n+                                if (isBlock) {\n+                                    close();\n+                                }\n+                                for (var i = 0; i < node.childNodes.length; i++) {\n+                                    walk(node.childNodes[i]);\n+                                }\n+                                if (/^(pre|p)$/i.test(node.nodeName)) {\n+                                    extraLinebreak = true;\n+                                }\n+                                if (isBlock) {\n+                                    closing = true;\n+                                }\n+                            } else if (node.nodeType == 3) {\n+                                addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n+                            }\n+                        }\n+                        for (;;) {\n+                            walk(from);\n+                            if (from == to) {\n+                                break;\n+                            }\n+                            from = from.nextSibling;\n+                            extraLinebreak = false;\n+                        }\n+                        return text;\n+                    }\n+\n+                    function domToPos(cm, node, offset) {\n+                        var lineNode;\n+                        if (node == cm.display.lineDiv) {\n+                            lineNode = cm.display.lineDiv.childNodes[offset];\n+                            if (!lineNode) {\n+                                return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true);\n+                            }\n+                            node = null;\n+                            offset = 0;\n+                        } else {\n+                            for (lineNode = node;; lineNode = lineNode.parentNode) {\n+                                if (!lineNode || lineNode == cm.display.lineDiv) {\n+                                    return null;\n+                                }\n+                                if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) {\n+                                    break;\n+                                }\n+                            }\n+                        }\n+                        for (var i = 0; i < cm.display.view.length; i++) {\n+                            var lineView = cm.display.view[i];\n+                            if (lineView.node == lineNode) {\n+                                return locateNodeInLineView(lineView, node, offset);\n+                            }\n+                        }\n+                    }\n+\n+                    function locateNodeInLineView(lineView, node, offset) {\n+                        var wrapper = lineView.text.firstChild,\n+                            bad = false;\n+                        if (!node || !contains(wrapper, node)) {\n+                            return badPos(Pos(lineNo(lineView.line), 0), true);\n+                        }\n+                        if (node == wrapper) {\n+                            bad = true;\n+                            node = wrapper.childNodes[offset];\n+                            offset = 0;\n+                            if (!node) {\n+                                var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n+                                return badPos(Pos(lineNo(line), line.text.length), bad);\n+                            }\n+                        }\n+                        var textNode = node.nodeType == 3 ? node : null,\n+                            topNode = node;\n+                        if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n+                            textNode = node.firstChild;\n+                            if (offset) {\n+                                offset = textNode.nodeValue.length;\n+                            }\n+                        }\n+                        while (topNode.parentNode != wrapper) {\n+                            topNode = topNode.parentNode;\n+                        }\n+                        var measure = lineView.measure,\n+                            maps = measure.maps;\n+\n+                        function find(textNode, topNode, offset) {\n+                            for (var i = -1; i < (maps ? maps.length : 0); i++) {\n+                                var map = i < 0 ? measure.map : maps[i];\n+                                for (var j = 0; j < map.length; j += 3) {\n+                                    var curNode = map[j + 2];\n+                                    if (curNode == textNode || curNode == topNode) {\n+                                        var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n+                                        var ch = map[j] + offset;\n+                                        if (offset < 0 || curNode != textNode) {\n+                                            ch = map[j + (offset ? 1 : 0)];\n+                                        }\n+                                        return Pos(line, ch);\n+                                    }\n+                                }\n+                            }\n+                        }\n+                        var found = find(textNode, topNode, offset);\n+                        if (found) {\n+                            return badPos(found, bad);\n+                        }\n+\n+                        // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n+                        for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n+                            found = find(after, after.firstChild, 0);\n+                            if (found) {\n+                                return badPos(Pos(found.line, found.ch - dist), bad);\n+                            } else {\n+                                dist += after.textContent.length;\n+                            }\n+                        }\n+                        for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n+                            found = find(before, before.firstChild, -1);\n+                            if (found) {\n+                                return badPos(Pos(found.line, found.ch + dist$1), bad);\n+                            } else {\n+                                dist$1 += before.textContent.length;\n+                            }\n+                        }\n+                    }\n+\n+                    // TEXTAREA INPUT STYLE\n+\n+                    var TextareaInput = function(cm) {\n+                        this.cm = cm;\n+                        // See input.poll and input.reset\n+                        this.prevInput = \"\";\n+\n+                        // Flag that indicates whether we expect input to appear real soon\n+                        // now (after some event like 'keypress' or 'input') and are\n+                        // polling intensively.\n+                        this.pollingFast = false;\n+                        // Self-resetting timeout for the poller\n+                        this.polling = new Delayed();\n+                        // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n+                        this.hasSelection = false;\n+                        this.composing = null;\n+                    };\n+                    TextareaInput.prototype.init = function(display) {\n+                        var this$1 = this;\n+                        var input = this,\n+                            cm = this.cm;\n+                        this.createField(display);\n+                        var te = this.textarea;\n+                        display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n+\n+                        // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n+                        if (ios) {\n+                            te.style.width = \"0px\";\n+                        }\n+                        on(te, \"input\", function() {\n+                            if (ie && ie_version >= 9 && this$1.hasSelection) {\n+                                this$1.hasSelection = null;\n+                            }\n+                            input.poll();\n+                        });\n+                        on(te, \"paste\", function(e) {\n+                            if (signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n+                                return;\n+                            }\n+                            cm.state.pasteIncoming = +new Date();\n+                            input.fastPoll();\n+                        });\n+\n+                        function prepareCopyCut(e) {\n+                            if (signalDOMEvent(cm, e)) {\n+                                return;\n+                            }\n+                            if (cm.somethingSelected()) {\n+                                setLastCopied({\n+                                    lineWise: false,\n+                                    text: cm.getSelections()\n+                                });\n+                            } else if (!cm.options.lineWiseCopyCut) {\n+                                return;\n+                            } else {\n+                                var ranges = copyableRanges(cm);\n+                                setLastCopied({\n+                                    lineWise: true,\n+                                    text: ranges.text\n+                                });\n+                                if (e.type == \"cut\") {\n+                                    cm.setSelections(ranges.ranges, null, sel_dontScroll);\n+                                } else {\n+                                    input.prevInput = \"\";\n+                                    te.value = ranges.text.join(\"\\n\");\n+                                    selectInput(te);\n+                                }\n+                            }\n+                            if (e.type == \"cut\") {\n+                                cm.state.cutIncoming = +new Date();\n+                            }\n+                        }\n+                        on(te, \"cut\", prepareCopyCut);\n+                        on(te, \"copy\", prepareCopyCut);\n+                        on(display.scroller, \"paste\", function(e) {\n+                            if (eventInWidget(display, e) || signalDOMEvent(cm, e)) {\n+                                return;\n+                            }\n+                            if (!te.dispatchEvent) {\n+                                cm.state.pasteIncoming = +new Date();\n+                                input.focus();\n+                                return;\n+                            }\n+\n+                            // Pass the `paste` event to the textarea so it's handled by its event listener.\n+                            var event = new Event(\"paste\");\n+                            event.clipboardData = e.clipboardData;\n+                            te.dispatchEvent(event);\n+                        });\n+\n+                        // Prevent normal selection in the editor (we handle our own)\n+                        on(display.lineSpace, \"selectstart\", function(e) {\n+                            if (!eventInWidget(display, e)) {\n+                                e_preventDefault(e);\n+                            }\n+                        });\n+                        on(te, \"compositionstart\", function() {\n+                            var start = cm.getCursor(\"from\");\n+                            if (input.composing) {\n+                                input.composing.range.clear();\n+                            }\n+                            input.composing = {\n+                                start: start,\n+                                range: cm.markText(start, cm.getCursor(\"to\"), {\n+                                    className: \"CodeMirror-composing\"\n+                                })\n+                            };\n+                        });\n+                        on(te, \"compositionend\", function() {\n+                            if (input.composing) {\n+                                input.poll();\n+                                input.composing.range.clear();\n+                                input.composing = null;\n+                            }\n+                        });\n+                    };\n+                    TextareaInput.prototype.createField = function(_display) {\n+                        // Wraps and hides input textarea\n+                        this.wrapper = hiddenTextarea();\n+                        // The semihidden textarea that is focused when the editor is\n+                        // focused, and receives input.\n+                        this.textarea = this.wrapper.firstChild;\n+                    };\n+                    TextareaInput.prototype.screenReaderLabelChanged = function(label) {\n+                        // Label for screenreaders, accessibility\n+                        if (label) {\n+                            this.textarea.setAttribute('aria-label', label);\n+                        } else {\n+                            this.textarea.removeAttribute('aria-label');\n+                        }\n+                    };\n+                    TextareaInput.prototype.prepareSelection = function() {\n+                        // Redraw the selection and/or cursor\n+                        var cm = this.cm,\n+                            display = cm.display,\n+                            doc = cm.doc;\n+                        var result = prepareSelection(cm);\n+\n+                        // Move the hidden textarea near the cursor to prevent scrolling artifacts\n+                        if (cm.options.moveInputWithCursor) {\n+                            var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n+                            var wrapOff = display.wrapper.getBoundingClientRect(),\n+                                lineOff = display.lineDiv.getBoundingClientRect();\n+                            result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, headPos.top + lineOff.top - wrapOff.top));\n+                            result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, headPos.left + lineOff.left - wrapOff.left));\n+                        }\n+                        return result;\n+                    };\n+                    TextareaInput.prototype.showSelection = function(drawn) {\n+                        var cm = this.cm,\n+                            display = cm.display;\n+                        removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n+                        removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n+                        if (drawn.teTop != null) {\n+                            this.wrapper.style.top = drawn.teTop + \"px\";\n+                            this.wrapper.style.left = drawn.teLeft + \"px\";\n+                        }\n+                    };\n+\n+                    // Reset the input to correspond to the selection (or to be empty,\n+                    // when not typing and nothing is selected)\n+                    TextareaInput.prototype.reset = function(typing) {\n+                        if (this.contextMenuPending || this.composing) {\n+                            return;\n+                        }\n+                        var cm = this.cm;\n+                        if (cm.somethingSelected()) {\n+                            this.prevInput = \"\";\n+                            var content = cm.getSelection();\n+                            this.textarea.value = content;\n+                            if (cm.state.focused) {\n+                                selectInput(this.textarea);\n+                            }\n+                            if (ie && ie_version >= 9) {\n+                                this.hasSelection = content;\n+                            }\n+                        } else if (!typing) {\n+                            this.prevInput = this.textarea.value = \"\";\n+                            if (ie && ie_version >= 9) {\n+                                this.hasSelection = null;\n+                            }\n+                        }\n+                    };\n+                    TextareaInput.prototype.getField = function() {\n+                        return this.textarea;\n+                    };\n+                    TextareaInput.prototype.supportsTouch = function() {\n+                        return false;\n+                    };\n+                    TextareaInput.prototype.focus = function() {\n+                        if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n+                            try {\n+                                this.textarea.focus();\n+                            } catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n+                        }\n+                    };\n+                    TextareaInput.prototype.blur = function() {\n+                        this.textarea.blur();\n+                    };\n+                    TextareaInput.prototype.resetPosition = function() {\n+                        this.wrapper.style.top = this.wrapper.style.left = 0;\n+                    };\n+                    TextareaInput.prototype.receivedFocus = function() {\n+                        this.slowPoll();\n+                    };\n+\n+                    // Poll for input changes, using the normal rate of polling. This\n+                    // runs as long as the editor is focused.\n+                    TextareaInput.prototype.slowPoll = function() {\n+                        var this$1 = this;\n+                        if (this.pollingFast) {\n+                            return;\n+                        }\n+                        this.polling.set(this.cm.options.pollInterval, function() {\n+                            this$1.poll();\n+                            if (this$1.cm.state.focused) {\n+                                this$1.slowPoll();\n+                            }\n+                        });\n+                    };\n+\n+                    // When an event has just come in that is likely to add or change\n+                    // something in the input textarea, we poll faster, to ensure that\n+                    // the change appears on the screen quickly.\n+                    TextareaInput.prototype.fastPoll = function() {\n+                        var missed = false,\n+                            input = this;\n+                        input.pollingFast = true;\n+\n+                        function p() {\n+                            var changed = input.poll();\n+                            if (!changed && !missed) {\n+                                missed = true;\n+                                input.polling.set(60, p);\n+                            } else {\n+                                input.pollingFast = false;\n+                                input.slowPoll();\n+                            }\n+                        }\n+                        input.polling.set(20, p);\n+                    };\n+\n+                    // Read input from the textarea, and update the document to match.\n+                    // When something is selected, it is present in the textarea, and\n+                    // selected (unless it is huge, in which case a placeholder is\n+                    // used). When nothing is selected, the cursor sits after previously\n+                    // seen text (can be empty), which is stored in prevInput (we must\n+                    // not reset the textarea when typing, because that breaks IME).\n+                    TextareaInput.prototype.poll = function() {\n+                        var this$1 = this;\n+                        var cm = this.cm,\n+                            input = this.textarea,\n+                            prevInput = this.prevInput;\n+                        // Since this is called a *lot*, try to bail out as cheaply as\n+                        // possible when it is clear that nothing happened. hasSelection\n+                        // will be the case when there is a lot of text in the textarea,\n+                        // in which case reading its value would be expensive.\n+                        if (this.contextMenuPending || !cm.state.focused || hasSelection(input) && !prevInput && !this.composing || cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) {\n+                            return false;\n+                        }\n+                        var text = input.value;\n+                        // If nothing changed, bail.\n+                        if (text == prevInput && !cm.somethingSelected()) {\n+                            return false;\n+                        }\n+                        // Work around nonsensical selection resetting in IE9/10, and\n+                        // inexplicable appearance of private area unicode characters on\n+                        // some key combos in Mac (#2689).\n+                        if (ie && ie_version >= 9 && this.hasSelection === text || mac && /[\\uf700-\\uf7ff]/.test(text)) {\n+                            cm.display.input.reset();\n+                            return false;\n+                        }\n+                        if (cm.doc.sel == cm.display.selForContextMenu) {\n+                            var first = text.charCodeAt(0);\n+                            if (first == 0x200b && !prevInput) {\n+                                prevInput = \"\\u200b\";\n+                            }\n+                            if (first == 0x21da) {\n+                                this.reset();\n+                                return this.cm.execCommand(\"undo\");\n+                            }\n+                        }\n+                        // Find the part of the input that is actually new\n+                        var same = 0,\n+                            l = Math.min(prevInput.length, text.length);\n+                        while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) {\n+                            ++same;\n+                        }\n+                        runInOp(cm, function() {\n+                            applyTextInput(cm, text.slice(same), prevInput.length - same, null, this$1.composing ? \"*compose\" : null);\n+\n+                            // Don't leave long text in the textarea, since it makes further polling slow\n+                            if (text.length > 1000 || text.indexOf(\"\\n\") > -1) {\n+                                input.value = this$1.prevInput = \"\";\n+                            } else {\n+                                this$1.prevInput = text;\n+                            }\n+                            if (this$1.composing) {\n+                                this$1.composing.range.clear();\n+                                this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"), {\n+                                    className: \"CodeMirror-composing\"\n+                                });\n+                            }\n+                        });\n+                        return true;\n+                    };\n+                    TextareaInput.prototype.ensurePolled = function() {\n+                        if (this.pollingFast && this.poll()) {\n+                            this.pollingFast = false;\n+                        }\n+                    };\n+                    TextareaInput.prototype.onKeyPress = function() {\n+                        if (ie && ie_version >= 9) {\n+                            this.hasSelection = null;\n+                        }\n+                        this.fastPoll();\n+                    };\n+                    TextareaInput.prototype.onContextMenu = function(e) {\n+                        var input = this,\n+                            cm = input.cm,\n+                            display = cm.display,\n+                            te = input.textarea;\n+                        if (input.contextMenuPending) {\n+                            input.contextMenuPending();\n+                        }\n+                        var pos = posFromMouse(cm, e),\n+                            scrollPos = display.scroller.scrollTop;\n+                        if (!pos || presto) {\n+                            return;\n+                        } // Opera is difficult.\n+\n+                        // Reset the current text selection only if the click is done outside of the selection\n+                        // and 'resetSelectionOnContextMenu' option is true.\n+                        var reset = cm.options.resetSelectionOnContextMenu;\n+                        if (reset && cm.doc.sel.contains(pos) == -1) {\n+                            operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);\n+                        }\n+                        var oldCSS = te.style.cssText,\n+                            oldWrapperCSS = input.wrapper.style.cssText;\n+                        var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n+                        input.wrapper.style.cssText = \"position: static\";\n+                        te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n      top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n      z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n+                        var oldScrollY;\n+                        if (webkit) {\n+                            oldScrollY = window.scrollY;\n+                        } // Work around Chrome issue (#2712)\n+                        display.input.focus();\n+                        if (webkit) {\n+                            window.scrollTo(null, oldScrollY);\n+                        }\n+                        display.input.reset();\n+                        // Adds \"Select all\" to context menu in FF\n+                        if (!cm.somethingSelected()) {\n+                            te.value = input.prevInput = \" \";\n+                        }\n+                        input.contextMenuPending = rehide;\n+                        display.selForContextMenu = cm.doc.sel;\n+                        clearTimeout(display.detectingSelectAll);\n+\n+                        // Select-all will be greyed out if there's nothing to select, so\n+                        // this adds a zero-width space so that we can later check whether\n+                        // it got selected.\n+                        function prepareSelectAllHack() {\n+                            if (te.selectionStart != null) {\n+                                var selected = cm.somethingSelected();\n+                                var extval = \"\\u200b\" + (selected ? te.value : \"\");\n+                                te.value = \"\\u21da\"; // Used to catch context-menu undo\n+                                te.value = extval;\n+                                input.prevInput = selected ? \"\" : \"\\u200b\";\n+                                te.selectionStart = 1;\n+                                te.selectionEnd = extval.length;\n+                                // Re-set this, in case some other handler touched the\n+                                // selection in the meantime.\n+                                display.selForContextMenu = cm.doc.sel;\n+                            }\n+                        }\n+\n+                        function rehide() {\n+                            if (input.contextMenuPending != rehide) {\n+                                return;\n+                            }\n+                            input.contextMenuPending = false;\n+                            input.wrapper.style.cssText = oldWrapperCSS;\n+                            te.style.cssText = oldCSS;\n+                            if (ie && ie_version < 9) {\n+                                display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos);\n+                            }\n+\n+                            // Try to detect the user choosing select-all\n+                            if (te.selectionStart != null) {\n+                                if (!ie || ie && ie_version < 9) {\n+                                    prepareSelectAllHack();\n+                                }\n+                                var i = 0,\n+                                    poll = function() {\n+                                        if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n+                                            operation(cm, selectAll)(cm);\n+                                        } else if (i++ < 10) {\n+                                            display.detectingSelectAll = setTimeout(poll, 500);\n+                                        } else {\n+                                            display.selForContextMenu = null;\n+                                            display.input.reset();\n+                                        }\n+                                    };\n+                                display.detectingSelectAll = setTimeout(poll, 200);\n+                            }\n+                        }\n+                        if (ie && ie_version >= 9) {\n+                            prepareSelectAllHack();\n+                        }\n+                        if (captureRightClick) {\n+                            e_stop(e);\n+                            var mouseup = function() {\n+                                off(window, \"mouseup\", mouseup);\n+                                setTimeout(rehide, 20);\n+                            };\n+                            on(window, \"mouseup\", mouseup);\n+                        } else {\n+                            setTimeout(rehide, 50);\n+                        }\n+                    };\n+                    TextareaInput.prototype.readOnlyChanged = function(val) {\n+                        if (!val) {\n+                            this.reset();\n+                        }\n+                        this.textarea.disabled = val == \"nocursor\";\n+                        this.textarea.readOnly = !!val;\n+                    };\n+                    TextareaInput.prototype.setUneditable = function() {};\n+                    TextareaInput.prototype.needsContentAttribute = false;\n+\n+                    function fromTextArea(textarea, options) {\n+                        options = options ? copyObj(options) : {};\n+                        options.value = textarea.value;\n+                        if (!options.tabindex && textarea.tabIndex) {\n+                            options.tabindex = textarea.tabIndex;\n+                        }\n+                        if (!options.placeholder && textarea.placeholder) {\n+                            options.placeholder = textarea.placeholder;\n+                        }\n+                        // Set autofocus to true if this textarea is focused, or if it has\n+                        // autofocus and no other element is focused.\n+                        if (options.autofocus == null) {\n+                            var hasFocus = activeElt();\n+                            options.autofocus = hasFocus == textarea || textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n+                        }\n+\n+                        function save() {\n+                            textarea.value = cm.getValue();\n+                        }\n+                        var realSubmit;\n+                        if (textarea.form) {\n+                            on(textarea.form, \"submit\", save);\n+                            // Deplorable hack to make the submit method do the right thing.\n+                            if (!options.leaveSubmitMethodAlone) {\n+                                var form = textarea.form;\n+                                realSubmit = form.submit;\n+                                try {\n+                                    var wrappedSubmit = form.submit = function() {\n+                                        save();\n+                                        form.submit = realSubmit;\n+                                        form.submit();\n+                                        form.submit = wrappedSubmit;\n+                                    };\n+                                } catch (e) {}\n+                            }\n+                        }\n+                        options.finishInit = function(cm) {\n+                            cm.save = save;\n+                            cm.getTextArea = function() {\n+                                return textarea;\n+                            };\n+                            cm.toTextArea = function() {\n+                                cm.toTextArea = isNaN; // Prevent this from being ran twice\n+                                save();\n+                                textarea.parentNode.removeChild(cm.getWrapperElement());\n+                                textarea.style.display = \"\";\n+                                if (textarea.form) {\n+                                    off(textarea.form, \"submit\", save);\n+                                    if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\") {\n+                                        textarea.form.submit = realSubmit;\n+                                    }\n+                                }\n+                            };\n+                        };\n+                        textarea.style.display = \"none\";\n+                        var cm = CodeMirror(function(node) {\n+                            return textarea.parentNode.insertBefore(node, textarea.nextSibling);\n+                        }, options);\n+                        return cm;\n+                    }\n+\n+                    function addLegacyProps(CodeMirror) {\n+                        CodeMirror.off = off;\n+                        CodeMirror.on = on;\n+                        CodeMirror.wheelEventPixels = wheelEventPixels;\n+                        CodeMirror.Doc = Doc;\n+                        CodeMirror.splitLines = splitLinesAuto;\n+                        CodeMirror.countColumn = countColumn;\n+                        CodeMirror.findColumn = findColumn;\n+                        CodeMirror.isWordChar = isWordCharBasic;\n+                        CodeMirror.Pass = Pass;\n+                        CodeMirror.signal = signal;\n+                        CodeMirror.Line = Line;\n+                        CodeMirror.changeEnd = changeEnd;\n+                        CodeMirror.scrollbarModel = scrollbarModel;\n+                        CodeMirror.Pos = Pos;\n+                        CodeMirror.cmpPos = cmp;\n+                        CodeMirror.modes = modes;\n+                        CodeMirror.mimeModes = mimeModes;\n+                        CodeMirror.resolveMode = resolveMode;\n+                        CodeMirror.getMode = getMode;\n+                        CodeMirror.modeExtensions = modeExtensions;\n+                        CodeMirror.extendMode = extendMode;\n+                        CodeMirror.copyState = copyState;\n+                        CodeMirror.startState = startState;\n+                        CodeMirror.innerMode = innerMode;\n+                        CodeMirror.commands = commands;\n+                        CodeMirror.keyMap = keyMap;\n+                        CodeMirror.keyName = keyName;\n+                        CodeMirror.isModifierKey = isModifierKey;\n+                        CodeMirror.lookupKey = lookupKey;\n+                        CodeMirror.normalizeKeyMap = normalizeKeyMap;\n+                        CodeMirror.StringStream = StringStream;\n+                        CodeMirror.SharedTextMarker = SharedTextMarker;\n+                        CodeMirror.TextMarker = TextMarker;\n+                        CodeMirror.LineWidget = LineWidget;\n+                        CodeMirror.e_preventDefault = e_preventDefault;\n+                        CodeMirror.e_stopPropagation = e_stopPropagation;\n+                        CodeMirror.e_stop = e_stop;\n+                        CodeMirror.addClass = addClass;\n+                        CodeMirror.contains = contains;\n+                        CodeMirror.rmClass = rmClass;\n+                        CodeMirror.keyNames = keyNames;\n+                    }\n+\n+                    // EDITOR CONSTRUCTOR\n+\n+                    defineOptions(CodeMirror);\n+                    addEditorMethods(CodeMirror);\n+\n+                    // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n+                    var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n+                    for (var prop in Doc.prototype) {\n+                        if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) {\n+                            CodeMirror.prototype[prop] = function(method) {\n+                                return function() {\n+                                    return method.apply(this.doc, arguments);\n+                                };\n+                            }(Doc.prototype[prop]);\n+                        }\n+                    }\n+                    eventMixin(Doc);\n+                    CodeMirror.inputStyles = {\n+                        \"textarea\": TextareaInput,\n+                        \"contenteditable\": ContentEditableInput\n+                    };\n+\n+                    // Extra arguments are stored as the mode's dependencies, which is\n+                    // used by (legacy) mechanisms like loadmode.js to automatically\n+                    // load a mode. (Preferred mechanism is the require/define calls.)\n+                    CodeMirror.defineMode = function(name /*, mode, \u2026*/ ) {\n+                        if (!CodeMirror.defaults.mode && name != \"null\") {\n+                            CodeMirror.defaults.mode = name;\n+                        }\n+                        defineMode.apply(this, arguments);\n+                    };\n+                    CodeMirror.defineMIME = defineMIME;\n+\n+                    // Minimal default mode.\n+                    CodeMirror.defineMode(\"null\", function() {\n+                        return {\n+                            token: function(stream) {\n+                                return stream.skipToEnd();\n+                            }\n+                        };\n+                    });\n+                    CodeMirror.defineMIME(\"text/plain\", \"null\");\n+\n+                    // EXTENSIONS\n+\n+                    CodeMirror.defineExtension = function(name, func) {\n+                        CodeMirror.prototype[name] = func;\n+                    };\n+                    CodeMirror.defineDocExtension = function(name, func) {\n+                        Doc.prototype[name] = func;\n+                    };\n+                    CodeMirror.fromTextArea = fromTextArea;\n+                    addLegacyProps(CodeMirror);\n+                    CodeMirror.version = \"5.65.3\";\n+                    return CodeMirror;\n+                });\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/codemirror/mode/javascript/javascript.js\":\n+            /*!**********************************************************************!*\\\n+              !*** ../../../node_modules/codemirror/mode/javascript/javascript.js ***!\n+              \\**********************************************************************/\n+            /***/\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                // CodeMirror, copyright (c) by Marijn Haverbeke and others\n+                // Distributed under an MIT license: https://codemirror.net/LICENSE\n+\n+                (function(mod) {\n+                    if (true)\n+                        // CommonJS\n+                        mod(__webpack_require__( /*! ../../lib/codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                    else {}\n+                })(function(CodeMirror) {\n+                    \"use strict\";\n+\n+                    CodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n+                        var indentUnit = config.indentUnit;\n+                        var statementIndent = parserConfig.statementIndent;\n+                        var jsonldMode = parserConfig.jsonld;\n+                        var jsonMode = parserConfig.json || jsonldMode;\n+                        var trackScope = parserConfig.trackScope !== false;\n+                        var isTS = parserConfig.typescript;\n+                        var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n+\n+                        // Tokenizer\n+\n+                        var keywords = function() {\n+                            function kw(type) {\n+                                return {\n+                                    type: type,\n+                                    style: \"keyword\"\n+                                };\n+                            }\n+                            var A = kw(\"keyword a\"),\n+                                B = kw(\"keyword b\"),\n+                                C = kw(\"keyword c\"),\n+                                D = kw(\"keyword d\");\n+                            var operator = kw(\"operator\"),\n+                                atom = {\n+                                    type: \"atom\",\n+                                    style: \"atom\"\n+                                };\n+                            return {\n+                                \"if\": kw(\"if\"),\n+                                \"while\": A,\n+                                \"with\": A,\n+                                \"else\": B,\n+                                \"do\": B,\n+                                \"try\": B,\n+                                \"finally\": B,\n+                                \"return\": D,\n+                                \"break\": D,\n+                                \"continue\": D,\n+                                \"new\": kw(\"new\"),\n+                                \"delete\": C,\n+                                \"void\": C,\n+                                \"throw\": C,\n+                                \"debugger\": kw(\"debugger\"),\n+                                \"var\": kw(\"var\"),\n+                                \"const\": kw(\"var\"),\n+                                \"let\": kw(\"var\"),\n+                                \"function\": kw(\"function\"),\n+                                \"catch\": kw(\"catch\"),\n+                                \"for\": kw(\"for\"),\n+                                \"switch\": kw(\"switch\"),\n+                                \"case\": kw(\"case\"),\n+                                \"default\": kw(\"default\"),\n+                                \"in\": operator,\n+                                \"typeof\": operator,\n+                                \"instanceof\": operator,\n+                                \"true\": atom,\n+                                \"false\": atom,\n+                                \"null\": atom,\n+                                \"undefined\": atom,\n+                                \"NaN\": atom,\n+                                \"Infinity\": atom,\n+                                \"this\": kw(\"this\"),\n+                                \"class\": kw(\"class\"),\n+                                \"super\": kw(\"atom\"),\n+                                \"yield\": C,\n+                                \"export\": kw(\"export\"),\n+                                \"import\": kw(\"import\"),\n+                                \"extends\": C,\n+                                \"await\": C\n+                            };\n+                        }();\n+                        var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n+                        var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n+\n+                        function readRegexp(stream) {\n+                            var escaped = false,\n+                                next,\n+                                inSet = false;\n+                            while ((next = stream.next()) != null) {\n+                                if (!escaped) {\n+                                    if (next == \"/\" && !inSet) return;\n+                                    if (next == \"[\") inSet = true;\n+                                    else if (inSet && next == \"]\") inSet = false;\n+                                }\n+                                escaped = !escaped && next == \"\\\\\";\n+                            }\n+                        }\n+\n+                        // Used as scratch variables to communicate multiple values without\n+                        // consing up tons of objects.\n+                        var type, content;\n+\n+                        function ret(tp, style, cont) {\n+                            type = tp;\n+                            content = cont;\n+                            return style;\n+                        }\n+\n+                        function tokenBase(stream, state) {\n+                            var ch = stream.next();\n+                            if (ch == '\"' || ch == \"'\") {\n+                                state.tokenize = tokenString(ch);\n+                                return state.tokenize(stream, state);\n+                            } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n+                                return ret(\"number\", \"number\");\n+                            } else if (ch == \".\" && stream.match(\"..\")) {\n+                                return ret(\"spread\", \"meta\");\n+                            } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n+                                return ret(ch);\n+                            } else if (ch == \"=\" && stream.eat(\">\")) {\n+                                return ret(\"=>\", \"operator\");\n+                            } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n+                                return ret(\"number\", \"number\");\n+                            } else if (/\\d/.test(ch)) {\n+                                stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n+                                return ret(\"number\", \"number\");\n+                            } else if (ch == \"/\") {\n+                                if (stream.eat(\"*\")) {\n+                                    state.tokenize = tokenComment;\n+                                    return tokenComment(stream, state);\n+                                } else if (stream.eat(\"/\")) {\n+                                    stream.skipToEnd();\n+                                    return ret(\"comment\", \"comment\");\n+                                } else if (expressionAllowed(stream, state, 1)) {\n+                                    readRegexp(stream);\n+                                    stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n+                                    return ret(\"regexp\", \"string-2\");\n+                                } else {\n+                                    stream.eat(\"=\");\n+                                    return ret(\"operator\", \"operator\", stream.current());\n+                                }\n+                            } else if (ch == \"`\") {\n+                                state.tokenize = tokenQuasi;\n+                                return tokenQuasi(stream, state);\n+                            } else if (ch == \"#\" && stream.peek() == \"!\") {\n+                                stream.skipToEnd();\n+                                return ret(\"meta\", \"meta\");\n+                            } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n+                                return ret(\"variable\", \"property\");\n+                            } else if (ch == \"<\" && stream.match(\"!--\") || ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start))) {\n+                                stream.skipToEnd();\n+                                return ret(\"comment\", \"comment\");\n+                            } else if (isOperatorChar.test(ch)) {\n+                                if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n+                                    if (stream.eat(\"=\")) {\n+                                        if (ch == \"!\" || ch == \"=\") stream.eat(\"=\");\n+                                    } else if (/[<>*+\\-|&?]/.test(ch)) {\n+                                        stream.eat(ch);\n+                                        if (ch == \">\") stream.eat(ch);\n+                                    }\n+                                }\n+                                if (ch == \"?\" && stream.eat(\".\")) return ret(\".\");\n+                                return ret(\"operator\", \"operator\", stream.current());\n+                            } else if (wordRE.test(ch)) {\n+                                stream.eatWhile(wordRE);\n+                                var word = stream.current();\n+                                if (state.lastType != \".\") {\n+                                    if (keywords.propertyIsEnumerable(word)) {\n+                                        var kw = keywords[word];\n+                                        return ret(kw.type, kw.style, word);\n+                                    }\n+                                    if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false)) return ret(\"async\", \"keyword\", word);\n+                                }\n+                                return ret(\"variable\", \"variable\", word);\n+                            }\n+                        }\n+\n+                        function tokenString(quote) {\n+                            return function(stream, state) {\n+                                var escaped = false,\n+                                    next;\n+                                if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)) {\n+                                    state.tokenize = tokenBase;\n+                                    return ret(\"jsonld-keyword\", \"meta\");\n+                                }\n+                                while ((next = stream.next()) != null) {\n+                                    if (next == quote && !escaped) break;\n+                                    escaped = !escaped && next == \"\\\\\";\n+                                }\n+                                if (!escaped) state.tokenize = tokenBase;\n+                                return ret(\"string\", \"string\");\n+                            };\n+                        }\n+\n+                        function tokenComment(stream, state) {\n+                            var maybeEnd = false,\n+                                ch;\n+                            while (ch = stream.next()) {\n+                                if (ch == \"/\" && maybeEnd) {\n+                                    state.tokenize = tokenBase;\n+                                    break;\n+                                }\n+                                maybeEnd = ch == \"*\";\n+                            }\n+                            return ret(\"comment\", \"comment\");\n+                        }\n+\n+                        function tokenQuasi(stream, state) {\n+                            var escaped = false,\n+                                next;\n+                            while ((next = stream.next()) != null) {\n+                                if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n+                                    state.tokenize = tokenBase;\n+                                    break;\n+                                }\n+                                escaped = !escaped && next == \"\\\\\";\n+                            }\n+                            return ret(\"quasi\", \"string-2\", stream.current());\n+                        }\n+                        var brackets = \"([{}])\";\n+                        // This is a crude lookahead trick to try and notice that we're\n+                        // parsing the argument patterns for a fat-arrow function before we\n+                        // actually hit the arrow token. It only works if the arrow is on\n+                        // the same line as the arguments and there's no strange noise\n+                        // (comments) in between. Fallback is to only notice when we hit the\n+                        // arrow, and not declare the arguments as locals for the arrow\n+                        // body.\n+                        function findFatArrow(stream, state) {\n+                            if (state.fatArrowAt) state.fatArrowAt = null;\n+                            var arrow = stream.string.indexOf(\"=>\", stream.start);\n+                            if (arrow < 0) return;\n+                            if (isTS) {\n+                                // Try to skip TypeScript return type declarations after the arguments\n+                                var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow));\n+                                if (m) arrow = m.index;\n+                            }\n+                            var depth = 0,\n+                                sawSomething = false;\n+                            for (var pos = arrow - 1; pos >= 0; --pos) {\n+                                var ch = stream.string.charAt(pos);\n+                                var bracket = brackets.indexOf(ch);\n+                                if (bracket >= 0 && bracket < 3) {\n+                                    if (!depth) {\n+                                        ++pos;\n+                                        break;\n+                                    }\n+                                    if (--depth == 0) {\n+                                        if (ch == \"(\") sawSomething = true;\n+                                        break;\n+                                    }\n+                                } else if (bracket >= 3 && bracket < 6) {\n+                                    ++depth;\n+                                } else if (wordRE.test(ch)) {\n+                                    sawSomething = true;\n+                                } else if (/[\"'\\/`]/.test(ch)) {\n+                                    for (;; --pos) {\n+                                        if (pos == 0) return;\n+                                        var next = stream.string.charAt(pos - 1);\n+                                        if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") {\n+                                            pos--;\n+                                            break;\n+                                        }\n+                                    }\n+                                } else if (sawSomething && !depth) {\n+                                    ++pos;\n+                                    break;\n+                                }\n+                            }\n+                            if (sawSomething && !depth) state.fatArrowAt = pos;\n+                        }\n+\n+                        // Parser\n+\n+                        var atomicTypes = {\n+                            \"atom\": true,\n+                            \"number\": true,\n+                            \"variable\": true,\n+                            \"string\": true,\n+                            \"regexp\": true,\n+                            \"this\": true,\n+                            \"import\": true,\n+                            \"jsonld-keyword\": true\n+                        };\n+\n+                        function JSLexical(indented, column, type, align, prev, info) {\n+                            this.indented = indented;\n+                            this.column = column;\n+                            this.type = type;\n+                            this.prev = prev;\n+                            this.info = info;\n+                            if (align != null) this.align = align;\n+                        }\n+\n+                        function inScope(state, varname) {\n+                            if (!trackScope) return false;\n+                            for (var v = state.localVars; v; v = v.next)\n+                                if (v.name == varname) return true;\n+                            for (var cx = state.context; cx; cx = cx.prev) {\n+                                for (var v = cx.vars; v; v = v.next)\n+                                    if (v.name == varname) return true;\n+                            }\n+                        }\n+\n+                        function parseJS(state, style, type, content, stream) {\n+                            var cc = state.cc;\n+                            // Communicate our context to the combinators.\n+                            // (Less wasteful than consing up a hundred closures on every call.)\n+                            cx.state = state;\n+                            cx.stream = stream;\n+                            cx.marked = null, cx.cc = cc;\n+                            cx.style = style;\n+                            if (!state.lexical.hasOwnProperty(\"align\")) state.lexical.align = true;\n+                            while (true) {\n+                                var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n+                                if (combinator(type, content)) {\n+                                    while (cc.length && cc[cc.length - 1].lex) cc.pop()();\n+                                    if (cx.marked) return cx.marked;\n+                                    if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n+                                    return style;\n+                                }\n+                            }\n+                        }\n+\n+                        // Combinator utils\n+\n+                        var cx = {\n+                            state: null,\n+                            column: null,\n+                            marked: null,\n+                            cc: null\n+                        };\n+\n+                        function pass() {\n+                            for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n+                        }\n+\n+                        function cont() {\n+                            pass.apply(null, arguments);\n+                            return true;\n+                        }\n+\n+                        function inList(name, list) {\n+                            for (var v = list; v; v = v.next)\n+                                if (v.name == name) return true;\n+                            return false;\n+                        }\n+\n+                        function register(varname) {\n+                            var state = cx.state;\n+                            cx.marked = \"def\";\n+                            if (!trackScope) return;\n+                            if (state.context) {\n+                                if (state.lexical.info == \"var\" && state.context && state.context.block) {\n+                                    // FIXME function decls are also not block scoped\n+                                    var newContext = registerVarScoped(varname, state.context);\n+                                    if (newContext != null) {\n+                                        state.context = newContext;\n+                                        return;\n+                                    }\n+                                } else if (!inList(varname, state.localVars)) {\n+                                    state.localVars = new Var(varname, state.localVars);\n+                                    return;\n+                                }\n+                            }\n+                            // Fall through means this is global\n+                            if (parserConfig.globalVars && !inList(varname, state.globalVars)) state.globalVars = new Var(varname, state.globalVars);\n+                        }\n+\n+                        function registerVarScoped(varname, context) {\n+                            if (!context) {\n+                                return null;\n+                            } else if (context.block) {\n+                                var inner = registerVarScoped(varname, context.prev);\n+                                if (!inner) return null;\n+                                if (inner == context.prev) return context;\n+                                return new Context(inner, context.vars, true);\n+                            } else if (inList(varname, context.vars)) {\n+                                return context;\n+                            } else {\n+                                return new Context(context.prev, new Var(varname, context.vars), false);\n+                            }\n+                        }\n+\n+                        function isModifier(name) {\n+                            return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\";\n+                        }\n+\n+                        // Combinators\n+\n+                        function Context(prev, vars, block) {\n+                            this.prev = prev;\n+                            this.vars = vars;\n+                            this.block = block;\n+                        }\n+\n+                        function Var(name, next) {\n+                            this.name = name;\n+                            this.next = next;\n+                        }\n+                        var defaultVars = new Var(\"this\", new Var(\"arguments\", null));\n+\n+                        function pushcontext() {\n+                            cx.state.context = new Context(cx.state.context, cx.state.localVars, false);\n+                            cx.state.localVars = defaultVars;\n+                        }\n+\n+                        function pushblockcontext() {\n+                            cx.state.context = new Context(cx.state.context, cx.state.localVars, true);\n+                            cx.state.localVars = null;\n+                        }\n+                        pushcontext.lex = pushblockcontext.lex = true;\n+\n+                        function popcontext() {\n+                            cx.state.localVars = cx.state.context.vars;\n+                            cx.state.context = cx.state.context.prev;\n+                        }\n+                        popcontext.lex = true;\n+\n+                        function pushlex(type, info) {\n+                            var result = function() {\n+                                var state = cx.state,\n+                                    indent = state.indented;\n+                                if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n+                                else\n+                                    for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev) indent = outer.indented;\n+                                state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n+                            };\n+                            result.lex = true;\n+                            return result;\n+                        }\n+\n+                        function poplex() {\n+                            var state = cx.state;\n+                            if (state.lexical.prev) {\n+                                if (state.lexical.type == \")\") state.indented = state.lexical.indented;\n+                                state.lexical = state.lexical.prev;\n+                            }\n+                        }\n+                        poplex.lex = true;\n+\n+                        function expect(wanted) {\n+                            function exp(type) {\n+                                if (type == wanted) return cont();\n+                                else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n+                                else return cont(exp);\n+                            };\n+                            return exp;\n+                        }\n+\n+                        function statement(type, value) {\n+                            if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n+                            if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n+                            if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n+                            if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n+                            if (type == \"debugger\") return cont(expect(\";\"));\n+                            if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n+                            if (type == \";\") return cont();\n+                            if (type == \"if\") {\n+                                if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex) cx.state.cc.pop()();\n+                                return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n+                            }\n+                            if (type == \"function\") return cont(functiondef);\n+                            if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n+                            if (type == \"class\" || isTS && value == \"interface\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex);\n+                            }\n+                            if (type == \"variable\") {\n+                                if (isTS && value == \"declare\") {\n+                                    cx.marked = \"keyword\";\n+                                    return cont(statement);\n+                                } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n+                                    cx.marked = \"keyword\";\n+                                    if (value == \"enum\") return cont(enumdef);\n+                                    else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n+                                    else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex);\n+                                } else if (isTS && value == \"namespace\") {\n+                                    cx.marked = \"keyword\";\n+                                    return cont(pushlex(\"form\"), expression, statement, poplex);\n+                                } else if (isTS && value == \"abstract\") {\n+                                    cx.marked = \"keyword\";\n+                                    return cont(statement);\n+                                } else {\n+                                    return cont(pushlex(\"stat\"), maybelabel);\n+                                }\n+                            }\n+                            if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext, block, poplex, poplex, popcontext);\n+                            if (type == \"case\") return cont(expression, expect(\":\"));\n+                            if (type == \"default\") return cont(expect(\":\"));\n+                            if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n+                            if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n+                            if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n+                            if (type == \"async\") return cont(statement);\n+                            if (value == \"@\") return cont(expression, statement);\n+                            return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n+                        }\n+\n+                        function maybeCatchBinding(type) {\n+                            if (type == \"(\") return cont(funarg, expect(\")\"));\n+                        }\n+\n+                        function expression(type, value) {\n+                            return expressionInner(type, value, false);\n+                        }\n+\n+                        function expressionNoComma(type, value) {\n+                            return expressionInner(type, value, true);\n+                        }\n+\n+                        function parenExpr(type) {\n+                            if (type != \"(\") return pass();\n+                            return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex);\n+                        }\n+\n+                        function expressionInner(type, value, noComma) {\n+                            if (cx.state.fatArrowAt == cx.stream.start) {\n+                                var body = noComma ? arrowBodyNoComma : arrowBody;\n+                                if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n+                                else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n+                            }\n+                            var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n+                            if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n+                            if (type == \"function\") return cont(functiondef, maybeop);\n+                            if (type == \"class\" || isTS && value == \"interface\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(pushlex(\"form\"), classExpression, poplex);\n+                            }\n+                            if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n+                            if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n+                            if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n+                            if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n+                            if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n+                            if (type == \"quasi\") return pass(quasi, maybeop);\n+                            if (type == \"new\") return cont(maybeTarget(noComma));\n+                            return cont();\n+                        }\n+\n+                        function maybeexpression(type) {\n+                            if (type.match(/[;\\}\\)\\],]/)) return pass();\n+                            return pass(expression);\n+                        }\n+\n+                        function maybeoperatorComma(type, value) {\n+                            if (type == \",\") return cont(maybeexpression);\n+                            return maybeoperatorNoComma(type, value, false);\n+                        }\n+\n+                        function maybeoperatorNoComma(type, value, noComma) {\n+                            var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n+                            var expr = noComma == false ? expression : expressionNoComma;\n+                            if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n+                            if (type == \"operator\") {\n+                                if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n+                                if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false)) return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n+                                if (value == \"?\") return cont(expression, expect(\":\"), expr);\n+                                return cont(expr);\n+                            }\n+                            if (type == \"quasi\") {\n+                                return pass(quasi, me);\n+                            }\n+                            if (type == \";\") return;\n+                            if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n+                            if (type == \".\") return cont(property, me);\n+                            if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n+                            if (isTS && value == \"as\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(typeexpr, me);\n+                            }\n+                            if (type == \"regexp\") {\n+                                cx.state.lastType = cx.marked = \"operator\";\n+                                cx.stream.backUp(cx.stream.pos - cx.stream.start - 1);\n+                                return cont(expr);\n+                            }\n+                        }\n+\n+                        function quasi(type, value) {\n+                            if (type != \"quasi\") return pass();\n+                            if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n+                            return cont(maybeexpression, continueQuasi);\n+                        }\n+\n+                        function continueQuasi(type) {\n+                            if (type == \"}\") {\n+                                cx.marked = \"string-2\";\n+                                cx.state.tokenize = tokenQuasi;\n+                                return cont(quasi);\n+                            }\n+                        }\n+\n+                        function arrowBody(type) {\n+                            findFatArrow(cx.stream, cx.state);\n+                            return pass(type == \"{\" ? statement : expression);\n+                        }\n+\n+                        function arrowBodyNoComma(type) {\n+                            findFatArrow(cx.stream, cx.state);\n+                            return pass(type == \"{\" ? statement : expressionNoComma);\n+                        }\n+\n+                        function maybeTarget(noComma) {\n+                            return function(type) {\n+                                if (type == \".\") return cont(noComma ? targetNoComma : target);\n+                                else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma);\n+                                else return pass(noComma ? expressionNoComma : expression);\n+                            };\n+                        }\n+\n+                        function target(_, value) {\n+                            if (value == \"target\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(maybeoperatorComma);\n+                            }\n+                        }\n+\n+                        function targetNoComma(_, value) {\n+                            if (value == \"target\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(maybeoperatorNoComma);\n+                            }\n+                        }\n+\n+                        function maybelabel(type) {\n+                            if (type == \":\") return cont(poplex, statement);\n+                            return pass(maybeoperatorComma, expect(\";\"), poplex);\n+                        }\n+\n+                        function property(type) {\n+                            if (type == \"variable\") {\n+                                cx.marked = \"property\";\n+                                return cont();\n+                            }\n+                        }\n+\n+                        function objprop(type, value) {\n+                            if (type == \"async\") {\n+                                cx.marked = \"property\";\n+                                return cont(objprop);\n+                            } else if (type == \"variable\" || cx.style == \"keyword\") {\n+                                cx.marked = \"property\";\n+                                if (value == \"get\" || value == \"set\") return cont(getterSetter);\n+                                var m; // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n+                                if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false))) cx.state.fatArrowAt = cx.stream.pos + m[0].length;\n+                                return cont(afterprop);\n+                            } else if (type == \"number\" || type == \"string\") {\n+                                cx.marked = jsonldMode ? \"property\" : cx.style + \" property\";\n+                                return cont(afterprop);\n+                            } else if (type == \"jsonld-keyword\") {\n+                                return cont(afterprop);\n+                            } else if (isTS && isModifier(value)) {\n+                                cx.marked = \"keyword\";\n+                                return cont(objprop);\n+                            } else if (type == \"[\") {\n+                                return cont(expression, maybetype, expect(\"]\"), afterprop);\n+                            } else if (type == \"spread\") {\n+                                return cont(expressionNoComma, afterprop);\n+                            } else if (value == \"*\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(objprop);\n+                            } else if (type == \":\") {\n+                                return pass(afterprop);\n+                            }\n+                        }\n+\n+                        function getterSetter(type) {\n+                            if (type != \"variable\") return pass(afterprop);\n+                            cx.marked = \"property\";\n+                            return cont(functiondef);\n+                        }\n+\n+                        function afterprop(type) {\n+                            if (type == \":\") return cont(expressionNoComma);\n+                            if (type == \"(\") return pass(functiondef);\n+                        }\n+\n+                        function commasep(what, end, sep) {\n+                            function proceed(type, value) {\n+                                if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n+                                    var lex = cx.state.lexical;\n+                                    if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n+                                    return cont(function(type, value) {\n+                                        if (type == end || value == end) return pass();\n+                                        return pass(what);\n+                                    }, proceed);\n+                                }\n+                                if (type == end || value == end) return cont();\n+                                if (sep && sep.indexOf(\";\") > -1) return pass(what);\n+                                return cont(expect(end));\n+                            }\n+                            return function(type, value) {\n+                                if (type == end || value == end) return cont();\n+                                return pass(what, proceed);\n+                            };\n+                        }\n+\n+                        function contCommasep(what, end, info) {\n+                            for (var i = 3; i < arguments.length; i++) cx.cc.push(arguments[i]);\n+                            return cont(pushlex(end, info), commasep(what, end), poplex);\n+                        }\n+\n+                        function block(type) {\n+                            if (type == \"}\") return cont();\n+                            return pass(statement, block);\n+                        }\n+\n+                        function maybetype(type, value) {\n+                            if (isTS) {\n+                                if (type == \":\") return cont(typeexpr);\n+                                if (value == \"?\") return cont(maybetype);\n+                            }\n+                        }\n+\n+                        function maybetypeOrIn(type, value) {\n+                            if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr);\n+                        }\n+\n+                        function mayberettype(type) {\n+                            if (isTS && type == \":\") {\n+                                if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr);\n+                                else return cont(typeexpr);\n+                            }\n+                        }\n+\n+                        function isKW(_, value) {\n+                            if (value == \"is\") {\n+                                cx.marked = \"keyword\";\n+                                return cont();\n+                            }\n+                        }\n+\n+                        function typeexpr(type, value) {\n+                            if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(value == \"typeof\" ? expressionNoComma : typeexpr);\n+                            }\n+                            if (type == \"variable\" || value == \"void\") {\n+                                cx.marked = \"type\";\n+                                return cont(afterType);\n+                            }\n+                            if (value == \"|\" || value == \"&\") return cont(typeexpr);\n+                            if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n+                            if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType);\n+                            if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType);\n+                            if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType);\n+                            if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr);\n+                            if (type == \"quasi\") {\n+                                return pass(quasiType, afterType);\n+                            }\n+                        }\n+\n+                        function maybeReturnType(type) {\n+                            if (type == \"=>\") return cont(typeexpr);\n+                        }\n+\n+                        function typeprops(type) {\n+                            if (type.match(/[\\}\\)\\]]/)) return cont();\n+                            if (type == \",\" || type == \";\") return cont(typeprops);\n+                            return pass(typeprop, typeprops);\n+                        }\n+\n+                        function typeprop(type, value) {\n+                            if (type == \"variable\" || cx.style == \"keyword\") {\n+                                cx.marked = \"property\";\n+                                return cont(typeprop);\n+                            } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n+                                return cont(typeprop);\n+                            } else if (type == \":\") {\n+                                return cont(typeexpr);\n+                            } else if (type == \"[\") {\n+                                return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop);\n+                            } else if (type == \"(\") {\n+                                return pass(functiondecl, typeprop);\n+                            } else if (!type.match(/[;\\}\\)\\],]/)) {\n+                                return cont();\n+                            }\n+                        }\n+\n+                        function quasiType(type, value) {\n+                            if (type != \"quasi\") return pass();\n+                            if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n+                            return cont(typeexpr, continueQuasiType);\n+                        }\n+\n+                        function continueQuasiType(type) {\n+                            if (type == \"}\") {\n+                                cx.marked = \"string-2\";\n+                                cx.state.tokenize = tokenQuasi;\n+                                return cont(quasiType);\n+                            }\n+                        }\n+\n+                        function typearg(type, value) {\n+                            if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg);\n+                            if (type == \":\") return cont(typeexpr);\n+                            if (type == \"spread\") return cont(typearg);\n+                            return pass(typeexpr);\n+                        }\n+\n+                        function afterType(type, value) {\n+                            if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType);\n+                            if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr);\n+                            if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType);\n+                            if (value == \"extends\" || value == \"implements\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(typeexpr);\n+                            }\n+                            if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr);\n+                        }\n+\n+                        function maybeTypeArgs(_, value) {\n+                            if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType);\n+                        }\n+\n+                        function typeparam() {\n+                            return pass(typeexpr, maybeTypeDefault);\n+                        }\n+\n+                        function maybeTypeDefault(_, value) {\n+                            if (value == \"=\") return cont(typeexpr);\n+                        }\n+\n+                        function vardef(_, value) {\n+                            if (value == \"enum\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(enumdef);\n+                            }\n+                            return pass(pattern, maybetype, maybeAssign, vardefCont);\n+                        }\n+\n+                        function pattern(type, value) {\n+                            if (isTS && isModifier(value)) {\n+                                cx.marked = \"keyword\";\n+                                return cont(pattern);\n+                            }\n+                            if (type == \"variable\") {\n+                                register(value);\n+                                return cont();\n+                            }\n+                            if (type == \"spread\") return cont(pattern);\n+                            if (type == \"[\") return contCommasep(eltpattern, \"]\");\n+                            if (type == \"{\") return contCommasep(proppattern, \"}\");\n+                        }\n+\n+                        function proppattern(type, value) {\n+                            if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n+                                register(value);\n+                                return cont(maybeAssign);\n+                            }\n+                            if (type == \"variable\") cx.marked = \"property\";\n+                            if (type == \"spread\") return cont(pattern);\n+                            if (type == \"}\") return pass();\n+                            if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n+                            return cont(expect(\":\"), pattern, maybeAssign);\n+                        }\n+\n+                        function eltpattern() {\n+                            return pass(pattern, maybeAssign);\n+                        }\n+\n+                        function maybeAssign(_type, value) {\n+                            if (value == \"=\") return cont(expressionNoComma);\n+                        }\n+\n+                        function vardefCont(type) {\n+                            if (type == \",\") return cont(vardef);\n+                        }\n+\n+                        function maybeelse(type, value) {\n+                            if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n+                        }\n+\n+                        function forspec(type, value) {\n+                            if (value == \"await\") return cont(forspec);\n+                            if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n+                        }\n+\n+                        function forspec1(type) {\n+                            if (type == \"var\") return cont(vardef, forspec2);\n+                            if (type == \"variable\") return cont(forspec2);\n+                            return pass(forspec2);\n+                        }\n+\n+                        function forspec2(type, value) {\n+                            if (type == \")\") return cont();\n+                            if (type == \";\") return cont(forspec2);\n+                            if (value == \"in\" || value == \"of\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(expression, forspec2);\n+                            }\n+                            return pass(expression, forspec2);\n+                        }\n+\n+                        function functiondef(type, value) {\n+                            if (value == \"*\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(functiondef);\n+                            }\n+                            if (type == \"variable\") {\n+                                register(value);\n+                                return cont(functiondef);\n+                            }\n+                            if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n+                            if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef);\n+                        }\n+\n+                        function functiondecl(type, value) {\n+                            if (value == \"*\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(functiondecl);\n+                            }\n+                            if (type == \"variable\") {\n+                                register(value);\n+                                return cont(functiondecl);\n+                            }\n+                            if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n+                            if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl);\n+                        }\n+\n+                        function typename(type, value) {\n+                            if (type == \"keyword\" || type == \"variable\") {\n+                                cx.marked = \"type\";\n+                                return cont(typename);\n+                            } else if (value == \"<\") {\n+                                return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex);\n+                            }\n+                        }\n+\n+                        function funarg(type, value) {\n+                            if (value == \"@\") cont(expression, funarg);\n+                            if (type == \"spread\") return cont(funarg);\n+                            if (isTS && isModifier(value)) {\n+                                cx.marked = \"keyword\";\n+                                return cont(funarg);\n+                            }\n+                            if (isTS && type == \"this\") return cont(maybetype, maybeAssign);\n+                            return pass(pattern, maybetype, maybeAssign);\n+                        }\n+\n+                        function classExpression(type, value) {\n+                            // Class expressions may have an optional name.\n+                            if (type == \"variable\") return className(type, value);\n+                            return classNameAfter(type, value);\n+                        }\n+\n+                        function className(type, value) {\n+                            if (type == \"variable\") {\n+                                register(value);\n+                                return cont(classNameAfter);\n+                            }\n+                        }\n+\n+                        function classNameAfter(type, value) {\n+                            if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter);\n+                            if (value == \"extends\" || value == \"implements\" || isTS && type == \",\") {\n+                                if (value == \"implements\") cx.marked = \"keyword\";\n+                                return cont(isTS ? typeexpr : expression, classNameAfter);\n+                            }\n+                            if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n+                        }\n+\n+                        function classBody(type, value) {\n+                            if (type == \"async\" || type == \"variable\" && (value == \"static\" || value == \"get\" || value == \"set\" || isTS && isModifier(value)) && cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false)) {\n+                                cx.marked = \"keyword\";\n+                                return cont(classBody);\n+                            }\n+                            if (type == \"variable\" || cx.style == \"keyword\") {\n+                                cx.marked = \"property\";\n+                                return cont(classfield, classBody);\n+                            }\n+                            if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n+                            if (type == \"[\") return cont(expression, maybetype, expect(\"]\"), classfield, classBody);\n+                            if (value == \"*\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(classBody);\n+                            }\n+                            if (isTS && type == \"(\") return pass(functiondecl, classBody);\n+                            if (type == \";\" || type == \",\") return cont(classBody);\n+                            if (type == \"}\") return cont();\n+                            if (value == \"@\") return cont(expression, classBody);\n+                        }\n+\n+                        function classfield(type, value) {\n+                            if (value == \"!\") return cont(classfield);\n+                            if (value == \"?\") return cont(classfield);\n+                            if (type == \":\") return cont(typeexpr, maybeAssign);\n+                            if (value == \"=\") return cont(expressionNoComma);\n+                            var context = cx.state.lexical.prev,\n+                                isInterface = context && context.info == \"interface\";\n+                            return pass(isInterface ? functiondecl : functiondef);\n+                        }\n+\n+                        function afterExport(type, value) {\n+                            if (value == \"*\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(maybeFrom, expect(\";\"));\n+                            }\n+                            if (value == \"default\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(expression, expect(\";\"));\n+                            }\n+                            if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n+                            return pass(statement);\n+                        }\n+\n+                        function exportField(type, value) {\n+                            if (value == \"as\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(expect(\"variable\"));\n+                            }\n+                            if (type == \"variable\") return pass(expressionNoComma, exportField);\n+                        }\n+\n+                        function afterImport(type) {\n+                            if (type == \"string\") return cont();\n+                            if (type == \"(\") return pass(expression);\n+                            if (type == \".\") return pass(maybeoperatorComma);\n+                            return pass(importSpec, maybeMoreImports, maybeFrom);\n+                        }\n+\n+                        function importSpec(type, value) {\n+                            if (type == \"{\") return contCommasep(importSpec, \"}\");\n+                            if (type == \"variable\") register(value);\n+                            if (value == \"*\") cx.marked = \"keyword\";\n+                            return cont(maybeAs);\n+                        }\n+\n+                        function maybeMoreImports(type) {\n+                            if (type == \",\") return cont(importSpec, maybeMoreImports);\n+                        }\n+\n+                        function maybeAs(_type, value) {\n+                            if (value == \"as\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(importSpec);\n+                            }\n+                        }\n+\n+                        function maybeFrom(_type, value) {\n+                            if (value == \"from\") {\n+                                cx.marked = \"keyword\";\n+                                return cont(expression);\n+                            }\n+                        }\n+\n+                        function arrayLiteral(type) {\n+                            if (type == \"]\") return cont();\n+                            return pass(commasep(expressionNoComma, \"]\"));\n+                        }\n+\n+                        function enumdef() {\n+                            return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex);\n+                        }\n+\n+                        function enummember() {\n+                            return pass(pattern, maybeAssign);\n+                        }\n+\n+                        function isContinuedStatement(state, textAfter) {\n+                            return state.lastType == \"operator\" || state.lastType == \",\" || isOperatorChar.test(textAfter.charAt(0)) || /[,.]/.test(textAfter.charAt(0));\n+                        }\n+\n+                        function expressionAllowed(stream, state, backUp) {\n+                            return state.tokenize == tokenBase && /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) || state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)));\n+                        }\n+\n+                        // Interface\n+\n+                        return {\n+                            startState: function(basecolumn) {\n+                                var state = {\n+                                    tokenize: tokenBase,\n+                                    lastType: \"sof\",\n+                                    cc: [],\n+                                    lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n+                                    localVars: parserConfig.localVars,\n+                                    context: parserConfig.localVars && new Context(null, null, false),\n+                                    indented: basecolumn || 0\n+                                };\n+                                if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\") state.globalVars = parserConfig.globalVars;\n+                                return state;\n+                            },\n+                            token: function(stream, state) {\n+                                if (stream.sol()) {\n+                                    if (!state.lexical.hasOwnProperty(\"align\")) state.lexical.align = false;\n+                                    state.indented = stream.indentation();\n+                                    findFatArrow(stream, state);\n+                                }\n+                                if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n+                                var style = state.tokenize(stream, state);\n+                                if (type == \"comment\") return style;\n+                                state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n+                                return parseJS(state, style, type, content, stream);\n+                            },\n+                            indent: function(state, textAfter) {\n+                                if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n+                                if (state.tokenize != tokenBase) return 0;\n+                                var firstChar = textAfter && textAfter.charAt(0),\n+                                    lexical = state.lexical,\n+                                    top;\n+                                // Kludge to prevent 'maybelse' from blocking lexical scope pops\n+                                if (!/^\\s*else\\b/.test(textAfter))\n+                                    for (var i = state.cc.length - 1; i >= 0; --i) {\n+                                        var c = state.cc[i];\n+                                        if (c == poplex) lexical = lexical.prev;\n+                                        else if (c != maybeelse && c != popcontext) break;\n+                                    }\n+                                while ((lexical.type == \"stat\" || lexical.type == \"form\") && (firstChar == \"}\" || (top = state.cc[state.cc.length - 1]) && (top == maybeoperatorComma || top == maybeoperatorNoComma) && !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))) lexical = lexical.prev;\n+                                if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\") lexical = lexical.prev;\n+                                var type = lexical.type,\n+                                    closing = firstChar == type;\n+                                if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n+                                else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n+                                else if (type == \"form\") return lexical.indented + indentUnit;\n+                                else if (type == \"stat\") return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n+                                else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false) return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n+                                else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n+                                else return lexical.indented + (closing ? 0 : indentUnit);\n+                            },\n+                            electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n+                            blockCommentStart: jsonMode ? null : \"/*\",\n+                            blockCommentEnd: jsonMode ? null : \"*/\",\n+                            blockCommentContinue: jsonMode ? null : \" * \",\n+                            lineComment: jsonMode ? null : \"//\",\n+                            fold: \"brace\",\n+                            closeBrackets: \"()[]{}''\\\"\\\"``\",\n+                            helperType: jsonMode ? \"json\" : \"javascript\",\n+                            jsonldMode: jsonldMode,\n+                            jsonMode: jsonMode,\n+                            expressionAllowed: expressionAllowed,\n+                            skipExpression: function(state) {\n+                                parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null));\n+                            }\n+                        };\n+                    });\n+                    CodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n+                    CodeMirror.defineMIME(\"text/javascript\", \"javascript\");\n+                    CodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\n+                    CodeMirror.defineMIME(\"application/javascript\", \"javascript\");\n+                    CodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\n+                    CodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\n+                    CodeMirror.defineMIME(\"application/json\", {\n+                        name: \"javascript\",\n+                        json: true\n+                    });\n+                    CodeMirror.defineMIME(\"application/x-json\", {\n+                        name: \"javascript\",\n+                        json: true\n+                    });\n+                    CodeMirror.defineMIME(\"application/manifest+json\", {\n+                        name: \"javascript\",\n+                        json: true\n+                    });\n+                    CodeMirror.defineMIME(\"application/ld+json\", {\n+                        name: \"javascript\",\n+                        jsonld: true\n+                    });\n+                    CodeMirror.defineMIME(\"text/typescript\", {\n+                        name: \"javascript\",\n+                        typescript: true\n+                    });\n+                    CodeMirror.defineMIME(\"application/typescript\", {\n+                        name: \"javascript\",\n+                        typescript: true\n+                    });\n+                });\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/copy-to-clipboard/index.js\":\n+            /*!********************************************************!*\\\n+              !*** ../../../node_modules/copy-to-clipboard/index.js ***!\n+              \\********************************************************/\n+            /***/\n+            (function(module, __unused_webpack_exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                var deselectCurrent = __webpack_require__( /*! toggle-selection */ \"../../../node_modules/toggle-selection/index.js\");\n+                var clipboardToIE11Formatting = {\n+                    \"text/plain\": \"Text\",\n+                    \"text/html\": \"Url\",\n+                    \"default\": \"Text\"\n+                };\n+                var defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n+\n+                function format(message) {\n+                    var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"\u2318\" : \"Ctrl\") + \"+C\";\n+                    return message.replace(/#{\\s*key\\s*}/g, copyKey);\n+                }\n+\n+                function copy(text, options) {\n+                    var debug,\n+                        message,\n+                        reselectPrevious,\n+                        range,\n+                        selection,\n+                        mark,\n+                        success = false;\n+                    if (!options) {\n+                        options = {};\n+                    }\n+                    debug = options.debug || false;\n+                    try {\n+                        reselectPrevious = deselectCurrent();\n+                        range = document.createRange();\n+                        selection = document.getSelection();\n+                        mark = document.createElement(\"span\");\n+                        mark.textContent = text;\n+                        // avoid screen readers from reading out loud the text\n+                        mark.ariaHidden = \"true\";\n+                        // reset user styles for span element\n+                        mark.style.all = \"unset\";\n+                        // prevents scrolling to the end of the page\n+                        mark.style.position = \"fixed\";\n+                        mark.style.top = 0;\n+                        mark.style.clip = \"rect(0, 0, 0, 0)\";\n+                        // used to preserve spaces and line breaks\n+                        mark.style.whiteSpace = \"pre\";\n+                        // do not inherit user-select (it may be `none`)\n+                        mark.style.webkitUserSelect = \"text\";\n+                        mark.style.MozUserSelect = \"text\";\n+                        mark.style.msUserSelect = \"text\";\n+                        mark.style.userSelect = \"text\";\n+                        mark.addEventListener(\"copy\", function(e) {\n+                            e.stopPropagation();\n+                            if (options.format) {\n+                                e.preventDefault();\n+                                if (typeof e.clipboardData === \"undefined\") {\n+                                    // IE 11\n+                                    debug && console.warn(\"unable to use e.clipboardData\");\n+                                    debug && console.warn(\"trying IE specific stuff\");\n+                                    window.clipboardData.clearData();\n+                                    var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"];\n+                                    window.clipboardData.setData(format, text);\n+                                } else {\n+                                    // all other browsers\n+                                    e.clipboardData.clearData();\n+                                    e.clipboardData.setData(options.format, text);\n+                                }\n+                            }\n+                            if (options.onCopy) {\n+                                e.preventDefault();\n+                                options.onCopy(e.clipboardData);\n+                            }\n+                        });\n+                        document.body.appendChild(mark);\n+                        range.selectNodeContents(mark);\n+                        selection.addRange(range);\n+                        var successful = document.execCommand(\"copy\");\n+                        if (!successful) {\n+                            throw new Error(\"copy command was unsuccessful\");\n+                        }\n+                        success = true;\n+                    } catch (err) {\n+                        debug && console.error(\"unable to copy using execCommand: \", err);\n+                        debug && console.warn(\"trying IE specific stuff\");\n+                        try {\n+                            window.clipboardData.setData(options.format || \"text\", text);\n+                            options.onCopy && options.onCopy(window.clipboardData);\n+                            success = true;\n+                        } catch (err) {\n+                            debug && console.error(\"unable to copy using clipboardData: \", err);\n+                            debug && console.error(\"falling back to prompt\");\n+                            message = format(\"message\" in options ? options.message : defaultMessage);\n+                            window.prompt(message, text);\n+                        }\n+                    } finally {\n+                        if (selection) {\n+                            if (typeof selection.removeRange == \"function\") {\n+                                selection.removeRange(range);\n+                            } else {\n+                                selection.removeAllRanges();\n+                            }\n+                        }\n+                        if (mark) {\n+                            document.body.removeChild(mark);\n+                        }\n+                        reselectPrevious();\n+                    }\n+                    return success;\n+                }\n+                module.exports = copy;\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/detect-node-es/esm/browser.js\":\n+            /*!***********************************************************!*\\\n+              !*** ../../../node_modules/detect-node-es/esm/browser.js ***!\n+              \\***********************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports) {\n+\n+                \"use strict\";\n+\n+\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports.isNode = void 0;\n+                const isNode = exports.isNode = false;\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/entities/lib/decode.js\":\n+            /*!****************************************************!*\\\n+              !*** ../../../node_modules/entities/lib/decode.js ***!\n+              \\****************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function(o, m, k, k2) {\n+                    if (k2 === undefined) k2 = k;\n+                    var desc = Object.getOwnPropertyDescriptor(m, k);\n+                    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n+                        desc = {\n+                            enumerable: true,\n+                            get: function() {\n+                                return m[k];\n+                            }\n+                        };\n+                    }\n+                    Object.defineProperty(o, k2, desc);\n+                } : function(o, m, k, k2) {\n+                    if (k2 === undefined) k2 = k;\n+                    o[k2] = m[k];\n+                });\n+                var __setModuleDefault = void 0 && (void 0).__setModuleDefault || (Object.create ? function(o, v) {\n+                    Object.defineProperty(o, \"default\", {\n+                        enumerable: true,\n+                        value: v\n+                    });\n+                } : function(o, v) {\n+                    o[\"default\"] = v;\n+                });\n+                var __importStar = void 0 && (void 0).__importStar || function(mod) {\n+                    if (mod && mod.__esModule) return mod;\n+                    var result = {};\n+                    if (mod != null)\n+                        for (var k in mod)\n+                            if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n+                    __setModuleDefault(result, mod);\n+                    return result;\n+                };\n+                var __importDefault = void 0 && (void 0).__importDefault || function(mod) {\n+                    return mod && mod.__esModule ? mod : {\n+                        \"default\": mod\n+                    };\n+                };\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0;\n+                var decode_data_html_js_1 = __importDefault(__webpack_require__( /*! ./generated/decode-data-html.js */ \"../../../node_modules/entities/lib/generated/decode-data-html.js\"));\n+                exports.htmlDecodeTree = decode_data_html_js_1.default;\n+                var decode_data_xml_js_1 = __importDefault(__webpack_require__( /*! ./generated/decode-data-xml.js */ \"../../../node_modules/entities/lib/generated/decode-data-xml.js\"));\n+                exports.xmlDecodeTree = decode_data_xml_js_1.default;\n+                var decode_codepoint_js_1 = __importStar(__webpack_require__( /*! ./decode_codepoint.js */ \"../../../node_modules/entities/lib/decode_codepoint.js\"));\n+                exports.decodeCodePoint = decode_codepoint_js_1.default;\n+                var decode_codepoint_js_2 = __webpack_require__( /*! ./decode_codepoint.js */ \"../../../node_modules/entities/lib/decode_codepoint.js\");\n+                Object.defineProperty(exports, \"replaceCodePoint\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return decode_codepoint_js_2.replaceCodePoint;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"fromCodePoint\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return decode_codepoint_js_2.fromCodePoint;\n+                    }\n+                }));\n+                var CharCodes;\n+                (function(CharCodes) {\n+                    CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n+                    CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n+                    CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n+                    CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n+                    CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n+                    CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n+                    CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n+                    CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n+                    CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n+                    CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n+                    CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n+                    CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n+                })(CharCodes || (CharCodes = {}));\n+                /** Bit that needs to be set to convert an upper case ASCII character to lower case */\n+                var TO_LOWER_BIT = 32;\n+                var BinTrieFlags;\n+                (function(BinTrieFlags) {\n+                    BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n+                    BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n+                    BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n+                })(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));\n+\n+                function isNumber(code) {\n+                    return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n+                }\n+\n+                function isHexadecimalCharacter(code) {\n+                    return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F;\n+                }\n+\n+                function isAsciiAlphaNumeric(code) {\n+                    return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z || isNumber(code);\n+                }\n+                /**\n+                 * Checks if the given character is a valid end character for an entity in an attribute.\n+                 *\n+                 * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n+                 * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n+                 */\n+                function isEntityInAttributeInvalidEnd(code) {\n+                    return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n+                }\n+                var EntityDecoderState;\n+                (function(EntityDecoderState) {\n+                    EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n+                    EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n+                    EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n+                    EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n+                    EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n+                })(EntityDecoderState || (EntityDecoderState = {}));\n+                var DecodingMode;\n+                (function(DecodingMode) {\n+                    /** Entities in text nodes that can end with any character. */\n+                    DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n+                    /** Only allow entities terminated with a semicolon. */\n+                    DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n+                    /** Entities in attributes have limitations on ending characters. */\n+                    DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n+                })(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {}));\n+                /**\n+                 * Token decoder with support of writing partial entities.\n+                 */\n+                var EntityDecoder = /** @class */ function() {\n+                    function EntityDecoder( /** The tree used to decode entities. */\n+                        decodeTree,\n+                        /**\n+                         * The function that is called when a codepoint is decoded.\n+                         *\n+                         * For multi-byte named entities, this will be called multiple times,\n+                         * with the second codepoint, and the same `consumed` value.\n+                         *\n+                         * @param codepoint The decoded codepoint.\n+                         * @param consumed The number of bytes consumed by the decoder.\n+                         */\n+                        emitCodePoint, /** An object that is used to produce errors. */\n+                        errors) {\n+                        this.decodeTree = decodeTree;\n+                        this.emitCodePoint = emitCodePoint;\n+                        this.errors = errors;\n+                        /** The current state of the decoder. */\n+                        this.state = EntityDecoderState.EntityStart;\n+                        /** Characters that were consumed while parsing an entity. */\n+                        this.consumed = 1;\n+                        /**\n+                         * The result of the entity.\n+                         *\n+                         * Either the result index of a numeric entity, or the codepoint of a\n+                         * numeric entity.\n+                         */\n+                        this.result = 0;\n+                        /** The current index in the decode tree. */\n+                        this.treeIndex = 0;\n+                        /** The number of characters that were consumed in excess. */\n+                        this.excess = 1;\n+                        /** The mode in which the decoder is operating. */\n+                        this.decodeMode = DecodingMode.Strict;\n+                    }\n+                    /** Resets the instance to make it reusable. */\n+                    EntityDecoder.prototype.startEntity = function(decodeMode) {\n+                        this.decodeMode = decodeMode;\n+                        this.state = EntityDecoderState.EntityStart;\n+                        this.result = 0;\n+                        this.treeIndex = 0;\n+                        this.excess = 1;\n+                        this.consumed = 1;\n+                    };\n+                    /**\n+                     * Write an entity to the decoder. This can be called multiple times with partial entities.\n+                     * If the entity is incomplete, the decoder will return -1.\n+                     *\n+                     * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n+                     * entity is incomplete, and resume when the next string is written.\n+                     *\n+                     * @param string The string containing the entity (or a continuation of the entity).\n+                     * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n+                     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n+                     */\n+                    EntityDecoder.prototype.write = function(str, offset) {\n+                        switch (this.state) {\n+                            case EntityDecoderState.EntityStart: {\n+                                if (str.charCodeAt(offset) === CharCodes.NUM) {\n+                                    this.state = EntityDecoderState.NumericStart;\n+                                    this.consumed += 1;\n+                                    return this.stateNumericStart(str, offset + 1);\n+                                }\n+                                this.state = EntityDecoderState.NamedEntity;\n+                                return this.stateNamedEntity(str, offset);\n+                            }\n+                            case EntityDecoderState.NumericStart: {\n+                                return this.stateNumericStart(str, offset);\n+                            }\n+                            case EntityDecoderState.NumericDecimal: {\n+                                return this.stateNumericDecimal(str, offset);\n+                            }\n+                            case EntityDecoderState.NumericHex: {\n+                                return this.stateNumericHex(str, offset);\n+                            }\n+                            case EntityDecoderState.NamedEntity: {\n+                                return this.stateNamedEntity(str, offset);\n+                            }\n+                        }\n+                    };\n+                    /**\n+                     * Switches between the numeric decimal and hexadecimal states.\n+                     *\n+                     * Equivalent to the `Numeric character reference state` in the HTML spec.\n+                     *\n+                     * @param str The string containing the entity (or a continuation of the entity).\n+                     * @param offset The current offset.\n+                     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n+                     */\n+                    EntityDecoder.prototype.stateNumericStart = function(str, offset) {\n+                        if (offset >= str.length) {\n+                            return -1;\n+                        }\n+                        if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n+                            this.state = EntityDecoderState.NumericHex;\n+                            this.consumed += 1;\n+                            return this.stateNumericHex(str, offset + 1);\n+                        }\n+                        this.state = EntityDecoderState.NumericDecimal;\n+                        return this.stateNumericDecimal(str, offset);\n+                    };\n+                    EntityDecoder.prototype.addToNumericResult = function(str, start, end, base) {\n+                        if (start !== end) {\n+                            var digitCount = end - start;\n+                            this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base);\n+                            this.consumed += digitCount;\n+                        }\n+                    };\n+                    /**\n+                     * Parses a hexadecimal numeric entity.\n+                     *\n+                     * Equivalent to the `Hexademical character reference state` in the HTML spec.\n+                     *\n+                     * @param str The string containing the entity (or a continuation of the entity).\n+                     * @param offset The current offset.\n+                     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n+                     */\n+                    EntityDecoder.prototype.stateNumericHex = function(str, offset) {\n+                        var startIdx = offset;\n+                        while (offset < str.length) {\n+                            var char = str.charCodeAt(offset);\n+                            if (isNumber(char) || isHexadecimalCharacter(char)) {\n+                                offset += 1;\n+                            } else {\n+                                this.addToNumericResult(str, startIdx, offset, 16);\n+                                return this.emitNumericEntity(char, 3);\n+                            }\n+                        }\n+                        this.addToNumericResult(str, startIdx, offset, 16);\n+                        return -1;\n+                    };\n+                    /**\n+                     * Parses a decimal numeric entity.\n+                     *\n+                     * Equivalent to the `Decimal character reference state` in the HTML spec.\n+                     *\n+                     * @param str The string containing the entity (or a continuation of the entity).\n+                     * @param offset The current offset.\n+                     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n+                     */\n+                    EntityDecoder.prototype.stateNumericDecimal = function(str, offset) {\n+                        var startIdx = offset;\n+                        while (offset < str.length) {\n+                            var char = str.charCodeAt(offset);\n+                            if (isNumber(char)) {\n+                                offset += 1;\n+                            } else {\n+                                this.addToNumericResult(str, startIdx, offset, 10);\n+                                return this.emitNumericEntity(char, 2);\n+                            }\n+                        }\n+                        this.addToNumericResult(str, startIdx, offset, 10);\n+                        return -1;\n+                    };\n+                    /**\n+                     * Validate and emit a numeric entity.\n+                     *\n+                     * Implements the logic from the `Hexademical character reference start\n+                     * state` and `Numeric character reference end state` in the HTML spec.\n+                     *\n+                     * @param lastCp The last code point of the entity. Used to see if the\n+                     *               entity was terminated with a semicolon.\n+                     * @param expectedLength The minimum number of characters that should be\n+                     *                       consumed. Used to validate that at least one digit\n+                     *                       was consumed.\n+                     * @returns The number of characters that were consumed.\n+                     */\n+                    EntityDecoder.prototype.emitNumericEntity = function(lastCp, expectedLength) {\n+                        var _a;\n+                        // Ensure we consumed at least one digit.\n+                        if (this.consumed <= expectedLength) {\n+                            (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n+                            return 0;\n+                        }\n+                        // Figure out if this is a legit end of the entity\n+                        if (lastCp === CharCodes.SEMI) {\n+                            this.consumed += 1;\n+                        } else if (this.decodeMode === DecodingMode.Strict) {\n+                            return 0;\n+                        }\n+                        this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);\n+                        if (this.errors) {\n+                            if (lastCp !== CharCodes.SEMI) {\n+                                this.errors.missingSemicolonAfterCharacterReference();\n+                            }\n+                            this.errors.validateNumericCharacterReference(this.result);\n+                        }\n+                        return this.consumed;\n+                    };\n+                    /**\n+                     * Parses a named entity.\n+                     *\n+                     * Equivalent to the `Named character reference state` in the HTML spec.\n+                     *\n+                     * @param str The string containing the entity (or a continuation of the entity).\n+                     * @param offset The current offset.\n+                     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n+                     */\n+                    EntityDecoder.prototype.stateNamedEntity = function(str, offset) {\n+                        var decodeTree = this.decodeTree;\n+                        var current = decodeTree[this.treeIndex];\n+                        // The mask is the number of bytes of the value, including the current byte.\n+                        var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n+                        for (; offset < str.length; offset++, this.excess++) {\n+                            var char = str.charCodeAt(offset);\n+                            this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n+                            if (this.treeIndex < 0) {\n+                                return this.result === 0 ||\n+                                    // If we are parsing an attribute\n+                                    this.decodeMode === DecodingMode.Attribute && (\n+                                        // We shouldn't have consumed any characters after the entity,\n+                                        valueLength === 0 ||\n+                                        // And there should be no invalid characters.\n+                                        isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity();\n+                            }\n+                            current = decodeTree[this.treeIndex];\n+                            valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n+                            // If the branch is a value, store it and continue\n+                            if (valueLength !== 0) {\n+                                // If the entity is terminated by a semicolon, we are done.\n+                                if (char === CharCodes.SEMI) {\n+                                    return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n+                                }\n+                                // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n+                                if (this.decodeMode !== DecodingMode.Strict) {\n+                                    this.result = this.treeIndex;\n+                                    this.consumed += this.excess;\n+                                    this.excess = 0;\n+                                }\n+                            }\n+                        }\n+                        return -1;\n+                    };\n+                    /**\n+                     * Emit a named entity that was not terminated with a semicolon.\n+                     *\n+                     * @returns The number of characters consumed.\n+                     */\n+                    EntityDecoder.prototype.emitNotTerminatedNamedEntity = function() {\n+                        var _a;\n+                        var _b = this,\n+                            result = _b.result,\n+                            decodeTree = _b.decodeTree;\n+                        var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n+                        this.emitNamedEntityData(result, valueLength, this.consumed);\n+                        (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n+                        return this.consumed;\n+                    };\n+                    /**\n+                     * Emit a named entity.\n+                     *\n+                     * @param result The index of the entity in the decode tree.\n+                     * @param valueLength The number of bytes in the entity.\n+                     * @param consumed The number of characters consumed.\n+                     *\n+                     * @returns The number of characters consumed.\n+                     */\n+                    EntityDecoder.prototype.emitNamedEntityData = function(result, valueLength, consumed) {\n+                        var decodeTree = this.decodeTree;\n+                        this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed);\n+                        if (valueLength === 3) {\n+                            // For multi-byte values, we need to emit the second byte.\n+                            this.emitCodePoint(decodeTree[result + 2], consumed);\n+                        }\n+                        return consumed;\n+                    };\n+                    /**\n+                     * Signal to the parser that the end of the input was reached.\n+                     *\n+                     * Remaining data will be emitted and relevant errors will be produced.\n+                     *\n+                     * @returns The number of characters consumed.\n+                     */\n+                    EntityDecoder.prototype.end = function() {\n+                        var _a;\n+                        switch (this.state) {\n+                            case EntityDecoderState.NamedEntity: {\n+                                // Emit a named entity if we have one.\n+                                return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;\n+                            }\n+                            // Otherwise, emit a numeric entity if we have one.\n+                            case EntityDecoderState.NumericDecimal: {\n+                                return this.emitNumericEntity(0, 2);\n+                            }\n+                            case EntityDecoderState.NumericHex: {\n+                                return this.emitNumericEntity(0, 3);\n+                            }\n+                            case EntityDecoderState.NumericStart: {\n+                                (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n+                                return 0;\n+                            }\n+                            case EntityDecoderState.EntityStart: {\n+                                // Return 0 if we have no entity.\n+                                return 0;\n+                            }\n+                        }\n+                    };\n+                    return EntityDecoder;\n+                }();\n+                exports.EntityDecoder = EntityDecoder;\n+                /**\n+                 * Creates a function that decodes entities in a string.\n+                 *\n+                 * @param decodeTree The decode tree.\n+                 * @returns A function that decodes entities in a string.\n+                 */\n+                function getDecoder(decodeTree) {\n+                    var ret = \"\";\n+                    var decoder = new EntityDecoder(decodeTree, function(str) {\n+                        return ret += (0, decode_codepoint_js_1.fromCodePoint)(str);\n+                    });\n+                    return function decodeWithTrie(str, decodeMode) {\n+                        var lastIndex = 0;\n+                        var offset = 0;\n+                        while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n+                            ret += str.slice(lastIndex, offset);\n+                            decoder.startEntity(decodeMode);\n+                            var len = decoder.write(str,\n+                                // Skip the \"&\"\n+                                offset + 1);\n+                            if (len < 0) {\n+                                lastIndex = offset + decoder.end();\n+                                break;\n+                            }\n+                            lastIndex = offset + len;\n+                            // If `len` is 0, skip the current `&` and continue.\n+                            offset = len === 0 ? lastIndex + 1 : lastIndex;\n+                        }\n+                        var result = ret + str.slice(lastIndex);\n+                        // Make sure we don't keep a reference to the final string.\n+                        ret = \"\";\n+                        return result;\n+                    };\n+                }\n+                /**\n+                 * Determines the branch of the current node that is taken given the current\n+                 * character. This function is used to traverse the trie.\n+                 *\n+                 * @param decodeTree The trie.\n+                 * @param current The current node.\n+                 * @param nodeIdx The index right after the current node and its value.\n+                 * @param char The current character.\n+                 * @returns The index of the next node, or -1 if no branch is taken.\n+                 */\n+                function determineBranch(decodeTree, current, nodeIdx, char) {\n+                    var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n+                    var jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n+                    // Case 1: Single branch encoded in jump offset\n+                    if (branchCount === 0) {\n+                        return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n+                    }\n+                    // Case 2: Multiple branches encoded in jump table\n+                    if (jumpOffset) {\n+                        var value = char - jumpOffset;\n+                        return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;\n+                    }\n+                    // Case 3: Multiple branches encoded in dictionary\n+                    // Binary search for the character.\n+                    var lo = nodeIdx;\n+                    var hi = lo + branchCount - 1;\n+                    while (lo <= hi) {\n+                        var mid = lo + hi >>> 1;\n+                        var midVal = decodeTree[mid];\n+                        if (midVal < char) {\n+                            lo = mid + 1;\n+                        } else if (midVal > char) {\n+                            hi = mid - 1;\n+                        } else {\n+                            return decodeTree[mid + branchCount];\n+                        }\n+                    }\n+                    return -1;\n+                }\n+                exports.determineBranch = determineBranch;\n+                var htmlDecoder = getDecoder(decode_data_html_js_1.default);\n+                var xmlDecoder = getDecoder(decode_data_xml_js_1.default);\n+                /**\n+                 * Decodes an HTML string.\n+                 *\n+                 * @param str The string to decode.\n+                 * @param mode The decoding mode.\n+                 * @returns The decoded string.\n+                 */\n+                function decodeHTML(str, mode) {\n+                    if (mode === void 0) {\n+                        mode = DecodingMode.Legacy;\n+                    }\n+                    return htmlDecoder(str, mode);\n+                }\n+                exports.decodeHTML = decodeHTML;\n+                /**\n+                 * Decodes an HTML string in an attribute.\n+                 *\n+                 * @param str The string to decode.\n+                 * @returns The decoded string.\n+                 */\n+                function decodeHTMLAttribute(str) {\n+                    return htmlDecoder(str, DecodingMode.Attribute);\n+                }\n+                exports.decodeHTMLAttribute = decodeHTMLAttribute;\n+                /**\n+                 * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n+                 *\n+                 * @param str The string to decode.\n+                 * @returns The decoded string.\n+                 */\n+                function decodeHTMLStrict(str) {\n+                    return htmlDecoder(str, DecodingMode.Strict);\n+                }\n+                exports.decodeHTMLStrict = decodeHTMLStrict;\n+                /**\n+                 * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n+                 *\n+                 * @param str The string to decode.\n+                 * @returns The decoded string.\n+                 */\n+                function decodeXML(str) {\n+                    return xmlDecoder(str, DecodingMode.Strict);\n+                }\n+                exports.decodeXML = decodeXML;\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/entities/lib/decode_codepoint.js\":\n+            /*!**************************************************************!*\\\n+              !*** ../../../node_modules/entities/lib/decode_codepoint.js ***!\n+              \\**************************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports) {\n+\n+                \"use strict\";\n+\n+\n+                // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\n+                var _a;\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports.replaceCodePoint = exports.fromCodePoint = void 0;\n+                var decodeMap = new Map([\n+                    [0, 65533],\n+                    // C1 Unicode control character reference replacements\n+                    [128, 8364],\n+                    [130, 8218],\n+                    [131, 402],\n+                    [132, 8222],\n+                    [133, 8230],\n+                    [134, 8224],\n+                    [135, 8225],\n+                    [136, 710],\n+                    [137, 8240],\n+                    [138, 352],\n+                    [139, 8249],\n+                    [140, 338],\n+                    [142, 381],\n+                    [145, 8216],\n+                    [146, 8217],\n+                    [147, 8220],\n+                    [148, 8221],\n+                    [149, 8226],\n+                    [150, 8211],\n+                    [151, 8212],\n+                    [152, 732],\n+                    [153, 8482],\n+                    [154, 353],\n+                    [155, 8250],\n+                    [156, 339],\n+                    [158, 382],\n+                    [159, 376]\n+                ]);\n+                /**\n+                 * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n+                 */\n+                exports.fromCodePoint =\n+                    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n+                    (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function(codePoint) {\n+                        var output = \"\";\n+                        if (codePoint > 0xffff) {\n+                            codePoint -= 0x10000;\n+                            output += String.fromCharCode(codePoint >>> 10 & 0x3ff | 0xd800);\n+                            codePoint = 0xdc00 | codePoint & 0x3ff;\n+                        }\n+                        output += String.fromCharCode(codePoint);\n+                        return output;\n+                    };\n+                /**\n+                 * Replace the given code point with a replacement character if it is a\n+                 * surrogate or is outside the valid range. Otherwise return the code\n+                 * point unchanged.\n+                 */\n+                function replaceCodePoint(codePoint) {\n+                    var _a;\n+                    if (codePoint >= 0xd800 && codePoint <= 0xdfff || codePoint > 0x10ffff) {\n+                        return 0xfffd;\n+                    }\n+                    return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n+                }\n+                exports.replaceCodePoint = replaceCodePoint;\n+                /**\n+                 * Replace the code point if relevant, then convert it to a string.\n+                 *\n+                 * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n+                 * @param codePoint The code point to decode.\n+                 * @returns The decoded code point.\n+                 */\n+                function decodeCodePoint(codePoint) {\n+                    return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));\n+                }\n+                exports[\"default\"] = decodeCodePoint;\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/entities/lib/encode.js\":\n+            /*!****************************************************!*\\\n+              !*** ../../../node_modules/entities/lib/encode.js ***!\n+              \\****************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                var __importDefault = void 0 && (void 0).__importDefault || function(mod) {\n+                    return mod && mod.__esModule ? mod : {\n+                        \"default\": mod\n+                    };\n+                };\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports.encodeNonAsciiHTML = exports.encodeHTML = void 0;\n+                var encode_html_js_1 = __importDefault(__webpack_require__( /*! ./generated/encode-html.js */ \"../../../node_modules/entities/lib/generated/encode-html.js\"));\n+                var escape_js_1 = __webpack_require__( /*! ./escape.js */ \"../../../node_modules/entities/lib/escape.js\");\n+                var htmlReplacer = /[\\t\\n!-,./:-@[-`\\f{-}$\\x80-\\uFFFF]/g;\n+                /**\n+                 * Encodes all characters in the input using HTML entities. This includes\n+                 * characters that are valid ASCII characters in HTML documents, such as `#`.\n+                 *\n+                 * To get a more compact output, consider using the `encodeNonAsciiHTML`\n+                 * function, which will only encode characters that are not valid in HTML\n+                 * documents, as well as non-ASCII characters.\n+                 *\n+                 * If a character has no equivalent entity, a numeric hexadecimal reference\n+                 * (eg. `&#xfc;`) will be used.\n+                 */\n+                function encodeHTML(data) {\n+                    return encodeHTMLTrieRe(htmlReplacer, data);\n+                }\n+                exports.encodeHTML = encodeHTML;\n+                /**\n+                 * Encodes all non-ASCII characters, as well as characters not valid in HTML\n+                 * documents using HTML entities. This function will not encode characters that\n+                 * are valid in HTML documents, such as `#`.\n+                 *\n+                 * If a character has no equivalent entity, a numeric hexadecimal reference\n+                 * (eg. `&#xfc;`) will be used.\n+                 */\n+                function encodeNonAsciiHTML(data) {\n+                    return encodeHTMLTrieRe(escape_js_1.xmlReplacer, data);\n+                }\n+                exports.encodeNonAsciiHTML = encodeNonAsciiHTML;\n+\n+                function encodeHTMLTrieRe(regExp, str) {\n+                    var ret = \"\";\n+                    var lastIdx = 0;\n+                    var match;\n+                    while ((match = regExp.exec(str)) !== null) {\n+                        var i = match.index;\n+                        ret += str.substring(lastIdx, i);\n+                        var char = str.charCodeAt(i);\n+                        var next = encode_html_js_1.default.get(char);\n+                        if (typeof next === \"object\") {\n+                            // We are in a branch. Try to match the next char.\n+                            if (i + 1 < str.length) {\n+                                var nextChar = str.charCodeAt(i + 1);\n+                                var value = typeof next.n === \"number\" ? next.n === nextChar ? next.o : undefined : next.n.get(nextChar);\n+                                if (value !== undefined) {\n+                                    ret += value;\n+                                    lastIdx = regExp.lastIndex += 1;\n+                                    continue;\n+                                }\n+                            }\n+                            next = next.v;\n+                        }\n+                        // We might have a tree node without a value; skip and use a numeric entity.\n+                        if (next !== undefined) {\n+                            ret += next;\n+                            lastIdx = i + 1;\n+                        } else {\n+                            var cp = (0, escape_js_1.getCodePoint)(str, i);\n+                            ret += \"&#x\".concat(cp.toString(16), \";\");\n+                            // Increase by 1 if we have a surrogate pair\n+                            lastIdx = regExp.lastIndex += Number(cp !== char);\n+                        }\n+                    }\n+                    return ret + str.substr(lastIdx);\n+                }\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/entities/lib/escape.js\":\n+            /*!****************************************************!*\\\n+              !*** ../../../node_modules/entities/lib/escape.js ***!\n+              \\****************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports) {\n+\n+                \"use strict\";\n+\n+\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.getCodePoint = exports.xmlReplacer = void 0;\n+                exports.xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\n+                var xmlCodeMap = new Map([\n+                    [34, \"&quot;\"],\n+                    [38, \"&amp;\"],\n+                    [39, \"&apos;\"],\n+                    [60, \"&lt;\"],\n+                    [62, \"&gt;\"]\n+                ]);\n+                // For compatibility with node < 4, we wrap `codePointAt`\n+                exports.getCodePoint =\n+                    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n+                    String.prototype.codePointAt != null ? function(str, index) {\n+                        return str.codePointAt(index);\n+                    } :\n+                    // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n+                    function(c, index) {\n+                        return (c.charCodeAt(index) & 0xfc00) === 0xd800 ? (c.charCodeAt(index) - 0xd800) * 0x400 + c.charCodeAt(index + 1) - 0xdc00 + 0x10000 : c.charCodeAt(index);\n+                    };\n+                /**\n+                 * Encodes all non-ASCII characters, as well as characters not valid in XML\n+                 * documents using XML entities.\n+                 *\n+                 * If a character has no equivalent entity, a\n+                 * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n+                 */\n+                function encodeXML(str) {\n+                    var ret = \"\";\n+                    var lastIdx = 0;\n+                    var match;\n+                    while ((match = exports.xmlReplacer.exec(str)) !== null) {\n+                        var i = match.index;\n+                        var char = str.charCodeAt(i);\n+                        var next = xmlCodeMap.get(char);\n+                        if (next !== undefined) {\n+                            ret += str.substring(lastIdx, i) + next;\n+                            lastIdx = i + 1;\n+                        } else {\n+                            ret += \"\".concat(str.substring(lastIdx, i), \"&#x\").concat((0, exports.getCodePoint)(str, i).toString(16), \";\");\n+                            // Increase by 1 if we have a surrogate pair\n+                            lastIdx = exports.xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n+                        }\n+                    }\n+                    return ret + str.substr(lastIdx);\n+                }\n+                exports.encodeXML = encodeXML;\n+                /**\n+                 * Encodes all non-ASCII characters, as well as characters not valid in XML\n+                 * documents using numeric hexadecimal reference (eg. `&#xfc;`).\n+                 *\n+                 * Have a look at `escapeUTF8` if you want a more concise output at the expense\n+                 * of reduced transportability.\n+                 *\n+                 * @param data String to escape.\n+                 */\n+                exports.escape = encodeXML;\n+                /**\n+                 * Creates a function that escapes all characters matched by the given regular\n+                 * expression using the given map of characters to escape to their entities.\n+                 *\n+                 * @param regex Regular expression to match characters to escape.\n+                 * @param map Map of characters to escape to their entities.\n+                 *\n+                 * @returns Function that escapes all characters matched by the given regular\n+                 * expression using the given map of characters to escape to their entities.\n+                 */\n+                function getEscaper(regex, map) {\n+                    return function escape(data) {\n+                        var match;\n+                        var lastIdx = 0;\n+                        var result = \"\";\n+                        while (match = regex.exec(data)) {\n+                            if (lastIdx !== match.index) {\n+                                result += data.substring(lastIdx, match.index);\n+                            }\n+                            // We know that this character will be in the map.\n+                            result += map.get(match[0].charCodeAt(0));\n+                            // Every match will be of length 1\n+                            lastIdx = match.index + 1;\n+                        }\n+                        return result + data.substring(lastIdx);\n+                    };\n+                }\n+                /**\n+                 * Encodes all characters not valid in XML documents using XML entities.\n+                 *\n+                 * Note that the output will be character-set dependent.\n+                 *\n+                 * @param data String to escape.\n+                 */\n+                exports.escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n+                /**\n+                 * Encodes all characters that have to be escaped in HTML attributes,\n+                 * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n+                 *\n+                 * @param data String to escape.\n+                 */\n+                exports.escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n+                    [34, \"&quot;\"],\n+                    [38, \"&amp;\"],\n+                    [160, \"&nbsp;\"]\n+                ]));\n+                /**\n+                 * Encodes all characters that have to be escaped in HTML text,\n+                 * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n+                 *\n+                 * @param data String to escape.\n+                 */\n+                exports.escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n+                    [38, \"&amp;\"],\n+                    [60, \"&lt;\"],\n+                    [62, \"&gt;\"],\n+                    [160, \"&nbsp;\"]\n+                ]));\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/entities/lib/generated/decode-data-html.js\":\n+            /*!************************************************************************!*\\\n+              !*** ../../../node_modules/entities/lib/generated/decode-data-html.js ***!\n+              \\************************************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports) {\n+\n+                \"use strict\";\n+\n+\n+                // Generated using scripts/write-decode-map.ts\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports[\"default\"] = new Uint16Array(\n+                    // prettier-ignore\n+                    \"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\".split(\"\").map(function(c) {\n+                        return c.charCodeAt(0);\n+                    }));\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/entities/lib/generated/decode-data-xml.js\":\n+            /*!***********************************************************************!*\\\n+              !*** ../../../node_modules/entities/lib/generated/decode-data-xml.js ***!\n+              \\***********************************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports) {\n+\n+                \"use strict\";\n+\n+\n+                // Generated using scripts/write-decode-map.ts\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports[\"default\"] = new Uint16Array(\n+                    // prettier-ignore\n+                    \"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\".split(\"\").map(function(c) {\n+                        return c.charCodeAt(0);\n+                    }));\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/entities/lib/generated/encode-html.js\":\n+            /*!*******************************************************************!*\\\n+              !*** ../../../node_modules/entities/lib/generated/encode-html.js ***!\n+              \\*******************************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports) {\n+\n+                \"use strict\";\n+\n+\n+                // Generated using scripts/write-encode-map.ts\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+\n+                function restoreDiff(arr) {\n+                    for (var i = 1; i < arr.length; i++) {\n+                        arr[i][0] += arr[i - 1][0] + 1;\n+                    }\n+                    return arr;\n+                }\n+                // prettier-ignore\n+                exports[\"default\"] = new Map( /* #__PURE__ */ restoreDiff([\n+                    [9, \"&Tab;\"],\n+                    [0, \"&NewLine;\"],\n+                    [22, \"&excl;\"],\n+                    [0, \"&quot;\"],\n+                    [0, \"&num;\"],\n+                    [0, \"&dollar;\"],\n+                    [0, \"&percnt;\"],\n+                    [0, \"&amp;\"],\n+                    [0, \"&apos;\"],\n+                    [0, \"&lpar;\"],\n+                    [0, \"&rpar;\"],\n+                    [0, \"&ast;\"],\n+                    [0, \"&plus;\"],\n+                    [0, \"&comma;\"],\n+                    [1, \"&period;\"],\n+                    [0, \"&sol;\"],\n+                    [10, \"&colon;\"],\n+                    [0, \"&semi;\"],\n+                    [0, {\n+                        v: \"&lt;\",\n+                        n: 8402,\n+                        o: \"&nvlt;\"\n+                    }],\n+                    [0, {\n+                        v: \"&equals;\",\n+                        n: 8421,\n+                        o: \"&bne;\"\n+                    }],\n+                    [0, {\n+                        v: \"&gt;\",\n+                        n: 8402,\n+                        o: \"&nvgt;\"\n+                    }],\n+                    [0, \"&quest;\"],\n+                    [0, \"&commat;\"],\n+                    [26, \"&lbrack;\"],\n+                    [0, \"&bsol;\"],\n+                    [0, \"&rbrack;\"],\n+                    [0, \"&Hat;\"],\n+                    [0, \"&lowbar;\"],\n+                    [0, \"&DiacriticalGrave;\"],\n+                    [5, {\n+                        n: 106,\n+                        o: \"&fjlig;\"\n+                    }],\n+                    [20, \"&lbrace;\"],\n+                    [0, \"&verbar;\"],\n+                    [0, \"&rbrace;\"],\n+                    [34, \"&nbsp;\"],\n+                    [0, \"&iexcl;\"],\n+                    [0, \"&cent;\"],\n+                    [0, \"&pound;\"],\n+                    [0, \"&curren;\"],\n+                    [0, \"&yen;\"],\n+                    [0, \"&brvbar;\"],\n+                    [0, \"&sect;\"],\n+                    [0, \"&die;\"],\n+                    [0, \"&copy;\"],\n+                    [0, \"&ordf;\"],\n+                    [0, \"&laquo;\"],\n+                    [0, \"&not;\"],\n+                    [0, \"&shy;\"],\n+                    [0, \"&circledR;\"],\n+                    [0, \"&macr;\"],\n+                    [0, \"&deg;\"],\n+                    [0, \"&PlusMinus;\"],\n+                    [0, \"&sup2;\"],\n+                    [0, \"&sup3;\"],\n+                    [0, \"&acute;\"],\n+                    [0, \"&micro;\"],\n+                    [0, \"&para;\"],\n+                    [0, \"&centerdot;\"],\n+                    [0, \"&cedil;\"],\n+                    [0, \"&sup1;\"],\n+                    [0, \"&ordm;\"],\n+                    [0, \"&raquo;\"],\n+                    [0, \"&frac14;\"],\n+                    [0, \"&frac12;\"],\n+                    [0, \"&frac34;\"],\n+                    [0, \"&iquest;\"],\n+                    [0, \"&Agrave;\"],\n+                    [0, \"&Aacute;\"],\n+                    [0, \"&Acirc;\"],\n+                    [0, \"&Atilde;\"],\n+                    [0, \"&Auml;\"],\n+                    [0, \"&angst;\"],\n+                    [0, \"&AElig;\"],\n+                    [0, \"&Ccedil;\"],\n+                    [0, \"&Egrave;\"],\n+                    [0, \"&Eacute;\"],\n+                    [0, \"&Ecirc;\"],\n+                    [0, \"&Euml;\"],\n+                    [0, \"&Igrave;\"],\n+                    [0, \"&Iacute;\"],\n+                    [0, \"&Icirc;\"],\n+                    [0, \"&Iuml;\"],\n+                    [0, \"&ETH;\"],\n+                    [0, \"&Ntilde;\"],\n+                    [0, \"&Ograve;\"],\n+                    [0, \"&Oacute;\"],\n+                    [0, \"&Ocirc;\"],\n+                    [0, \"&Otilde;\"],\n+                    [0, \"&Ouml;\"],\n+                    [0, \"&times;\"],\n+                    [0, \"&Oslash;\"],\n+                    [0, \"&Ugrave;\"],\n+                    [0, \"&Uacute;\"],\n+                    [0, \"&Ucirc;\"],\n+                    [0, \"&Uuml;\"],\n+                    [0, \"&Yacute;\"],\n+                    [0, \"&THORN;\"],\n+                    [0, \"&szlig;\"],\n+                    [0, \"&agrave;\"],\n+                    [0, \"&aacute;\"],\n+                    [0, \"&acirc;\"],\n+                    [0, \"&atilde;\"],\n+                    [0, \"&auml;\"],\n+                    [0, \"&aring;\"],\n+                    [0, \"&aelig;\"],\n+                    [0, \"&ccedil;\"],\n+                    [0, \"&egrave;\"],\n+                    [0, \"&eacute;\"],\n+                    [0, \"&ecirc;\"],\n+                    [0, \"&euml;\"],\n+                    [0, \"&igrave;\"],\n+                    [0, \"&iacute;\"],\n+                    [0, \"&icirc;\"],\n+                    [0, \"&iuml;\"],\n+                    [0, \"&eth;\"],\n+                    [0, \"&ntilde;\"],\n+                    [0, \"&ograve;\"],\n+                    [0, \"&oacute;\"],\n+                    [0, \"&ocirc;\"],\n+                    [0, \"&otilde;\"],\n+                    [0, \"&ouml;\"],\n+                    [0, \"&div;\"],\n+                    [0, \"&oslash;\"],\n+                    [0, \"&ugrave;\"],\n+                    [0, \"&uacute;\"],\n+                    [0, \"&ucirc;\"],\n+                    [0, \"&uuml;\"],\n+                    [0, \"&yacute;\"],\n+                    [0, \"&thorn;\"],\n+                    [0, \"&yuml;\"],\n+                    [0, \"&Amacr;\"],\n+                    [0, \"&amacr;\"],\n+                    [0, \"&Abreve;\"],\n+                    [0, \"&abreve;\"],\n+                    [0, \"&Aogon;\"],\n+                    [0, \"&aogon;\"],\n+                    [0, \"&Cacute;\"],\n+                    [0, \"&cacute;\"],\n+                    [0, \"&Ccirc;\"],\n+                    [0, \"&ccirc;\"],\n+                    [0, \"&Cdot;\"],\n+                    [0, \"&cdot;\"],\n+                    [0, \"&Ccaron;\"],\n+                    [0, \"&ccaron;\"],\n+                    [0, \"&Dcaron;\"],\n+                    [0, \"&dcaron;\"],\n+                    [0, \"&Dstrok;\"],\n+                    [0, \"&dstrok;\"],\n+                    [0, \"&Emacr;\"],\n+                    [0, \"&emacr;\"],\n+                    [2, \"&Edot;\"],\n+                    [0, \"&edot;\"],\n+                    [0, \"&Eogon;\"],\n+                    [0, \"&eogon;\"],\n+                    [0, \"&Ecaron;\"],\n+                    [0, \"&ecaron;\"],\n+                    [0, \"&Gcirc;\"],\n+                    [0, \"&gcirc;\"],\n+                    [0, \"&Gbreve;\"],\n+                    [0, \"&gbreve;\"],\n+                    [0, \"&Gdot;\"],\n+                    [0, \"&gdot;\"],\n+                    [0, \"&Gcedil;\"],\n+                    [1, \"&Hcirc;\"],\n+                    [0, \"&hcirc;\"],\n+                    [0, \"&Hstrok;\"],\n+                    [0, \"&hstrok;\"],\n+                    [0, \"&Itilde;\"],\n+                    [0, \"&itilde;\"],\n+                    [0, \"&Imacr;\"],\n+                    [0, \"&imacr;\"],\n+                    [2, \"&Iogon;\"],\n+                    [0, \"&iogon;\"],\n+                    [0, \"&Idot;\"],\n+                    [0, \"&imath;\"],\n+                    [0, \"&IJlig;\"],\n+                    [0, \"&ijlig;\"],\n+                    [0, \"&Jcirc;\"],\n+                    [0, \"&jcirc;\"],\n+                    [0, \"&Kcedil;\"],\n+                    [0, \"&kcedil;\"],\n+                    [0, \"&kgreen;\"],\n+                    [0, \"&Lacute;\"],\n+                    [0, \"&lacute;\"],\n+                    [0, \"&Lcedil;\"],\n+                    [0, \"&lcedil;\"],\n+                    [0, \"&Lcaron;\"],\n+                    [0, \"&lcaron;\"],\n+                    [0, \"&Lmidot;\"],\n+                    [0, \"&lmidot;\"],\n+                    [0, \"&Lstrok;\"],\n+                    [0, \"&lstrok;\"],\n+                    [0, \"&Nacute;\"],\n+                    [0, \"&nacute;\"],\n+                    [0, \"&Ncedil;\"],\n+                    [0, \"&ncedil;\"],\n+                    [0, \"&Ncaron;\"],\n+                    [0, \"&ncaron;\"],\n+                    [0, \"&napos;\"],\n+                    [0, \"&ENG;\"],\n+                    [0, \"&eng;\"],\n+                    [0, \"&Omacr;\"],\n+                    [0, \"&omacr;\"],\n+                    [2, \"&Odblac;\"],\n+                    [0, \"&odblac;\"],\n+                    [0, \"&OElig;\"],\n+                    [0, \"&oelig;\"],\n+                    [0, \"&Racute;\"],\n+                    [0, \"&racute;\"],\n+                    [0, \"&Rcedil;\"],\n+                    [0, \"&rcedil;\"],\n+                    [0, \"&Rcaron;\"],\n+                    [0, \"&rcaron;\"],\n+                    [0, \"&Sacute;\"],\n+                    [0, \"&sacute;\"],\n+                    [0, \"&Scirc;\"],\n+                    [0, \"&scirc;\"],\n+                    [0, \"&Scedil;\"],\n+                    [0, \"&scedil;\"],\n+                    [0, \"&Scaron;\"],\n+                    [0, \"&scaron;\"],\n+                    [0, \"&Tcedil;\"],\n+                    [0, \"&tcedil;\"],\n+                    [0, \"&Tcaron;\"],\n+                    [0, \"&tcaron;\"],\n+                    [0, \"&Tstrok;\"],\n+                    [0, \"&tstrok;\"],\n+                    [0, \"&Utilde;\"],\n+                    [0, \"&utilde;\"],\n+                    [0, \"&Umacr;\"],\n+                    [0, \"&umacr;\"],\n+                    [0, \"&Ubreve;\"],\n+                    [0, \"&ubreve;\"],\n+                    [0, \"&Uring;\"],\n+                    [0, \"&uring;\"],\n+                    [0, \"&Udblac;\"],\n+                    [0, \"&udblac;\"],\n+                    [0, \"&Uogon;\"],\n+                    [0, \"&uogon;\"],\n+                    [0, \"&Wcirc;\"],\n+                    [0, \"&wcirc;\"],\n+                    [0, \"&Ycirc;\"],\n+                    [0, \"&ycirc;\"],\n+                    [0, \"&Yuml;\"],\n+                    [0, \"&Zacute;\"],\n+                    [0, \"&zacute;\"],\n+                    [0, \"&Zdot;\"],\n+                    [0, \"&zdot;\"],\n+                    [0, \"&Zcaron;\"],\n+                    [0, \"&zcaron;\"],\n+                    [19, \"&fnof;\"],\n+                    [34, \"&imped;\"],\n+                    [63, \"&gacute;\"],\n+                    [65, \"&jmath;\"],\n+                    [142, \"&circ;\"],\n+                    [0, \"&caron;\"],\n+                    [16, \"&breve;\"],\n+                    [0, \"&DiacriticalDot;\"],\n+                    [0, \"&ring;\"],\n+                    [0, \"&ogon;\"],\n+                    [0, \"&DiacriticalTilde;\"],\n+                    [0, \"&dblac;\"],\n+                    [51, \"&DownBreve;\"],\n+                    [127, \"&Alpha;\"],\n+                    [0, \"&Beta;\"],\n+                    [0, \"&Gamma;\"],\n+                    [0, \"&Delta;\"],\n+                    [0, \"&Epsilon;\"],\n+                    [0, \"&Zeta;\"],\n+                    [0, \"&Eta;\"],\n+                    [0, \"&Theta;\"],\n+                    [0, \"&Iota;\"],\n+                    [0, \"&Kappa;\"],\n+                    [0, \"&Lambda;\"],\n+                    [0, \"&Mu;\"],\n+                    [0, \"&Nu;\"],\n+                    [0, \"&Xi;\"],\n+                    [0, \"&Omicron;\"],\n+                    [0, \"&Pi;\"],\n+                    [0, \"&Rho;\"],\n+                    [1, \"&Sigma;\"],\n+                    [0, \"&Tau;\"],\n+                    [0, \"&Upsilon;\"],\n+                    [0, \"&Phi;\"],\n+                    [0, \"&Chi;\"],\n+                    [0, \"&Psi;\"],\n+                    [0, \"&ohm;\"],\n+                    [7, \"&alpha;\"],\n+                    [0, \"&beta;\"],\n+                    [0, \"&gamma;\"],\n+                    [0, \"&delta;\"],\n+                    [0, \"&epsi;\"],\n+                    [0, \"&zeta;\"],\n+                    [0, \"&eta;\"],\n+                    [0, \"&theta;\"],\n+                    [0, \"&iota;\"],\n+                    [0, \"&kappa;\"],\n+                    [0, \"&lambda;\"],\n+                    [0, \"&mu;\"],\n+                    [0, \"&nu;\"],\n+                    [0, \"&xi;\"],\n+                    [0, \"&omicron;\"],\n+                    [0, \"&pi;\"],\n+                    [0, \"&rho;\"],\n+                    [0, \"&sigmaf;\"],\n+                    [0, \"&sigma;\"],\n+                    [0, \"&tau;\"],\n+                    [0, \"&upsi;\"],\n+                    [0, \"&phi;\"],\n+                    [0, \"&chi;\"],\n+                    [0, \"&psi;\"],\n+                    [0, \"&omega;\"],\n+                    [7, \"&thetasym;\"],\n+                    [0, \"&Upsi;\"],\n+                    [2, \"&phiv;\"],\n+                    [0, \"&piv;\"],\n+                    [5, \"&Gammad;\"],\n+                    [0, \"&digamma;\"],\n+                    [18, \"&kappav;\"],\n+                    [0, \"&rhov;\"],\n+                    [3, \"&epsiv;\"],\n+                    [0, \"&backepsilon;\"],\n+                    [10, \"&IOcy;\"],\n+                    [0, \"&DJcy;\"],\n+                    [0, \"&GJcy;\"],\n+                    [0, \"&Jukcy;\"],\n+                    [0, \"&DScy;\"],\n+                    [0, \"&Iukcy;\"],\n+                    [0, \"&YIcy;\"],\n+                    [0, \"&Jsercy;\"],\n+                    [0, \"&LJcy;\"],\n+                    [0, \"&NJcy;\"],\n+                    [0, \"&TSHcy;\"],\n+                    [0, \"&KJcy;\"],\n+                    [1, \"&Ubrcy;\"],\n+                    [0, \"&DZcy;\"],\n+                    [0, \"&Acy;\"],\n+                    [0, \"&Bcy;\"],\n+                    [0, \"&Vcy;\"],\n+                    [0, \"&Gcy;\"],\n+                    [0, \"&Dcy;\"],\n+                    [0, \"&IEcy;\"],\n+                    [0, \"&ZHcy;\"],\n+                    [0, \"&Zcy;\"],\n+                    [0, \"&Icy;\"],\n+                    [0, \"&Jcy;\"],\n+                    [0, \"&Kcy;\"],\n+                    [0, \"&Lcy;\"],\n+                    [0, \"&Mcy;\"],\n+                    [0, \"&Ncy;\"],\n+                    [0, \"&Ocy;\"],\n+                    [0, \"&Pcy;\"],\n+                    [0, \"&Rcy;\"],\n+                    [0, \"&Scy;\"],\n+                    [0, \"&Tcy;\"],\n+                    [0, \"&Ucy;\"],\n+                    [0, \"&Fcy;\"],\n+                    [0, \"&KHcy;\"],\n+                    [0, \"&TScy;\"],\n+                    [0, \"&CHcy;\"],\n+                    [0, \"&SHcy;\"],\n+                    [0, \"&SHCHcy;\"],\n+                    [0, \"&HARDcy;\"],\n+                    [0, \"&Ycy;\"],\n+                    [0, \"&SOFTcy;\"],\n+                    [0, \"&Ecy;\"],\n+                    [0, \"&YUcy;\"],\n+                    [0, \"&YAcy;\"],\n+                    [0, \"&acy;\"],\n+                    [0, \"&bcy;\"],\n+                    [0, \"&vcy;\"],\n+                    [0, \"&gcy;\"],\n+                    [0, \"&dcy;\"],\n+                    [0, \"&iecy;\"],\n+                    [0, \"&zhcy;\"],\n+                    [0, \"&zcy;\"],\n+                    [0, \"&icy;\"],\n+                    [0, \"&jcy;\"],\n+                    [0, \"&kcy;\"],\n+                    [0, \"&lcy;\"],\n+                    [0, \"&mcy;\"],\n+                    [0, \"&ncy;\"],\n+                    [0, \"&ocy;\"],\n+                    [0, \"&pcy;\"],\n+                    [0, \"&rcy;\"],\n+                    [0, \"&scy;\"],\n+                    [0, \"&tcy;\"],\n+                    [0, \"&ucy;\"],\n+                    [0, \"&fcy;\"],\n+                    [0, \"&khcy;\"],\n+                    [0, \"&tscy;\"],\n+                    [0, \"&chcy;\"],\n+                    [0, \"&shcy;\"],\n+                    [0, \"&shchcy;\"],\n+                    [0, \"&hardcy;\"],\n+                    [0, \"&ycy;\"],\n+                    [0, \"&softcy;\"],\n+                    [0, \"&ecy;\"],\n+                    [0, \"&yucy;\"],\n+                    [0, \"&yacy;\"],\n+                    [1, \"&iocy;\"],\n+                    [0, \"&djcy;\"],\n+                    [0, \"&gjcy;\"],\n+                    [0, \"&jukcy;\"],\n+                    [0, \"&dscy;\"],\n+                    [0, \"&iukcy;\"],\n+                    [0, \"&yicy;\"],\n+                    [0, \"&jsercy;\"],\n+                    [0, \"&ljcy;\"],\n+                    [0, \"&njcy;\"],\n+                    [0, \"&tshcy;\"],\n+                    [0, \"&kjcy;\"],\n+                    [1, \"&ubrcy;\"],\n+                    [0, \"&dzcy;\"],\n+                    [7074, \"&ensp;\"],\n+                    [0, \"&emsp;\"],\n+                    [0, \"&emsp13;\"],\n+                    [0, \"&emsp14;\"],\n+                    [1, \"&numsp;\"],\n+                    [0, \"&puncsp;\"],\n+                    [0, \"&ThinSpace;\"],\n+                    [0, \"&hairsp;\"],\n+                    [0, \"&NegativeMediumSpace;\"],\n+                    [0, \"&zwnj;\"],\n+                    [0, \"&zwj;\"],\n+                    [0, \"&lrm;\"],\n+                    [0, \"&rlm;\"],\n+                    [0, \"&dash;\"],\n+                    [2, \"&ndash;\"],\n+                    [0, \"&mdash;\"],\n+                    [0, \"&horbar;\"],\n+                    [0, \"&Verbar;\"],\n+                    [1, \"&lsquo;\"],\n+                    [0, \"&CloseCurlyQuote;\"],\n+                    [0, \"&lsquor;\"],\n+                    [1, \"&ldquo;\"],\n+                    [0, \"&CloseCurlyDoubleQuote;\"],\n+                    [0, \"&bdquo;\"],\n+                    [1, \"&dagger;\"],\n+                    [0, \"&Dagger;\"],\n+                    [0, \"&bull;\"],\n+                    [2, \"&nldr;\"],\n+                    [0, \"&hellip;\"],\n+                    [9, \"&permil;\"],\n+                    [0, \"&pertenk;\"],\n+                    [0, \"&prime;\"],\n+                    [0, \"&Prime;\"],\n+                    [0, \"&tprime;\"],\n+                    [0, \"&backprime;\"],\n+                    [3, \"&lsaquo;\"],\n+                    [0, \"&rsaquo;\"],\n+                    [3, \"&oline;\"],\n+                    [2, \"&caret;\"],\n+                    [1, \"&hybull;\"],\n+                    [0, \"&frasl;\"],\n+                    [10, \"&bsemi;\"],\n+                    [7, \"&qprime;\"],\n+                    [7, {\n+                        v: \"&MediumSpace;\",\n+                        n: 8202,\n+                        o: \"&ThickSpace;\"\n+                    }],\n+                    [0, \"&NoBreak;\"],\n+                    [0, \"&af;\"],\n+                    [0, \"&InvisibleTimes;\"],\n+                    [0, \"&ic;\"],\n+                    [72, \"&euro;\"],\n+                    [46, \"&tdot;\"],\n+                    [0, \"&DotDot;\"],\n+                    [37, \"&complexes;\"],\n+                    [2, \"&incare;\"],\n+                    [4, \"&gscr;\"],\n+                    [0, \"&hamilt;\"],\n+                    [0, \"&Hfr;\"],\n+                    [0, \"&Hopf;\"],\n+                    [0, \"&planckh;\"],\n+                    [0, \"&hbar;\"],\n+                    [0, \"&imagline;\"],\n+                    [0, \"&Ifr;\"],\n+                    [0, \"&lagran;\"],\n+                    [0, \"&ell;\"],\n+                    [1, \"&naturals;\"],\n+                    [0, \"&numero;\"],\n+                    [0, \"&copysr;\"],\n+                    [0, \"&weierp;\"],\n+                    [0, \"&Popf;\"],\n+                    [0, \"&Qopf;\"],\n+                    [0, \"&realine;\"],\n+                    [0, \"&real;\"],\n+                    [0, \"&reals;\"],\n+                    [0, \"&rx;\"],\n+                    [3, \"&trade;\"],\n+                    [1, \"&integers;\"],\n+                    [2, \"&mho;\"],\n+                    [0, \"&zeetrf;\"],\n+                    [0, \"&iiota;\"],\n+                    [2, \"&bernou;\"],\n+                    [0, \"&Cayleys;\"],\n+                    [1, \"&escr;\"],\n+                    [0, \"&Escr;\"],\n+                    [0, \"&Fouriertrf;\"],\n+                    [1, \"&Mellintrf;\"],\n+                    [0, \"&order;\"],\n+                    [0, \"&alefsym;\"],\n+                    [0, \"&beth;\"],\n+                    [0, \"&gimel;\"],\n+                    [0, \"&daleth;\"],\n+                    [12, \"&CapitalDifferentialD;\"],\n+                    [0, \"&dd;\"],\n+                    [0, \"&ee;\"],\n+                    [0, \"&ii;\"],\n+                    [10, \"&frac13;\"],\n+                    [0, \"&frac23;\"],\n+                    [0, \"&frac15;\"],\n+                    [0, \"&frac25;\"],\n+                    [0, \"&frac35;\"],\n+                    [0, \"&frac45;\"],\n+                    [0, \"&frac16;\"],\n+                    [0, \"&frac56;\"],\n+                    [0, \"&frac18;\"],\n+                    [0, \"&frac38;\"],\n+                    [0, \"&frac58;\"],\n+                    [0, \"&frac78;\"],\n+                    [49, \"&larr;\"],\n+                    [0, \"&ShortUpArrow;\"],\n+                    [0, \"&rarr;\"],\n+                    [0, \"&darr;\"],\n+                    [0, \"&harr;\"],\n+                    [0, \"&updownarrow;\"],\n+                    [0, \"&nwarr;\"],\n+                    [0, \"&nearr;\"],\n+                    [0, \"&LowerRightArrow;\"],\n+                    [0, \"&LowerLeftArrow;\"],\n+                    [0, \"&nlarr;\"],\n+                    [0, \"&nrarr;\"],\n+                    [1, {\n+                        v: \"&rarrw;\",\n+                        n: 824,\n+                        o: \"&nrarrw;\"\n+                    }],\n+                    [0, \"&Larr;\"],\n+                    [0, \"&Uarr;\"],\n+                    [0, \"&Rarr;\"],\n+                    [0, \"&Darr;\"],\n+                    [0, \"&larrtl;\"],\n+                    [0, \"&rarrtl;\"],\n+                    [0, \"&LeftTeeArrow;\"],\n+                    [0, \"&mapstoup;\"],\n+                    [0, \"&map;\"],\n+                    [0, \"&DownTeeArrow;\"],\n+                    [1, \"&hookleftarrow;\"],\n+                    [0, \"&hookrightarrow;\"],\n+                    [0, \"&larrlp;\"],\n+                    [0, \"&looparrowright;\"],\n+                    [0, \"&harrw;\"],\n+                    [0, \"&nharr;\"],\n+                    [1, \"&lsh;\"],\n+                    [0, \"&rsh;\"],\n+                    [0, \"&ldsh;\"],\n+                    [0, \"&rdsh;\"],\n+                    [1, \"&crarr;\"],\n+                    [0, \"&cularr;\"],\n+                    [0, \"&curarr;\"],\n+                    [2, \"&circlearrowleft;\"],\n+                    [0, \"&circlearrowright;\"],\n+                    [0, \"&leftharpoonup;\"],\n+                    [0, \"&DownLeftVector;\"],\n+                    [0, \"&RightUpVector;\"],\n+                    [0, \"&LeftUpVector;\"],\n+                    [0, \"&rharu;\"],\n+                    [0, \"&DownRightVector;\"],\n+                    [0, \"&dharr;\"],\n+                    [0, \"&dharl;\"],\n+                    [0, \"&RightArrowLeftArrow;\"],\n+                    [0, \"&udarr;\"],\n+                    [0, \"&LeftArrowRightArrow;\"],\n+                    [0, \"&leftleftarrows;\"],\n+                    [0, \"&upuparrows;\"],\n+                    [0, \"&rightrightarrows;\"],\n+                    [0, \"&ddarr;\"],\n+                    [0, \"&leftrightharpoons;\"],\n+                    [0, \"&Equilibrium;\"],\n+                    [0, \"&nlArr;\"],\n+                    [0, \"&nhArr;\"],\n+                    [0, \"&nrArr;\"],\n+                    [0, \"&DoubleLeftArrow;\"],\n+                    [0, \"&DoubleUpArrow;\"],\n+                    [0, \"&DoubleRightArrow;\"],\n+                    [0, \"&dArr;\"],\n+                    [0, \"&DoubleLeftRightArrow;\"],\n+                    [0, \"&DoubleUpDownArrow;\"],\n+                    [0, \"&nwArr;\"],\n+                    [0, \"&neArr;\"],\n+                    [0, \"&seArr;\"],\n+                    [0, \"&swArr;\"],\n+                    [0, \"&lAarr;\"],\n+                    [0, \"&rAarr;\"],\n+                    [1, \"&zigrarr;\"],\n+                    [6, \"&larrb;\"],\n+                    [0, \"&rarrb;\"],\n+                    [15, \"&DownArrowUpArrow;\"],\n+                    [7, \"&loarr;\"],\n+                    [0, \"&roarr;\"],\n+                    [0, \"&hoarr;\"],\n+                    [0, \"&forall;\"],\n+                    [0, \"&comp;\"],\n+                    [0, {\n+                        v: \"&part;\",\n+                        n: 824,\n+                        o: \"&npart;\"\n+                    }],\n+                    [0, \"&exist;\"],\n+                    [0, \"&nexist;\"],\n+                    [0, \"&empty;\"],\n+                    [1, \"&Del;\"],\n+                    [0, \"&Element;\"],\n+                    [0, \"&NotElement;\"],\n+                    [1, \"&ni;\"],\n+                    [0, \"&notni;\"],\n+                    [2, \"&prod;\"],\n+                    [0, \"&coprod;\"],\n+                    [0, \"&sum;\"],\n+                    [0, \"&minus;\"],\n+                    [0, \"&MinusPlus;\"],\n+                    [0, \"&dotplus;\"],\n+                    [1, \"&Backslash;\"],\n+                    [0, \"&lowast;\"],\n+                    [0, \"&compfn;\"],\n+                    [1, \"&radic;\"],\n+                    [2, \"&prop;\"],\n+                    [0, \"&infin;\"],\n+                    [0, \"&angrt;\"],\n+                    [0, {\n+                        v: \"&ang;\",\n+                        n: 8402,\n+                        o: \"&nang;\"\n+                    }],\n+                    [0, \"&angmsd;\"],\n+                    [0, \"&angsph;\"],\n+                    [0, \"&mid;\"],\n+                    [0, \"&nmid;\"],\n+                    [0, \"&DoubleVerticalBar;\"],\n+                    [0, \"&NotDoubleVerticalBar;\"],\n+                    [0, \"&and;\"],\n+                    [0, \"&or;\"],\n+                    [0, {\n+                        v: \"&cap;\",\n+                        n: 65024,\n+                        o: \"&caps;\"\n+                    }],\n+                    [0, {\n+                        v: \"&cup;\",\n+                        n: 65024,\n+                        o: \"&cups;\"\n+                    }],\n+                    [0, \"&int;\"],\n+                    [0, \"&Int;\"],\n+                    [0, \"&iiint;\"],\n+                    [0, \"&conint;\"],\n+                    [0, \"&Conint;\"],\n+                    [0, \"&Cconint;\"],\n+                    [0, \"&cwint;\"],\n+                    [0, \"&ClockwiseContourIntegral;\"],\n+                    [0, \"&awconint;\"],\n+                    [0, \"&there4;\"],\n+                    [0, \"&becaus;\"],\n+                    [0, \"&ratio;\"],\n+                    [0, \"&Colon;\"],\n+                    [0, \"&dotminus;\"],\n+                    [1, \"&mDDot;\"],\n+                    [0, \"&homtht;\"],\n+                    [0, {\n+                        v: \"&sim;\",\n+                        n: 8402,\n+                        o: \"&nvsim;\"\n+                    }],\n+                    [0, {\n+                        v: \"&backsim;\",\n+                        n: 817,\n+                        o: \"&race;\"\n+                    }],\n+                    [0, {\n+                        v: \"&ac;\",\n+                        n: 819,\n+                        o: \"&acE;\"\n+                    }],\n+                    [0, \"&acd;\"],\n+                    [0, \"&VerticalTilde;\"],\n+                    [0, \"&NotTilde;\"],\n+                    [0, {\n+                        v: \"&eqsim;\",\n+                        n: 824,\n+                        o: \"&nesim;\"\n+                    }],\n+                    [0, \"&sime;\"],\n+                    [0, \"&NotTildeEqual;\"],\n+                    [0, \"&cong;\"],\n+                    [0, \"&simne;\"],\n+                    [0, \"&ncong;\"],\n+                    [0, \"&ap;\"],\n+                    [0, \"&nap;\"],\n+                    [0, \"&ape;\"],\n+                    [0, {\n+                        v: \"&apid;\",\n+                        n: 824,\n+                        o: \"&napid;\"\n+                    }],\n+                    [0, \"&backcong;\"],\n+                    [0, {\n+                        v: \"&asympeq;\",\n+                        n: 8402,\n+                        o: \"&nvap;\"\n+                    }],\n+                    [0, {\n+                        v: \"&bump;\",\n+                        n: 824,\n+                        o: \"&nbump;\"\n+                    }],\n+                    [0, {\n+                        v: \"&bumpe;\",\n+                        n: 824,\n+                        o: \"&nbumpe;\"\n+                    }],\n+                    [0, {\n+                        v: \"&doteq;\",\n+                        n: 824,\n+                        o: \"&nedot;\"\n+                    }],\n+                    [0, \"&doteqdot;\"],\n+                    [0, \"&efDot;\"],\n+                    [0, \"&erDot;\"],\n+                    [0, \"&Assign;\"],\n+                    [0, \"&ecolon;\"],\n+                    [0, \"&ecir;\"],\n+                    [0, \"&circeq;\"],\n+                    [1, \"&wedgeq;\"],\n+                    [0, \"&veeeq;\"],\n+                    [1, \"&triangleq;\"],\n+                    [2, \"&equest;\"],\n+                    [0, \"&ne;\"],\n+                    [0, {\n+                        v: \"&Congruent;\",\n+                        n: 8421,\n+                        o: \"&bnequiv;\"\n+                    }],\n+                    [0, \"&nequiv;\"],\n+                    [1, {\n+                        v: \"&le;\",\n+                        n: 8402,\n+                        o: \"&nvle;\"\n+                    }],\n+                    [0, {\n+                        v: \"&ge;\",\n+                        n: 8402,\n+                        o: \"&nvge;\"\n+                    }],\n+                    [0, {\n+                        v: \"&lE;\",\n+                        n: 824,\n+                        o: \"&nlE;\"\n+                    }],\n+                    [0, {\n+                        v: \"&gE;\",\n+                        n: 824,\n+                        o: \"&ngE;\"\n+                    }],\n+                    [0, {\n+                        v: \"&lnE;\",\n+                        n: 65024,\n+                        o: \"&lvertneqq;\"\n+                    }],\n+                    [0, {\n+                        v: \"&gnE;\",\n+                        n: 65024,\n+                        o: \"&gvertneqq;\"\n+                    }],\n+                    [0, {\n+                        v: \"&ll;\",\n+                        n: new Map( /* #__PURE__ */ restoreDiff([\n+                            [824, \"&nLtv;\"],\n+                            [7577, \"&nLt;\"]\n+                        ]))\n+                    }],\n+                    [0, {\n+                        v: \"&gg;\",\n+                        n: new Map( /* #__PURE__ */ restoreDiff([\n+                            [824, \"&nGtv;\"],\n+                            [7577, \"&nGt;\"]\n+                        ]))\n+                    }],\n+                    [0, \"&between;\"],\n+                    [0, \"&NotCupCap;\"],\n+                    [0, \"&nless;\"],\n+                    [0, \"&ngt;\"],\n+                    [0, \"&nle;\"],\n+                    [0, \"&nge;\"],\n+                    [0, \"&lesssim;\"],\n+                    [0, \"&GreaterTilde;\"],\n+                    [0, \"&nlsim;\"],\n+                    [0, \"&ngsim;\"],\n+                    [0, \"&LessGreater;\"],\n+                    [0, \"&gl;\"],\n+                    [0, \"&NotLessGreater;\"],\n+                    [0, \"&NotGreaterLess;\"],\n+                    [0, \"&pr;\"],\n+                    [0, \"&sc;\"],\n+                    [0, \"&prcue;\"],\n+                    [0, \"&sccue;\"],\n+                    [0, \"&PrecedesTilde;\"],\n+                    [0, {\n+                        v: \"&scsim;\",\n+                        n: 824,\n+                        o: \"&NotSucceedsTilde;\"\n+                    }],\n+                    [0, \"&NotPrecedes;\"],\n+                    [0, \"&NotSucceeds;\"],\n+                    [0, {\n+                        v: \"&sub;\",\n+                        n: 8402,\n+                        o: \"&NotSubset;\"\n+                    }],\n+                    [0, {\n+                        v: \"&sup;\",\n+                        n: 8402,\n+                        o: \"&NotSuperset;\"\n+                    }],\n+                    [0, \"&nsub;\"],\n+                    [0, \"&nsup;\"],\n+                    [0, \"&sube;\"],\n+                    [0, \"&supe;\"],\n+                    [0, \"&NotSubsetEqual;\"],\n+                    [0, \"&NotSupersetEqual;\"],\n+                    [0, {\n+                        v: \"&subne;\",\n+                        n: 65024,\n+                        o: \"&varsubsetneq;\"\n+                    }],\n+                    [0, {\n+                        v: \"&supne;\",\n+                        n: 65024,\n+                        o: \"&varsupsetneq;\"\n+                    }],\n+                    [1, \"&cupdot;\"],\n+                    [0, \"&UnionPlus;\"],\n+                    [0, {\n+                        v: \"&sqsub;\",\n+                        n: 824,\n+                        o: \"&NotSquareSubset;\"\n+                    }],\n+                    [0, {\n+                        v: \"&sqsup;\",\n+                        n: 824,\n+                        o: \"&NotSquareSuperset;\"\n+                    }],\n+                    [0, \"&sqsube;\"],\n+                    [0, \"&sqsupe;\"],\n+                    [0, {\n+                        v: \"&sqcap;\",\n+                        n: 65024,\n+                        o: \"&sqcaps;\"\n+                    }],\n+                    [0, {\n+                        v: \"&sqcup;\",\n+                        n: 65024,\n+                        o: \"&sqcups;\"\n+                    }],\n+                    [0, \"&CirclePlus;\"],\n+                    [0, \"&CircleMinus;\"],\n+                    [0, \"&CircleTimes;\"],\n+                    [0, \"&osol;\"],\n+                    [0, \"&CircleDot;\"],\n+                    [0, \"&circledcirc;\"],\n+                    [0, \"&circledast;\"],\n+                    [1, \"&circleddash;\"],\n+                    [0, \"&boxplus;\"],\n+                    [0, \"&boxminus;\"],\n+                    [0, \"&boxtimes;\"],\n+                    [0, \"&dotsquare;\"],\n+                    [0, \"&RightTee;\"],\n+                    [0, \"&dashv;\"],\n+                    [0, \"&DownTee;\"],\n+                    [0, \"&bot;\"],\n+                    [1, \"&models;\"],\n+                    [0, \"&DoubleRightTee;\"],\n+                    [0, \"&Vdash;\"],\n+                    [0, \"&Vvdash;\"],\n+                    [0, \"&VDash;\"],\n+                    [0, \"&nvdash;\"],\n+                    [0, \"&nvDash;\"],\n+                    [0, \"&nVdash;\"],\n+                    [0, \"&nVDash;\"],\n+                    [0, \"&prurel;\"],\n+                    [1, \"&LeftTriangle;\"],\n+                    [0, \"&RightTriangle;\"],\n+                    [0, {\n+                        v: \"&LeftTriangleEqual;\",\n+                        n: 8402,\n+                        o: \"&nvltrie;\"\n+                    }],\n+                    [0, {\n+                        v: \"&RightTriangleEqual;\",\n+                        n: 8402,\n+                        o: \"&nvrtrie;\"\n+                    }],\n+                    [0, \"&origof;\"],\n+                    [0, \"&imof;\"],\n+                    [0, \"&multimap;\"],\n+                    [0, \"&hercon;\"],\n+                    [0, \"&intcal;\"],\n+                    [0, \"&veebar;\"],\n+                    [1, \"&barvee;\"],\n+                    [0, \"&angrtvb;\"],\n+                    [0, \"&lrtri;\"],\n+                    [0, \"&bigwedge;\"],\n+                    [0, \"&bigvee;\"],\n+                    [0, \"&bigcap;\"],\n+                    [0, \"&bigcup;\"],\n+                    [0, \"&diam;\"],\n+                    [0, \"&sdot;\"],\n+                    [0, \"&sstarf;\"],\n+                    [0, \"&divideontimes;\"],\n+                    [0, \"&bowtie;\"],\n+                    [0, \"&ltimes;\"],\n+                    [0, \"&rtimes;\"],\n+                    [0, \"&leftthreetimes;\"],\n+                    [0, \"&rightthreetimes;\"],\n+                    [0, \"&backsimeq;\"],\n+                    [0, \"&curlyvee;\"],\n+                    [0, \"&curlywedge;\"],\n+                    [0, \"&Sub;\"],\n+                    [0, \"&Sup;\"],\n+                    [0, \"&Cap;\"],\n+                    [0, \"&Cup;\"],\n+                    [0, \"&fork;\"],\n+                    [0, \"&epar;\"],\n+                    [0, \"&lessdot;\"],\n+                    [0, \"&gtdot;\"],\n+                    [0, {\n+                        v: \"&Ll;\",\n+                        n: 824,\n+                        o: \"&nLl;\"\n+                    }],\n+                    [0, {\n+                        v: \"&Gg;\",\n+                        n: 824,\n+                        o: \"&nGg;\"\n+                    }],\n+                    [0, {\n+                        v: \"&leg;\",\n+                        n: 65024,\n+                        o: \"&lesg;\"\n+                    }],\n+                    [0, {\n+                        v: \"&gel;\",\n+                        n: 65024,\n+                        o: \"&gesl;\"\n+                    }],\n+                    [2, \"&cuepr;\"],\n+                    [0, \"&cuesc;\"],\n+                    [0, \"&NotPrecedesSlantEqual;\"],\n+                    [0, \"&NotSucceedsSlantEqual;\"],\n+                    [0, \"&NotSquareSubsetEqual;\"],\n+                    [0, \"&NotSquareSupersetEqual;\"],\n+                    [2, \"&lnsim;\"],\n+                    [0, \"&gnsim;\"],\n+                    [0, \"&precnsim;\"],\n+                    [0, \"&scnsim;\"],\n+                    [0, \"&nltri;\"],\n+                    [0, \"&NotRightTriangle;\"],\n+                    [0, \"&nltrie;\"],\n+                    [0, \"&NotRightTriangleEqual;\"],\n+                    [0, \"&vellip;\"],\n+                    [0, \"&ctdot;\"],\n+                    [0, \"&utdot;\"],\n+                    [0, \"&dtdot;\"],\n+                    [0, \"&disin;\"],\n+                    [0, \"&isinsv;\"],\n+                    [0, \"&isins;\"],\n+                    [0, {\n+                        v: \"&isindot;\",\n+                        n: 824,\n+                        o: \"&notindot;\"\n+                    }],\n+                    [0, \"&notinvc;\"],\n+                    [0, \"&notinvb;\"],\n+                    [1, {\n+                        v: \"&isinE;\",\n+                        n: 824,\n+                        o: \"&notinE;\"\n+                    }],\n+                    [0, \"&nisd;\"],\n+                    [0, \"&xnis;\"],\n+                    [0, \"&nis;\"],\n+                    [0, \"&notnivc;\"],\n+                    [0, \"&notnivb;\"],\n+                    [6, \"&barwed;\"],\n+                    [0, \"&Barwed;\"],\n+                    [1, \"&lceil;\"],\n+                    [0, \"&rceil;\"],\n+                    [0, \"&LeftFloor;\"],\n+                    [0, \"&rfloor;\"],\n+                    [0, \"&drcrop;\"],\n+                    [0, \"&dlcrop;\"],\n+                    [0, \"&urcrop;\"],\n+                    [0, \"&ulcrop;\"],\n+                    [0, \"&bnot;\"],\n+                    [1, \"&profline;\"],\n+                    [0, \"&profsurf;\"],\n+                    [1, \"&telrec;\"],\n+                    [0, \"&target;\"],\n+                    [5, \"&ulcorn;\"],\n+                    [0, \"&urcorn;\"],\n+                    [0, \"&dlcorn;\"],\n+                    [0, \"&drcorn;\"],\n+                    [2, \"&frown;\"],\n+                    [0, \"&smile;\"],\n+                    [9, \"&cylcty;\"],\n+                    [0, \"&profalar;\"],\n+                    [7, \"&topbot;\"],\n+                    [6, \"&ovbar;\"],\n+                    [1, \"&solbar;\"],\n+                    [60, \"&angzarr;\"],\n+                    [51, \"&lmoustache;\"],\n+                    [0, \"&rmoustache;\"],\n+                    [2, \"&OverBracket;\"],\n+                    [0, \"&bbrk;\"],\n+                    [0, \"&bbrktbrk;\"],\n+                    [37, \"&OverParenthesis;\"],\n+                    [0, \"&UnderParenthesis;\"],\n+                    [0, \"&OverBrace;\"],\n+                    [0, \"&UnderBrace;\"],\n+                    [2, \"&trpezium;\"],\n+                    [4, \"&elinters;\"],\n+                    [59, \"&blank;\"],\n+                    [164, \"&circledS;\"],\n+                    [55, \"&boxh;\"],\n+                    [1, \"&boxv;\"],\n+                    [9, \"&boxdr;\"],\n+                    [3, \"&boxdl;\"],\n+                    [3, \"&boxur;\"],\n+                    [3, \"&boxul;\"],\n+                    [3, \"&boxvr;\"],\n+                    [7, \"&boxvl;\"],\n+                    [7, \"&boxhd;\"],\n+                    [7, \"&boxhu;\"],\n+                    [7, \"&boxvh;\"],\n+                    [19, \"&boxH;\"],\n+                    [0, \"&boxV;\"],\n+                    [0, \"&boxdR;\"],\n+                    [0, \"&boxDr;\"],\n+                    [0, \"&boxDR;\"],\n+                    [0, \"&boxdL;\"],\n+                    [0, \"&boxDl;\"],\n+                    [0, \"&boxDL;\"],\n+                    [0, \"&boxuR;\"],\n+                    [0, \"&boxUr;\"],\n+                    [0, \"&boxUR;\"],\n+                    [0, \"&boxuL;\"],\n+                    [0, \"&boxUl;\"],\n+                    [0, \"&boxUL;\"],\n+                    [0, \"&boxvR;\"],\n+                    [0, \"&boxVr;\"],\n+                    [0, \"&boxVR;\"],\n+                    [0, \"&boxvL;\"],\n+                    [0, \"&boxVl;\"],\n+                    [0, \"&boxVL;\"],\n+                    [0, \"&boxHd;\"],\n+                    [0, \"&boxhD;\"],\n+                    [0, \"&boxHD;\"],\n+                    [0, \"&boxHu;\"],\n+                    [0, \"&boxhU;\"],\n+                    [0, \"&boxHU;\"],\n+                    [0, \"&boxvH;\"],\n+                    [0, \"&boxVh;\"],\n+                    [0, \"&boxVH;\"],\n+                    [19, \"&uhblk;\"],\n+                    [3, \"&lhblk;\"],\n+                    [3, \"&block;\"],\n+                    [8, \"&blk14;\"],\n+                    [0, \"&blk12;\"],\n+                    [0, \"&blk34;\"],\n+                    [13, \"&square;\"],\n+                    [8, \"&blacksquare;\"],\n+                    [0, \"&EmptyVerySmallSquare;\"],\n+                    [1, \"&rect;\"],\n+                    [0, \"&marker;\"],\n+                    [2, \"&fltns;\"],\n+                    [1, \"&bigtriangleup;\"],\n+                    [0, \"&blacktriangle;\"],\n+                    [0, \"&triangle;\"],\n+                    [2, \"&blacktriangleright;\"],\n+                    [0, \"&rtri;\"],\n+                    [3, \"&bigtriangledown;\"],\n+                    [0, \"&blacktriangledown;\"],\n+                    [0, \"&dtri;\"],\n+                    [2, \"&blacktriangleleft;\"],\n+                    [0, \"&ltri;\"],\n+                    [6, \"&loz;\"],\n+                    [0, \"&cir;\"],\n+                    [32, \"&tridot;\"],\n+                    [2, \"&bigcirc;\"],\n+                    [8, \"&ultri;\"],\n+                    [0, \"&urtri;\"],\n+                    [0, \"&lltri;\"],\n+                    [0, \"&EmptySmallSquare;\"],\n+                    [0, \"&FilledSmallSquare;\"],\n+                    [8, \"&bigstar;\"],\n+                    [0, \"&star;\"],\n+                    [7, \"&phone;\"],\n+                    [49, \"&female;\"],\n+                    [1, \"&male;\"],\n+                    [29, \"&spades;\"],\n+                    [2, \"&clubs;\"],\n+                    [1, \"&hearts;\"],\n+                    [0, \"&diamondsuit;\"],\n+                    [3, \"&sung;\"],\n+                    [2, \"&flat;\"],\n+                    [0, \"&natural;\"],\n+                    [0, \"&sharp;\"],\n+                    [163, \"&check;\"],\n+                    [3, \"&cross;\"],\n+                    [8, \"&malt;\"],\n+                    [21, \"&sext;\"],\n+                    [33, \"&VerticalSeparator;\"],\n+                    [25, \"&lbbrk;\"],\n+                    [0, \"&rbbrk;\"],\n+                    [84, \"&bsolhsub;\"],\n+                    [0, \"&suphsol;\"],\n+                    [28, \"&LeftDoubleBracket;\"],\n+                    [0, \"&RightDoubleBracket;\"],\n+                    [0, \"&lang;\"],\n+                    [0, \"&rang;\"],\n+                    [0, \"&Lang;\"],\n+                    [0, \"&Rang;\"],\n+                    [0, \"&loang;\"],\n+                    [0, \"&roang;\"],\n+                    [7, \"&longleftarrow;\"],\n+                    [0, \"&longrightarrow;\"],\n+                    [0, \"&longleftrightarrow;\"],\n+                    [0, \"&DoubleLongLeftArrow;\"],\n+                    [0, \"&DoubleLongRightArrow;\"],\n+                    [0, \"&DoubleLongLeftRightArrow;\"],\n+                    [1, \"&longmapsto;\"],\n+                    [2, \"&dzigrarr;\"],\n+                    [258, \"&nvlArr;\"],\n+                    [0, \"&nvrArr;\"],\n+                    [0, \"&nvHarr;\"],\n+                    [0, \"&Map;\"],\n+                    [6, \"&lbarr;\"],\n+                    [0, \"&bkarow;\"],\n+                    [0, \"&lBarr;\"],\n+                    [0, \"&dbkarow;\"],\n+                    [0, \"&drbkarow;\"],\n+                    [0, \"&DDotrahd;\"],\n+                    [0, \"&UpArrowBar;\"],\n+                    [0, \"&DownArrowBar;\"],\n+                    [2, \"&Rarrtl;\"],\n+                    [2, \"&latail;\"],\n+                    [0, \"&ratail;\"],\n+                    [0, \"&lAtail;\"],\n+                    [0, \"&rAtail;\"],\n+                    [0, \"&larrfs;\"],\n+                    [0, \"&rarrfs;\"],\n+                    [0, \"&larrbfs;\"],\n+                    [0, \"&rarrbfs;\"],\n+                    [2, \"&nwarhk;\"],\n+                    [0, \"&nearhk;\"],\n+                    [0, \"&hksearow;\"],\n+                    [0, \"&hkswarow;\"],\n+                    [0, \"&nwnear;\"],\n+                    [0, \"&nesear;\"],\n+                    [0, \"&seswar;\"],\n+                    [0, \"&swnwar;\"],\n+                    [8, {\n+                        v: \"&rarrc;\",\n+                        n: 824,\n+                        o: \"&nrarrc;\"\n+                    }],\n+                    [1, \"&cudarrr;\"],\n+                    [0, \"&ldca;\"],\n+                    [0, \"&rdca;\"],\n+                    [0, \"&cudarrl;\"],\n+                    [0, \"&larrpl;\"],\n+                    [2, \"&curarrm;\"],\n+                    [0, \"&cularrp;\"],\n+                    [7, \"&rarrpl;\"],\n+                    [2, \"&harrcir;\"],\n+                    [0, \"&Uarrocir;\"],\n+                    [0, \"&lurdshar;\"],\n+                    [0, \"&ldrushar;\"],\n+                    [2, \"&LeftRightVector;\"],\n+                    [0, \"&RightUpDownVector;\"],\n+                    [0, \"&DownLeftRightVector;\"],\n+                    [0, \"&LeftUpDownVector;\"],\n+                    [0, \"&LeftVectorBar;\"],\n+                    [0, \"&RightVectorBar;\"],\n+                    [0, \"&RightUpVectorBar;\"],\n+                    [0, \"&RightDownVectorBar;\"],\n+                    [0, \"&DownLeftVectorBar;\"],\n+                    [0, \"&DownRightVectorBar;\"],\n+                    [0, \"&LeftUpVectorBar;\"],\n+                    [0, \"&LeftDownVectorBar;\"],\n+                    [0, \"&LeftTeeVector;\"],\n+                    [0, \"&RightTeeVector;\"],\n+                    [0, \"&RightUpTeeVector;\"],\n+                    [0, \"&RightDownTeeVector;\"],\n+                    [0, \"&DownLeftTeeVector;\"],\n+                    [0, \"&DownRightTeeVector;\"],\n+                    [0, \"&LeftUpTeeVector;\"],\n+                    [0, \"&LeftDownTeeVector;\"],\n+                    [0, \"&lHar;\"],\n+                    [0, \"&uHar;\"],\n+                    [0, \"&rHar;\"],\n+                    [0, \"&dHar;\"],\n+                    [0, \"&luruhar;\"],\n+                    [0, \"&ldrdhar;\"],\n+                    [0, \"&ruluhar;\"],\n+                    [0, \"&rdldhar;\"],\n+                    [0, \"&lharul;\"],\n+                    [0, \"&llhard;\"],\n+                    [0, \"&rharul;\"],\n+                    [0, \"&lrhard;\"],\n+                    [0, \"&udhar;\"],\n+                    [0, \"&duhar;\"],\n+                    [0, \"&RoundImplies;\"],\n+                    [0, \"&erarr;\"],\n+                    [0, \"&simrarr;\"],\n+                    [0, \"&larrsim;\"],\n+                    [0, \"&rarrsim;\"],\n+                    [0, \"&rarrap;\"],\n+                    [0, \"&ltlarr;\"],\n+                    [1, \"&gtrarr;\"],\n+                    [0, \"&subrarr;\"],\n+                    [1, \"&suplarr;\"],\n+                    [0, \"&lfisht;\"],\n+                    [0, \"&rfisht;\"],\n+                    [0, \"&ufisht;\"],\n+                    [0, \"&dfisht;\"],\n+                    [5, \"&lopar;\"],\n+                    [0, \"&ropar;\"],\n+                    [4, \"&lbrke;\"],\n+                    [0, \"&rbrke;\"],\n+                    [0, \"&lbrkslu;\"],\n+                    [0, \"&rbrksld;\"],\n+                    [0, \"&lbrksld;\"],\n+                    [0, \"&rbrkslu;\"],\n+                    [0, \"&langd;\"],\n+                    [0, \"&rangd;\"],\n+                    [0, \"&lparlt;\"],\n+                    [0, \"&rpargt;\"],\n+                    [0, \"&gtlPar;\"],\n+                    [0, \"&ltrPar;\"],\n+                    [3, \"&vzigzag;\"],\n+                    [1, \"&vangrt;\"],\n+                    [0, \"&angrtvbd;\"],\n+                    [6, \"&ange;\"],\n+                    [0, \"&range;\"],\n+                    [0, \"&dwangle;\"],\n+                    [0, \"&uwangle;\"],\n+                    [0, \"&angmsdaa;\"],\n+                    [0, \"&angmsdab;\"],\n+                    [0, \"&angmsdac;\"],\n+                    [0, \"&angmsdad;\"],\n+                    [0, \"&angmsdae;\"],\n+                    [0, \"&angmsdaf;\"],\n+                    [0, \"&angmsdag;\"],\n+                    [0, \"&angmsdah;\"],\n+                    [0, \"&bemptyv;\"],\n+                    [0, \"&demptyv;\"],\n+                    [0, \"&cemptyv;\"],\n+                    [0, \"&raemptyv;\"],\n+                    [0, \"&laemptyv;\"],\n+                    [0, \"&ohbar;\"],\n+                    [0, \"&omid;\"],\n+                    [0, \"&opar;\"],\n+                    [1, \"&operp;\"],\n+                    [1, \"&olcross;\"],\n+                    [0, \"&odsold;\"],\n+                    [1, \"&olcir;\"],\n+                    [0, \"&ofcir;\"],\n+                    [0, \"&olt;\"],\n+                    [0, \"&ogt;\"],\n+                    [0, \"&cirscir;\"],\n+                    [0, \"&cirE;\"],\n+                    [0, \"&solb;\"],\n+                    [0, \"&bsolb;\"],\n+                    [3, \"&boxbox;\"],\n+                    [3, \"&trisb;\"],\n+                    [0, \"&rtriltri;\"],\n+                    [0, {\n+                        v: \"&LeftTriangleBar;\",\n+                        n: 824,\n+                        o: \"&NotLeftTriangleBar;\"\n+                    }],\n+                    [0, {\n+                        v: \"&RightTriangleBar;\",\n+                        n: 824,\n+                        o: \"&NotRightTriangleBar;\"\n+                    }],\n+                    [11, \"&iinfin;\"],\n+                    [0, \"&infintie;\"],\n+                    [0, \"&nvinfin;\"],\n+                    [4, \"&eparsl;\"],\n+                    [0, \"&smeparsl;\"],\n+                    [0, \"&eqvparsl;\"],\n+                    [5, \"&blacklozenge;\"],\n+                    [8, \"&RuleDelayed;\"],\n+                    [1, \"&dsol;\"],\n+                    [9, \"&bigodot;\"],\n+                    [0, \"&bigoplus;\"],\n+                    [0, \"&bigotimes;\"],\n+                    [1, \"&biguplus;\"],\n+                    [1, \"&bigsqcup;\"],\n+                    [5, \"&iiiint;\"],\n+                    [0, \"&fpartint;\"],\n+                    [2, \"&cirfnint;\"],\n+                    [0, \"&awint;\"],\n+                    [0, \"&rppolint;\"],\n+                    [0, \"&scpolint;\"],\n+                    [0, \"&npolint;\"],\n+                    [0, \"&pointint;\"],\n+                    [0, \"&quatint;\"],\n+                    [0, \"&intlarhk;\"],\n+                    [10, \"&pluscir;\"],\n+                    [0, \"&plusacir;\"],\n+                    [0, \"&simplus;\"],\n+                    [0, \"&plusdu;\"],\n+                    [0, \"&plussim;\"],\n+                    [0, \"&plustwo;\"],\n+                    [1, \"&mcomma;\"],\n+                    [0, \"&minusdu;\"],\n+                    [2, \"&loplus;\"],\n+                    [0, \"&roplus;\"],\n+                    [0, \"&Cross;\"],\n+                    [0, \"&timesd;\"],\n+                    [0, \"&timesbar;\"],\n+                    [1, \"&smashp;\"],\n+                    [0, \"&lotimes;\"],\n+                    [0, \"&rotimes;\"],\n+                    [0, \"&otimesas;\"],\n+                    [0, \"&Otimes;\"],\n+                    [0, \"&odiv;\"],\n+                    [0, \"&triplus;\"],\n+                    [0, \"&triminus;\"],\n+                    [0, \"&tritime;\"],\n+                    [0, \"&intprod;\"],\n+                    [2, \"&amalg;\"],\n+                    [0, \"&capdot;\"],\n+                    [1, \"&ncup;\"],\n+                    [0, \"&ncap;\"],\n+                    [0, \"&capand;\"],\n+                    [0, \"&cupor;\"],\n+                    [0, \"&cupcap;\"],\n+                    [0, \"&capcup;\"],\n+                    [0, \"&cupbrcap;\"],\n+                    [0, \"&capbrcup;\"],\n+                    [0, \"&cupcup;\"],\n+                    [0, \"&capcap;\"],\n+                    [0, \"&ccups;\"],\n+                    [0, \"&ccaps;\"],\n+                    [2, \"&ccupssm;\"],\n+                    [2, \"&And;\"],\n+                    [0, \"&Or;\"],\n+                    [0, \"&andand;\"],\n+                    [0, \"&oror;\"],\n+                    [0, \"&orslope;\"],\n+                    [0, \"&andslope;\"],\n+                    [1, \"&andv;\"],\n+                    [0, \"&orv;\"],\n+                    [0, \"&andd;\"],\n+                    [0, \"&ord;\"],\n+                    [1, \"&wedbar;\"],\n+                    [6, \"&sdote;\"],\n+                    [3, \"&simdot;\"],\n+                    [2, {\n+                        v: \"&congdot;\",\n+                        n: 824,\n+                        o: \"&ncongdot;\"\n+                    }],\n+                    [0, \"&easter;\"],\n+                    [0, \"&apacir;\"],\n+                    [0, {\n+                        v: \"&apE;\",\n+                        n: 824,\n+                        o: \"&napE;\"\n+                    }],\n+                    [0, \"&eplus;\"],\n+                    [0, \"&pluse;\"],\n+                    [0, \"&Esim;\"],\n+                    [0, \"&Colone;\"],\n+                    [0, \"&Equal;\"],\n+                    [1, \"&ddotseq;\"],\n+                    [0, \"&equivDD;\"],\n+                    [0, \"&ltcir;\"],\n+                    [0, \"&gtcir;\"],\n+                    [0, \"&ltquest;\"],\n+                    [0, \"&gtquest;\"],\n+                    [0, {\n+                        v: \"&leqslant;\",\n+                        n: 824,\n+                        o: \"&nleqslant;\"\n+                    }],\n+                    [0, {\n+                        v: \"&geqslant;\",\n+                        n: 824,\n+                        o: \"&ngeqslant;\"\n+                    }],\n+                    [0, \"&lesdot;\"],\n+                    [0, \"&gesdot;\"],\n+                    [0, \"&lesdoto;\"],\n+                    [0, \"&gesdoto;\"],\n+                    [0, \"&lesdotor;\"],\n+                    [0, \"&gesdotol;\"],\n+                    [0, \"&lap;\"],\n+                    [0, \"&gap;\"],\n+                    [0, \"&lne;\"],\n+                    [0, \"&gne;\"],\n+                    [0, \"&lnap;\"],\n+                    [0, \"&gnap;\"],\n+                    [0, \"&lEg;\"],\n+                    [0, \"&gEl;\"],\n+                    [0, \"&lsime;\"],\n+                    [0, \"&gsime;\"],\n+                    [0, \"&lsimg;\"],\n+                    [0, \"&gsiml;\"],\n+                    [0, \"&lgE;\"],\n+                    [0, \"&glE;\"],\n+                    [0, \"&lesges;\"],\n+                    [0, \"&gesles;\"],\n+                    [0, \"&els;\"],\n+                    [0, \"&egs;\"],\n+                    [0, \"&elsdot;\"],\n+                    [0, \"&egsdot;\"],\n+                    [0, \"&el;\"],\n+                    [0, \"&eg;\"],\n+                    [2, \"&siml;\"],\n+                    [0, \"&simg;\"],\n+                    [0, \"&simlE;\"],\n+                    [0, \"&simgE;\"],\n+                    [0, {\n+                        v: \"&LessLess;\",\n+                        n: 824,\n+                        o: \"&NotNestedLessLess;\"\n+                    }],\n+                    [0, {\n+                        v: \"&GreaterGreater;\",\n+                        n: 824,\n+                        o: \"&NotNestedGreaterGreater;\"\n+                    }],\n+                    [1, \"&glj;\"],\n+                    [0, \"&gla;\"],\n+                    [0, \"&ltcc;\"],\n+                    [0, \"&gtcc;\"],\n+                    [0, \"&lescc;\"],\n+                    [0, \"&gescc;\"],\n+                    [0, \"&smt;\"],\n+                    [0, \"&lat;\"],\n+                    [0, {\n+                        v: \"&smte;\",\n+                        n: 65024,\n+                        o: \"&smtes;\"\n+                    }],\n+                    [0, {\n+                        v: \"&late;\",\n+                        n: 65024,\n+                        o: \"&lates;\"\n+                    }],\n+                    [0, \"&bumpE;\"],\n+                    [0, {\n+                        v: \"&PrecedesEqual;\",\n+                        n: 824,\n+                        o: \"&NotPrecedesEqual;\"\n+                    }],\n+                    [0, {\n+                        v: \"&sce;\",\n+                        n: 824,\n+                        o: \"&NotSucceedsEqual;\"\n+                    }],\n+                    [2, \"&prE;\"],\n+                    [0, \"&scE;\"],\n+                    [0, \"&precneqq;\"],\n+                    [0, \"&scnE;\"],\n+                    [0, \"&prap;\"],\n+                    [0, \"&scap;\"],\n+                    [0, \"&precnapprox;\"],\n+                    [0, \"&scnap;\"],\n+                    [0, \"&Pr;\"],\n+                    [0, \"&Sc;\"],\n+                    [0, \"&subdot;\"],\n+                    [0, \"&supdot;\"],\n+                    [0, \"&subplus;\"],\n+                    [0, \"&supplus;\"],\n+                    [0, \"&submult;\"],\n+                    [0, \"&supmult;\"],\n+                    [0, \"&subedot;\"],\n+                    [0, \"&supedot;\"],\n+                    [0, {\n+                        v: \"&subE;\",\n+                        n: 824,\n+                        o: \"&nsubE;\"\n+                    }],\n+                    [0, {\n+                        v: \"&supE;\",\n+                        n: 824,\n+                        o: \"&nsupE;\"\n+                    }],\n+                    [0, \"&subsim;\"],\n+                    [0, \"&supsim;\"],\n+                    [2, {\n+                        v: \"&subnE;\",\n+                        n: 65024,\n+                        o: \"&varsubsetneqq;\"\n+                    }],\n+                    [0, {\n+                        v: \"&supnE;\",\n+                        n: 65024,\n+                        o: \"&varsupsetneqq;\"\n+                    }],\n+                    [2, \"&csub;\"],\n+                    [0, \"&csup;\"],\n+                    [0, \"&csube;\"],\n+                    [0, \"&csupe;\"],\n+                    [0, \"&subsup;\"],\n+                    [0, \"&supsub;\"],\n+                    [0, \"&subsub;\"],\n+                    [0, \"&supsup;\"],\n+                    [0, \"&suphsub;\"],\n+                    [0, \"&supdsub;\"],\n+                    [0, \"&forkv;\"],\n+                    [0, \"&topfork;\"],\n+                    [0, \"&mlcp;\"],\n+                    [8, \"&Dashv;\"],\n+                    [1, \"&Vdashl;\"],\n+                    [0, \"&Barv;\"],\n+                    [0, \"&vBar;\"],\n+                    [0, \"&vBarv;\"],\n+                    [1, \"&Vbar;\"],\n+                    [0, \"&Not;\"],\n+                    [0, \"&bNot;\"],\n+                    [0, \"&rnmid;\"],\n+                    [0, \"&cirmid;\"],\n+                    [0, \"&midcir;\"],\n+                    [0, \"&topcir;\"],\n+                    [0, \"&nhpar;\"],\n+                    [0, \"&parsim;\"],\n+                    [9, {\n+                        v: \"&parsl;\",\n+                        n: 8421,\n+                        o: \"&nparsl;\"\n+                    }],\n+                    [44343, {\n+                        n: new Map( /* #__PURE__ */ restoreDiff([\n+                            [56476, \"&Ascr;\"],\n+                            [1, \"&Cscr;\"],\n+                            [0, \"&Dscr;\"],\n+                            [2, \"&Gscr;\"],\n+                            [2, \"&Jscr;\"],\n+                            [0, \"&Kscr;\"],\n+                            [2, \"&Nscr;\"],\n+                            [0, \"&Oscr;\"],\n+                            [0, \"&Pscr;\"],\n+                            [0, \"&Qscr;\"],\n+                            [1, \"&Sscr;\"],\n+                            [0, \"&Tscr;\"],\n+                            [0, \"&Uscr;\"],\n+                            [0, \"&Vscr;\"],\n+                            [0, \"&Wscr;\"],\n+                            [0, \"&Xscr;\"],\n+                            [0, \"&Yscr;\"],\n+                            [0, \"&Zscr;\"],\n+                            [0, \"&ascr;\"],\n+                            [0, \"&bscr;\"],\n+                            [0, \"&cscr;\"],\n+                            [0, \"&dscr;\"],\n+                            [1, \"&fscr;\"],\n+                            [1, \"&hscr;\"],\n+                            [0, \"&iscr;\"],\n+                            [0, \"&jscr;\"],\n+                            [0, \"&kscr;\"],\n+                            [0, \"&lscr;\"],\n+                            [0, \"&mscr;\"],\n+                            [0, \"&nscr;\"],\n+                            [1, \"&pscr;\"],\n+                            [0, \"&qscr;\"],\n+                            [0, \"&rscr;\"],\n+                            [0, \"&sscr;\"],\n+                            [0, \"&tscr;\"],\n+                            [0, \"&uscr;\"],\n+                            [0, \"&vscr;\"],\n+                            [0, \"&wscr;\"],\n+                            [0, \"&xscr;\"],\n+                            [0, \"&yscr;\"],\n+                            [0, \"&zscr;\"],\n+                            [52, \"&Afr;\"],\n+                            [0, \"&Bfr;\"],\n+                            [1, \"&Dfr;\"],\n+                            [0, \"&Efr;\"],\n+                            [0, \"&Ffr;\"],\n+                            [0, \"&Gfr;\"],\n+                            [2, \"&Jfr;\"],\n+                            [0, \"&Kfr;\"],\n+                            [0, \"&Lfr;\"],\n+                            [0, \"&Mfr;\"],\n+                            [0, \"&Nfr;\"],\n+                            [0, \"&Ofr;\"],\n+                            [0, \"&Pfr;\"],\n+                            [0, \"&Qfr;\"],\n+                            [1, \"&Sfr;\"],\n+                            [0, \"&Tfr;\"],\n+                            [0, \"&Ufr;\"],\n+                            [0, \"&Vfr;\"],\n+                            [0, \"&Wfr;\"],\n+                            [0, \"&Xfr;\"],\n+                            [0, \"&Yfr;\"],\n+                            [1, \"&afr;\"],\n+                            [0, \"&bfr;\"],\n+                            [0, \"&cfr;\"],\n+                            [0, \"&dfr;\"],\n+                            [0, \"&efr;\"],\n+                            [0, \"&ffr;\"],\n+                            [0, \"&gfr;\"],\n+                            [0, \"&hfr;\"],\n+                            [0, \"&ifr;\"],\n+                            [0, \"&jfr;\"],\n+                            [0, \"&kfr;\"],\n+                            [0, \"&lfr;\"],\n+                            [0, \"&mfr;\"],\n+                            [0, \"&nfr;\"],\n+                            [0, \"&ofr;\"],\n+                            [0, \"&pfr;\"],\n+                            [0, \"&qfr;\"],\n+                            [0, \"&rfr;\"],\n+                            [0, \"&sfr;\"],\n+                            [0, \"&tfr;\"],\n+                            [0, \"&ufr;\"],\n+                            [0, \"&vfr;\"],\n+                            [0, \"&wfr;\"],\n+                            [0, \"&xfr;\"],\n+                            [0, \"&yfr;\"],\n+                            [0, \"&zfr;\"],\n+                            [0, \"&Aopf;\"],\n+                            [0, \"&Bopf;\"],\n+                            [1, \"&Dopf;\"],\n+                            [0, \"&Eopf;\"],\n+                            [0, \"&Fopf;\"],\n+                            [0, \"&Gopf;\"],\n+                            [1, \"&Iopf;\"],\n+                            [0, \"&Jopf;\"],\n+                            [0, \"&Kopf;\"],\n+                            [0, \"&Lopf;\"],\n+                            [0, \"&Mopf;\"],\n+                            [1, \"&Oopf;\"],\n+                            [3, \"&Sopf;\"],\n+                            [0, \"&Topf;\"],\n+                            [0, \"&Uopf;\"],\n+                            [0, \"&Vopf;\"],\n+                            [0, \"&Wopf;\"],\n+                            [0, \"&Xopf;\"],\n+                            [0, \"&Yopf;\"],\n+                            [1, \"&aopf;\"],\n+                            [0, \"&bopf;\"],\n+                            [0, \"&copf;\"],\n+                            [0, \"&dopf;\"],\n+                            [0, \"&eopf;\"],\n+                            [0, \"&fopf;\"],\n+                            [0, \"&gopf;\"],\n+                            [0, \"&hopf;\"],\n+                            [0, \"&iopf;\"],\n+                            [0, \"&jopf;\"],\n+                            [0, \"&kopf;\"],\n+                            [0, \"&lopf;\"],\n+                            [0, \"&mopf;\"],\n+                            [0, \"&nopf;\"],\n+                            [0, \"&oopf;\"],\n+                            [0, \"&popf;\"],\n+                            [0, \"&qopf;\"],\n+                            [0, \"&ropf;\"],\n+                            [0, \"&sopf;\"],\n+                            [0, \"&topf;\"],\n+                            [0, \"&uopf;\"],\n+                            [0, \"&vopf;\"],\n+                            [0, \"&wopf;\"],\n+                            [0, \"&xopf;\"],\n+                            [0, \"&yopf;\"],\n+                            [0, \"&zopf;\"]\n+                        ]))\n+                    }],\n+                    [8906, \"&fflig;\"],\n+                    [0, \"&filig;\"],\n+                    [0, \"&fllig;\"],\n+                    [0, \"&ffilig;\"],\n+                    [0, \"&ffllig;\"]\n+                ]));\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/entities/lib/index.js\":\n+            /*!***************************************************!*\\\n+              !*** ../../../node_modules/entities/lib/index.js ***!\n+              \\***************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLAttribute = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.DecodingMode = exports.EntityDecoder = exports.encodeHTML5 = exports.encodeHTML4 = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = exports.EncodingMode = exports.EntityLevel = void 0;\n+                var decode_js_1 = __webpack_require__( /*! ./decode.js */ \"../../../node_modules/entities/lib/decode.js\");\n+                var encode_js_1 = __webpack_require__( /*! ./encode.js */ \"../../../node_modules/entities/lib/encode.js\");\n+                var escape_js_1 = __webpack_require__( /*! ./escape.js */ \"../../../node_modules/entities/lib/escape.js\");\n+                /** The level of entities to support. */\n+                var EntityLevel;\n+                (function(EntityLevel) {\n+                    /** Support only XML entities. */\n+                    EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n+                    /** Support HTML entities, which are a superset of XML entities. */\n+                    EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n+                })(EntityLevel = exports.EntityLevel || (exports.EntityLevel = {}));\n+                var EncodingMode;\n+                (function(EncodingMode) {\n+                    /**\n+                     * The output is UTF-8 encoded. Only characters that need escaping within\n+                     * XML will be escaped.\n+                     */\n+                    EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n+                    /**\n+                     * The output consists only of ASCII characters. Characters that need\n+                     * escaping within HTML, and characters that aren't ASCII characters will\n+                     * be escaped.\n+                     */\n+                    EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n+                    /**\n+                     * Encode all characters that have an equivalent entity, as well as all\n+                     * characters that are not ASCII characters.\n+                     */\n+                    EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n+                    /**\n+                     * Encode all characters that have to be escaped in HTML attributes,\n+                     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n+                     */\n+                    EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n+                    /**\n+                     * Encode all characters that have to be escaped in HTML text,\n+                     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n+                     */\n+                    EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n+                })(EncodingMode = exports.EncodingMode || (exports.EncodingMode = {}));\n+                /**\n+                 * Decodes a string with entities.\n+                 *\n+                 * @param data String to decode.\n+                 * @param options Decoding options.\n+                 */\n+                function decode(data, options) {\n+                    if (options === void 0) {\n+                        options = EntityLevel.XML;\n+                    }\n+                    var level = typeof options === \"number\" ? options : options.level;\n+                    if (level === EntityLevel.HTML) {\n+                        var mode = typeof options === \"object\" ? options.mode : undefined;\n+                        return (0, decode_js_1.decodeHTML)(data, mode);\n+                    }\n+                    return (0, decode_js_1.decodeXML)(data);\n+                }\n+                exports.decode = decode;\n+                /**\n+                 * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n+                 *\n+                 * @param data String to decode.\n+                 * @param options Decoding options.\n+                 * @deprecated Use `decode` with the `mode` set to `Strict`.\n+                 */\n+                function decodeStrict(data, options) {\n+                    var _a;\n+                    if (options === void 0) {\n+                        options = EntityLevel.XML;\n+                    }\n+                    var opts = typeof options === \"number\" ? {\n+                        level: options\n+                    } : options;\n+                    (_a = opts.mode) !== null && _a !== void 0 ? _a : opts.mode = decode_js_1.DecodingMode.Strict;\n+                    return decode(data, opts);\n+                }\n+                exports.decodeStrict = decodeStrict;\n+                /**\n+                 * Encodes a string with entities.\n+                 *\n+                 * @param data String to encode.\n+                 * @param options Encoding options.\n+                 */\n+                function encode(data, options) {\n+                    if (options === void 0) {\n+                        options = EntityLevel.XML;\n+                    }\n+                    var opts = typeof options === \"number\" ? {\n+                        level: options\n+                    } : options;\n+                    // Mode `UTF8` just escapes XML entities\n+                    if (opts.mode === EncodingMode.UTF8) return (0, escape_js_1.escapeUTF8)(data);\n+                    if (opts.mode === EncodingMode.Attribute) return (0, escape_js_1.escapeAttribute)(data);\n+                    if (opts.mode === EncodingMode.Text) return (0, escape_js_1.escapeText)(data);\n+                    if (opts.level === EntityLevel.HTML) {\n+                        if (opts.mode === EncodingMode.ASCII) {\n+                            return (0, encode_js_1.encodeNonAsciiHTML)(data);\n+                        }\n+                        return (0, encode_js_1.encodeHTML)(data);\n+                    }\n+                    // ASCII and Extensive are equivalent\n+                    return (0, escape_js_1.encodeXML)(data);\n+                }\n+                exports.encode = encode;\n+                var escape_js_2 = __webpack_require__( /*! ./escape.js */ \"../../../node_modules/entities/lib/escape.js\");\n+                Object.defineProperty(exports, \"encodeXML\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return escape_js_2.encodeXML;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"escape\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return escape_js_2.escape;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"escapeUTF8\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return escape_js_2.escapeUTF8;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"escapeAttribute\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return escape_js_2.escapeAttribute;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"escapeText\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return escape_js_2.escapeText;\n+                    }\n+                }));\n+                var encode_js_2 = __webpack_require__( /*! ./encode.js */ \"../../../node_modules/entities/lib/encode.js\");\n+                Object.defineProperty(exports, \"encodeHTML\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return encode_js_2.encodeHTML;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"encodeNonAsciiHTML\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return encode_js_2.encodeNonAsciiHTML;\n+                    }\n+                }));\n+                // Legacy aliases (deprecated)\n+                Object.defineProperty(exports, \"encodeHTML4\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return encode_js_2.encodeHTML;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"encodeHTML5\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return encode_js_2.encodeHTML;\n+                    }\n+                }));\n+                var decode_js_2 = __webpack_require__( /*! ./decode.js */ \"../../../node_modules/entities/lib/decode.js\");\n+                Object.defineProperty(exports, \"EntityDecoder\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return decode_js_2.EntityDecoder;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"DecodingMode\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return decode_js_2.DecodingMode;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"decodeXML\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return decode_js_2.decodeXML;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"decodeHTML\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return decode_js_2.decodeHTML;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"decodeHTMLStrict\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return decode_js_2.decodeHTMLStrict;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"decodeHTMLAttribute\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return decode_js_2.decodeHTMLAttribute;\n+                    }\n+                }));\n+                // Legacy aliases (deprecated)\n+                Object.defineProperty(exports, \"decodeHTML4\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return decode_js_2.decodeHTML;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"decodeHTML5\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return decode_js_2.decodeHTML;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"decodeHTML4Strict\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return decode_js_2.decodeHTMLStrict;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"decodeHTML5Strict\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return decode_js_2.decodeHTMLStrict;\n+                    }\n+                }));\n+                Object.defineProperty(exports, \"decodeXMLStrict\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return decode_js_2.decodeXML;\n+                    }\n+                }));\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../../node_modules/framer-motion/dist/cjs/index.js\":\n+            /*!*************************************************************!*\\\n+              !*** ../../../node_modules/framer-motion/dist/cjs/index.js ***!\n+              \\*************************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                var tslib = __webpack_require__( /*! tslib */ \"../../../node_modules/tslib/tslib.es6.mjs\");\n+                var React = __webpack_require__( /*! react */ \"react\");\n+                var heyListen = __webpack_require__( /*! hey-listen */ \"../../../node_modules/hey-listen/dist/hey-listen.es.js\");\n+                var styleValueTypes = __webpack_require__( /*! style-value-types */ \"../../../node_modules/style-value-types/dist/valueTypes.cjs.js\");\n+                var popmotion = __webpack_require__( /*! popmotion */ \"../../../node_modules/popmotion/dist/popmotion.cjs.js\");\n+                var sync = __webpack_require__( /*! framesync */ \"../../../node_modules/framesync/dist/framesync.cjs.js\");\n+                var dom = __webpack_require__( /*! @motionone/dom */ \"../../../node_modules/@motionone/dom/dist/index.es.js\");\n+\n+                function _interopDefaultLegacy(e) {\n+                    return e && typeof e === 'object' && 'default' in e ? e : {\n+                        'default': e\n+                    };\n+                }\n+\n+                function _interopNamespace(e) {\n+                    if (e && e.__esModule) return e;\n+                    var n = Object.create(null);\n+                    if (e) {\n+                        Object.keys(e).forEach(function(k) {\n+                            if (k !== 'default') {\n+                                var d = Object.getOwnPropertyDescriptor(e, k);\n+                                Object.defineProperty(n, k, d.get ? d : {\n+                                    enumerable: true,\n+                                    get: function() {\n+                                        return e[k];\n+                                    }\n+                                });\n+                            }\n+                        });\n+                    }\n+                    n[\"default\"] = e;\n+                    return Object.freeze(n);\n+                }\n+                var React__namespace = /*#__PURE__*/ _interopNamespace(React);\n+                var React__default = /*#__PURE__*/ _interopDefaultLegacy(React);\n+                var sync__default = /*#__PURE__*/ _interopDefaultLegacy(sync);\n+\n+                /**\n+                 * Browser-safe usage of process\n+                 */\n+                var defaultEnvironment = \"production\";\n+                var env = typeof process === \"undefined\" || process.env === undefined ? defaultEnvironment : \"development\" || 0;\n+                var createDefinition = function(propNames) {\n+                    return {\n+                        isEnabled: function(props) {\n+                            return propNames.some(function(name) {\n+                                return !!props[name];\n+                            });\n+                        }\n+                    };\n+                };\n+                var featureDefinitions = {\n+                    measureLayout: createDefinition([\"layout\", \"layoutId\", \"drag\"]),\n+                    animation: createDefinition([\"animate\", \"exit\", \"variants\", \"whileHover\", \"whileTap\", \"whileFocus\", \"whileDrag\", \"whileInView\"]),\n+                    exit: createDefinition([\"exit\"]),\n+                    drag: createDefinition([\"drag\", \"dragControls\"]),\n+                    focus: createDefinition([\"whileFocus\"]),\n+                    hover: createDefinition([\"whileHover\", \"onHoverStart\", \"onHoverEnd\"]),\n+                    tap: createDefinition([\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"]),\n+                    pan: createDefinition([\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"]),\n+                    inView: createDefinition([\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"])\n+                };\n+\n+                function loadFeatures(features) {\n+                    for (var key in features) {\n+                        if (features[key] === null) continue;\n+                        if (key === \"projectionNodeConstructor\") {\n+                            featureDefinitions.projectionNodeConstructor = features[key];\n+                        } else {\n+                            featureDefinitions[key].Component = features[key];\n+                        }\n+                    }\n+                }\n+                var LazyContext = React.createContext({\n+                    strict: false\n+                });\n+                var featureNames = Object.keys(featureDefinitions);\n+                var numFeatures = featureNames.length;\n+                /**\n+                 * Load features via renderless components based on the provided MotionProps.\n+                 */\n+                function useFeatures(props, visualElement, preloadedFeatures) {\n+                    var features = [];\n+                    var lazyContext = React.useContext(LazyContext);\n+                    if (!visualElement) return null;\n+                    /**\n+                     * If we're in development mode, check to make sure we're not rendering a motion component\n+                     * as a child of LazyMotion, as this will break the file-size benefits of using it.\n+                     */\n+                    if (env !== \"production\" && preloadedFeatures && lazyContext.strict) {\n+                        heyListen.invariant(false, \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\");\n+                    }\n+                    for (var i = 0; i < numFeatures; i++) {\n+                        var name_1 = featureNames[i];\n+                        var _a = featureDefinitions[name_1],\n+                            isEnabled = _a.isEnabled,\n+                            Component = _a.Component;\n+                        /**\n+                         * It might be possible in the future to use this moment to\n+                         * dynamically request functionality. In initial tests this\n+                         * was producing a lot of duplication amongst bundles.\n+                         */\n+                        if (isEnabled(props) && Component) {\n+                            features.push(React__namespace.createElement(Component, tslib.__assign({\n+                                key: name_1\n+                            }, props, {\n+                                visualElement: visualElement\n+                            })));\n+                        }\n+                    }\n+                    return features;\n+                }\n+\n+                /**\n+                 * @public\n+                 */\n+                var MotionConfigContext = React.createContext({\n+                    transformPagePoint: function(p) {\n+                        return p;\n+                    },\n+                    isStatic: false,\n+                    reducedMotion: \"never\"\n+                });\n+                var MotionContext = React.createContext({});\n+\n+                function useVisualElementContext() {\n+                    return React.useContext(MotionContext).visualElement;\n+                }\n+\n+                /**\n+                 * @public\n+                 */\n+                var PresenceContext = React.createContext(null);\n+                var isBrowser = typeof document !== \"undefined\";\n+                var useIsomorphicLayoutEffect = isBrowser ? React.useLayoutEffect : React.useEffect;\n+\n+                // Does this device prefer reduced motion? Returns `null` server-side.\n+                var prefersReducedMotion = {\n+                    current: null\n+                };\n+                var hasDetected = false;\n+\n+                function initPrefersReducedMotion() {\n+                    hasDetected = true;\n+                    if (!isBrowser) return;\n+                    if (window.matchMedia) {\n+                        var motionMediaQuery_1 = window.matchMedia(\"(prefers-reduced-motion)\");\n+                        var setReducedMotionPreferences = function() {\n+                            return prefersReducedMotion.current = motionMediaQuery_1.matches;\n+                        };\n+                        motionMediaQuery_1.addListener(setReducedMotionPreferences);\n+                        setReducedMotionPreferences();\n+                    } else {\n+                        prefersReducedMotion.current = false;\n+                    }\n+                }\n+                /**\n+                 * A hook that returns `true` if we should be using reduced motion based on the current device's Reduced Motion setting.\n+                 *\n+                 * This can be used to implement changes to your UI based on Reduced Motion. For instance, replacing motion-sickness inducing\n+                 * `x`/`y` animations with `opacity`, disabling the autoplay of background videos, or turning off parallax motion.\n+                 *\n+                 * It will actively respond to changes and re-render your components with the latest setting.\n+                 *\n+                 * ```jsx\n+                 * export function Sidebar({ isOpen }) {\n+                 *   const shouldReduceMotion = useReducedMotion()\n+                 *   const closedX = shouldReduceMotion ? 0 : \"-100%\"\n+                 *\n+                 *   return (\n+                 *     <motion.div animate={{\n+                 *       opacity: isOpen ? 1 : 0,\n+                 *       x: isOpen ? 0 : closedX\n+                 *     }} />\n+                 *   )\n+                 * }\n+                 * ```\n+                 *\n+                 * @return boolean\n+                 *\n+                 * @public\n+                 */\n+                function useReducedMotion() {\n+                    /**\n+                     * Lazy initialisation of prefersReducedMotion\n+                     */\n+                    !hasDetected && initPrefersReducedMotion();\n+                    var _a = tslib.__read(React.useState(prefersReducedMotion.current), 1),\n+                        shouldReduceMotion = _a[0];\n+                    /**\n+                     * TODO See if people miss automatically updating shouldReduceMotion setting\n+                     */\n+                    return shouldReduceMotion;\n+                }\n+\n+                function useReducedMotionConfig() {\n+                    var reducedMotionPreference = useReducedMotion();\n+                    var reducedMotion = React.useContext(MotionConfigContext).reducedMotion;\n+                    if (reducedMotion === \"never\") {\n+                        return false;\n+                    } else if (reducedMotion === \"always\") {\n+                        return true;\n+                    } else {\n+                        return reducedMotionPreference;\n+                    }\n+                }\n+\n+                function useVisualElement(Component, visualState, props, createVisualElement) {\n+                    var lazyContext = React.useContext(LazyContext);\n+                    var parent = useVisualElementContext();\n+                    var presenceContext = React.useContext(PresenceContext);\n+                    var shouldReduceMotion = useReducedMotionConfig();\n+                    var visualElementRef = React.useRef(undefined);\n+                    /**\n+                     * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n+                     */\n+                    if (!createVisualElement) createVisualElement = lazyContext.renderer;\n+                    if (!visualElementRef.current && createVisualElement) {\n+                        visualElementRef.current = createVisualElement(Component, {\n+                            visualState: visualState,\n+                            parent: parent,\n+                            props: props,\n+                            presenceId: presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.id,\n+                            blockInitialAnimation: (presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) === false,\n+                            shouldReduceMotion: shouldReduceMotion\n+                        });\n+                    }\n+                    var visualElement = visualElementRef.current;\n+                    useIsomorphicLayoutEffect(function() {\n+                        visualElement === null || visualElement === void 0 ? void 0 : visualElement.syncRender();\n+                    });\n+                    React.useEffect(function() {\n+                        var _a;\n+                        (_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.animationState) === null || _a === void 0 ? void 0 : _a.animateChanges();\n+                    });\n+                    useIsomorphicLayoutEffect(function() {\n+                        return function() {\n+                            return visualElement === null || visualElement === void 0 ? void 0 : visualElement.notifyUnmount();\n+                        };\n+                    }, []);\n+                    return visualElement;\n+                }\n+\n+                function isRefObject(ref) {\n+                    return typeof ref === \"object\" && Object.prototype.hasOwnProperty.call(ref, \"current\");\n+                }\n+\n+                /**\n+                 * Creates a ref function that, when called, hydrates the provided\n+                 * external ref and VisualElement.\n+                 */\n+                function useMotionRef(visualState, visualElement, externalRef) {\n+                    return React.useCallback(function(instance) {\n+                            var _a;\n+                            instance && ((_a = visualState.mount) === null || _a === void 0 ? void 0 : _a.call(visualState, instance));\n+                            if (visualElement) {\n+                                instance ? visualElement.mount(instance) : visualElement.unmount();\n+                            }\n+                            if (externalRef) {\n+                                if (typeof externalRef === \"function\") {\n+                                    externalRef(instance);\n+                                } else if (isRefObject(externalRef)) {\n+                                    externalRef.current = instance;\n+                                }\n+                            }\n+                        },\n+                        /**\n+                         * Only pass a new ref callback to React if we've received a visual element\n+                         * factory. Otherwise we'll be mounting/remounting every time externalRef\n+                         * or other dependencies change.\n+                         */\n+                        [visualElement]);\n+                }\n+\n+                /**\n+                 * Decides if the supplied variable is an array of variant labels\n+                 */\n+                function isVariantLabels(v) {\n+                    return Array.isArray(v);\n+                }\n+                /**\n+                 * Decides if the supplied variable is variant label\n+                 */\n+                function isVariantLabel(v) {\n+                    return typeof v === \"string\" || isVariantLabels(v);\n+                }\n+                /**\n+                 * Creates an object containing the latest state of every MotionValue on a VisualElement\n+                 */\n+                function getCurrent(visualElement) {\n+                    var current = {};\n+                    visualElement.forEachValue(function(value, key) {\n+                        return current[key] = value.get();\n+                    });\n+                    return current;\n+                }\n+                /**\n+                 * Creates an object containing the latest velocity of every MotionValue on a VisualElement\n+                 */\n+                function getVelocity$1(visualElement) {\n+                    var velocity = {};\n+                    visualElement.forEachValue(function(value, key) {\n+                        return velocity[key] = value.getVelocity();\n+                    });\n+                    return velocity;\n+                }\n+\n+                function resolveVariantFromProps(props, definition, custom, currentValues, currentVelocity) {\n+                    var _a;\n+                    if (currentValues === void 0) {\n+                        currentValues = {};\n+                    }\n+                    if (currentVelocity === void 0) {\n+                        currentVelocity = {};\n+                    }\n+                    /**\n+                     * If the variant definition is a function, resolve.\n+                     */\n+                    if (typeof definition === \"function\") {\n+                        definition = definition(custom !== null && custom !== void 0 ? custom : props.custom, currentValues, currentVelocity);\n+                    }\n+                    /**\n+                     * If the variant definition is a variant label, or\n+                     * the function returned a variant label, resolve.\n+                     */\n+                    if (typeof definition === \"string\") {\n+                        definition = (_a = props.variants) === null || _a === void 0 ? void 0 : _a[definition];\n+                    }\n+                    /**\n+                     * At this point we've resolved both functions and variant labels,\n+                     * but the resolved variant label might itself have been a function.\n+                     * If so, resolve. This can only have returned a valid target object.\n+                     */\n+                    if (typeof definition === \"function\") {\n+                        definition = definition(custom !== null && custom !== void 0 ? custom : props.custom, currentValues, currentVelocity);\n+                    }\n+                    return definition;\n+                }\n+\n+                function resolveVariant(visualElement, definition, custom) {\n+                    var props = visualElement.getProps();\n+                    return resolveVariantFromProps(props, definition, custom !== null && custom !== void 0 ? custom : props.custom, getCurrent(visualElement), getVelocity$1(visualElement));\n+                }\n+\n+                function checkIfControllingVariants(props) {\n+                    var _a;\n+                    return typeof((_a = props.animate) === null || _a === void 0 ? void 0 : _a.start) === \"function\" || isVariantLabel(props.initial) || isVariantLabel(props.animate) || isVariantLabel(props.whileHover) || isVariantLabel(props.whileDrag) || isVariantLabel(props.whileTap) || isVariantLabel(props.whileFocus) || isVariantLabel(props.exit);\n+                }\n+\n+                function checkIfVariantNode(props) {\n+                    return Boolean(checkIfControllingVariants(props) || props.variants);\n+                }\n+\n+                function getCurrentTreeVariants(props, context) {\n+                    if (checkIfControllingVariants(props)) {\n+                        var initial = props.initial,\n+                            animate = props.animate;\n+                        return {\n+                            initial: initial === false || isVariantLabel(initial) ? initial : undefined,\n+                            animate: isVariantLabel(animate) ? animate : undefined\n+                        };\n+                    }\n+                    return props.inherit !== false ? context : {};\n+                }\n+\n+                function useCreateMotionContext(props) {\n+                    var _a = getCurrentTreeVariants(props, React.useContext(MotionContext)),\n+                        initial = _a.initial,\n+                        animate = _a.animate;\n+                    return React.useMemo(function() {\n+                        return {\n+                            initial: initial,\n+                            animate: animate\n+                        };\n+                    }, [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n+                }\n+\n+                function variantLabelsAsDependency(prop) {\n+                    return Array.isArray(prop) ? prop.join(\" \") : prop;\n+                }\n+\n+                /**\n+                 * Creates a constant value over the lifecycle of a component.\n+                 *\n+                 * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n+                 * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n+                 * you can ensure that initialisers don't execute twice or more.\n+                 */\n+                function useConstant(init) {\n+                    var ref = React.useRef(null);\n+                    if (ref.current === null) {\n+                        ref.current = init();\n+                    }\n+                    return ref.current;\n+                }\n+\n+                /**\n+                 * This should only ever be modified on the client otherwise it'll\n+                 * persist through server requests. If we need instanced states we\n+                 * could lazy-init via root.\n+                 */\n+                var globalProjectionState = {\n+                    /**\n+                     * Global flag as to whether the tree has animated since the last time\n+                     * we resized the window\n+                     */\n+                    hasAnimatedSinceResize: true,\n+                    /**\n+                     * We set this to true once, on the first update. Any nodes added to the tree beyond that\n+                     * update will be given a `data-projection-id` attribute.\n+                     */\n+                    hasEverUpdated: false\n+                };\n+                var id$1 = 1;\n+\n+                function useProjectionId() {\n+                    return useConstant(function() {\n+                        if (globalProjectionState.hasEverUpdated) {\n+                            return id$1++;\n+                        }\n+                    });\n+                }\n+                var LayoutGroupContext = React.createContext({});\n+\n+                /**\n+                 * Internal, exported only for usage in Framer\n+                 */\n+                var SwitchLayoutGroupContext = React.createContext({});\n+\n+                function useProjection(projectionId, _a, visualElement, ProjectionNodeConstructor) {\n+                    var _b;\n+                    var layoutId = _a.layoutId,\n+                        layout = _a.layout,\n+                        drag = _a.drag,\n+                        dragConstraints = _a.dragConstraints,\n+                        layoutScroll = _a.layoutScroll;\n+                    var initialPromotionConfig = React.useContext(SwitchLayoutGroupContext);\n+                    if (!ProjectionNodeConstructor || !visualElement || (visualElement === null || visualElement === void 0 ? void 0 : visualElement.projection)) {\n+                        return;\n+                    }\n+                    visualElement.projection = new ProjectionNodeConstructor(projectionId, visualElement.getLatestValues(), (_b = visualElement.parent) === null || _b === void 0 ? void 0 : _b.projection);\n+                    visualElement.projection.setOptions({\n+                        layoutId: layoutId,\n+                        layout: layout,\n+                        alwaysMeasureLayout: Boolean(drag) || dragConstraints && isRefObject(dragConstraints),\n+                        visualElement: visualElement,\n+                        scheduleRender: function() {\n+                            return visualElement.scheduleRender();\n+                        },\n+                        /**\n+                         * TODO: Update options in an effect. This could be tricky as it'll be too late\n+                         * to update by the time layout animations run.\n+                         * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n+                         * ensuring it gets called if there's no potential layout animations.\n+                         *\n+                         */\n+                        animationType: typeof layout === \"string\" ? layout : \"both\",\n+                        initialPromotionConfig: initialPromotionConfig,\n+                        layoutScroll: layoutScroll\n+                    });\n+                }\n+                var VisualElementHandler = /** @class */ function(_super) {\n+                    tslib.__extends(VisualElementHandler, _super);\n+\n+                    function VisualElementHandler() {\n+                        return _super !== null && _super.apply(this, arguments) || this;\n+                    }\n+                    /**\n+                     * Update visual element props as soon as we know this update is going to be commited.\n+                     */\n+                    VisualElementHandler.prototype.getSnapshotBeforeUpdate = function() {\n+                        this.updateProps();\n+                        return null;\n+                    };\n+                    VisualElementHandler.prototype.componentDidUpdate = function() {};\n+                    VisualElementHandler.prototype.updateProps = function() {\n+                        var _a = this.props,\n+                            visualElement = _a.visualElement,\n+                            props = _a.props;\n+                        if (visualElement) visualElement.setProps(props);\n+                    };\n+                    VisualElementHandler.prototype.render = function() {\n+                        return this.props.children;\n+                    };\n+                    return VisualElementHandler;\n+                }(React__default[\"default\"].Component);\n+\n+                /**\n+                 * Create a `motion` component.\n+                 *\n+                 * This function accepts a Component argument, which can be either a string (ie \"div\"\n+                 * for `motion.div`), or an actual React component.\n+                 *\n+                 * Alongside this is a config option which provides a way of rendering the provided\n+                 * component \"offline\", or outside the React render cycle.\n+                 */\n+                function createMotionComponent(_a) {\n                     var preloadedFeatures = _a.preloadedFeatures,\n                         createVisualElement = _a.createVisualElement,\n                         projectionNodeConstructor = _a.projectionNodeConstructor,\n                         useRender = _a.useRender,\n                         useVisualState = _a.useVisualState,\n                         Component = _a.Component;\n                     preloadedFeatures && loadFeatures(preloadedFeatures);\n@@ -23891,14 +41755,15 @@\n         \"../../../node_modules/framesync/dist/framesync.cjs.js\":\n             /*!*************************************************************!*\\\n               !*** ../../../node_modules/framesync/dist/framesync.cjs.js ***!\n               \\*************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 const defaultTimestep = 1 / 60 * 1000;\n                 const getCurrentTime = typeof performance !== \"undefined\" ? () => performance.now() : () => Date.now();\n@@ -24015,14 +41880,15 @@\n         \"../../../node_modules/get-nonce/dist/es2015/index.js\":\n             /*!************************************************************!*\\\n               !*** ../../../node_modules/get-nonce/dist/es2015/index.js ***!\n               \\************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.setNonce = exports.getNonce = void 0;\n                 var currentNonce;\n@@ -24048,14 +41914,15 @@\n         \"../../../node_modules/get-value/index.js\":\n             /*!************************************************!*\\\n               !*** ../../../node_modules/get-value/index.js ***!\n               \\************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 /*!\n                  * get-value <https://github.com/jonschlinkert/get-value>\n                  *\n                  * Copyright (c) 2014-2018, Jon Schlinkert.\n                  * Released under the MIT License.\n@@ -24157,14 +42024,15 @@\n         \"../../../node_modules/graphql-ws/lib/client.mjs\":\n             /*!*******************************************************!*\\\n               !*** ../../../node_modules/graphql-ws/lib/client.mjs ***!\n               \\*******************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 var _exportNames = {\n                     createClient: true\n@@ -24737,14 +42605,15 @@\n         \"../../../node_modules/graphql-ws/lib/common.mjs\":\n             /*!*******************************************************!*\\\n               !*** ../../../node_modules/graphql-ws/lib/common.mjs ***!\n               \\*******************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.MessageType = exports.GRAPHQL_TRANSPORT_WS_PROTOCOL = exports.DEPRECATED_GRAPHQL_WS_PROTOCOL = exports.CloseCode = void 0;\n                 exports.isMessage = isMessage;\n@@ -24936,14 +42805,15 @@\n         \"../../../node_modules/graphql-ws/lib/index.js\":\n             /*!*****************************************************!*\\\n               !*** ../../../node_modules/graphql-ws/lib/index.js ***!\n               \\*****************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function(o, m, k, k2) {\n                     if (k2 === undefined) k2 = k;\n                     var desc = Object.getOwnPropertyDescriptor(m, k);\n                     if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n                         desc = {\n@@ -24976,14 +42846,15 @@\n         \"../../../node_modules/graphql-ws/lib/server.mjs\":\n             /*!*******************************************************!*\\\n               !*** ../../../node_modules/graphql-ws/lib/server.mjs ***!\n               \\*******************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.handleProtocols = handleProtocols;\n                 exports.makeServer = makeServer;\n@@ -25291,14 +43162,15 @@\n         \"../../../node_modules/graphql-ws/lib/utils.mjs\":\n             /*!******************************************************!*\\\n               !*** ../../../node_modules/graphql-ws/lib/utils.mjs ***!\n               \\******************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.areGraphQLErrors = areGraphQLErrors;\n                 exports.extendedTypeof = extendedTypeof;\n@@ -25357,55 +43229,119 @@\n         \"../../../node_modules/graphql/error/GraphQLError.mjs\":\n             /*!************************************************************!*\\\n               !*** ../../../node_modules/graphql/error/GraphQLError.mjs ***!\n               \\************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.GraphQLError = void 0;\n+                exports.formatError = formatError;\n+                exports.printError = printError;\n                 var _isObjectLike = __webpack_require__( /*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n                 var _location = __webpack_require__( /*! ../language/location.mjs */ \"../../../node_modules/graphql/language/location.mjs\");\n                 var _printLocation = __webpack_require__( /*! ../language/printLocation.mjs */ \"../../../node_modules/graphql/language/printLocation.mjs\");\n+\n+                function toNormalizedOptions(args) {\n+                    const firstArg = args[0];\n+                    if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {\n+                        return {\n+                            nodes: firstArg,\n+                            source: args[1],\n+                            positions: args[2],\n+                            path: args[3],\n+                            originalError: args[4],\n+                            extensions: args[5]\n+                        };\n+                    }\n+                    return firstArg;\n+                }\n                 /**\n                  * A GraphQLError describes an Error found during the parse, validate, or\n                  * execute phases of performing a GraphQL operation. In addition to a message\n                  * and stack trace, it also includes information about the locations in a\n                  * GraphQL document and/or execution result that correspond to the Error.\n                  */\n+\n                 class GraphQLError extends Error {\n-                    constructor(message, options = {}) {\n+                    /**\n+                     * An array of `{ line, column }` locations within the source GraphQL document\n+                     * which correspond to this error.\n+                     *\n+                     * Errors during validation often contain multiple locations, for example to\n+                     * point out two things with the same name. Errors during execution include a\n+                     * single location, the field which produced the error.\n+                     *\n+                     * Enumerable, and appears in the result of JSON.stringify().\n+                     */\n+\n+                    /**\n+                     * An array describing the JSON-path into the execution response which\n+                     * corresponds to this error. Only included for errors during execution.\n+                     *\n+                     * Enumerable, and appears in the result of JSON.stringify().\n+                     */\n+\n+                    /**\n+                     * An array of GraphQL AST Nodes corresponding to this error.\n+                     */\n+\n+                    /**\n+                     * The source GraphQL document for the first location of this error.\n+                     *\n+                     * Note that if this Error represents more than one node, the source may not\n+                     * represent nodes after the first node.\n+                     */\n+\n+                    /**\n+                     * An array of character offsets within the source GraphQL document\n+                     * which correspond to this error.\n+                     */\n+\n+                    /**\n+                     * The original error thrown from a field resolver during execution.\n+                     */\n+\n+                    /**\n+                     * Extension fields to add to the formatted error.\n+                     */\n+\n+                    /**\n+                     * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.\n+                     */\n+                    constructor(message, ...rawArgs) {\n                         var _this$nodes, _nodeLocations$, _ref;\n                         const {\n                             nodes,\n                             source,\n                             positions,\n                             path,\n                             originalError,\n                             extensions\n-                        } = options;\n+                        } = toNormalizedOptions(rawArgs);\n                         super(message);\n                         this.name = 'GraphQLError';\n                         this.path = path !== null && path !== void 0 ? path : undefined;\n-                        this.originalError = originalError !== null && originalError !== void 0 ? originalError : undefined;\n-                        // Compute list of blame nodes.\n+                        this.originalError = originalError !== null && originalError !== void 0 ? originalError : undefined; // Compute list of blame nodes.\n+\n                         this.nodes = undefinedIfEmpty(Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined);\n-                        const nodeLocations = undefinedIfEmpty((_this$nodes = this.nodes) === null || _this$nodes === void 0 ? void 0 : _this$nodes.map(node => node.loc).filter(loc => loc != null));\n-                        // Compute locations in the source for the given nodes/positions.\n+                        const nodeLocations = undefinedIfEmpty((_this$nodes = this.nodes) === null || _this$nodes === void 0 ? void 0 : _this$nodes.map(node => node.loc).filter(loc => loc != null)); // Compute locations in the source for the given nodes/positions.\n+\n                         this.source = source !== null && source !== void 0 ? source : nodeLocations === null || nodeLocations === void 0 ? void 0 : (_nodeLocations$ = nodeLocations[0]) === null || _nodeLocations$ === void 0 ? void 0 : _nodeLocations$.source;\n                         this.positions = positions !== null && positions !== void 0 ? positions : nodeLocations === null || nodeLocations === void 0 ? void 0 : nodeLocations.map(loc => loc.start);\n                         this.locations = positions && source ? positions.map(pos => (0, _location.getLocation)(source, pos)) : nodeLocations === null || nodeLocations === void 0 ? void 0 : nodeLocations.map(loc => (0, _location.getLocation)(loc.source, loc.start));\n                         const originalExtensions = (0, _isObjectLike.isObjectLike)(originalError === null || originalError === void 0 ? void 0 : originalError.extensions) ? originalError === null || originalError === void 0 ? void 0 : originalError.extensions : undefined;\n-                        this.extensions = (_ref = extensions !== null && extensions !== void 0 ? extensions : originalExtensions) !== null && _ref !== void 0 ? _ref : Object.create(null);\n-                        // Only properties prescribed by the spec should be enumerable.\n+                        this.extensions = (_ref = extensions !== null && extensions !== void 0 ? extensions : originalExtensions) !== null && _ref !== void 0 ? _ref : Object.create(null); // Only properties prescribed by the spec should be enumerable.\n                         // Keep the rest as non-enumerable.\n+\n                         Object.defineProperties(this, {\n                             message: {\n                                 writable: true,\n                                 enumerable: true\n                             },\n                             name: {\n                                 enumerable: false\n@@ -25418,25 +43354,26 @@\n                             },\n                             positions: {\n                                 enumerable: false\n                             },\n                             originalError: {\n                                 enumerable: false\n                             }\n-                        });\n-                        // Include (non-enumerable) stack trace.\n+                        }); // Include (non-enumerable) stack trace.\n+\n                         /* c8 ignore start */\n                         // FIXME: https://github.com/graphql/graphql-js/issues/2317\n-                        if ((originalError === null || originalError === void 0 ? void 0 : originalError.stack) != null) {\n+\n+                        if (originalError !== null && originalError !== void 0 && originalError.stack) {\n                             Object.defineProperty(this, 'stack', {\n                                 value: originalError.stack,\n                                 writable: true,\n                                 configurable: true\n                             });\n-                        } else if (Error.captureStackTrace != null) {\n+                        } else if (Error.captureStackTrace) {\n                             Error.captureStackTrace(this, GraphQLError);\n                         } else {\n                             Object.defineProperty(this, 'stack', {\n                                 value: Error().stack,\n                                 writable: true,\n                                 configurable: true\n                             });\n@@ -25478,43 +43415,79 @@\n                     }\n                 }\n                 exports.GraphQLError = GraphQLError;\n \n                 function undefinedIfEmpty(array) {\n                     return array === undefined || array.length === 0 ? undefined : array;\n                 }\n+                /**\n+                 * See: https://spec.graphql.org/draft/#sec-Errors\n+                 */\n+\n+                /**\n+                 * Prints a GraphQLError to a string, representing useful location information\n+                 * about the error's position in the source.\n+                 *\n+                 * @deprecated Please use `error.toString` instead. Will be removed in v17\n+                 */\n+                function printError(error) {\n+                    return error.toString();\n+                }\n+                /**\n+                 * Given a GraphQLError, format it according to the rules described by the\n+                 * Response Format, Errors section of the GraphQL Specification.\n+                 *\n+                 * @deprecated Please use `error.toJSON` instead. Will be removed in v17\n+                 */\n+\n+                function formatError(error) {\n+                    return error.toJSON();\n+                }\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/error/index.mjs\":\n             /*!*****************************************************!*\\\n               !*** ../../../node_modules/graphql/error/index.mjs ***!\n               \\*****************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"GraphQLError\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _GraphQLError.GraphQLError;\n                     }\n                 }));\n+                Object.defineProperty(exports, \"formatError\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return _GraphQLError.formatError;\n+                    }\n+                }));\n                 Object.defineProperty(exports, \"locatedError\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _locatedError.locatedError;\n                     }\n                 }));\n+                Object.defineProperty(exports, \"printError\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return _GraphQLError.printError;\n+                    }\n+                }));\n                 Object.defineProperty(exports, \"syntaxError\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _syntaxError.syntaxError;\n                     }\n                 }));\n                 var _GraphQLError = __webpack_require__( /*! ./GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -25528,36 +43501,38 @@\n         \"../../../node_modules/graphql/error/locatedError.mjs\":\n             /*!************************************************************!*\\\n               !*** ../../../node_modules/graphql/error/locatedError.mjs ***!\n               \\************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.locatedError = locatedError;\n                 var _toError = __webpack_require__( /*! ../jsutils/toError.mjs */ \"../../../node_modules/graphql/jsutils/toError.mjs\");\n                 var _GraphQLError = __webpack_require__( /*! ./GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 /**\n                  * Given an arbitrary value, presumably thrown while attempting to execute a\n                  * GraphQL operation, produce a new GraphQLError aware of the location in the\n                  * document responsible for the original Error.\n                  */\n+\n                 function locatedError(rawOriginalError, nodes, path) {\n-                    var _originalError$nodes;\n-                    const originalError = (0, _toError.toError)(rawOriginalError);\n-                    // Note: this uses a brand-check to support GraphQL errors originating from other contexts.\n+                    var _nodes;\n+                    const originalError = (0, _toError.toError)(rawOriginalError); // Note: this uses a brand-check to support GraphQL errors originating from other contexts.\n+\n                     if (isLocatedGraphQLError(originalError)) {\n                         return originalError;\n                     }\n                     return new _GraphQLError.GraphQLError(originalError.message, {\n-                        nodes: (_originalError$nodes = originalError.nodes) !== null && _originalError$nodes !== void 0 ? _originalError$nodes : nodes,\n+                        nodes: (_nodes = originalError.nodes) !== null && _nodes !== void 0 ? _nodes : nodes,\n                         source: originalError.source,\n                         positions: originalError.positions,\n                         path,\n                         originalError\n                     });\n                 }\n \n@@ -25572,830 +43547,154 @@\n         \"../../../node_modules/graphql/error/syntaxError.mjs\":\n             /*!***********************************************************!*\\\n               !*** ../../../node_modules/graphql/error/syntaxError.mjs ***!\n               \\***********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.syntaxError = syntaxError;\n                 var _GraphQLError = __webpack_require__( /*! ./GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 /**\n                  * Produces a GraphQLError representing a syntax error, containing useful\n                  * descriptive information about the syntax error's position in the source.\n                  */\n+\n                 function syntaxError(source, position, description) {\n                     return new _GraphQLError.GraphQLError(`Syntax Error: ${description}`, {\n                         source,\n                         positions: [position]\n                     });\n                 }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/graphql/execution/IncrementalGraph.mjs\":\n-            /*!********************************************************************!*\\\n-              !*** ../../../node_modules/graphql/execution/IncrementalGraph.mjs ***!\n-              \\********************************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.IncrementalGraph = void 0;\n-                var _BoxedPromiseOrValue = __webpack_require__( /*! ../jsutils/BoxedPromiseOrValue.mjs */ \"../../../node_modules/graphql/jsutils/BoxedPromiseOrValue.mjs\");\n-                var _invariant = __webpack_require__( /*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n-                var _isPromise = __webpack_require__( /*! ../jsutils/isPromise.mjs */ \"../../../node_modules/graphql/jsutils/isPromise.mjs\");\n-                var _promiseWithResolvers = __webpack_require__( /*! ../jsutils/promiseWithResolvers.mjs */ \"../../../node_modules/graphql/jsutils/promiseWithResolvers.mjs\");\n-                var _types = __webpack_require__( /*! ./types.mjs */ \"../../../node_modules/graphql/execution/types.mjs\");\n-                /**\n-                 * @internal\n-                 */\n-                class IncrementalGraph {\n-                    constructor() {\n-                        this._rootNodes = new Set();\n-                        this._completedQueue = [];\n-                        this._nextQueue = [];\n-                    }\n-                    getNewRootNodes(incrementalDataRecords) {\n-                        const initialResultChildren = new Set();\n-                        this._addIncrementalDataRecords(incrementalDataRecords, undefined, initialResultChildren);\n-                        return this._promoteNonEmptyToRoot(initialResultChildren);\n-                    }\n-                    addCompletedSuccessfulExecutionGroup(successfulExecutionGroup) {\n-                            for (const deferredFragmentRecord of successfulExecutionGroup.pendingExecutionGroup.deferredFragmentRecords) {\n-                                deferredFragmentRecord.pendingExecutionGroups.delete(successfulExecutionGroup.pendingExecutionGroup);\n-                                deferredFragmentRecord.successfulExecutionGroups.add(successfulExecutionGroup);\n-                            }\n-                            const incrementalDataRecords = successfulExecutionGroup.incrementalDataRecords;\n-                            if (incrementalDataRecords !== undefined) {\n-                                this._addIncrementalDataRecords(incrementalDataRecords, successfulExecutionGroup.pendingExecutionGroup.deferredFragmentRecords);\n-                            }\n-                        }\n-                        * currentCompletedBatch() {\n-                            let completed;\n-                            while ((completed = this._completedQueue.shift()) !== undefined) {\n-                                yield completed;\n-                            }\n-                            if (this._rootNodes.size === 0) {\n-                                for (const resolve of this._nextQueue) {\n-                                    resolve(undefined);\n-                                }\n-                            }\n-                        }\n-                    nextCompletedBatch() {\n-                        const {\n-                            promise,\n-                            resolve\n-                        } = (0, _promiseWithResolvers.promiseWithResolvers)();\n-                        this._nextQueue.push(resolve);\n-                        return promise;\n-                    }\n-                    abort() {\n-                        for (const resolve of this._nextQueue) {\n-                            resolve(undefined);\n-                        }\n-                    }\n-                    hasNext() {\n-                        return this._rootNodes.size > 0;\n-                    }\n-                    completeDeferredFragment(deferredFragmentRecord) {\n-                        if (!this._rootNodes.has(deferredFragmentRecord) || deferredFragmentRecord.pendingExecutionGroups.size > 0) {\n-                            return;\n-                        }\n-                        const successfulExecutionGroups = Array.from(deferredFragmentRecord.successfulExecutionGroups);\n-                        this._removeRootNode(deferredFragmentRecord);\n-                        for (const successfulExecutionGroup of successfulExecutionGroups) {\n-                            for (const otherDeferredFragmentRecord of successfulExecutionGroup.pendingExecutionGroup.deferredFragmentRecords) {\n-                                otherDeferredFragmentRecord.successfulExecutionGroups.delete(successfulExecutionGroup);\n-                            }\n-                        }\n-                        const newRootNodes = this._promoteNonEmptyToRoot(deferredFragmentRecord.children);\n-                        return {\n-                            newRootNodes,\n-                            successfulExecutionGroups\n-                        };\n-                    }\n-                    removeDeferredFragment(deferredFragmentRecord) {\n-                        if (!this._rootNodes.has(deferredFragmentRecord)) {\n-                            return false;\n-                        }\n-                        this._removeRootNode(deferredFragmentRecord);\n-                        return true;\n-                    }\n-                    removeStream(streamRecord) {\n-                        this._removeRootNode(streamRecord);\n-                    }\n-                    _removeRootNode(deliveryGroup) {\n-                        this._rootNodes.delete(deliveryGroup);\n-                    }\n-                    _addIncrementalDataRecords(incrementalDataRecords, parents, initialResultChildren) {\n-                        for (const incrementalDataRecord of incrementalDataRecords) {\n-                            if ((0, _types.isPendingExecutionGroup)(incrementalDataRecord)) {\n-                                for (const deferredFragmentRecord of incrementalDataRecord.deferredFragmentRecords) {\n-                                    this._addDeferredFragment(deferredFragmentRecord, initialResultChildren);\n-                                    deferredFragmentRecord.pendingExecutionGroups.add(incrementalDataRecord);\n-                                }\n-                                if (this._completesRootNode(incrementalDataRecord)) {\n-                                    this._onExecutionGroup(incrementalDataRecord);\n-                                }\n-                            } else if (parents === undefined) {\n-                                initialResultChildren !== undefined || (0, _invariant.invariant)(false);\n-                                initialResultChildren.add(incrementalDataRecord);\n-                            } else {\n-                                for (const parent of parents) {\n-                                    this._addDeferredFragment(parent, initialResultChildren);\n-                                    parent.children.add(incrementalDataRecord);\n-                                }\n-                            }\n-                        }\n-                    }\n-                    _promoteNonEmptyToRoot(maybeEmptyNewRootNodes) {\n-                        const newRootNodes = [];\n-                        for (const node of maybeEmptyNewRootNodes) {\n-                            if ((0, _types.isDeferredFragmentRecord)(node)) {\n-                                if (node.pendingExecutionGroups.size > 0) {\n-                                    for (const pendingExecutionGroup of node.pendingExecutionGroups) {\n-                                        if (!this._completesRootNode(pendingExecutionGroup)) {\n-                                            this._onExecutionGroup(pendingExecutionGroup);\n-                                        }\n-                                    }\n-                                    this._rootNodes.add(node);\n-                                    newRootNodes.push(node);\n-                                    continue;\n-                                }\n-                                for (const child of node.children) {\n-                                    maybeEmptyNewRootNodes.add(child);\n-                                }\n-                            } else {\n-                                this._rootNodes.add(node);\n-                                newRootNodes.push(node);\n-                                // eslint-disable-next-line @typescript-eslint/no-floating-promises\n-                                this._onStreamItems(node);\n-                            }\n-                        }\n-                        return newRootNodes;\n-                    }\n-                    _completesRootNode(pendingExecutionGroup) {\n-                        return pendingExecutionGroup.deferredFragmentRecords.some(deferredFragmentRecord => this._rootNodes.has(deferredFragmentRecord));\n-                    }\n-                    _addDeferredFragment(deferredFragmentRecord, initialResultChildren) {\n-                        if (this._rootNodes.has(deferredFragmentRecord)) {\n-                            return;\n-                        }\n-                        const parent = deferredFragmentRecord.parent;\n-                        if (parent === undefined) {\n-                            initialResultChildren !== undefined || (0, _invariant.invariant)(false);\n-                            initialResultChildren.add(deferredFragmentRecord);\n-                            return;\n-                        }\n-                        parent.children.add(deferredFragmentRecord);\n-                        this._addDeferredFragment(parent, initialResultChildren);\n-                    }\n-                    _onExecutionGroup(pendingExecutionGroup) {\n-                        let completedExecutionGroup = pendingExecutionGroup.result;\n-                        if (!(completedExecutionGroup instanceof _BoxedPromiseOrValue.BoxedPromiseOrValue)) {\n-                            completedExecutionGroup = completedExecutionGroup();\n-                        }\n-                        const value = completedExecutionGroup.value;\n-                        if ((0, _isPromise.isPromise)(value)) {\n-                            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n-                            value.then(resolved => this._enqueue(resolved));\n-                        } else {\n-                            this._enqueue(value);\n-                        }\n-                    }\n-                    async _onStreamItems(streamRecord) {\n-                            let items = [];\n-                            let errors = [];\n-                            let incrementalDataRecords = [];\n-                            const streamItemQueue = streamRecord.streamItemQueue;\n-                            let streamItemRecord;\n-                            while ((streamItemRecord = streamItemQueue.shift()) !== undefined) {\n-                                let result = streamItemRecord instanceof _BoxedPromiseOrValue.BoxedPromiseOrValue ? streamItemRecord.value : streamItemRecord().value;\n-                                if ((0, _isPromise.isPromise)(result)) {\n-                                    if (items.length > 0) {\n-                                        this._enqueue({\n-                                            streamRecord,\n-                                            result:\n-                                                // TODO add additional test case or rework for coverage\n-                                                errors.length > 0 /* c8 ignore start */ ? {\n-                                                    items,\n-                                                    errors\n-                                                } /* c8 ignore stop */ : {\n-                                                    items\n-                                                },\n-                                            incrementalDataRecords\n-                                        });\n-                                        items = [];\n-                                        errors = [];\n-                                        incrementalDataRecords = [];\n-                                    }\n-                                    // eslint-disable-next-line no-await-in-loop\n-                                    result = await result;\n-                                    // wait an additional tick to coalesce resolving additional promises\n-                                    // within the queue\n-                                    // eslint-disable-next-line no-await-in-loop\n-                                    await Promise.resolve();\n-                                }\n-                                if (result.item === undefined) {\n-                                    if (items.length > 0) {\n-                                        this._enqueue({\n-                                            streamRecord,\n-                                            result: errors.length > 0 ? {\n-                                                items,\n-                                                errors\n-                                            } : {\n-                                                items\n-                                            },\n-                                            incrementalDataRecords\n-                                        });\n-                                    }\n-                                    this._enqueue(result.errors === undefined ? {\n-                                        streamRecord\n-                                    } : {\n-                                        streamRecord,\n-                                        errors: result.errors\n-                                    });\n-                                    return;\n-                                }\n-                                items.push(result.item);\n-                                if (result.errors !== undefined) {\n-                                    errors.push(...result.errors);\n-                                }\n-                                if (result.incrementalDataRecords !== undefined) {\n-                                    incrementalDataRecords.push(...result.incrementalDataRecords);\n-                                }\n-                            }\n-                        }\n-                        * _yieldCurrentCompletedIncrementalData(first) {\n-                            yield first;\n-                            yield* this.currentCompletedBatch();\n-                        }\n-                    _enqueue(completed) {\n-                        const next = this._nextQueue.shift();\n-                        if (next !== undefined) {\n-                            next(this._yieldCurrentCompletedIncrementalData(completed));\n-                            return;\n-                        }\n-                        this._completedQueue.push(completed);\n-                    }\n-                }\n-                exports.IncrementalGraph = IncrementalGraph;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../../node_modules/graphql/execution/IncrementalPublisher.mjs\":\n-            /*!************************************************************************!*\\\n-              !*** ../../../node_modules/graphql/execution/IncrementalPublisher.mjs ***!\n-              \\************************************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.buildIncrementalResponse = buildIncrementalResponse;\n-                var _invariant = __webpack_require__( /*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n-                var _Path = __webpack_require__( /*! ../jsutils/Path.mjs */ \"../../../node_modules/graphql/jsutils/Path.mjs\");\n-                var _IncrementalGraph = __webpack_require__( /*! ./IncrementalGraph.mjs */ \"../../../node_modules/graphql/execution/IncrementalGraph.mjs\");\n-                var _types = __webpack_require__( /*! ./types.mjs */ \"../../../node_modules/graphql/execution/types.mjs\");\n-\n-                function buildIncrementalResponse(context, result, errors, incrementalDataRecords) {\n-                    const incrementalPublisher = new IncrementalPublisher(context);\n-                    return incrementalPublisher.buildResponse(result, errors, incrementalDataRecords);\n-                }\n-                /**\n-                 * This class is used to publish incremental results to the client, enabling semi-concurrent\n-                 * execution while preserving result order.\n-                 *\n-                 * @internal\n-                 */\n-                class IncrementalPublisher {\n-                    constructor(context) {\n-                        this._context = context;\n-                        this._nextId = 0;\n-                        this._incrementalGraph = new _IncrementalGraph.IncrementalGraph();\n-                    }\n-                    buildResponse(data, errors, incrementalDataRecords) {\n-                        const newRootNodes = this._incrementalGraph.getNewRootNodes(incrementalDataRecords);\n-                        const pending = this._toPendingResults(newRootNodes);\n-                        const initialResult = errors === undefined ? {\n-                            data,\n-                            pending,\n-                            hasNext: true\n-                        } : {\n-                            errors,\n-                            data,\n-                            pending,\n-                            hasNext: true\n-                        };\n-                        return {\n-                            initialResult,\n-                            subsequentResults: this._subscribe()\n-                        };\n-                    }\n-                    _toPendingResults(newRootNodes) {\n-                        const pendingResults = [];\n-                        for (const node of newRootNodes) {\n-                            const id = String(this._getNextId());\n-                            node.id = id;\n-                            const pendingResult = {\n-                                id,\n-                                path: (0, _Path.pathToArray)(node.path)\n-                            };\n-                            if (node.label !== undefined) {\n-                                pendingResult.label = node.label;\n-                            }\n-                            pendingResults.push(pendingResult);\n-                        }\n-                        return pendingResults;\n-                    }\n-                    _getNextId() {\n-                        return String(this._nextId++);\n-                    }\n-                    _subscribe() {\n-                        let isDone = false;\n-                        const _next = async () => {\n-                            if (isDone) {\n-                                await this._returnAsyncIteratorsIgnoringErrors();\n-                                return {\n-                                    value: undefined,\n-                                    done: true\n-                                };\n-                            }\n-                            const context = {\n-                                pending: [],\n-                                incremental: [],\n-                                completed: []\n-                            };\n-                            let batch = this._incrementalGraph.currentCompletedBatch();\n-                            do {\n-                                for (const completedResult of batch) {\n-                                    this._handleCompletedIncrementalData(completedResult, context);\n-                                }\n-                                const {\n-                                    incremental,\n-                                    completed\n-                                } = context;\n-                                if (incremental.length > 0 || completed.length > 0) {\n-                                    const hasNext = this._incrementalGraph.hasNext();\n-                                    if (!hasNext) {\n-                                        isDone = true;\n-                                    }\n-                                    const subsequentIncrementalExecutionResult = {\n-                                        hasNext\n-                                    };\n-                                    const pending = context.pending;\n-                                    if (pending.length > 0) {\n-                                        subsequentIncrementalExecutionResult.pending = pending;\n-                                    }\n-                                    if (incremental.length > 0) {\n-                                        subsequentIncrementalExecutionResult.incremental = incremental;\n-                                    }\n-                                    if (completed.length > 0) {\n-                                        subsequentIncrementalExecutionResult.completed = completed;\n-                                    }\n-                                    return {\n-                                        value: subsequentIncrementalExecutionResult,\n-                                        done: false\n-                                    };\n-                                }\n-                                // eslint-disable-next-line no-await-in-loop\n-                                batch = await this._incrementalGraph.nextCompletedBatch();\n-                            } while (batch !== undefined);\n-                            await this._returnAsyncIteratorsIgnoringErrors();\n-                            return {\n-                                value: undefined,\n-                                done: true\n-                            };\n-                        };\n-                        const _return = async () => {\n-                            isDone = true;\n-                            this._incrementalGraph.abort();\n-                            await this._returnAsyncIterators();\n-                            return {\n-                                value: undefined,\n-                                done: true\n-                            };\n-                        };\n-                        const _throw = async error => {\n-                            isDone = true;\n-                            this._incrementalGraph.abort();\n-                            await this._returnAsyncIterators();\n-                            return Promise.reject(error);\n-                        };\n-                        return {\n-                            [Symbol.asyncIterator]() {\n-                                return this;\n-                            },\n-                            next: _next,\n-                            return: _return,\n-                            throw: _throw\n-                        };\n-                    }\n-                    _handleCompletedIncrementalData(completedIncrementalData, context) {\n-                        if ((0, _types.isCompletedExecutionGroup)(completedIncrementalData)) {\n-                            this._handleCompletedExecutionGroup(completedIncrementalData, context);\n-                        } else {\n-                            this._handleCompletedStreamItems(completedIncrementalData, context);\n-                        }\n-                    }\n-                    _handleCompletedExecutionGroup(completedExecutionGroup, context) {\n-                        if ((0, _types.isFailedExecutionGroup)(completedExecutionGroup)) {\n-                            for (const deferredFragmentRecord of completedExecutionGroup.pendingExecutionGroup.deferredFragmentRecords) {\n-                                const id = deferredFragmentRecord.id;\n-                                if (!this._incrementalGraph.removeDeferredFragment(deferredFragmentRecord)) {\n-                                    // This can occur if multiple deferred grouped field sets error for a fragment.\n-                                    continue;\n-                                }\n-                                id !== undefined || (0, _invariant.invariant)(false);\n-                                context.completed.push({\n-                                    id,\n-                                    errors: completedExecutionGroup.errors\n-                                });\n-                            }\n-                            return;\n-                        }\n-                        this._incrementalGraph.addCompletedSuccessfulExecutionGroup(completedExecutionGroup);\n-                        for (const deferredFragmentRecord of completedExecutionGroup.pendingExecutionGroup.deferredFragmentRecords) {\n-                            const completion = this._incrementalGraph.completeDeferredFragment(deferredFragmentRecord);\n-                            if (completion === undefined) {\n-                                continue;\n-                            }\n-                            const id = deferredFragmentRecord.id;\n-                            id !== undefined || (0, _invariant.invariant)(false);\n-                            const incremental = context.incremental;\n-                            const {\n-                                newRootNodes,\n-                                successfulExecutionGroups\n-                            } = completion;\n-                            context.pending.push(...this._toPendingResults(newRootNodes));\n-                            for (const successfulExecutionGroup of successfulExecutionGroups) {\n-                                const {\n-                                    bestId,\n-                                    subPath\n-                                } = this._getBestIdAndSubPath(id, deferredFragmentRecord, successfulExecutionGroup);\n-                                const incrementalEntry = {\n-                                    ...successfulExecutionGroup.result,\n-                                    id: bestId\n-                                };\n-                                if (subPath !== undefined) {\n-                                    incrementalEntry.subPath = subPath;\n-                                }\n-                                incremental.push(incrementalEntry);\n-                            }\n-                            context.completed.push({\n-                                id\n-                            });\n-                        }\n-                    }\n-                    _handleCompletedStreamItems(streamItemsResult, context) {\n-                        const streamRecord = streamItemsResult.streamRecord;\n-                        const id = streamRecord.id;\n-                        id !== undefined || (0, _invariant.invariant)(false);\n-                        if (streamItemsResult.errors !== undefined) {\n-                            context.completed.push({\n-                                id,\n-                                errors: streamItemsResult.errors\n-                            });\n-                            this._incrementalGraph.removeStream(streamRecord);\n-                            if ((0, _types.isCancellableStreamRecord)(streamRecord)) {\n-                                this._context.cancellableStreams !== undefined || (0, _invariant.invariant)(false);\n-                                this._context.cancellableStreams.delete(streamRecord);\n-                                streamRecord.earlyReturn().catch(() => {\n-                                    /* c8 ignore next 1 */\n-                                    // ignore error\n-                                });\n-                            }\n-                        } else if (streamItemsResult.result === undefined) {\n-                            context.completed.push({\n-                                id\n-                            });\n-                            this._incrementalGraph.removeStream(streamRecord);\n-                            if ((0, _types.isCancellableStreamRecord)(streamRecord)) {\n-                                this._context.cancellableStreams !== undefined || (0, _invariant.invariant)(false);\n-                                this._context.cancellableStreams.delete(streamRecord);\n-                            }\n-                        } else {\n-                            const incrementalEntry = {\n-                                id,\n-                                ...streamItemsResult.result\n-                            };\n-                            context.incremental.push(incrementalEntry);\n-                            const incrementalDataRecords = streamItemsResult.incrementalDataRecords;\n-                            if (incrementalDataRecords !== undefined) {\n-                                const newRootNodes = this._incrementalGraph.getNewRootNodes(incrementalDataRecords);\n-                                context.pending.push(...this._toPendingResults(newRootNodes));\n-                            }\n-                        }\n-                    }\n-                    _getBestIdAndSubPath(initialId, initialDeferredFragmentRecord, completedExecutionGroup) {\n-                        let maxLength = (0, _Path.pathToArray)(initialDeferredFragmentRecord.path).length;\n-                        let bestId = initialId;\n-                        for (const deferredFragmentRecord of completedExecutionGroup.pendingExecutionGroup.deferredFragmentRecords) {\n-                            if (deferredFragmentRecord === initialDeferredFragmentRecord) {\n-                                continue;\n-                            }\n-                            const id = deferredFragmentRecord.id;\n-                            // TODO: add test case for when an fragment has not been released, but might be processed for the shortest path.\n-                            /* c8 ignore next 3 */\n-                            if (id === undefined) {\n-                                continue;\n-                            }\n-                            const fragmentPath = (0, _Path.pathToArray)(deferredFragmentRecord.path);\n-                            const length = fragmentPath.length;\n-                            if (length > maxLength) {\n-                                maxLength = length;\n-                                bestId = id;\n-                            }\n-                        }\n-                        const subPath = completedExecutionGroup.path.slice(maxLength);\n-                        return {\n-                            bestId,\n-                            subPath: subPath.length > 0 ? subPath : undefined\n-                        };\n-                    }\n-                    async _returnAsyncIterators() {\n-                        const cancellableStreams = this._context.cancellableStreams;\n-                        if (cancellableStreams === undefined) {\n-                            return;\n-                        }\n-                        const promises = [];\n-                        for (const streamRecord of cancellableStreams) {\n-                            if (streamRecord.earlyReturn !== undefined) {\n-                                promises.push(streamRecord.earlyReturn());\n-                            }\n-                        }\n-                        await Promise.all(promises);\n-                    }\n-                    async _returnAsyncIteratorsIgnoringErrors() {\n-                        await this._returnAsyncIterators().catch(() => {\n-                            // Ignore errors\n-                        });\n-                    }\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../../node_modules/graphql/execution/buildExecutionPlan.mjs\":\n-            /*!**********************************************************************!*\\\n-              !*** ../../../node_modules/graphql/execution/buildExecutionPlan.mjs ***!\n-              \\**********************************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.buildExecutionPlan = buildExecutionPlan;\n-                var _getBySet = __webpack_require__( /*! ../jsutils/getBySet.mjs */ \"../../../node_modules/graphql/jsutils/getBySet.mjs\");\n-                var _isSameSet = __webpack_require__( /*! ../jsutils/isSameSet.mjs */ \"../../../node_modules/graphql/jsutils/isSameSet.mjs\");\n-\n-                function buildExecutionPlan(originalGroupedFieldSet, parentDeferUsages = new Set()) {\n-                    const groupedFieldSet = new Map();\n-                    const newGroupedFieldSets = new Map();\n-                    for (const [responseKey, fieldGroup] of originalGroupedFieldSet) {\n-                        const filteredDeferUsageSet = getFilteredDeferUsageSet(fieldGroup);\n-                        if ((0, _isSameSet.isSameSet)(filteredDeferUsageSet, parentDeferUsages)) {\n-                            groupedFieldSet.set(responseKey, fieldGroup);\n-                            continue;\n-                        }\n-                        let newGroupedFieldSet = (0, _getBySet.getBySet)(newGroupedFieldSets, filteredDeferUsageSet);\n-                        if (newGroupedFieldSet === undefined) {\n-                            newGroupedFieldSet = new Map();\n-                            newGroupedFieldSets.set(filteredDeferUsageSet, newGroupedFieldSet);\n-                        }\n-                        newGroupedFieldSet.set(responseKey, fieldGroup);\n-                    }\n-                    return {\n-                        groupedFieldSet,\n-                        newGroupedFieldSets\n-                    };\n-                }\n-\n-                function getFilteredDeferUsageSet(fieldGroup) {\n-                    const filteredDeferUsageSet = new Set();\n-                    for (const fieldDetails of fieldGroup) {\n-                        const deferUsage = fieldDetails.deferUsage;\n-                        if (deferUsage === undefined) {\n-                            filteredDeferUsageSet.clear();\n-                            return filteredDeferUsageSet;\n-                        }\n-                        filteredDeferUsageSet.add(deferUsage);\n-                    }\n-                    for (const deferUsage of filteredDeferUsageSet) {\n-                        let parentDeferUsage = deferUsage.parentDeferUsage;\n-                        while (parentDeferUsage !== undefined) {\n-                            if (filteredDeferUsageSet.has(parentDeferUsage)) {\n-                                filteredDeferUsageSet.delete(deferUsage);\n-                                break;\n-                            }\n-                            parentDeferUsage = parentDeferUsage.parentDeferUsage;\n-                        }\n-                    }\n-                    return filteredDeferUsageSet;\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n         \"../../../node_modules/graphql/execution/collectFields.mjs\":\n             /*!*****************************************************************!*\\\n               !*** ../../../node_modules/graphql/execution/collectFields.mjs ***!\n               \\*****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.collectFields = collectFields;\n                 exports.collectSubfields = collectSubfields;\n-                var _AccumulatorMap = __webpack_require__( /*! ../jsutils/AccumulatorMap.mjs */ \"../../../node_modules/graphql/jsutils/AccumulatorMap.mjs\");\n-                var _invariant = __webpack_require__( /*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n-                var _ast = __webpack_require__( /*! ../language/ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n                 var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 var _definition = __webpack_require__( /*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n                 var _directives = __webpack_require__( /*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n                 var _typeFromAST = __webpack_require__( /*! ../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n                 var _values = __webpack_require__( /*! ./values.mjs */ \"../../../node_modules/graphql/execution/values.mjs\");\n                 /**\n                  * Given a selectionSet, collects all of the fields and returns them.\n                  *\n                  * CollectFields requires the \"runtime type\" of an object. For a field that\n                  * returns an Interface or Union type, the \"runtime type\" will be the actual\n                  * object type returned by that field.\n                  *\n                  * @internal\n                  */\n-                function collectFields(schema, fragments, variableValues, runtimeType, operation) {\n-                    const groupedFieldSet = new _AccumulatorMap.AccumulatorMap();\n-                    const newDeferUsages = [];\n-                    const context = {\n-                        schema,\n-                        fragments,\n-                        variableValues,\n-                        runtimeType,\n-                        operation,\n-                        visitedFragmentNames: new Set()\n-                    };\n-                    collectFieldsImpl(context, operation.selectionSet, groupedFieldSet, newDeferUsages);\n-                    return {\n-                        groupedFieldSet,\n-                        newDeferUsages\n-                    };\n+\n+                function collectFields(schema, fragments, variableValues, runtimeType, selectionSet) {\n+                    const fields = new Map();\n+                    collectFieldsImpl(schema, fragments, variableValues, runtimeType, selectionSet, fields, new Set());\n+                    return fields;\n                 }\n                 /**\n                  * Given an array of field nodes, collects all of the subfields of the passed\n                  * in fields, and returns them at the end.\n                  *\n                  * CollectSubFields requires the \"return type\" of an object. For a field that\n                  * returns an Interface or Union type, the \"return type\" will be the actual\n                  * object type returned by that field.\n                  *\n                  * @internal\n                  */\n-                // eslint-disable-next-line max-params\n-                function collectSubfields(schema, fragments, variableValues, operation, returnType, fieldGroup) {\n-                    const context = {\n-                        schema,\n-                        fragments,\n-                        variableValues,\n-                        runtimeType: returnType,\n-                        operation,\n-                        visitedFragmentNames: new Set()\n-                    };\n-                    const subGroupedFieldSet = new _AccumulatorMap.AccumulatorMap();\n-                    const newDeferUsages = [];\n-                    for (const fieldDetail of fieldGroup) {\n-                        const node = fieldDetail.node;\n+\n+                function collectSubfields(schema, fragments, variableValues, returnType, fieldNodes) {\n+                    const subFieldNodes = new Map();\n+                    const visitedFragmentNames = new Set();\n+                    for (const node of fieldNodes) {\n                         if (node.selectionSet) {\n-                            collectFieldsImpl(context, node.selectionSet, subGroupedFieldSet, newDeferUsages, fieldDetail.deferUsage);\n+                            collectFieldsImpl(schema, fragments, variableValues, returnType, node.selectionSet, subFieldNodes, visitedFragmentNames);\n                         }\n                     }\n-                    return {\n-                        groupedFieldSet: subGroupedFieldSet,\n-                        newDeferUsages\n-                    };\n+                    return subFieldNodes;\n                 }\n \n-                function collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsages, deferUsage) {\n-                    const {\n-                        schema,\n-                        fragments,\n-                        variableValues,\n-                        runtimeType,\n-                        operation,\n-                        visitedFragmentNames\n-                    } = context;\n+                function collectFieldsImpl(schema, fragments, variableValues, runtimeType, selectionSet, fields, visitedFragmentNames) {\n                     for (const selection of selectionSet.selections) {\n                         switch (selection.kind) {\n                             case _kinds.Kind.FIELD: {\n                                 if (!shouldIncludeNode(variableValues, selection)) {\n                                     continue;\n                                 }\n-                                groupedFieldSet.add(getFieldEntryKey(selection), {\n-                                    node: selection,\n-                                    deferUsage\n-                                });\n+                                const name = getFieldEntryKey(selection);\n+                                const fieldList = fields.get(name);\n+                                if (fieldList !== undefined) {\n+                                    fieldList.push(selection);\n+                                } else {\n+                                    fields.set(name, [selection]);\n+                                }\n                                 break;\n                             }\n                             case _kinds.Kind.INLINE_FRAGMENT: {\n                                 if (!shouldIncludeNode(variableValues, selection) || !doesFragmentConditionMatch(schema, selection, runtimeType)) {\n                                     continue;\n                                 }\n-                                const newDeferUsage = getDeferUsage(operation, variableValues, selection, deferUsage);\n-                                if (!newDeferUsage) {\n-                                    collectFieldsImpl(context, selection.selectionSet, groupedFieldSet, newDeferUsages, deferUsage);\n-                                } else {\n-                                    newDeferUsages.push(newDeferUsage);\n-                                    collectFieldsImpl(context, selection.selectionSet, groupedFieldSet, newDeferUsages, newDeferUsage);\n-                                }\n+                                collectFieldsImpl(schema, fragments, variableValues, runtimeType, selection.selectionSet, fields, visitedFragmentNames);\n                                 break;\n                             }\n                             case _kinds.Kind.FRAGMENT_SPREAD: {\n                                 const fragName = selection.name.value;\n-                                const newDeferUsage = getDeferUsage(operation, variableValues, selection, deferUsage);\n-                                if (!newDeferUsage && (visitedFragmentNames.has(fragName) || !shouldIncludeNode(variableValues, selection))) {\n+                                if (visitedFragmentNames.has(fragName) || !shouldIncludeNode(variableValues, selection)) {\n                                     continue;\n                                 }\n+                                visitedFragmentNames.add(fragName);\n                                 const fragment = fragments[fragName];\n-                                if (fragment == null || !doesFragmentConditionMatch(schema, fragment, runtimeType)) {\n+                                if (!fragment || !doesFragmentConditionMatch(schema, fragment, runtimeType)) {\n                                     continue;\n                                 }\n-                                if (!newDeferUsage) {\n-                                    visitedFragmentNames.add(fragName);\n-                                    collectFieldsImpl(context, fragment.selectionSet, groupedFieldSet, newDeferUsages, deferUsage);\n-                                } else {\n-                                    newDeferUsages.push(newDeferUsage);\n-                                    collectFieldsImpl(context, fragment.selectionSet, groupedFieldSet, newDeferUsages, newDeferUsage);\n-                                }\n+                                collectFieldsImpl(schema, fragments, variableValues, runtimeType, fragment.selectionSet, fields, visitedFragmentNames);\n                                 break;\n                             }\n                         }\n                     }\n                 }\n                 /**\n-                 * Returns an object containing the `@defer` arguments if a field should be\n-                 * deferred based on the experimental flag, defer directive present and\n-                 * not disabled by the \"if\" argument.\n-                 */\n-                function getDeferUsage(operation, variableValues, node, parentDeferUsage) {\n-                    const defer = (0, _values.getDirectiveValues)(_directives.GraphQLDeferDirective, node, variableValues);\n-                    if (!defer) {\n-                        return;\n-                    }\n-                    if (defer.if === false) {\n-                        return;\n-                    }\n-                    operation.operation !== _ast.OperationTypeNode.SUBSCRIPTION || (0, _invariant.invariant)(false, '`@defer` directive not supported on subscription operations. Disable `@defer` by setting the `if` argument to `false`.');\n-                    return {\n-                        label: typeof defer.label === 'string' ? defer.label : undefined,\n-                        parentDeferUsage\n-                    };\n-                }\n-                /**\n                  * Determines if a field should be included based on the `@include` and `@skip`\n                  * directives, where `@skip` has higher precedence than `@include`.\n                  */\n+\n                 function shouldIncludeNode(variableValues, node) {\n                     const skip = (0, _values.getDirectiveValues)(_directives.GraphQLSkipDirective, node, variableValues);\n                     if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {\n                         return false;\n                     }\n                     const include = (0, _values.getDirectiveValues)(_directives.GraphQLIncludeDirective, node, variableValues);\n                     if ((include === null || include === void 0 ? void 0 : include.if) === false) {\n                         return false;\n                     }\n                     return true;\n                 }\n                 /**\n                  * Determines if a fragment is applicable to the given type.\n                  */\n+\n                 function doesFragmentConditionMatch(schema, fragment, type) {\n                     const typeConditionNode = fragment.typeCondition;\n                     if (!typeConditionNode) {\n                         return true;\n                     }\n                     const conditionalType = (0, _typeFromAST.typeFromAST)(schema, typeConditionNode);\n                     if (conditionalType === type) {\n@@ -26405,14 +43704,15 @@\n                         return schema.isSubType(conditionalType, type);\n                     }\n                     return false;\n                 }\n                 /**\n                  * Implements the logic to compute the key of a given field's entry\n                  */\n+\n                 function getFieldEntryKey(node) {\n                     return node.alias ? node.alias.value : node.name.value;\n                 }\n \n                 /***/\n             }),\n \n@@ -26420,262 +43720,201 @@\n         \"../../../node_modules/graphql/execution/execute.mjs\":\n             /*!***********************************************************!*\\\n               !*** ../../../node_modules/graphql/execution/execute.mjs ***!\n               \\***********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n+                exports.assertValidExecutionArguments = assertValidExecutionArguments;\n                 exports.buildExecutionContext = buildExecutionContext;\n                 exports.buildResolveInfo = buildResolveInfo;\n-                exports.createSourceEventStream = createSourceEventStream;\n                 exports.defaultTypeResolver = exports.defaultFieldResolver = void 0;\n                 exports.execute = execute;\n                 exports.executeSync = executeSync;\n-                exports.experimentalExecuteIncrementally = experimentalExecuteIncrementally;\n-                exports.subscribe = subscribe;\n-                var _BoxedPromiseOrValue = __webpack_require__( /*! ../jsutils/BoxedPromiseOrValue.mjs */ \"../../../node_modules/graphql/jsutils/BoxedPromiseOrValue.mjs\");\n+                exports.getFieldDef = getFieldDef;\n+                var _devAssert = __webpack_require__( /*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n                 var _inspect = __webpack_require__( /*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n                 var _invariant = __webpack_require__( /*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n-                var _isAsyncIterable = __webpack_require__( /*! ../jsutils/isAsyncIterable.mjs */ \"../../../node_modules/graphql/jsutils/isAsyncIterable.mjs\");\n                 var _isIterableObject = __webpack_require__( /*! ../jsutils/isIterableObject.mjs */ \"../../../node_modules/graphql/jsutils/isIterableObject.mjs\");\n                 var _isObjectLike = __webpack_require__( /*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n                 var _isPromise = __webpack_require__( /*! ../jsutils/isPromise.mjs */ \"../../../node_modules/graphql/jsutils/isPromise.mjs\");\n                 var _memoize = __webpack_require__( /*! ../jsutils/memoize3.mjs */ \"../../../node_modules/graphql/jsutils/memoize3.mjs\");\n                 var _Path = __webpack_require__( /*! ../jsutils/Path.mjs */ \"../../../node_modules/graphql/jsutils/Path.mjs\");\n                 var _promiseForObject = __webpack_require__( /*! ../jsutils/promiseForObject.mjs */ \"../../../node_modules/graphql/jsutils/promiseForObject.mjs\");\n                 var _promiseReduce = __webpack_require__( /*! ../jsutils/promiseReduce.mjs */ \"../../../node_modules/graphql/jsutils/promiseReduce.mjs\");\n                 var _GraphQLError = __webpack_require__( /*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 var _locatedError = __webpack_require__( /*! ../error/locatedError.mjs */ \"../../../node_modules/graphql/error/locatedError.mjs\");\n                 var _ast = __webpack_require__( /*! ../language/ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n                 var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 var _definition = __webpack_require__( /*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n-                var _directives = __webpack_require__( /*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n+                var _introspection = __webpack_require__( /*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n                 var _validate = __webpack_require__( /*! ../type/validate.mjs */ \"../../../node_modules/graphql/type/validate.mjs\");\n-                var _buildExecutionPlan = __webpack_require__( /*! ./buildExecutionPlan.mjs */ \"../../../node_modules/graphql/execution/buildExecutionPlan.mjs\");\n                 var _collectFields = __webpack_require__( /*! ./collectFields.mjs */ \"../../../node_modules/graphql/execution/collectFields.mjs\");\n-                var _IncrementalPublisher = __webpack_require__( /*! ./IncrementalPublisher.mjs */ \"../../../node_modules/graphql/execution/IncrementalPublisher.mjs\");\n-                var _mapAsyncIterable = __webpack_require__( /*! ./mapAsyncIterable.mjs */ \"../../../node_modules/graphql/execution/mapAsyncIterable.mjs\");\n-                var _types = __webpack_require__( /*! ./types.mjs */ \"../../../node_modules/graphql/execution/types.mjs\");\n                 var _values = __webpack_require__( /*! ./values.mjs */ \"../../../node_modules/graphql/execution/values.mjs\");\n-                /* eslint-disable max-params */\n-                // This file contains a lot of such errors but we plan to refactor it anyway\n-                // so just disable it for entire file.\n                 /**\n                  * A memoized collection of relevant subfields with regard to the return\n                  * type. Memoizing ensures the subfields are not repeatedly calculated, which\n                  * saves overhead when resolving lists of values.\n                  */\n-                const collectSubfields = (0, _memoize.memoize3)((exeContext, returnType, fieldGroup) => (0, _collectFields.collectSubfields)(exeContext.schema, exeContext.fragments, exeContext.variableValues, exeContext.operation, returnType, fieldGroup));\n-                const UNEXPECTED_EXPERIMENTAL_DIRECTIVES = 'The provided schema unexpectedly contains experimental directives (@defer or @stream). These directives may only be utilized if experimental execution features are explicitly enabled.';\n-                const UNEXPECTED_MULTIPLE_PAYLOADS = 'Executing this GraphQL operation would unexpectedly produce multiple payloads (due to @defer or @stream directive)';\n+\n+                const collectSubfields = (0, _memoize.memoize3)((exeContext, returnType, fieldNodes) => (0, _collectFields.collectSubfields)(exeContext.schema, exeContext.fragments, exeContext.variableValues, returnType, fieldNodes));\n                 /**\n-                 * Implements the \"Executing requests\" section of the GraphQL specification.\n+                 * Terminology\n                  *\n-                 * Returns either a synchronous ExecutionResult (if all encountered resolvers\n-                 * are synchronous), or a Promise of an ExecutionResult that will eventually be\n-                 * resolved and never rejected.\n+                 * \"Definitions\" are the generic name for top-level statements in the document.\n+                 * Examples of this include:\n+                 * 1) Operations (such as a query)\n+                 * 2) Fragments\n                  *\n-                 * If the arguments to this function do not result in a legal execution context,\n-                 * a GraphQLError will be thrown immediately explaining the invalid input.\n+                 * \"Operations\" are a generic name for requests in the document.\n+                 * Examples of this include:\n+                 * 1) query,\n+                 * 2) mutation\n                  *\n-                 * This function does not support incremental delivery (`@defer` and `@stream`).\n-                 * If an operation which would defer or stream data is executed with this\n-                 * function, it will throw or return a rejected promise.\n-                 * Use `experimentalExecuteIncrementally` if you want to support incremental\n-                 * delivery.\n+                 * \"Selections\" are the definitions that can appear legally and at\n+                 * single level of the query. These include:\n+                 * 1) field references e.g `a`\n+                 * 2) fragment \"spreads\" e.g. `...c`\n+                 * 3) inline fragment \"spreads\" e.g. `...on Type { a }`\n                  */\n-                function execute(args) {\n-                    if (args.schema.getDirective('defer') || args.schema.getDirective('stream')) {\n-                        throw new Error(UNEXPECTED_EXPERIMENTAL_DIRECTIVES);\n-                    }\n-                    const result = experimentalExecuteIncrementally(args);\n-                    if (!(0, _isPromise.isPromise)(result)) {\n-                        if ('initialResult' in result) {\n-                            // This can happen if the operation contains @defer or @stream directives\n-                            // and is not validated prior to execution\n-                            throw new Error(UNEXPECTED_MULTIPLE_PAYLOADS);\n-                        }\n-                        return result;\n-                    }\n-                    return result.then(incrementalResult => {\n-                        if ('initialResult' in incrementalResult) {\n-                            // This can happen if the operation contains @defer or @stream directives\n-                            // and is not validated prior to execution\n-                            throw new Error(UNEXPECTED_MULTIPLE_PAYLOADS);\n-                        }\n-                        return incrementalResult;\n-                    });\n-                }\n+\n+                /**\n+                 * Data that must be available at all points during query execution.\n+                 *\n+                 * Namely, schema of the type system that is currently executing,\n+                 * and the fragments defined in the query document\n+                 */\n+\n                 /**\n-                 * Implements the \"Executing requests\" section of the GraphQL specification,\n-                 * including `@defer` and `@stream` as proposed in\n-                 * https://github.com/graphql/graphql-spec/pull/742\n+                 * Implements the \"Executing requests\" section of the GraphQL specification.\n                  *\n-                 * This function returns a Promise of an ExperimentalIncrementalExecutionResults\n-                 * object. This object either consists of a single ExecutionResult, or an\n-                 * object containing an `initialResult` and a stream of `subsequentResults`.\n+                 * Returns either a synchronous ExecutionResult (if all encountered resolvers\n+                 * are synchronous), or a Promise of an ExecutionResult that will eventually be\n+                 * resolved and never rejected.\n                  *\n                  * If the arguments to this function do not result in a legal execution context,\n                  * a GraphQLError will be thrown immediately explaining the invalid input.\n                  */\n-                function experimentalExecuteIncrementally(args) {\n-                    // If a valid execution context cannot be created due to incorrect arguments,\n+                function execute(args) {\n+                    // Temporary for v15 to v16 migration. Remove in v17\n+                    arguments.length < 2 || (0, _devAssert.devAssert)(false, 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.');\n+                    const {\n+                        schema,\n+                        document,\n+                        variableValues,\n+                        rootValue\n+                    } = args; // If arguments are missing or incorrect, throw an error.\n+\n+                    assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n                     // a \"Response\" with only errors is returned.\n-                    const exeContext = buildExecutionContext(args);\n-                    // Return early errors if execution context failed.\n+\n+                    const exeContext = buildExecutionContext(args); // Return early errors if execution context failed.\n+\n                     if (!('schema' in exeContext)) {\n                         return {\n                             errors: exeContext\n                         };\n-                    }\n-                    return executeOperation(exeContext);\n-                }\n-                /**\n-                 * Implements the \"Executing operations\" section of the spec.\n-                 *\n-                 * Returns a Promise that will eventually resolve to the data described by\n-                 * The \"Response\" section of the GraphQL specification.\n-                 *\n-                 * If errors are encountered while executing a GraphQL field, only that\n-                 * field and its descendants will be omitted, and sibling fields will still\n-                 * be executed. An execution which encounters errors will still result in a\n-                 * resolved Promise.\n-                 *\n-                 * Errors from sub-fields of a NonNull type may propagate to the top level,\n-                 * at which point we still log the error and null the parent field, which\n-                 * in this case is the entire response.\n-                 */\n-                function executeOperation(exeContext) {\n+                    } // Return a Promise that will eventually resolve to the data described by\n+                    // The \"Response\" section of the GraphQL specification.\n+                    //\n+                    // If errors are encountered while executing a GraphQL field, only that\n+                    // field and its descendants will be omitted, and sibling fields will still\n+                    // be executed. An execution which encounters errors will still result in a\n+                    // resolved Promise.\n+                    //\n+                    // Errors from sub-fields of a NonNull type may propagate to the top level,\n+                    // at which point we still log the error and null the parent field, which\n+                    // in this case is the entire response.\n+\n                     try {\n                         const {\n-                            operation,\n-                            schema,\n-                            fragments,\n-                            variableValues,\n-                            rootValue\n+                            operation\n                         } = exeContext;\n-                        const rootType = schema.getRootType(operation.operation);\n-                        if (rootType == null) {\n-                            throw new _GraphQLError.GraphQLError(`Schema is not configured to execute ${operation.operation} operation.`, {\n-                                nodes: operation\n+                        const result = executeOperation(exeContext, operation, rootValue);\n+                        if ((0, _isPromise.isPromise)(result)) {\n+                            return result.then(data => buildResponse(data, exeContext.errors), error => {\n+                                exeContext.errors.push(error);\n+                                return buildResponse(null, exeContext.errors);\n                             });\n                         }\n-                        const collectedFields = (0, _collectFields.collectFields)(schema, fragments, variableValues, rootType, operation);\n-                        let groupedFieldSet = collectedFields.groupedFieldSet;\n-                        const newDeferUsages = collectedFields.newDeferUsages;\n-                        let graphqlWrappedResult;\n-                        if (newDeferUsages.length === 0) {\n-                            graphqlWrappedResult = executeRootGroupedFieldSet(exeContext, operation.operation, rootType, rootValue, groupedFieldSet, undefined);\n-                        } else {\n-                            const executionPlan = (0, _buildExecutionPlan.buildExecutionPlan)(groupedFieldSet);\n-                            groupedFieldSet = executionPlan.groupedFieldSet;\n-                            const newGroupedFieldSets = executionPlan.newGroupedFieldSets;\n-                            const newDeferMap = addNewDeferredFragments(newDeferUsages, new Map());\n-                            graphqlWrappedResult = executeRootGroupedFieldSet(exeContext, operation.operation, rootType, rootValue, groupedFieldSet, newDeferMap);\n-                            if (newGroupedFieldSets.size > 0) {\n-                                const newPendingExecutionGroups = collectExecutionGroups(exeContext, rootType, rootValue, undefined, undefined, newGroupedFieldSets, newDeferMap);\n-                                graphqlWrappedResult = withNewExecutionGroups(graphqlWrappedResult, newPendingExecutionGroups);\n-                            }\n-                        }\n-                        if ((0, _isPromise.isPromise)(graphqlWrappedResult)) {\n-                            return graphqlWrappedResult.then(resolved => buildDataResponse(exeContext, resolved[0], resolved[1]), error => ({\n-                                data: null,\n-                                errors: withError(exeContext.errors, error)\n-                            }));\n-                        }\n-                        return buildDataResponse(exeContext, graphqlWrappedResult[0], graphqlWrappedResult[1]);\n+                        return buildResponse(result, exeContext.errors);\n                     } catch (error) {\n-                        return {\n-                            data: null,\n-                            errors: withError(exeContext.errors, error)\n-                        };\n-                    }\n-                }\n-\n-                function withNewExecutionGroups(result, newPendingExecutionGroups) {\n-                    if ((0, _isPromise.isPromise)(result)) {\n-                        return result.then(resolved => {\n-                            addIncrementalDataRecords(resolved, newPendingExecutionGroups);\n-                            return resolved;\n-                        });\n-                    }\n-                    addIncrementalDataRecords(result, newPendingExecutionGroups);\n-                    return result;\n-                }\n-\n-                function addIncrementalDataRecords(graphqlWrappedResult, incrementalDataRecords) {\n-                    if (incrementalDataRecords === undefined) {\n-                        return;\n-                    }\n-                    if (graphqlWrappedResult[1] === undefined) {\n-                        graphqlWrappedResult[1] = [...incrementalDataRecords];\n-                    } else {\n-                        graphqlWrappedResult[1].push(...incrementalDataRecords);\n-                    }\n-                }\n-\n-                function withError(errors, error) {\n-                    return errors === undefined ? [error] : [...errors, error];\n-                }\n-\n-                function buildDataResponse(exeContext, data, incrementalDataRecords) {\n-                    const errors = exeContext.errors;\n-                    if (incrementalDataRecords === undefined) {\n-                        return errors !== undefined ? {\n-                            errors,\n-                            data\n-                        } : {\n-                            data\n-                        };\n+                        exeContext.errors.push(error);\n+                        return buildResponse(null, exeContext.errors);\n                     }\n-                    return (0, _IncrementalPublisher.buildIncrementalResponse)(exeContext, data, errors, incrementalDataRecords);\n                 }\n                 /**\n                  * Also implements the \"Executing requests\" section of the GraphQL specification.\n                  * However, it guarantees to complete synchronously (or throw an error) assuming\n                  * that all field resolvers are also synchronous.\n                  */\n+\n                 function executeSync(args) {\n-                    const result = experimentalExecuteIncrementally(args);\n-                    // Assert that the execution was synchronous.\n-                    if ((0, _isPromise.isPromise)(result) || 'initialResult' in result) {\n+                    const result = execute(args); // Assert that the execution was synchronous.\n+\n+                    if ((0, _isPromise.isPromise)(result)) {\n                         throw new Error('GraphQL execution failed to complete synchronously.');\n                     }\n                     return result;\n                 }\n                 /**\n+                 * Given a completed execution context and data, build the `{ errors, data }`\n+                 * response defined by the \"Response\" section of the GraphQL specification.\n+                 */\n+\n+                function buildResponse(data, errors) {\n+                    return errors.length === 0 ? {\n+                        data\n+                    } : {\n+                        errors,\n+                        data\n+                    };\n+                }\n+                /**\n+                 * Essential assertions before executing to provide developer feedback for\n+                 * improper use of the GraphQL library.\n+                 *\n+                 * @internal\n+                 */\n+\n+                function assertValidExecutionArguments(schema, document, rawVariableValues) {\n+                    document || (0, _devAssert.devAssert)(false, 'Must provide document.'); // If the schema used for execution is invalid, throw an error.\n+\n+                    (0, _validate.assertValidSchema)(schema); // Variables, if provided, must be an object.\n+\n+                    rawVariableValues == null || (0, _isObjectLike.isObjectLike)(rawVariableValues) || (0, _devAssert.devAssert)(false, 'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.');\n+                }\n+                /**\n                  * Constructs a ExecutionContext object from the arguments passed to\n                  * execute, which we will pass throughout the other execution methods.\n                  *\n                  * Throws a GraphQLError if a valid execution context cannot be created.\n                  *\n-                 * TODO: consider no longer exporting this function\n                  * @internal\n                  */\n+\n                 function buildExecutionContext(args) {\n                     var _definition$name, _operation$variableDe;\n                     const {\n                         schema,\n                         document,\n                         rootValue,\n                         contextValue,\n                         variableValues: rawVariableValues,\n                         operationName,\n                         fieldResolver,\n                         typeResolver,\n-                        subscribeFieldResolver,\n-                        enableEarlyExecution\n+                        subscribeFieldResolver\n                     } = args;\n-                    // If the schema used for execution is invalid, throw an error.\n-                    (0, _validate.assertValidSchema)(schema);\n                     let operation;\n                     const fragments = Object.create(null);\n                     for (const definition of document.definitions) {\n                         switch (definition.kind) {\n                             case _kinds.Kind.OPERATION_DEFINITION:\n                                 if (operationName == null) {\n                                     if (operation !== undefined) {\n@@ -26685,26 +43924,26 @@\n                                 } else if (((_definition$name = definition.name) === null || _definition$name === void 0 ? void 0 : _definition$name.value) === operationName) {\n                                     operation = definition;\n                                 }\n                                 break;\n                             case _kinds.Kind.FRAGMENT_DEFINITION:\n                                 fragments[definition.name.value] = definition;\n                                 break;\n-                            default:\n-                                // ignore non-executable definitions\n+                            default: // ignore non-executable definitions\n                         }\n                     }\n                     if (!operation) {\n                         if (operationName != null) {\n                             return [new _GraphQLError.GraphQLError(`Unknown operation named \"${operationName}\".`)];\n                         }\n                         return [new _GraphQLError.GraphQLError('Must provide an operation.')];\n-                    }\n-                    // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+                    } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+\n                     /* c8 ignore next */\n+\n                     const variableDefinitions = (_operation$variableDe = operation.variableDefinitions) !== null && _operation$variableDe !== void 0 ? _operation$variableDe : [];\n                     const coercedVariableValues = (0, _values.getVariableValues)(schema, variableDefinitions, rawVariableValues !== null && rawVariableValues !== void 0 ? rawVariableValues : {}, {\n                         maxErrors: 50\n                     });\n                     if (coercedVariableValues.errors) {\n                         return coercedVariableValues.errors;\n                     }\n@@ -26714,161 +43953,151 @@\n                         rootValue,\n                         contextValue,\n                         operation,\n                         variableValues: coercedVariableValues.coerced,\n                         fieldResolver: fieldResolver !== null && fieldResolver !== void 0 ? fieldResolver : defaultFieldResolver,\n                         typeResolver: typeResolver !== null && typeResolver !== void 0 ? typeResolver : defaultTypeResolver,\n                         subscribeFieldResolver: subscribeFieldResolver !== null && subscribeFieldResolver !== void 0 ? subscribeFieldResolver : defaultFieldResolver,\n-                        enableEarlyExecution: enableEarlyExecution === true,\n-                        errors: undefined,\n-                        cancellableStreams: undefined\n-                    };\n-                }\n-\n-                function buildPerEventExecutionContext(exeContext, payload) {\n-                    return {\n-                        ...exeContext,\n-                        rootValue: payload,\n-                        errors: undefined\n+                        errors: []\n                     };\n                 }\n+                /**\n+                 * Implements the \"Executing operations\" section of the spec.\n+                 */\n \n-                function executeRootGroupedFieldSet(exeContext, operation, rootType, rootValue, groupedFieldSet, deferMap) {\n-                    switch (operation) {\n+                function executeOperation(exeContext, operation, rootValue) {\n+                    const rootType = exeContext.schema.getRootType(operation.operation);\n+                    if (rootType == null) {\n+                        throw new _GraphQLError.GraphQLError(`Schema is not configured to execute ${operation.operation} operation.`, {\n+                            nodes: operation\n+                        });\n+                    }\n+                    const rootFields = (0, _collectFields.collectFields)(exeContext.schema, exeContext.fragments, exeContext.variableValues, rootType, operation.selectionSet);\n+                    const path = undefined;\n+                    switch (operation.operation) {\n                         case _ast.OperationTypeNode.QUERY:\n-                            return executeFields(exeContext, rootType, rootValue, undefined, groupedFieldSet, undefined, deferMap);\n+                            return executeFields(exeContext, rootType, rootValue, path, rootFields);\n                         case _ast.OperationTypeNode.MUTATION:\n-                            return executeFieldsSerially(exeContext, rootType, rootValue, undefined, groupedFieldSet, undefined, deferMap);\n+                            return executeFieldsSerially(exeContext, rootType, rootValue, path, rootFields);\n                         case _ast.OperationTypeNode.SUBSCRIPTION:\n                             // TODO: deprecate `subscribe` and move all logic here\n                             // Temporary solution until we finish merging execute and subscribe together\n-                            return executeFields(exeContext, rootType, rootValue, undefined, groupedFieldSet, undefined, deferMap);\n+                            return executeFields(exeContext, rootType, rootValue, path, rootFields);\n                     }\n                 }\n                 /**\n                  * Implements the \"Executing selection sets\" section of the spec\n                  * for fields that must be executed serially.\n                  */\n-                function executeFieldsSerially(exeContext, parentType, sourceValue, path, groupedFieldSet, incrementalContext, deferMap) {\n-                    return (0, _promiseReduce.promiseReduce)(groupedFieldSet, (graphqlWrappedResult, [responseName, fieldGroup]) => {\n+\n+                function executeFieldsSerially(exeContext, parentType, sourceValue, path, fields) {\n+                    return (0, _promiseReduce.promiseReduce)(fields.entries(), (results, [responseName, fieldNodes]) => {\n                         const fieldPath = (0, _Path.addPath)(path, responseName, parentType.name);\n-                        const result = executeField(exeContext, parentType, sourceValue, fieldGroup, fieldPath, incrementalContext, deferMap);\n+                        const result = executeField(exeContext, parentType, sourceValue, fieldNodes, fieldPath);\n                         if (result === undefined) {\n-                            return graphqlWrappedResult;\n+                            return results;\n                         }\n                         if ((0, _isPromise.isPromise)(result)) {\n-                            return result.then(resolved => {\n-                                graphqlWrappedResult[0][responseName] = resolved[0];\n-                                addIncrementalDataRecords(graphqlWrappedResult, resolved[1]);\n-                                return graphqlWrappedResult;\n+                            return result.then(resolvedResult => {\n+                                results[responseName] = resolvedResult;\n+                                return results;\n                             });\n                         }\n-                        graphqlWrappedResult[0][responseName] = result[0];\n-                        addIncrementalDataRecords(graphqlWrappedResult, result[1]);\n-                        return graphqlWrappedResult;\n-                    }, [Object.create(null), undefined]);\n+                        results[responseName] = result;\n+                        return results;\n+                    }, Object.create(null));\n                 }\n                 /**\n                  * Implements the \"Executing selection sets\" section of the spec\n                  * for fields that may be executed in parallel.\n                  */\n-                function executeFields(exeContext, parentType, sourceValue, path, groupedFieldSet, incrementalContext, deferMap) {\n+\n+                function executeFields(exeContext, parentType, sourceValue, path, fields) {\n                     const results = Object.create(null);\n-                    const graphqlWrappedResult = [results, undefined];\n                     let containsPromise = false;\n                     try {\n-                        for (const [responseName, fieldGroup] of groupedFieldSet) {\n+                        for (const [responseName, fieldNodes] of fields.entries()) {\n                             const fieldPath = (0, _Path.addPath)(path, responseName, parentType.name);\n-                            const result = executeField(exeContext, parentType, sourceValue, fieldGroup, fieldPath, incrementalContext, deferMap);\n+                            const result = executeField(exeContext, parentType, sourceValue, fieldNodes, fieldPath);\n                             if (result !== undefined) {\n+                                results[responseName] = result;\n                                 if ((0, _isPromise.isPromise)(result)) {\n-                                    results[responseName] = result.then(resolved => {\n-                                        addIncrementalDataRecords(graphqlWrappedResult, resolved[1]);\n-                                        return resolved[0];\n-                                    });\n                                     containsPromise = true;\n-                                } else {\n-                                    results[responseName] = result[0];\n-                                    addIncrementalDataRecords(graphqlWrappedResult, result[1]);\n                                 }\n                             }\n                         }\n                     } catch (error) {\n                         if (containsPromise) {\n                             // Ensure that any promises returned by other fields are handled, as they may also reject.\n-                            return (0, _promiseForObject.promiseForObject)(results, () => {\n-                                /* noop */\n-                            }).finally(() => {\n+                            return (0, _promiseForObject.promiseForObject)(results).finally(() => {\n                                 throw error;\n                             });\n                         }\n                         throw error;\n-                    }\n-                    // If there are no promises, we can just return the object and any incrementalDataRecords\n+                    } // If there are no promises, we can just return the object\n+\n                     if (!containsPromise) {\n-                        return graphqlWrappedResult;\n-                    }\n-                    // Otherwise, results is a map from field name to the result of resolving that\n+                        return results;\n+                    } // Otherwise, results is a map from field name to the result of resolving that\n                     // field, which is possibly a promise. Return a promise that will return this\n                     // same map, but with any promises replaced with the values they resolved to.\n-                    return (0, _promiseForObject.promiseForObject)(results, resolved => [resolved, graphqlWrappedResult[1]]);\n-                }\n \n-                function toNodes(fieldGroup) {\n-                    return fieldGroup.map(fieldDetails => fieldDetails.node);\n+                    return (0, _promiseForObject.promiseForObject)(results);\n                 }\n                 /**\n                  * Implements the \"Executing fields\" section of the spec\n                  * In particular, this function figures out the value that the field returns by\n                  * calling its resolve function, then calls completeValue to complete promises,\n                  * serialize scalars, or execute the sub-selection-set for objects.\n                  */\n-                function executeField(exeContext, parentType, source, fieldGroup, path, incrementalContext, deferMap) {\n+\n+                function executeField(exeContext, parentType, source, fieldNodes, path) {\n                     var _fieldDef$resolve;\n-                    const fieldName = fieldGroup[0].node.name.value;\n-                    const fieldDef = exeContext.schema.getField(parentType, fieldName);\n+                    const fieldDef = getFieldDef(exeContext.schema, parentType, fieldNodes[0]);\n                     if (!fieldDef) {\n                         return;\n                     }\n                     const returnType = fieldDef.type;\n                     const resolveFn = (_fieldDef$resolve = fieldDef.resolve) !== null && _fieldDef$resolve !== void 0 ? _fieldDef$resolve : exeContext.fieldResolver;\n-                    const info = buildResolveInfo(exeContext, fieldDef, toNodes(fieldGroup), parentType, path);\n-                    // Get the resolve function, regardless of if its result is normal or abrupt (error).\n+                    const info = buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path); // Get the resolve function, regardless of if its result is normal or abrupt (error).\n+\n                     try {\n                         // Build a JS object of arguments from the field.arguments AST, using the\n                         // variables scope to fulfill any variable references.\n                         // TODO: find a way to memoize, in case this field is within a List type.\n-                        const args = (0, _values.getArgumentValues)(fieldDef, fieldGroup[0].node, exeContext.variableValues);\n-                        // The resolve function's optional third argument is a context value that\n+                        const args = (0, _values.getArgumentValues)(fieldDef, fieldNodes[0], exeContext.variableValues); // The resolve function's optional third argument is a context value that\n                         // is provided to every resolve function within an execution. It is commonly\n                         // used to represent an authenticated user, or request-specific caches.\n+\n                         const contextValue = exeContext.contextValue;\n                         const result = resolveFn(source, args, contextValue, info);\n+                        let completed;\n                         if ((0, _isPromise.isPromise)(result)) {\n-                            return completePromisedValue(exeContext, returnType, fieldGroup, info, path, result, incrementalContext, deferMap);\n+                            completed = result.then(resolved => completeValue(exeContext, returnType, fieldNodes, info, path, resolved));\n+                        } else {\n+                            completed = completeValue(exeContext, returnType, fieldNodes, info, path, result);\n                         }\n-                        const completed = completeValue(exeContext, returnType, fieldGroup, info, path, result, incrementalContext, deferMap);\n                         if ((0, _isPromise.isPromise)(completed)) {\n                             // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n                             // to take a second callback for the error case.\n                             return completed.then(undefined, rawError => {\n-                                handleFieldError(rawError, exeContext, returnType, fieldGroup, path, incrementalContext);\n-                                return [null, undefined];\n+                                const error = (0, _locatedError.locatedError)(rawError, fieldNodes, (0, _Path.pathToArray)(path));\n+                                return handleFieldError(error, returnType, exeContext);\n                             });\n                         }\n                         return completed;\n                     } catch (rawError) {\n-                        handleFieldError(rawError, exeContext, returnType, fieldGroup, path, incrementalContext);\n-                        return [null, undefined];\n+                        const error = (0, _locatedError.locatedError)(rawError, fieldNodes, (0, _Path.pathToArray)(path));\n+                        return handleFieldError(error, returnType, exeContext);\n                     }\n                 }\n                 /**\n-                 * TODO: consider no longer exporting this function\n                  * @internal\n                  */\n+\n                 function buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) {\n                     // The resolve function's optional fourth argument is a collection of\n                     // information about the current execution state.\n                     return {\n                         fieldName: fieldDef.name,\n                         fieldNodes,\n                         returnType: fieldDef.type,\n@@ -26878,30 +44107,24 @@\n                         fragments: exeContext.fragments,\n                         rootValue: exeContext.rootValue,\n                         operation: exeContext.operation,\n                         variableValues: exeContext.variableValues\n                     };\n                 }\n \n-                function handleFieldError(rawError, exeContext, returnType, fieldGroup, path, incrementalContext) {\n-                    const error = (0, _locatedError.locatedError)(rawError, toNodes(fieldGroup), (0, _Path.pathToArray)(path));\n+                function handleFieldError(error, returnType, exeContext) {\n                     // If the field type is non-nullable, then it is resolved without any\n                     // protection from errors, however it still properly locates the error.\n                     if ((0, _definition.isNonNullType)(returnType)) {\n                         throw error;\n-                    }\n-                    // Otherwise, error protection is applied, logging the error and resolving\n+                    } // Otherwise, error protection is applied, logging the error and resolving\n                     // a null value for this field if one is encountered.\n-                    const context = incrementalContext !== null && incrementalContext !== void 0 ? incrementalContext : exeContext;\n-                    let errors = context.errors;\n-                    if (errors === undefined) {\n-                        errors = [];\n-                        context.errors = errors;\n-                    }\n-                    errors.push(error);\n+\n+                    exeContext.errors.push(error);\n+                    return null;\n                 }\n                 /**\n                  * Implements the instructions for completeValue as defined in the\n                  * \"Value Completion\" section of the spec.\n                  *\n                  * If the field type is Non-Null, then this recursively completes the value\n                  * for the inner type. It throws a field error if that completion returns null,\n@@ -26916,444 +44139,204 @@\n                  *\n                  * If the field is an abstract type, determine the runtime type of the value\n                  * and then complete based on that type\n                  *\n                  * Otherwise, the field type expects a sub-selection set, and will complete the\n                  * value by executing all sub-selections.\n                  */\n-                function completeValue(exeContext, returnType, fieldGroup, info, path, result, incrementalContext, deferMap) {\n+\n+                function completeValue(exeContext, returnType, fieldNodes, info, path, result) {\n                     // If result is an Error, throw a located error.\n                     if (result instanceof Error) {\n                         throw result;\n-                    }\n-                    // If field type is NonNull, complete for inner type, and throw field error\n+                    } // If field type is NonNull, complete for inner type, and throw field error\n                     // if result is null.\n+\n                     if ((0, _definition.isNonNullType)(returnType)) {\n-                        const completed = completeValue(exeContext, returnType.ofType, fieldGroup, info, path, result, incrementalContext, deferMap);\n-                        if (completed[0] === null) {\n+                        const completed = completeValue(exeContext, returnType.ofType, fieldNodes, info, path, result);\n+                        if (completed === null) {\n                             throw new Error(`Cannot return null for non-nullable field ${info.parentType.name}.${info.fieldName}.`);\n                         }\n                         return completed;\n-                    }\n-                    // If result value is null or undefined then return null.\n+                    } // If result value is null or undefined then return null.\n+\n                     if (result == null) {\n-                        return [null, undefined];\n-                    }\n-                    // If field type is List, complete each item in the list with the inner type\n+                        return null;\n+                    } // If field type is List, complete each item in the list with the inner type\n+\n                     if ((0, _definition.isListType)(returnType)) {\n-                        return completeListValue(exeContext, returnType, fieldGroup, info, path, result, incrementalContext, deferMap);\n-                    }\n-                    // If field type is a leaf type, Scalar or Enum, serialize to a valid value,\n+                        return completeListValue(exeContext, returnType, fieldNodes, info, path, result);\n+                    } // If field type is a leaf type, Scalar or Enum, serialize to a valid value,\n                     // returning null if serialization is not possible.\n+\n                     if ((0, _definition.isLeafType)(returnType)) {\n-                        return [completeLeafValue(returnType, result), undefined];\n-                    }\n-                    // If field type is an abstract type, Interface or Union, determine the\n+                        return completeLeafValue(returnType, result);\n+                    } // If field type is an abstract type, Interface or Union, determine the\n                     // runtime Object type and complete for that type.\n+\n                     if ((0, _definition.isAbstractType)(returnType)) {\n-                        return completeAbstractValue(exeContext, returnType, fieldGroup, info, path, result, incrementalContext, deferMap);\n-                    }\n-                    // If field type is Object, execute and complete all sub-selections.\n+                        return completeAbstractValue(exeContext, returnType, fieldNodes, info, path, result);\n+                    } // If field type is Object, execute and complete all sub-selections.\n+\n                     if ((0, _definition.isObjectType)(returnType)) {\n-                        return completeObjectValue(exeContext, returnType, fieldGroup, info, path, result, incrementalContext, deferMap);\n+                        return completeObjectValue(exeContext, returnType, fieldNodes, info, path, result);\n                     }\n                     /* c8 ignore next 6 */\n                     // Not reachable, all possible output types have been considered.\n+\n                     false || (0, _invariant.invariant)(false, 'Cannot complete value of unexpected output type: ' + (0, _inspect.inspect)(returnType));\n                 }\n-                async function completePromisedValue(exeContext, returnType, fieldGroup, info, path, result, incrementalContext, deferMap) {\n-                    try {\n-                        const resolved = await result;\n-                        let completed = completeValue(exeContext, returnType, fieldGroup, info, path, resolved, incrementalContext, deferMap);\n-                        if ((0, _isPromise.isPromise)(completed)) {\n-                            completed = await completed;\n-                        }\n-                        return completed;\n-                    } catch (rawError) {\n-                        handleFieldError(rawError, exeContext, returnType, fieldGroup, path, incrementalContext);\n-                        return [null, undefined];\n-                    }\n-                }\n-                /**\n-                 * Returns an object containing info for streaming if a field should be\n-                 * streamed based on the experimental flag, stream directive present and\n-                 * not disabled by the \"if\" argument.\n-                 */\n-                function getStreamUsage(exeContext, fieldGroup, path) {\n-                    // do not stream inner lists of multi-dimensional lists\n-                    if (typeof path.key === 'number') {\n-                        return;\n-                    }\n-                    // TODO: add test for this case (a streamed list nested under a list).\n-                    /* c8 ignore next 7 */\n-                    if (fieldGroup._streamUsage !== undefined) {\n-                        return fieldGroup._streamUsage;\n-                    }\n-                    // validation only allows equivalent streams on multiple fields, so it is\n-                    // safe to only check the first fieldNode for the stream directive\n-                    const stream = (0, _values.getDirectiveValues)(_directives.GraphQLStreamDirective, fieldGroup[0].node, exeContext.variableValues);\n-                    if (!stream) {\n-                        return;\n-                    }\n-                    if (stream.if === false) {\n-                        return;\n-                    }\n-                    typeof stream.initialCount === 'number' || (0, _invariant.invariant)(false, 'initialCount must be a number');\n-                    stream.initialCount >= 0 || (0, _invariant.invariant)(false, 'initialCount must be a positive integer');\n-                    exeContext.operation.operation !== _ast.OperationTypeNode.SUBSCRIPTION || (0, _invariant.invariant)(false, '`@stream` directive not supported on subscription operations. Disable `@stream` by setting the `if` argument to `false`.');\n-                    const streamedFieldGroup = fieldGroup.map(fieldDetails => ({\n-                        node: fieldDetails.node,\n-                        deferUsage: undefined\n-                    }));\n-                    const streamUsage = {\n-                        initialCount: stream.initialCount,\n-                        label: typeof stream.label === 'string' ? stream.label : undefined,\n-                        fieldGroup: streamedFieldGroup\n-                    };\n-                    fieldGroup._streamUsage = streamUsage;\n-                    return streamUsage;\n-                }\n-                /**\n-                 * Complete a async iterator value by completing the result and calling\n-                 * recursively until all the results are completed.\n-                 */\n-                async function completeAsyncIteratorValue(exeContext, itemType, fieldGroup, info, path, asyncIterator, incrementalContext, deferMap) {\n-                    let containsPromise = false;\n-                    const completedResults = [];\n-                    const graphqlWrappedResult = [completedResults, undefined];\n-                    let index = 0;\n-                    const streamUsage = getStreamUsage(exeContext, fieldGroup, path);\n-                    const earlyReturn = asyncIterator.return === undefined ? undefined : asyncIterator.return.bind(asyncIterator);\n-                    try {\n-                        // eslint-disable-next-line no-constant-condition\n-                        while (true) {\n-                            if (streamUsage && index >= streamUsage.initialCount) {\n-                                const streamItemQueue = buildAsyncStreamItemQueue(index, path, asyncIterator, exeContext, streamUsage.fieldGroup, info, itemType);\n-                                let streamRecord;\n-                                if (earlyReturn === undefined) {\n-                                    streamRecord = {\n-                                        label: streamUsage.label,\n-                                        path,\n-                                        streamItemQueue\n-                                    };\n-                                } else {\n-                                    streamRecord = {\n-                                        label: streamUsage.label,\n-                                        path,\n-                                        earlyReturn,\n-                                        streamItemQueue\n-                                    };\n-                                    if (exeContext.cancellableStreams === undefined) {\n-                                        exeContext.cancellableStreams = new Set();\n-                                    }\n-                                    exeContext.cancellableStreams.add(streamRecord);\n-                                }\n-                                addIncrementalDataRecords(graphqlWrappedResult, [streamRecord]);\n-                                break;\n-                            }\n-                            const itemPath = (0, _Path.addPath)(path, index, undefined);\n-                            let iteration;\n-                            try {\n-                                // eslint-disable-next-line no-await-in-loop\n-                                iteration = await asyncIterator.next();\n-                            } catch (rawError) {\n-                                throw (0, _locatedError.locatedError)(rawError, toNodes(fieldGroup), (0, _Path.pathToArray)(path));\n-                            }\n-                            // TODO: add test case for stream returning done before initialCount\n-                            /* c8 ignore next 3 */\n-                            if (iteration.done) {\n-                                break;\n-                            }\n-                            const item = iteration.value;\n-                            // TODO: add tests for stream backed by asyncIterator that returns a promise\n-                            /* c8 ignore start */\n-                            if ((0, _isPromise.isPromise)(item)) {\n-                                completedResults.push(completePromisedListItemValue(item, graphqlWrappedResult, exeContext, itemType, fieldGroup, info, itemPath, incrementalContext, deferMap));\n-                                containsPromise = true;\n-                            } else if ( /* c8 ignore stop */\n-                                completeListItemValue(item, completedResults, graphqlWrappedResult, exeContext, itemType, fieldGroup, info, itemPath, incrementalContext, deferMap)\n-                                // TODO: add tests for stream backed by asyncIterator that completes to a promise\n-                                /* c8 ignore start */\n-                            ) {\n-                                containsPromise = true;\n-                            }\n-                            /* c8 ignore stop */\n-                            index++;\n-                        }\n-                    } catch (error) {\n-                        if (earlyReturn !== undefined) {\n-                            earlyReturn().catch(() => {\n-                                /* c8 ignore next 1 */\n-                                // ignore error\n-                            });\n-                        }\n-                        throw error;\n-                    }\n-                    return containsPromise ? /* c8 ignore start */ Promise.all(completedResults).then(resolved => [resolved, graphqlWrappedResult[1]]) : /* c8 ignore stop */ graphqlWrappedResult;\n-                }\n                 /**\n                  * Complete a list value by completing each item in the list with the\n                  * inner type\n                  */\n-                function completeListValue(exeContext, returnType, fieldGroup, info, path, result, incrementalContext, deferMap) {\n-                    const itemType = returnType.ofType;\n-                    if ((0, _isAsyncIterable.isAsyncIterable)(result)) {\n-                        const asyncIterator = result[Symbol.asyncIterator]();\n-                        return completeAsyncIteratorValue(exeContext, itemType, fieldGroup, info, path, asyncIterator, incrementalContext, deferMap);\n-                    }\n+\n+                function completeListValue(exeContext, returnType, fieldNodes, info, path, result) {\n                     if (!(0, _isIterableObject.isIterableObject)(result)) {\n                         throw new _GraphQLError.GraphQLError(`Expected Iterable, but did not find one for field \"${info.parentType.name}.${info.fieldName}\".`);\n-                    }\n-                    return completeIterableValue(exeContext, itemType, fieldGroup, info, path, result, incrementalContext, deferMap);\n-                }\n-\n-                function completeIterableValue(exeContext, itemType, fieldGroup, info, path, items, incrementalContext, deferMap) {\n-                    // This is specified as a simple map, however we're optimizing the path\n+                    } // This is specified as a simple map, however we're optimizing the path\n                     // where the list contains no Promises by avoiding creating another Promise.\n+\n+                    const itemType = returnType.ofType;\n                     let containsPromise = false;\n-                    const completedResults = [];\n-                    const graphqlWrappedResult = [completedResults, undefined];\n-                    let index = 0;\n-                    const streamUsage = getStreamUsage(exeContext, fieldGroup, path);\n-                    const iterator = items[Symbol.iterator]();\n-                    let iteration = iterator.next();\n-                    while (!iteration.done) {\n-                        const item = iteration.value;\n-                        if (streamUsage && index >= streamUsage.initialCount) {\n-                            const syncStreamRecord = {\n-                                label: streamUsage.label,\n-                                path,\n-                                streamItemQueue: buildSyncStreamItemQueue(item, index, path, iterator, exeContext, streamUsage.fieldGroup, info, itemType)\n-                            };\n-                            addIncrementalDataRecords(graphqlWrappedResult, [syncStreamRecord]);\n-                            break;\n-                        }\n+                    const completedResults = Array.from(result, (item, index) => {\n                         // No need to modify the info object containing the path,\n                         // since from here on it is not ever accessed by resolver functions.\n                         const itemPath = (0, _Path.addPath)(path, index, undefined);\n-                        if ((0, _isPromise.isPromise)(item)) {\n-                            completedResults.push(completePromisedListItemValue(item, graphqlWrappedResult, exeContext, itemType, fieldGroup, info, itemPath, incrementalContext, deferMap));\n-                            containsPromise = true;\n-                        } else if (completeListItemValue(item, completedResults, graphqlWrappedResult, exeContext, itemType, fieldGroup, info, itemPath, incrementalContext, deferMap)) {\n-                            containsPromise = true;\n-                        }\n-                        index++;\n-                        iteration = iterator.next();\n-                    }\n-                    return containsPromise ? Promise.all(completedResults).then(resolved => [resolved, graphqlWrappedResult[1]]) : graphqlWrappedResult;\n-                }\n-                /**\n-                 * Complete a list item value by adding it to the completed results.\n-                 *\n-                 * Returns true if the value is a Promise.\n-                 */\n-                function completeListItemValue(item, completedResults, parent, exeContext, itemType, fieldGroup, info, itemPath, incrementalContext, deferMap) {\n-                    try {\n-                        const completedItem = completeValue(exeContext, itemType, fieldGroup, info, itemPath, item, incrementalContext, deferMap);\n-                        if ((0, _isPromise.isPromise)(completedItem)) {\n-                            // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n-                            // to take a second callback for the error case.\n-                            completedResults.push(completedItem.then(resolved => {\n-                                addIncrementalDataRecords(parent, resolved[1]);\n-                                return resolved[0];\n-                            }, rawError => {\n-                                handleFieldError(rawError, exeContext, itemType, fieldGroup, itemPath, incrementalContext);\n-                                return null;\n-                            }));\n-                            return true;\n-                        }\n-                        completedResults.push(completedItem[0]);\n-                        addIncrementalDataRecords(parent, completedItem[1]);\n-                    } catch (rawError) {\n-                        handleFieldError(rawError, exeContext, itemType, fieldGroup, itemPath, incrementalContext);\n-                        completedResults.push(null);\n-                    }\n-                    return false;\n-                }\n-                async function completePromisedListItemValue(item, parent, exeContext, itemType, fieldGroup, info, itemPath, incrementalContext, deferMap) {\n-                    try {\n-                        const resolved = await item;\n-                        let completed = completeValue(exeContext, itemType, fieldGroup, info, itemPath, resolved, incrementalContext, deferMap);\n-                        if ((0, _isPromise.isPromise)(completed)) {\n-                            completed = await completed;\n+                        try {\n+                            let completedItem;\n+                            if ((0, _isPromise.isPromise)(item)) {\n+                                completedItem = item.then(resolved => completeValue(exeContext, itemType, fieldNodes, info, itemPath, resolved));\n+                            } else {\n+                                completedItem = completeValue(exeContext, itemType, fieldNodes, info, itemPath, item);\n+                            }\n+                            if ((0, _isPromise.isPromise)(completedItem)) {\n+                                containsPromise = true; // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n+                                // to take a second callback for the error case.\n+\n+                                return completedItem.then(undefined, rawError => {\n+                                    const error = (0, _locatedError.locatedError)(rawError, fieldNodes, (0, _Path.pathToArray)(itemPath));\n+                                    return handleFieldError(error, itemType, exeContext);\n+                                });\n+                            }\n+                            return completedItem;\n+                        } catch (rawError) {\n+                            const error = (0, _locatedError.locatedError)(rawError, fieldNodes, (0, _Path.pathToArray)(itemPath));\n+                            return handleFieldError(error, itemType, exeContext);\n                         }\n-                        addIncrementalDataRecords(parent, completed[1]);\n-                        return completed[0];\n-                    } catch (rawError) {\n-                        handleFieldError(rawError, exeContext, itemType, fieldGroup, itemPath, incrementalContext);\n-                        return null;\n-                    }\n+                    });\n+                    return containsPromise ? Promise.all(completedResults) : completedResults;\n                 }\n                 /**\n                  * Complete a Scalar or Enum by serializing to a valid value, returning\n                  * null if serialization is not possible.\n                  */\n+\n                 function completeLeafValue(returnType, result) {\n                     const serializedResult = returnType.serialize(result);\n                     if (serializedResult == null) {\n                         throw new Error(`Expected \\`${(0, _inspect.inspect)(returnType)}.serialize(${(0, _inspect.inspect)(result)})\\` to ` + `return non-nullable value, returned: ${(0, _inspect.inspect)(serializedResult)}`);\n                     }\n                     return serializedResult;\n                 }\n                 /**\n                  * Complete a value of an abstract type by determining the runtime object type\n                  * of that value, then complete the value for that type.\n                  */\n-                function completeAbstractValue(exeContext, returnType, fieldGroup, info, path, result, incrementalContext, deferMap) {\n+\n+                function completeAbstractValue(exeContext, returnType, fieldNodes, info, path, result) {\n                     var _returnType$resolveTy;\n                     const resolveTypeFn = (_returnType$resolveTy = returnType.resolveType) !== null && _returnType$resolveTy !== void 0 ? _returnType$resolveTy : exeContext.typeResolver;\n                     const contextValue = exeContext.contextValue;\n                     const runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n                     if ((0, _isPromise.isPromise)(runtimeType)) {\n-                        return runtimeType.then(resolvedRuntimeType => completeObjectValue(exeContext, ensureValidRuntimeType(resolvedRuntimeType, exeContext, returnType, fieldGroup, info, result), fieldGroup, info, path, result, incrementalContext, deferMap));\n+                        return runtimeType.then(resolvedRuntimeType => completeObjectValue(exeContext, ensureValidRuntimeType(resolvedRuntimeType, exeContext, returnType, fieldNodes, info, result), fieldNodes, info, path, result));\n                     }\n-                    return completeObjectValue(exeContext, ensureValidRuntimeType(runtimeType, exeContext, returnType, fieldGroup, info, result), fieldGroup, info, path, result, incrementalContext, deferMap);\n+                    return completeObjectValue(exeContext, ensureValidRuntimeType(runtimeType, exeContext, returnType, fieldNodes, info, result), fieldNodes, info, path, result);\n                 }\n \n-                function ensureValidRuntimeType(runtimeTypeName, exeContext, returnType, fieldGroup, info, result) {\n+                function ensureValidRuntimeType(runtimeTypeName, exeContext, returnType, fieldNodes, info, result) {\n                     if (runtimeTypeName == null) {\n-                        throw new _GraphQLError.GraphQLError(`Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\". Either the \"${returnType.name}\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.`, {\n-                            nodes: toNodes(fieldGroup)\n-                        });\n-                    }\n-                    // releases before 16.0.0 supported returning `GraphQLObjectType` from `resolveType`\n+                        throw new _GraphQLError.GraphQLError(`Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\". Either the \"${returnType.name}\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.`, fieldNodes);\n+                    } // releases before 16.0.0 supported returning `GraphQLObjectType` from `resolveType`\n                     // TODO: remove in 17.0.0 release\n+\n                     if ((0, _definition.isObjectType)(runtimeTypeName)) {\n                         throw new _GraphQLError.GraphQLError('Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.');\n                     }\n                     if (typeof runtimeTypeName !== 'string') {\n                         throw new _GraphQLError.GraphQLError(`Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\" with ` + `value ${(0, _inspect.inspect)(result)}, received \"${(0, _inspect.inspect)(runtimeTypeName)}\".`);\n                     }\n                     const runtimeType = exeContext.schema.getType(runtimeTypeName);\n                     if (runtimeType == null) {\n                         throw new _GraphQLError.GraphQLError(`Abstract type \"${returnType.name}\" was resolved to a type \"${runtimeTypeName}\" that does not exist inside the schema.`, {\n-                            nodes: toNodes(fieldGroup)\n+                            nodes: fieldNodes\n                         });\n                     }\n                     if (!(0, _definition.isObjectType)(runtimeType)) {\n                         throw new _GraphQLError.GraphQLError(`Abstract type \"${returnType.name}\" was resolved to a non-object type \"${runtimeTypeName}\".`, {\n-                            nodes: toNodes(fieldGroup)\n+                            nodes: fieldNodes\n                         });\n                     }\n                     if (!exeContext.schema.isSubType(returnType, runtimeType)) {\n                         throw new _GraphQLError.GraphQLError(`Runtime Object type \"${runtimeType.name}\" is not a possible type for \"${returnType.name}\".`, {\n-                            nodes: toNodes(fieldGroup)\n+                            nodes: fieldNodes\n                         });\n                     }\n                     return runtimeType;\n                 }\n                 /**\n                  * Complete an Object value by executing all sub-selections.\n                  */\n-                function completeObjectValue(exeContext, returnType, fieldGroup, info, path, result, incrementalContext, deferMap) {\n-                    // If there is an isTypeOf predicate function, call it with the\n+\n+                function completeObjectValue(exeContext, returnType, fieldNodes, info, path, result) {\n+                    // Collect sub-fields to execute to complete this value.\n+                    const subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes); // If there is an isTypeOf predicate function, call it with the\n                     // current result. If isTypeOf returns false, then raise an error rather\n                     // than continuing execution.\n+\n                     if (returnType.isTypeOf) {\n                         const isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info);\n                         if ((0, _isPromise.isPromise)(isTypeOf)) {\n                             return isTypeOf.then(resolvedIsTypeOf => {\n                                 if (!resolvedIsTypeOf) {\n-                                    throw invalidReturnTypeError(returnType, result, fieldGroup);\n+                                    throw invalidReturnTypeError(returnType, result, fieldNodes);\n                                 }\n-                                return collectAndExecuteSubfields(exeContext, returnType, fieldGroup, path, result, incrementalContext, deferMap);\n+                                return executeFields(exeContext, returnType, result, path, subFieldNodes);\n                             });\n                         }\n                         if (!isTypeOf) {\n-                            throw invalidReturnTypeError(returnType, result, fieldGroup);\n+                            throw invalidReturnTypeError(returnType, result, fieldNodes);\n                         }\n                     }\n-                    return collectAndExecuteSubfields(exeContext, returnType, fieldGroup, path, result, incrementalContext, deferMap);\n+                    return executeFields(exeContext, returnType, result, path, subFieldNodes);\n                 }\n \n-                function invalidReturnTypeError(returnType, result, fieldGroup) {\n+                function invalidReturnTypeError(returnType, result, fieldNodes) {\n                     return new _GraphQLError.GraphQLError(`Expected value of type \"${returnType.name}\" but got: ${(0, _inspect.inspect)(result)}.`, {\n-                        nodes: toNodes(fieldGroup)\n+                        nodes: fieldNodes\n                     });\n                 }\n                 /**\n-                 * Instantiates new DeferredFragmentRecords for the given path within an\n-                 * incremental data record, returning an updated map of DeferUsage\n-                 * objects to DeferredFragmentRecords.\n-                 *\n-                 * Note: As defer directives may be used with operations returning lists,\n-                 * a DeferUsage object may correspond to many DeferredFragmentRecords.\n-                 *\n-                 * DeferredFragmentRecord creation includes the following steps:\n-                 * 1. The new DeferredFragmentRecord is instantiated at the given path.\n-                 * 2. The parent result record is calculated from the given incremental data\n-                 * record.\n-                 * 3. The IncrementalPublisher is notified that a new DeferredFragmentRecord\n-                 * with the calculated parent has been added; the record will be released only\n-                 * after the parent has completed.\n-                 *\n-                 */\n-                function addNewDeferredFragments(newDeferUsages, newDeferMap, path) {\n-                    // For each new deferUsage object:\n-                    for (const newDeferUsage of newDeferUsages) {\n-                        const parentDeferUsage = newDeferUsage.parentDeferUsage;\n-                        const parent = parentDeferUsage === undefined ? undefined : deferredFragmentRecordFromDeferUsage(parentDeferUsage, newDeferMap);\n-                        // Instantiate the new record.\n-                        const deferredFragmentRecord = new _types.DeferredFragmentRecord(path, newDeferUsage.label, parent);\n-                        // Update the map.\n-                        newDeferMap.set(newDeferUsage, deferredFragmentRecord);\n-                    }\n-                    return newDeferMap;\n-                }\n-\n-                function deferredFragmentRecordFromDeferUsage(deferUsage, deferMap) {\n-                    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n-                    return deferMap.get(deferUsage);\n-                }\n-\n-                function collectAndExecuteSubfields(exeContext, returnType, fieldGroup, path, result, incrementalContext, deferMap) {\n-                    // Collect sub-fields to execute to complete this value.\n-                    const collectedSubfields = collectSubfields(exeContext, returnType, fieldGroup);\n-                    let groupedFieldSet = collectedSubfields.groupedFieldSet;\n-                    const newDeferUsages = collectedSubfields.newDeferUsages;\n-                    if (deferMap === undefined && newDeferUsages.length === 0) {\n-                        return executeFields(exeContext, returnType, result, path, groupedFieldSet, incrementalContext, undefined);\n-                    }\n-                    const subExecutionPlan = buildSubExecutionPlan(groupedFieldSet, incrementalContext === null || incrementalContext === void 0 ? void 0 : incrementalContext.deferUsageSet);\n-                    groupedFieldSet = subExecutionPlan.groupedFieldSet;\n-                    const newGroupedFieldSets = subExecutionPlan.newGroupedFieldSets;\n-                    const newDeferMap = addNewDeferredFragments(newDeferUsages, new Map(deferMap), path);\n-                    const subFields = executeFields(exeContext, returnType, result, path, groupedFieldSet, incrementalContext, newDeferMap);\n-                    if (newGroupedFieldSets.size > 0) {\n-                        const newPendingExecutionGroups = collectExecutionGroups(exeContext, returnType, result, path, incrementalContext === null || incrementalContext === void 0 ? void 0 : incrementalContext.deferUsageSet, newGroupedFieldSets, newDeferMap);\n-                        return withNewExecutionGroups(subFields, newPendingExecutionGroups);\n-                    }\n-                    return subFields;\n-                }\n-\n-                function buildSubExecutionPlan(originalGroupedFieldSet, deferUsageSet) {\n-                    let executionPlan = originalGroupedFieldSet._executionPlan;\n-                    if (executionPlan !== undefined) {\n-                        return executionPlan;\n-                    }\n-                    executionPlan = (0, _buildExecutionPlan.buildExecutionPlan)(originalGroupedFieldSet, deferUsageSet);\n-                    originalGroupedFieldSet._executionPlan = executionPlan;\n-                    return executionPlan;\n-                }\n-                /**\n                  * If a resolveType function is not given, then a default resolve behavior is\n                  * used which attempts two strategies:\n                  *\n                  * First, See if the provided value has a `__typename` field defined, if so, use\n                  * that value as name of the resolved type.\n                  *\n                  * Otherwise, test each possible type for the abstract type by calling\n                  * isTypeOf for the object being coerced, returning the first type that matches.\n                  */\n+\n                 const defaultTypeResolver = function(value, contextValue, info, abstractType) {\n                     // First, look for `__typename`.\n                     if ((0, _isObjectLike.isObjectLike)(value) && typeof value.__typename === 'string') {\n                         return value.__typename;\n-                    }\n-                    // Otherwise, test each possible type.\n+                    } // Otherwise, test each possible type.\n+\n                     const possibleTypes = info.schema.getPossibleTypes(abstractType);\n                     const promisedIsTypeOfResults = [];\n                     for (let i = 0; i < possibleTypes.length; i++) {\n                         const type = possibleTypes[i];\n                         if (type.isTypeOf) {\n                             const isTypeOfResult = type.isTypeOf(value, contextValue, info);\n                             if ((0, _isPromise.isPromise)(isTypeOfResult)) {\n@@ -27387,384 +44370,59 @@\n                         if (typeof property === 'function') {\n                             return source[info.fieldName](args, contextValue, info);\n                         }\n                         return property;\n                     }\n                 };\n                 /**\n-                 * Implements the \"Subscribe\" algorithm described in the GraphQL specification.\n-                 *\n-                 * Returns a Promise which resolves to either an AsyncIterator (if successful)\n-                 * or an ExecutionResult (error). The promise will be rejected if the schema or\n-                 * other arguments to this function are invalid, or if the resolved event stream\n-                 * is not an async iterable.\n-                 *\n-                 * If the client-provided arguments to this function do not result in a\n-                 * compliant subscription, a GraphQL Response (ExecutionResult) with descriptive\n-                 * errors and no data will be returned.\n-                 *\n-                 * If the source stream could not be created due to faulty subscription resolver\n-                 * logic or underlying systems, the promise will resolve to a single\n-                 * ExecutionResult containing `errors` and no `data`.\n-                 *\n-                 * If the operation succeeded, the promise resolves to an AsyncIterator, which\n-                 * yields a stream of ExecutionResults representing the response stream.\n+                 * This method looks up the field on the given type definition.\n+                 * It has special casing for the three introspection fields,\n+                 * __schema, __type and __typename. __typename is special because\n+                 * it can always be queried as a field, even in situations where no\n+                 * other fields are allowed, like on a Union. __schema and __type\n+                 * could get automatically added to the query type, but that would\n+                 * require mutating type definitions, which would cause issues.\n                  *\n-                 * This function does not support incremental delivery (`@defer` and `@stream`).\n-                 * If an operation which would defer or stream data is executed with this\n-                 * function, a field error will be raised at the location of the `@defer` or\n-                 * `@stream` directive.\n-                 *\n-                 * Accepts an object with named arguments.\n+                 * @internal\n                  */\n                 exports.defaultFieldResolver = defaultFieldResolver;\n \n-                function subscribe(args) {\n-                    // If a valid execution context cannot be created due to incorrect arguments,\n-                    // a \"Response\" with only errors is returned.\n-                    const exeContext = buildExecutionContext(args);\n-                    // Return early errors if execution context failed.\n-                    if (!('schema' in exeContext)) {\n-                        return {\n-                            errors: exeContext\n-                        };\n-                    }\n-                    const resultOrStream = createSourceEventStreamImpl(exeContext);\n-                    if ((0, _isPromise.isPromise)(resultOrStream)) {\n-                        return resultOrStream.then(resolvedResultOrStream => mapSourceToResponse(exeContext, resolvedResultOrStream));\n-                    }\n-                    return mapSourceToResponse(exeContext, resultOrStream);\n-                }\n-\n-                function mapSourceToResponse(exeContext, resultOrStream) {\n-                    if (!(0, _isAsyncIterable.isAsyncIterable)(resultOrStream)) {\n-                        return resultOrStream;\n-                    }\n-                    // For each payload yielded from a subscription, map it over the normal\n-                    // GraphQL `execute` function, with `payload` as the rootValue.\n-                    // This implements the \"MapSourceToResponseEvent\" algorithm described in\n-                    // the GraphQL specification. The `execute` function provides the\n-                    // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n-                    // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n-                    return (0, _mapAsyncIterable.mapAsyncIterable)(resultOrStream, payload => executeOperation(buildPerEventExecutionContext(exeContext, payload)));\n-                }\n-                /**\n-                 * Implements the \"CreateSourceEventStream\" algorithm described in the\n-                 * GraphQL specification, resolving the subscription source event stream.\n-                 *\n-                 * Returns a Promise which resolves to either an AsyncIterable (if successful)\n-                 * or an ExecutionResult (error). The promise will be rejected if the schema or\n-                 * other arguments to this function are invalid, or if the resolved event stream\n-                 * is not an async iterable.\n-                 *\n-                 * If the client-provided arguments to this function do not result in a\n-                 * compliant subscription, a GraphQL Response (ExecutionResult) with\n-                 * descriptive errors and no data will be returned.\n-                 *\n-                 * If the the source stream could not be created due to faulty subscription\n-                 * resolver logic or underlying systems, the promise will resolve to a single\n-                 * ExecutionResult containing `errors` and no `data`.\n-                 *\n-                 * If the operation succeeded, the promise resolves to the AsyncIterable for the\n-                 * event stream returned by the resolver.\n-                 *\n-                 * A Source Event Stream represents a sequence of events, each of which triggers\n-                 * a GraphQL execution for that event.\n-                 *\n-                 * This may be useful when hosting the stateful subscription service in a\n-                 * different process or machine than the stateless GraphQL execution engine,\n-                 * or otherwise separating these two steps. For more on this, see the\n-                 * \"Supporting Subscriptions at Scale\" information in the GraphQL specification.\n-                 */\n-                function createSourceEventStream(args) {\n-                    // If a valid execution context cannot be created due to incorrect arguments,\n-                    // a \"Response\" with only errors is returned.\n-                    const exeContext = buildExecutionContext(args);\n-                    // Return early errors if execution context failed.\n-                    if (!('schema' in exeContext)) {\n-                        return {\n-                            errors: exeContext\n-                        };\n-                    }\n-                    return createSourceEventStreamImpl(exeContext);\n-                }\n-\n-                function createSourceEventStreamImpl(exeContext) {\n-                    try {\n-                        const eventStream = executeSubscription(exeContext);\n-                        if ((0, _isPromise.isPromise)(eventStream)) {\n-                            return eventStream.then(undefined, error => ({\n-                                errors: [error]\n-                            }));\n-                        }\n-                        return eventStream;\n-                    } catch (error) {\n-                        return {\n-                            errors: [error]\n-                        };\n-                    }\n-                }\n-\n-                function executeSubscription(exeContext) {\n-                    const {\n-                        schema,\n-                        fragments,\n-                        operation,\n-                        variableValues,\n-                        rootValue\n-                    } = exeContext;\n-                    const rootType = schema.getSubscriptionType();\n-                    if (rootType == null) {\n-                        throw new _GraphQLError.GraphQLError('Schema is not configured to execute subscription operation.', {\n-                            nodes: operation\n-                        });\n-                    }\n-                    const {\n-                        groupedFieldSet\n-                    } = (0, _collectFields.collectFields)(schema, fragments, variableValues, rootType, operation);\n-                    const firstRootField = groupedFieldSet.entries().next().value;\n-                    const [responseName, fieldGroup] = firstRootField;\n-                    const fieldName = fieldGroup[0].node.name.value;\n-                    const fieldDef = schema.getField(rootType, fieldName);\n-                    const fieldNodes = fieldGroup.map(fieldDetails => fieldDetails.node);\n-                    if (!fieldDef) {\n-                        throw new _GraphQLError.GraphQLError(`The subscription field \"${fieldName}\" is not defined.`, {\n-                            nodes: fieldNodes\n-                        });\n-                    }\n-                    const path = (0, _Path.addPath)(undefined, responseName, rootType.name);\n-                    const info = buildResolveInfo(exeContext, fieldDef, fieldNodes, rootType, path);\n-                    try {\n-                        var _fieldDef$subscribe;\n-                        // Implements the \"ResolveFieldEventStream\" algorithm from GraphQL specification.\n-                        // It differs from \"ResolveFieldValue\" due to providing a different `resolveFn`.\n-                        // Build a JS object of arguments from the field.arguments AST, using the\n-                        // variables scope to fulfill any variable references.\n-                        const args = (0, _values.getArgumentValues)(fieldDef, fieldNodes[0], variableValues);\n-                        // The resolve function's optional third argument is a context value that\n-                        // is provided to every resolve function within an execution. It is commonly\n-                        // used to represent an authenticated user, or request-specific caches.\n-                        const contextValue = exeContext.contextValue;\n-                        // Call the `subscribe()` resolver or the default resolver to produce an\n-                        // AsyncIterable yielding raw payloads.\n-                        const resolveFn = (_fieldDef$subscribe = fieldDef.subscribe) !== null && _fieldDef$subscribe !== void 0 ? _fieldDef$subscribe : exeContext.subscribeFieldResolver;\n-                        const result = resolveFn(rootValue, args, contextValue, info);\n-                        if ((0, _isPromise.isPromise)(result)) {\n-                            return result.then(assertEventStream).then(undefined, error => {\n-                                throw (0, _locatedError.locatedError)(error, fieldNodes, (0, _Path.pathToArray)(path));\n-                            });\n-                        }\n-                        return assertEventStream(result);\n-                    } catch (error) {\n-                        throw (0, _locatedError.locatedError)(error, fieldNodes, (0, _Path.pathToArray)(path));\n-                    }\n-                }\n-\n-                function assertEventStream(result) {\n-                    if (result instanceof Error) {\n-                        throw result;\n-                    }\n-                    // Assert field returned an event stream, otherwise yield an error.\n-                    if (!(0, _isAsyncIterable.isAsyncIterable)(result)) {\n-                        throw new _GraphQLError.GraphQLError('Subscription field must return Async Iterable. ' + `Received: ${(0, _inspect.inspect)(result)}.`);\n-                    }\n-                    return result;\n-                }\n-\n-                function collectExecutionGroups(exeContext, parentType, sourceValue, path, parentDeferUsages, newGroupedFieldSets, deferMap) {\n-                    const newPendingExecutionGroups = [];\n-                    for (const [deferUsageSet, groupedFieldSet] of newGroupedFieldSets) {\n-                        const deferredFragmentRecords = getDeferredFragmentRecords(deferUsageSet, deferMap);\n-                        const pendingExecutionGroup = {\n-                            deferredFragmentRecords,\n-                            result: undefined\n-                        };\n-                        const executor = () => executeExecutionGroup(pendingExecutionGroup, exeContext, parentType, sourceValue, path, groupedFieldSet, {\n-                            errors: undefined,\n-                            deferUsageSet\n-                        }, deferMap);\n-                        if (exeContext.enableEarlyExecution) {\n-                            pendingExecutionGroup.result = new _BoxedPromiseOrValue.BoxedPromiseOrValue(shouldDefer(parentDeferUsages, deferUsageSet) ? Promise.resolve().then(executor) : executor());\n-                        } else {\n-                            pendingExecutionGroup.result = () => new _BoxedPromiseOrValue.BoxedPromiseOrValue(executor());\n-                        }\n-                        newPendingExecutionGroups.push(pendingExecutionGroup);\n-                    }\n-                    return newPendingExecutionGroups;\n-                }\n-\n-                function shouldDefer(parentDeferUsages, deferUsages) {\n-                    // If we have a new child defer usage, defer.\n-                    // Otherwise, this defer usage was already deferred when it was initially\n-                    // encountered, and is now in the midst of executing early, so the new\n-                    // deferred grouped fields set can be executed immediately.\n-                    return parentDeferUsages === undefined || !Array.from(deferUsages).every(deferUsage => parentDeferUsages.has(deferUsage));\n-                }\n-\n-                function executeExecutionGroup(pendingExecutionGroup, exeContext, parentType, sourceValue, path, groupedFieldSet, incrementalContext, deferMap) {\n-                    let result;\n-                    try {\n-                        result = executeFields(exeContext, parentType, sourceValue, path, groupedFieldSet, incrementalContext, deferMap);\n-                    } catch (error) {\n-                        return {\n-                            pendingExecutionGroup,\n-                            path: (0, _Path.pathToArray)(path),\n-                            errors: withError(incrementalContext.errors, error)\n-                        };\n-                    }\n-                    if ((0, _isPromise.isPromise)(result)) {\n-                        return result.then(resolved => buildCompletedExecutionGroup(incrementalContext.errors, pendingExecutionGroup, path, resolved), error => ({\n-                            pendingExecutionGroup,\n-                            path: (0, _Path.pathToArray)(path),\n-                            errors: withError(incrementalContext.errors, error)\n-                        }));\n-                    }\n-                    return buildCompletedExecutionGroup(incrementalContext.errors, pendingExecutionGroup, path, result);\n-                }\n-\n-                function buildCompletedExecutionGroup(errors, pendingExecutionGroup, path, result) {\n-                    return {\n-                        pendingExecutionGroup,\n-                        path: (0, _Path.pathToArray)(path),\n-                        result: errors === undefined ? {\n-                            data: result[0]\n-                        } : {\n-                            data: result[0],\n-                            errors\n-                        },\n-                        incrementalDataRecords: result[1]\n-                    };\n-                }\n-\n-                function getDeferredFragmentRecords(deferUsages, deferMap) {\n-                    return Array.from(deferUsages).map(deferUsage => deferredFragmentRecordFromDeferUsage(deferUsage, deferMap));\n-                }\n-\n-                function buildSyncStreamItemQueue(initialItem, initialIndex, streamPath, iterator, exeContext, fieldGroup, info, itemType) {\n-                    const streamItemQueue = [];\n-                    const enableEarlyExecution = exeContext.enableEarlyExecution;\n-                    const firstExecutor = () => {\n-                        const initialPath = (0, _Path.addPath)(streamPath, initialIndex, undefined);\n-                        const firstStreamItem = new _BoxedPromiseOrValue.BoxedPromiseOrValue(completeStreamItem(initialPath, initialItem, exeContext, {\n-                            errors: undefined\n-                        }, fieldGroup, info, itemType));\n-                        let iteration = iterator.next();\n-                        let currentIndex = initialIndex + 1;\n-                        let currentStreamItem = firstStreamItem;\n-                        while (!iteration.done) {\n-                            // TODO: add test case for early sync termination\n-                            /* c8 ignore next 6 */\n-                            if (currentStreamItem instanceof _BoxedPromiseOrValue.BoxedPromiseOrValue) {\n-                                const result = currentStreamItem.value;\n-                                if (!(0, _isPromise.isPromise)(result) && result.errors !== undefined) {\n-                                    break;\n-                                }\n-                            }\n-                            const itemPath = (0, _Path.addPath)(streamPath, currentIndex, undefined);\n-                            const value = iteration.value;\n-                            const currentExecutor = () => completeStreamItem(itemPath, value, exeContext, {\n-                                errors: undefined\n-                            }, fieldGroup, info, itemType);\n-                            currentStreamItem = enableEarlyExecution ? new _BoxedPromiseOrValue.BoxedPromiseOrValue(currentExecutor()) : () => new _BoxedPromiseOrValue.BoxedPromiseOrValue(currentExecutor());\n-                            streamItemQueue.push(currentStreamItem);\n-                            iteration = iterator.next();\n-                            currentIndex = initialIndex + 1;\n-                        }\n-                        streamItemQueue.push(new _BoxedPromiseOrValue.BoxedPromiseOrValue({}));\n-                        return firstStreamItem.value;\n-                    };\n-                    streamItemQueue.push(enableEarlyExecution ? new _BoxedPromiseOrValue.BoxedPromiseOrValue(Promise.resolve().then(firstExecutor)) : () => new _BoxedPromiseOrValue.BoxedPromiseOrValue(firstExecutor()));\n-                    return streamItemQueue;\n-                }\n-\n-                function buildAsyncStreamItemQueue(initialIndex, streamPath, asyncIterator, exeContext, fieldGroup, info, itemType) {\n-                    const streamItemQueue = [];\n-                    const executor = () => getNextAsyncStreamItemResult(streamItemQueue, streamPath, initialIndex, asyncIterator, exeContext, fieldGroup, info, itemType);\n-                    streamItemQueue.push(exeContext.enableEarlyExecution ? new _BoxedPromiseOrValue.BoxedPromiseOrValue(executor()) : () => new _BoxedPromiseOrValue.BoxedPromiseOrValue(executor()));\n-                    return streamItemQueue;\n-                }\n-                async function getNextAsyncStreamItemResult(streamItemQueue, streamPath, index, asyncIterator, exeContext, fieldGroup, info, itemType) {\n-                    let iteration;\n-                    try {\n-                        iteration = await asyncIterator.next();\n-                    } catch (error) {\n-                        return {\n-                            errors: [(0, _locatedError.locatedError)(error, toNodes(fieldGroup), (0, _Path.pathToArray)(streamPath))]\n-                        };\n-                    }\n-                    if (iteration.done) {\n-                        return {};\n-                    }\n-                    const itemPath = (0, _Path.addPath)(streamPath, index, undefined);\n-                    const result = completeStreamItem(itemPath, iteration.value, exeContext, {\n-                        errors: undefined\n-                    }, fieldGroup, info, itemType);\n-                    const executor = () => getNextAsyncStreamItemResult(streamItemQueue, streamPath, index + 1, asyncIterator, exeContext, fieldGroup, info, itemType);\n-                    streamItemQueue.push(exeContext.enableEarlyExecution ? new _BoxedPromiseOrValue.BoxedPromiseOrValue(executor()) : () => new _BoxedPromiseOrValue.BoxedPromiseOrValue(executor()));\n-                    return result;\n-                }\n-\n-                function completeStreamItem(itemPath, item, exeContext, incrementalContext, fieldGroup, info, itemType) {\n-                    if ((0, _isPromise.isPromise)(item)) {\n-                        return completePromisedValue(exeContext, itemType, fieldGroup, info, itemPath, item, incrementalContext, new Map()).then(resolvedItem => buildStreamItemResult(incrementalContext.errors, resolvedItem), error => ({\n-                            errors: withError(incrementalContext.errors, error)\n-                        }));\n-                    }\n-                    let result;\n-                    try {\n-                        try {\n-                            result = completeValue(exeContext, itemType, fieldGroup, info, itemPath, item, incrementalContext, new Map());\n-                        } catch (rawError) {\n-                            handleFieldError(rawError, exeContext, itemType, fieldGroup, itemPath, incrementalContext);\n-                            result = [null, undefined];\n-                        }\n-                    } catch (error) {\n-                        return {\n-                            errors: withError(incrementalContext.errors, error)\n-                        };\n-                    }\n-                    if ((0, _isPromise.isPromise)(result)) {\n-                        return result.then(undefined, rawError => {\n-                            handleFieldError(rawError, exeContext, itemType, fieldGroup, itemPath, incrementalContext);\n-                            return [null, undefined];\n-                        }).then(resolvedItem => buildStreamItemResult(incrementalContext.errors, resolvedItem), error => ({\n-                            errors: withError(incrementalContext.errors, error)\n-                        }));\n+                function getFieldDef(schema, parentType, fieldNode) {\n+                    const fieldName = fieldNode.name.value;\n+                    if (fieldName === _introspection.SchemaMetaFieldDef.name && schema.getQueryType() === parentType) {\n+                        return _introspection.SchemaMetaFieldDef;\n+                    } else if (fieldName === _introspection.TypeMetaFieldDef.name && schema.getQueryType() === parentType) {\n+                        return _introspection.TypeMetaFieldDef;\n+                    } else if (fieldName === _introspection.TypeNameMetaFieldDef.name) {\n+                        return _introspection.TypeNameMetaFieldDef;\n                     }\n-                    return buildStreamItemResult(incrementalContext.errors, result);\n-                }\n-\n-                function buildStreamItemResult(errors, result) {\n-                    return {\n-                        item: result[0],\n-                        errors,\n-                        incrementalDataRecords: result[1]\n-                    };\n+                    return parentType.getFields()[fieldName];\n                 }\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/execution/index.mjs\":\n             /*!*********************************************************!*\\\n               !*** ../../../node_modules/graphql/execution/index.mjs ***!\n               \\*********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"createSourceEventStream\", ({\n                     enumerable: true,\n                     get: function() {\n-                        return _execute.createSourceEventStream;\n+                        return _subscribe.createSourceEventStream;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"defaultFieldResolver\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _execute.defaultFieldResolver;\n                     }\n@@ -27783,20 +44441,14 @@\n                 }));\n                 Object.defineProperty(exports, \"executeSync\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _execute.executeSync;\n                     }\n                 }));\n-                Object.defineProperty(exports, \"experimentalExecuteIncrementally\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return _execute.experimentalExecuteIncrementally;\n-                    }\n-                }));\n                 Object.defineProperty(exports, \"getArgumentValues\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _values.getArgumentValues;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"getDirectiveValues\", ({\n@@ -27816,43 +44468,45 @@\n                     get: function() {\n                         return _Path.pathToArray;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"subscribe\", ({\n                     enumerable: true,\n                     get: function() {\n-                        return _execute.subscribe;\n+                        return _subscribe.subscribe;\n                     }\n                 }));\n                 var _Path = __webpack_require__( /*! ../jsutils/Path.mjs */ \"../../../node_modules/graphql/jsutils/Path.mjs\");\n                 var _execute = __webpack_require__( /*! ./execute.mjs */ \"../../../node_modules/graphql/execution/execute.mjs\");\n+                var _subscribe = __webpack_require__( /*! ./subscribe.mjs */ \"../../../node_modules/graphql/execution/subscribe.mjs\");\n                 var _values = __webpack_require__( /*! ./values.mjs */ \"../../../node_modules/graphql/execution/values.mjs\");\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/graphql/execution/mapAsyncIterable.mjs\":\n+        \"../../../node_modules/graphql/execution/mapAsyncIterator.mjs\":\n             /*!********************************************************************!*\\\n-              !*** ../../../node_modules/graphql/execution/mapAsyncIterable.mjs ***!\n+              !*** ../../../node_modules/graphql/execution/mapAsyncIterator.mjs ***!\n               \\********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n-                exports.mapAsyncIterable = mapAsyncIterable;\n+                exports.mapAsyncIterator = mapAsyncIterator;\n                 /**\n                  * Given an AsyncIterable and a callback function, return an AsyncIterator\n                  * which produces values mapped via calling the callback function.\n                  */\n-                function mapAsyncIterable(iterable, callback) {\n+                function mapAsyncIterator(iterable, callback) {\n                     const iterator = iterable[Symbol.asyncIterator]();\n                     async function mapResult(result) {\n                         if (result.done) {\n                             return result;\n                         }\n                         try {\n                             return {\n@@ -27896,85 +44550,236 @@\n                     };\n                 }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/graphql/execution/types.mjs\":\n-            /*!*********************************************************!*\\\n-              !*** ../../../node_modules/graphql/execution/types.mjs ***!\n-              \\*********************************************************/\n+        \"../../../node_modules/graphql/execution/subscribe.mjs\":\n+            /*!*************************************************************!*\\\n+              !*** ../../../node_modules/graphql/execution/subscribe.mjs ***!\n+              \\*************************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports) {\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n-                exports.DeferredFragmentRecord = void 0;\n-                exports.isCancellableStreamRecord = isCancellableStreamRecord;\n-                exports.isCompletedExecutionGroup = isCompletedExecutionGroup;\n-                exports.isDeferredFragmentRecord = isDeferredFragmentRecord;\n-                exports.isFailedExecutionGroup = isFailedExecutionGroup;\n-                exports.isPendingExecutionGroup = isPendingExecutionGroup;\n+                exports.createSourceEventStream = createSourceEventStream;\n+                exports.subscribe = subscribe;\n+                var _devAssert = __webpack_require__( /*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n+                var _inspect = __webpack_require__( /*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n+                var _isAsyncIterable = __webpack_require__( /*! ../jsutils/isAsyncIterable.mjs */ \"../../../node_modules/graphql/jsutils/isAsyncIterable.mjs\");\n+                var _Path = __webpack_require__( /*! ../jsutils/Path.mjs */ \"../../../node_modules/graphql/jsutils/Path.mjs\");\n+                var _GraphQLError = __webpack_require__( /*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n+                var _locatedError = __webpack_require__( /*! ../error/locatedError.mjs */ \"../../../node_modules/graphql/error/locatedError.mjs\");\n+                var _collectFields = __webpack_require__( /*! ./collectFields.mjs */ \"../../../node_modules/graphql/execution/collectFields.mjs\");\n+                var _execute = __webpack_require__( /*! ./execute.mjs */ \"../../../node_modules/graphql/execution/execute.mjs\");\n+                var _mapAsyncIterator = __webpack_require__( /*! ./mapAsyncIterator.mjs */ \"../../../node_modules/graphql/execution/mapAsyncIterator.mjs\");\n+                var _values = __webpack_require__( /*! ./values.mjs */ \"../../../node_modules/graphql/execution/values.mjs\");\n+                /**\n+                 * Implements the \"Subscribe\" algorithm described in the GraphQL specification.\n+                 *\n+                 * Returns a Promise which resolves to either an AsyncIterator (if successful)\n+                 * or an ExecutionResult (error). The promise will be rejected if the schema or\n+                 * other arguments to this function are invalid, or if the resolved event stream\n+                 * is not an async iterable.\n+                 *\n+                 * If the client-provided arguments to this function do not result in a\n+                 * compliant subscription, a GraphQL Response (ExecutionResult) with\n+                 * descriptive errors and no data will be returned.\n+                 *\n+                 * If the source stream could not be created due to faulty subscription\n+                 * resolver logic or underlying systems, the promise will resolve to a single\n+                 * ExecutionResult containing `errors` and no `data`.\n+                 *\n+                 * If the operation succeeded, the promise resolves to an AsyncIterator, which\n+                 * yields a stream of ExecutionResults representing the response stream.\n+                 *\n+                 * Accepts either an object with named arguments, or individual arguments.\n+                 */\n \n-                function isPendingExecutionGroup(incrementalDataRecord) {\n-                    return 'deferredFragmentRecords' in incrementalDataRecord;\n-                }\n+                async function subscribe(args) {\n+                    // Temporary for v15 to v16 migration. Remove in v17\n+                    arguments.length < 2 || (0, _devAssert.devAssert)(false, 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.');\n+                    const resultOrStream = await createSourceEventStream(args);\n+                    if (!(0, _isAsyncIterable.isAsyncIterable)(resultOrStream)) {\n+                        return resultOrStream;\n+                    } // For each payload yielded from a subscription, map it over the normal\n+                    // GraphQL `execute` function, with `payload` as the rootValue.\n+                    // This implements the \"MapSourceToResponseEvent\" algorithm described in\n+                    // the GraphQL specification. The `execute` function provides the\n+                    // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n+                    // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n \n-                function isCompletedExecutionGroup(subsequentResult) {\n-                    return 'pendingExecutionGroup' in subsequentResult;\n+                    const mapSourceToResponse = payload => (0, _execute.execute)({\n+                        ...args,\n+                        rootValue: payload\n+                    }); // Map every source value to a ExecutionResult value as described above.\n+\n+                    return (0, _mapAsyncIterator.mapAsyncIterator)(resultOrStream, mapSourceToResponse);\n+                }\n+\n+                function toNormalizedArgs(args) {\n+                    const firstArg = args[0];\n+                    if (firstArg && 'document' in firstArg) {\n+                        return firstArg;\n+                    }\n+                    return {\n+                        schema: firstArg,\n+                        // FIXME: when underlying TS bug fixed, see https://github.com/microsoft/TypeScript/issues/31613\n+                        document: args[1],\n+                        rootValue: args[2],\n+                        contextValue: args[3],\n+                        variableValues: args[4],\n+                        operationName: args[5],\n+                        subscribeFieldResolver: args[6]\n+                    };\n                 }\n+                /**\n+                 * Implements the \"CreateSourceEventStream\" algorithm described in the\n+                 * GraphQL specification, resolving the subscription source event stream.\n+                 *\n+                 * Returns a Promise which resolves to either an AsyncIterable (if successful)\n+                 * or an ExecutionResult (error). The promise will be rejected if the schema or\n+                 * other arguments to this function are invalid, or if the resolved event stream\n+                 * is not an async iterable.\n+                 *\n+                 * If the client-provided arguments to this function do not result in a\n+                 * compliant subscription, a GraphQL Response (ExecutionResult) with\n+                 * descriptive errors and no data will be returned.\n+                 *\n+                 * If the the source stream could not be created due to faulty subscription\n+                 * resolver logic or underlying systems, the promise will resolve to a single\n+                 * ExecutionResult containing `errors` and no `data`.\n+                 *\n+                 * If the operation succeeded, the promise resolves to the AsyncIterable for the\n+                 * event stream returned by the resolver.\n+                 *\n+                 * A Source Event Stream represents a sequence of events, each of which triggers\n+                 * a GraphQL execution for that event.\n+                 *\n+                 * This may be useful when hosting the stateful subscription service in a\n+                 * different process or machine than the stateless GraphQL execution engine,\n+                 * or otherwise separating these two steps. For more on this, see the\n+                 * \"Supporting Subscriptions at Scale\" information in the GraphQL specification.\n+                 */\n \n-                function isFailedExecutionGroup(completedExecutionGroup) {\n-                    return completedExecutionGroup.errors !== undefined;\n-                }\n-                /** @internal */\n-                class DeferredFragmentRecord {\n-                    constructor(path, label, parent) {\n-                        this.path = path;\n-                        this.label = label;\n-                        this.parent = parent;\n-                        this.pendingExecutionGroups = new Set();\n-                        this.successfulExecutionGroups = new Set();\n-                        this.children = new Set();\n+                async function createSourceEventStream(...rawArgs) {\n+                    const args = toNormalizedArgs(rawArgs);\n+                    const {\n+                        schema,\n+                        document,\n+                        variableValues\n+                    } = args; // If arguments are missing or incorrectly typed, this is an internal\n+                    // developer mistake which should throw an early error.\n+\n+                    (0, _execute.assertValidExecutionArguments)(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n+                    // a \"Response\" with only errors is returned.\n+\n+                    const exeContext = (0, _execute.buildExecutionContext)(args); // Return early errors if execution context failed.\n+\n+                    if (!('schema' in exeContext)) {\n+                        return {\n+                            errors: exeContext\n+                        };\n                     }\n-                }\n-                exports.DeferredFragmentRecord = DeferredFragmentRecord;\n+                    try {\n+                        const eventStream = await executeSubscription(exeContext); // Assert field returned an event stream, otherwise yield an error.\n \n-                function isDeferredFragmentRecord(deliveryGroup) {\n-                    return deliveryGroup instanceof DeferredFragmentRecord;\n+                        if (!(0, _isAsyncIterable.isAsyncIterable)(eventStream)) {\n+                            throw new Error('Subscription field must return Async Iterable. ' + `Received: ${(0, _inspect.inspect)(eventStream)}.`);\n+                        }\n+                        return eventStream;\n+                    } catch (error) {\n+                        // If it GraphQLError, report it as an ExecutionResult, containing only errors and no data.\n+                        // Otherwise treat the error as a system-class error and re-throw it.\n+                        if (error instanceof _GraphQLError.GraphQLError) {\n+                            return {\n+                                errors: [error]\n+                            };\n+                        }\n+                        throw error;\n+                    }\n                 }\n+                async function executeSubscription(exeContext) {\n+                    const {\n+                        schema,\n+                        fragments,\n+                        operation,\n+                        variableValues,\n+                        rootValue\n+                    } = exeContext;\n+                    const rootType = schema.getSubscriptionType();\n+                    if (rootType == null) {\n+                        throw new _GraphQLError.GraphQLError('Schema is not configured to execute subscription operation.', {\n+                            nodes: operation\n+                        });\n+                    }\n+                    const rootFields = (0, _collectFields.collectFields)(schema, fragments, variableValues, rootType, operation.selectionSet);\n+                    const [responseName, fieldNodes] = [...rootFields.entries()][0];\n+                    const fieldDef = (0, _execute.getFieldDef)(schema, rootType, fieldNodes[0]);\n+                    if (!fieldDef) {\n+                        const fieldName = fieldNodes[0].name.value;\n+                        throw new _GraphQLError.GraphQLError(`The subscription field \"${fieldName}\" is not defined.`, {\n+                            nodes: fieldNodes\n+                        });\n+                    }\n+                    const path = (0, _Path.addPath)(undefined, responseName, rootType.name);\n+                    const info = (0, _execute.buildResolveInfo)(exeContext, fieldDef, fieldNodes, rootType, path);\n+                    try {\n+                        var _fieldDef$subscribe;\n \n-                function isCancellableStreamRecord(deliveryGroup) {\n-                    return 'earlyReturn' in deliveryGroup;\n+                        // Implements the \"ResolveFieldEventStream\" algorithm from GraphQL specification.\n+                        // It differs from \"ResolveFieldValue\" due to providing a different `resolveFn`.\n+                        // Build a JS object of arguments from the field.arguments AST, using the\n+                        // variables scope to fulfill any variable references.\n+                        const args = (0, _values.getArgumentValues)(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that\n+                        // is provided to every resolve function within an execution. It is commonly\n+                        // used to represent an authenticated user, or request-specific caches.\n+\n+                        const contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an\n+                        // AsyncIterable yielding raw payloads.\n+\n+                        const resolveFn = (_fieldDef$subscribe = fieldDef.subscribe) !== null && _fieldDef$subscribe !== void 0 ? _fieldDef$subscribe : exeContext.subscribeFieldResolver;\n+                        const eventStream = await resolveFn(rootValue, args, contextValue, info);\n+                        if (eventStream instanceof Error) {\n+                            throw eventStream;\n+                        }\n+                        return eventStream;\n+                    } catch (error) {\n+                        throw (0, _locatedError.locatedError)(error, fieldNodes, (0, _Path.pathToArray)(path));\n+                    }\n                 }\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/execution/values.mjs\":\n             /*!**********************************************************!*\\\n               !*** ../../../node_modules/graphql/execution/values.mjs ***!\n               \\**********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getArgumentValues = getArgumentValues;\n                 exports.getDirectiveValues = getDirectiveValues;\n                 exports.getVariableValues = getVariableValues;\n                 var _inspect = __webpack_require__( /*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n+                var _keyMap = __webpack_require__( /*! ../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n                 var _printPathArray = __webpack_require__( /*! ../jsutils/printPathArray.mjs */ \"../../../node_modules/graphql/jsutils/printPathArray.mjs\");\n                 var _GraphQLError = __webpack_require__( /*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 var _printer = __webpack_require__( /*! ../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n                 var _definition = __webpack_require__( /*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n                 var _coerceInputValue = __webpack_require__( /*! ../utilities/coerceInputValue.mjs */ \"../../../node_modules/graphql/utilities/coerceInputValue.mjs\");\n                 var _typeFromAST = __webpack_require__( /*! ../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n@@ -28021,15 +44826,15 @@\n                             // validation, however is checked again here for safety.\n                             const varTypeStr = (0, _printer.print)(varDefNode.type);\n                             onError(new _GraphQLError.GraphQLError(`Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`, {\n                                 nodes: varDefNode.type\n                             }));\n                             continue;\n                         }\n-                        if (!Object.hasOwn(inputs, varName)) {\n+                        if (!hasOwnProperty(inputs, varName)) {\n                             if (varDefNode.defaultValue) {\n                                 coercedValues[varName] = (0, _valueFromAST.valueFromAST)(varDefNode.defaultValue, varType);\n                             } else if ((0, _definition.isNonNullType)(varType)) {\n                                 const varTypeStr = (0, _inspect.inspect)(varType);\n                                 onError(new _GraphQLError.GraphQLError(`Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`, {\n                                     nodes: varDefNode\n                                 }));\n@@ -28061,40 +44866,42 @@\n                  * Prepares an object map of argument values given a list of argument\n                  * definitions and list of argument AST nodes.\n                  *\n                  * Note: The returned value is a plain Object with a prototype, since it is\n                  * exposed to user code. Care should be taken to not pull values from the\n                  * Object prototype.\n                  */\n+\n                 function getArgumentValues(def, node, variableValues) {\n                     var _node$arguments;\n-                    const coercedValues = {};\n-                    // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+                    const coercedValues = {}; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+\n                     /* c8 ignore next */\n+\n                     const argumentNodes = (_node$arguments = node.arguments) !== null && _node$arguments !== void 0 ? _node$arguments : [];\n-                    const argNodeMap = new Map(argumentNodes.map(arg => [arg.name.value, arg]));\n+                    const argNodeMap = (0, _keyMap.keyMap)(argumentNodes, arg => arg.name.value);\n                     for (const argDef of def.args) {\n                         const name = argDef.name;\n                         const argType = argDef.type;\n-                        const argumentNode = argNodeMap.get(name);\n-                        if (argumentNode == null) {\n+                        const argumentNode = argNodeMap[name];\n+                        if (!argumentNode) {\n                             if (argDef.defaultValue !== undefined) {\n                                 coercedValues[name] = argDef.defaultValue;\n                             } else if ((0, _definition.isNonNullType)(argType)) {\n                                 throw new _GraphQLError.GraphQLError(`Argument \"${name}\" of required type \"${(0, _inspect.inspect)(argType)}\" ` + 'was not provided.', {\n                                     nodes: node\n                                 });\n                             }\n                             continue;\n                         }\n                         const valueNode = argumentNode.value;\n                         let isNull = valueNode.kind === _kinds.Kind.NULL;\n                         if (valueNode.kind === _kinds.Kind.VARIABLE) {\n                             const variableName = valueNode.name.value;\n-                            if (variableValues == null || !Object.hasOwn(variableValues, variableName)) {\n+                            if (variableValues == null || !hasOwnProperty(variableValues, variableName)) {\n                                 if (argDef.defaultValue !== undefined) {\n                                     coercedValues[name] = argDef.defaultValue;\n                                 } else if ((0, _definition.isNonNullType)(argType)) {\n                                     throw new _GraphQLError.GraphQLError(`Argument \"${name}\" of required type \"${(0, _inspect.inspect)(argType)}\" ` + `was provided the variable \"$${variableName}\" which was not provided a runtime value.`, {\n                                         nodes: valueNode\n                                     });\n                                 }\n@@ -28127,100 +44934,149 @@\n                  *\n                  * If the directive does not exist on the node, returns undefined.\n                  *\n                  * Note: The returned value is a plain Object with a prototype, since it is\n                  * exposed to user code. Care should be taken to not pull values from the\n                  * Object prototype.\n                  */\n+\n                 function getDirectiveValues(directiveDef, node, variableValues) {\n                     var _node$directives;\n                     const directiveNode = (_node$directives = node.directives) === null || _node$directives === void 0 ? void 0 : _node$directives.find(directive => directive.name.value === directiveDef.name);\n                     if (directiveNode) {\n                         return getArgumentValues(directiveDef, directiveNode, variableValues);\n                     }\n                 }\n \n+                function hasOwnProperty(obj, prop) {\n+                    return Object.prototype.hasOwnProperty.call(obj, prop);\n+                }\n+\n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/graphql.mjs\":\n             /*!*************************************************!*\\\n               !*** ../../../node_modules/graphql/graphql.mjs ***!\n               \\*************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.graphql = graphql;\n                 exports.graphqlSync = graphqlSync;\n+                var _devAssert = __webpack_require__( /*! ./jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n                 var _isPromise = __webpack_require__( /*! ./jsutils/isPromise.mjs */ \"../../../node_modules/graphql/jsutils/isPromise.mjs\");\n                 var _parser = __webpack_require__( /*! ./language/parser.mjs */ \"../../../node_modules/graphql/language/parser.mjs\");\n                 var _validate = __webpack_require__( /*! ./type/validate.mjs */ \"../../../node_modules/graphql/type/validate.mjs\");\n                 var _validate2 = __webpack_require__( /*! ./validation/validate.mjs */ \"../../../node_modules/graphql/validation/validate.mjs\");\n                 var _execute = __webpack_require__( /*! ./execution/execute.mjs */ \"../../../node_modules/graphql/execution/execute.mjs\");\n+                /**\n+                 * This is the primary entry point function for fulfilling GraphQL operations\n+                 * by parsing, validating, and executing a GraphQL document along side a\n+                 * GraphQL schema.\n+                 *\n+                 * More sophisticated GraphQL servers, such as those which persist queries,\n+                 * may wish to separate the validation and execution phases to a static time\n+                 * tooling step, and a server runtime step.\n+                 *\n+                 * Accepts either an object with named arguments, or individual arguments:\n+                 *\n+                 * schema:\n+                 *    The GraphQL type system to use when validating and executing a query.\n+                 * source:\n+                 *    A GraphQL language formatted string representing the requested operation.\n+                 * rootValue:\n+                 *    The value provided as the first argument to resolver functions on the top\n+                 *    level type (e.g. the query object type).\n+                 * contextValue:\n+                 *    The context value is provided as an argument to resolver functions after\n+                 *    field arguments. It is used to pass shared information useful at any point\n+                 *    during executing this query, for example the currently logged in user and\n+                 *    connections to databases or other services.\n+                 * variableValues:\n+                 *    A mapping of variable name to runtime value to use for all variables\n+                 *    defined in the requestString.\n+                 * operationName:\n+                 *    The name of the operation to use if requestString contains multiple\n+                 *    possible operations. Can be omitted if requestString contains only\n+                 *    one operation.\n+                 * fieldResolver:\n+                 *    A resolver function to use when one is not provided by the schema.\n+                 *    If not provided, the default field resolver is used (which looks for a\n+                 *    value or method on the source value with the field's name).\n+                 * typeResolver:\n+                 *    A type resolver function to use when none is provided by the schema.\n+                 *    If not provided, the default type resolver is used (which looks for a\n+                 *    `__typename` field or alternatively calls the `isTypeOf` method).\n+                 */\n \n                 function graphql(args) {\n                     // Always return a Promise for a consistent API.\n                     return new Promise(resolve => resolve(graphqlImpl(args)));\n                 }\n                 /**\n                  * The graphqlSync function also fulfills GraphQL operations by parsing,\n                  * validating, and executing a GraphQL document along side a GraphQL schema.\n                  * However, it guarantees to complete synchronously (or throw an error) assuming\n                  * that all field resolvers are also synchronous.\n                  */\n+\n                 function graphqlSync(args) {\n-                    const result = graphqlImpl(args);\n-                    // Assert that the execution was synchronous.\n+                    const result = graphqlImpl(args); // Assert that the execution was synchronous.\n+\n                     if ((0, _isPromise.isPromise)(result)) {\n                         throw new Error('GraphQL execution failed to complete synchronously.');\n                     }\n                     return result;\n                 }\n \n                 function graphqlImpl(args) {\n+                    // Temporary for v15 to v16 migration. Remove in v17\n+                    arguments.length < 2 || (0, _devAssert.devAssert)(false, 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.');\n                     const {\n                         schema,\n                         source,\n                         rootValue,\n                         contextValue,\n                         variableValues,\n                         operationName,\n                         fieldResolver,\n                         typeResolver\n-                    } = args;\n-                    // Validate Schema\n+                    } = args; // Validate Schema\n+\n                     const schemaValidationErrors = (0, _validate.validateSchema)(schema);\n                     if (schemaValidationErrors.length > 0) {\n                         return {\n                             errors: schemaValidationErrors\n                         };\n-                    }\n-                    // Parse\n+                    } // Parse\n+\n                     let document;\n                     try {\n                         document = (0, _parser.parse)(source);\n                     } catch (syntaxError) {\n                         return {\n                             errors: [syntaxError]\n                         };\n-                    }\n-                    // Validate\n+                    } // Validate\n+\n                     const validationErrors = (0, _validate2.validate)(schema, document);\n                     if (validationErrors.length > 0) {\n                         return {\n                             errors: validationErrors\n                         };\n-                    }\n-                    // Execute\n+                    } // Execute\n+\n                     return (0, _execute.execute)({\n                         schema,\n                         document,\n                         rootValue,\n                         contextValue,\n                         variableValues,\n                         operationName,\n@@ -28236,14 +45092,15 @@\n         \"../../../node_modules/graphql/index.mjs\":\n             /*!***********************************************!*\\\n               !*** ../../../node_modules/graphql/index.mjs ***!\n               \\***********************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"BREAK\", ({\n                     enumerable: true,\n@@ -28307,20 +45164,14 @@\n                 }));\n                 Object.defineProperty(exports, \"GraphQLBoolean\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index.GraphQLBoolean;\n                     }\n                 }));\n-                Object.defineProperty(exports, \"GraphQLDeferDirective\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return _index.GraphQLDeferDirective;\n-                    }\n-                }));\n                 Object.defineProperty(exports, \"GraphQLDeprecatedDirective\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index.GraphQLDeprecatedDirective;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"GraphQLDirective\", ({\n@@ -28421,20 +45272,14 @@\n                 }));\n                 Object.defineProperty(exports, \"GraphQLSpecifiedByDirective\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index.GraphQLSpecifiedByDirective;\n                     }\n                 }));\n-                Object.defineProperty(exports, \"GraphQLStreamDirective\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return _index.GraphQLStreamDirective;\n-                    }\n-                }));\n                 Object.defineProperty(exports, \"GraphQLString\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index.GraphQLString;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"GraphQLUnionType\", ({\n@@ -28889,14 +45734,20 @@\n                 }));\n                 Object.defineProperty(exports, \"assertUnionType\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index.assertUnionType;\n                     }\n                 }));\n+                Object.defineProperty(exports, \"assertValidName\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return _index6.assertValidName;\n+                    }\n+                }));\n                 Object.defineProperty(exports, \"assertValidSchema\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index.assertValidSchema;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"assertWrappingType\", ({\n@@ -28973,20 +45824,14 @@\n                 }));\n                 Object.defineProperty(exports, \"executeSync\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index3.executeSync;\n                     }\n                 }));\n-                Object.defineProperty(exports, \"experimentalExecuteIncrementally\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return _index3.experimentalExecuteIncrementally;\n-                    }\n-                }));\n                 Object.defineProperty(exports, \"extendSchema\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index6.extendSchema;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"findBreakingChanges\", ({\n@@ -28997,14 +45842,20 @@\n                 }));\n                 Object.defineProperty(exports, \"findDangerousChanges\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index6.findDangerousChanges;\n                     }\n                 }));\n+                Object.defineProperty(exports, \"formatError\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return _index5.formatError;\n+                    }\n+                }));\n                 Object.defineProperty(exports, \"getArgumentValues\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index3.getArgumentValues;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"getDirectiveValues\", ({\n@@ -29045,20 +45896,32 @@\n                 }));\n                 Object.defineProperty(exports, \"getOperationAST\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index6.getOperationAST;\n                     }\n                 }));\n+                Object.defineProperty(exports, \"getOperationRootType\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return _index6.getOperationRootType;\n+                    }\n+                }));\n                 Object.defineProperty(exports, \"getVariableValues\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index3.getVariableValues;\n                     }\n                 }));\n+                Object.defineProperty(exports, \"getVisitFn\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return _index2.getVisitFn;\n+                    }\n+                }));\n                 Object.defineProperty(exports, \"graphql\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _graphql.graphql;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"graphqlSync\", ({\n@@ -29171,20 +46034,14 @@\n                 }));\n                 Object.defineProperty(exports, \"isNonNullType\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index.isNonNullType;\n                     }\n                 }));\n-                Object.defineProperty(exports, \"isNullabilityAssertionNode\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return _index2.isNullabilityAssertionNode;\n-                    }\n-                }));\n                 Object.defineProperty(exports, \"isNullableType\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index.isNullableType;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"isObjectType\", ({\n@@ -29285,14 +46142,20 @@\n                 }));\n                 Object.defineProperty(exports, \"isUnionType\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index.isUnionType;\n                     }\n                 }));\n+                Object.defineProperty(exports, \"isValidNameError\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return _index6.isValidNameError;\n+                    }\n+                }));\n                 Object.defineProperty(exports, \"isValueNode\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index2.isValueNode;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"isWrappingType\", ({\n@@ -29339,18 +46202,18 @@\n                 }));\n                 Object.defineProperty(exports, \"print\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index2.print;\n                     }\n                 }));\n-                Object.defineProperty(exports, \"printDirective\", ({\n+                Object.defineProperty(exports, \"printError\", ({\n                     enumerable: true,\n                     get: function() {\n-                        return _index6.printDirective;\n+                        return _index5.printError;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"printIntrospectionSchema\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _index6.printIntrospectionSchema;\n                     }\n@@ -29514,97 +46377,22 @@\n                 var _index5 = __webpack_require__( /*! ./error/index.mjs */ \"../../../node_modules/graphql/error/index.mjs\");\n                 var _index6 = __webpack_require__( /*! ./utilities/index.mjs */ \"../../../node_modules/graphql/utilities/index.mjs\");\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/graphql/jsutils/AccumulatorMap.mjs\":\n-            /*!****************************************************************!*\\\n-              !*** ../../../node_modules/graphql/jsutils/AccumulatorMap.mjs ***!\n-              \\****************************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports) {\n-\n-\n-\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.AccumulatorMap = void 0;\n-                /**\n-                 * ES6 Map with additional `add` method to accumulate items.\n-                 */\n-                class AccumulatorMap extends Map {\n-                    get[Symbol.toStringTag]() {\n-                        return 'AccumulatorMap';\n-                    }\n-                    add(key, item) {\n-                        const group = this.get(key);\n-                        if (group === undefined) {\n-                            this.set(key, [item]);\n-                        } else {\n-                            group.push(item);\n-                        }\n-                    }\n-                }\n-                exports.AccumulatorMap = AccumulatorMap;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../../node_modules/graphql/jsutils/BoxedPromiseOrValue.mjs\":\n-            /*!*********************************************************************!*\\\n-              !*** ../../../node_modules/graphql/jsutils/BoxedPromiseOrValue.mjs ***!\n-              \\*********************************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.BoxedPromiseOrValue = void 0;\n-                var _isPromise = __webpack_require__( /*! ./isPromise.mjs */ \"../../../node_modules/graphql/jsutils/isPromise.mjs\");\n-                /**\n-                 * A BoxedPromiseOrValue is a container for a value or promise where the value\n-                 * will be updated when the promise resolves.\n-                 *\n-                 * A BoxedPromiseOrValue may only be used with promises whose possible\n-                 * rejection has already been handled, otherwise this will lead to unhandled\n-                 * promise rejections.\n-                 *\n-                 * @internal\n-                 * */\n-                class BoxedPromiseOrValue {\n-                    constructor(value) {\n-                        this.value = value;\n-                        if ((0, _isPromise.isPromise)(value)) {\n-                            // eslint-disable-next-line @typescript-eslint/no-floating-promises\n-                            value.then(resolved => {\n-                                this.value = resolved;\n-                            });\n-                        }\n-                    }\n-                }\n-                exports.BoxedPromiseOrValue = BoxedPromiseOrValue;\n-\n-                /***/\n-            }),\n-\n-        /***/\n         \"../../../node_modules/graphql/jsutils/Path.mjs\":\n             /*!******************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/Path.mjs ***!\n               \\******************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.addPath = addPath;\n                 exports.pathToArray = pathToArray;\n@@ -29617,203 +46405,125 @@\n                         key,\n                         typename\n                     };\n                 }\n                 /**\n                  * Given a Path, return an Array of the path keys.\n                  */\n+\n                 function pathToArray(path) {\n                     const flattened = [];\n                     let curr = path;\n                     while (curr) {\n                         flattened.push(curr.key);\n                         curr = curr.prev;\n                     }\n                     return flattened.reverse();\n                 }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/graphql/jsutils/capitalize.mjs\":\n-            /*!************************************************************!*\\\n-              !*** ../../../node_modules/graphql/jsutils/capitalize.mjs ***!\n-              \\************************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports) {\n-\n-\n-\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.capitalize = capitalize;\n-                /**\n-                 * Converts the first character of string to upper case and the remaining to lower case.\n-                 */\n-                function capitalize(str) {\n-                    return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n         \"../../../node_modules/graphql/jsutils/devAssert.mjs\":\n             /*!***********************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/devAssert.mjs ***!\n               \\***********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.devAssert = devAssert;\n \n                 function devAssert(condition, message) {\n-                    if (!condition) {\n+                    const booleanCondition = Boolean(condition);\n+                    if (!booleanCondition) {\n                         throw new Error(message);\n                     }\n                 }\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/jsutils/didYouMean.mjs\":\n             /*!************************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/didYouMean.mjs ***!\n               \\************************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n+            (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.didYouMean = didYouMean;\n-                var _formatList = __webpack_require__( /*! ./formatList.mjs */ \"../../../node_modules/graphql/jsutils/formatList.mjs\");\n                 const MAX_SUGGESTIONS = 5;\n+                /**\n+                 * Given [ A, B, C ] return ' Did you mean A, B, or C?'.\n+                 */\n \n                 function didYouMean(firstArg, secondArg) {\n-                    const [subMessage, suggestions] = secondArg ? [firstArg, secondArg] : [undefined, firstArg];\n-                    if (suggestions.length === 0) {\n-                        return '';\n-                    }\n+                    const [subMessage, suggestionsArg] = secondArg ? [firstArg, secondArg] : [undefined, firstArg];\n                     let message = ' Did you mean ';\n-                    if (subMessage != null) {\n+                    if (subMessage) {\n                         message += subMessage + ' ';\n                     }\n-                    const suggestionList = (0, _formatList.orList)(suggestions.slice(0, MAX_SUGGESTIONS).map(x => `\"${x}\"`));\n-                    return message + suggestionList + '?';\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../../node_modules/graphql/jsutils/formatList.mjs\":\n-            /*!************************************************************!*\\\n-              !*** ../../../node_modules/graphql/jsutils/formatList.mjs ***!\n-              \\************************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.andList = andList;\n-                exports.orList = orList;\n-                var _invariant = __webpack_require__( /*! ./invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n-                /**\n-                 * Given [ A, B, C ] return 'A, B, or C'.\n-                 */\n-                function orList(items) {\n-                    return formatList('or', items);\n-                }\n-                /**\n-                 * Given [ A, B, C ] return 'A, B, and C'.\n-                 */\n-                function andList(items) {\n-                    return formatList('and', items);\n-                }\n-\n-                function formatList(conjunction, items) {\n-                    items.length !== 0 || (0, _invariant.invariant)(false);\n-                    switch (items.length) {\n+                    const suggestions = suggestionsArg.map(x => `\"${x}\"`);\n+                    switch (suggestions.length) {\n+                        case 0:\n+                            return '';\n                         case 1:\n-                            return items[0];\n+                            return message + suggestions[0] + '?';\n                         case 2:\n-                            return items[0] + ' ' + conjunction + ' ' + items[1];\n-                    }\n-                    const allButLast = items.slice(0, -1);\n-                    const lastItem = items.at(-1);\n-                    return allButLast.join(', ') + ', ' + conjunction + ' ' + lastItem;\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../../node_modules/graphql/jsutils/getBySet.mjs\":\n-            /*!**********************************************************!*\\\n-              !*** ../../../node_modules/graphql/jsutils/getBySet.mjs ***!\n-              \\**********************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.getBySet = getBySet;\n-                var _isSameSet = __webpack_require__( /*! ./isSameSet.mjs */ \"../../../node_modules/graphql/jsutils/isSameSet.mjs\");\n-\n-                function getBySet(map, setToMatch) {\n-                    for (const set of map.keys()) {\n-                        if ((0, _isSameSet.isSameSet)(set, setToMatch)) {\n-                            return map.get(set);\n-                        }\n+                            return message + suggestions[0] + ' or ' + suggestions[1] + '?';\n                     }\n-                    return undefined;\n+                    const selected = suggestions.slice(0, MAX_SUGGESTIONS);\n+                    const lastItem = selected.pop();\n+                    return message + selected.join(', ') + ', or ' + lastItem + '?';\n                 }\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/jsutils/groupBy.mjs\":\n             /*!*********************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/groupBy.mjs ***!\n               \\*********************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n+            (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.groupBy = groupBy;\n-                var _AccumulatorMap = __webpack_require__( /*! ./AccumulatorMap.mjs */ \"../../../node_modules/graphql/jsutils/AccumulatorMap.mjs\");\n                 /**\n                  * Groups array items into a Map, given a function to produce grouping key.\n                  */\n                 function groupBy(list, keyFn) {\n-                    const result = new _AccumulatorMap.AccumulatorMap();\n+                    const result = new Map();\n                     for (const item of list) {\n-                        result.add(keyFn(item), item);\n+                        const key = keyFn(item);\n+                        const group = result.get(key);\n+                        if (group === undefined) {\n+                            result.set(key, [item]);\n+                        } else {\n+                            group.push(item);\n+                        }\n                     }\n                     return result;\n                 }\n \n                 /***/\n             }),\n \n@@ -29821,14 +46531,15 @@\n         \"../../../node_modules/graphql/jsutils/identityFunc.mjs\":\n             /*!**************************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/identityFunc.mjs ***!\n               \\**************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.identityFunc = identityFunc;\n                 /**\n@@ -29845,25 +46556,27 @@\n         \"../../../node_modules/graphql/jsutils/inspect.mjs\":\n             /*!*********************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/inspect.mjs ***!\n               \\*********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.inspect = inspect;\n                 const MAX_ARRAY_LENGTH = 10;\n                 const MAX_RECURSIVE_DEPTH = 2;\n                 /**\n                  * Used to print values in error messages.\n                  */\n+\n                 function inspect(value) {\n                     return formatValue(value, []);\n                 }\n \n                 function formatValue(value, seenValues) {\n                     switch (typeof value) {\n                         case 'string':\n@@ -29882,16 +46595,16 @@\n                         return 'null';\n                     }\n                     if (previouslySeenValues.includes(value)) {\n                         return '[Circular]';\n                     }\n                     const seenValues = [...previouslySeenValues, value];\n                     if (isJSONable(value)) {\n-                        const jsonValue = value.toJSON();\n-                        // check for infinite recursion\n+                        const jsonValue = value.toJSON(); // check for infinite recursion\n+\n                         if (jsonValue !== value) {\n                             return typeof jsonValue === 'string' ? jsonValue : formatValue(jsonValue, seenValues);\n                         }\n                     } else if (Array.isArray(value)) {\n                         return formatArray(value, seenValues);\n                     }\n                     return formatObject(value, seenValues);\n@@ -29952,42 +46665,52 @@\n         \"../../../node_modules/graphql/jsutils/instanceOf.mjs\":\n             /*!************************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/instanceOf.mjs ***!\n               \\************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.instanceOf = void 0;\n                 var _inspect = __webpack_require__( /*! ./inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n+                /* c8 ignore next 3 */\n+\n+                const isProduction = globalThis.process &&\n+                    // eslint-disable-next-line no-undef\n+                    \"development\" === 'production';\n                 /**\n                  * A replacement for instanceof which includes an error warning when multi-realm\n                  * constructors are detected.\n                  * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n                  * See: https://webpack.js.org/guides/production/\n                  */\n+\n                 const instanceOf = exports.instanceOf = /* c8 ignore next 6 */\n                     // FIXME: https://github.com/graphql/graphql-js/issues/2317\n-                    globalThis.process != null && globalThis.process.env.NODE_ENV === 'production' ? function instanceOf(value, constructor) {\n+                    isProduction ? function instanceOf(value, constructor) {\n                         return value instanceof constructor;\n                     } : function instanceOf(value, constructor) {\n                         if (value instanceof constructor) {\n                             return true;\n                         }\n                         if (typeof value === 'object' && value !== null) {\n                             var _value$constructor;\n+\n                             // Prefer Symbol.toStringTag since it is immune to minification.\n                             const className = constructor.prototype[Symbol.toStringTag];\n                             const valueClassName =\n                                 // We still need to support constructor's name to detect conflicts with older versions of this library.\n-                                Symbol.toStringTag in value ? value[Symbol.toStringTag] : (_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name;\n+                                Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009\n+                                ?\n+                                value[Symbol.toStringTag] : (_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name;\n                             if (className === valueClassName) {\n                                 const stringifiedValue = (0, _inspect.inspect)(value);\n                                 throw new Error(`Cannot use ${className} \"${stringifiedValue}\" from another module or realm.\n \n Ensure that there is only one instance of \"graphql\" in the node_modules\n directory. If different versions of \"graphql\" are the dependencies of other\n relied on modules, use \"resolutions\" to ensure only one version is installed.\n@@ -30010,23 +46733,25 @@\n         \"../../../node_modules/graphql/jsutils/invariant.mjs\":\n             /*!***********************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/invariant.mjs ***!\n               \\***********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.invariant = invariant;\n \n                 function invariant(condition, message) {\n-                    if (!condition) {\n+                    const booleanCondition = Boolean(condition);\n+                    if (!booleanCondition) {\n                         throw new Error(message != null ? message : 'Unexpected invariant triggered.');\n                     }\n                 }\n \n                 /***/\n             }),\n \n@@ -30034,14 +46759,15 @@\n         \"../../../node_modules/graphql/jsutils/isAsyncIterable.mjs\":\n             /*!*****************************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/isAsyncIterable.mjs ***!\n               \\*****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isAsyncIterable = isAsyncIterable;\n                 /**\n@@ -30059,14 +46785,15 @@\n         \"../../../node_modules/graphql/jsutils/isIterableObject.mjs\":\n             /*!******************************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/isIterableObject.mjs ***!\n               \\******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isIterableObject = isIterableObject;\n                 /**\n@@ -30097,14 +46824,15 @@\n         \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\":\n             /*!**************************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/isObjectLike.mjs ***!\n               \\**************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isObjectLike = isObjectLike;\n                 /**\n@@ -30122,14 +46850,15 @@\n         \"../../../node_modules/graphql/jsutils/isPromise.mjs\":\n             /*!***********************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/isPromise.mjs ***!\n               \\***********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isPromise = isPromise;\n                 /**\n@@ -30140,51 +46869,22 @@\n                     return typeof(value === null || value === void 0 ? void 0 : value.then) === 'function';\n                 }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/graphql/jsutils/isSameSet.mjs\":\n-            /*!***********************************************************!*\\\n-              !*** ../../../node_modules/graphql/jsutils/isSameSet.mjs ***!\n-              \\***********************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports) {\n-\n-\n-\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.isSameSet = isSameSet;\n-\n-                function isSameSet(setA, setB) {\n-                    if (setA.size !== setB.size) {\n-                        return false;\n-                    }\n-                    for (const item of setA) {\n-                        if (!setB.has(item)) {\n-                            return false;\n-                        }\n-                    }\n-                    return true;\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n         \"../../../node_modules/graphql/jsutils/keyMap.mjs\":\n             /*!********************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/keyMap.mjs ***!\n               \\********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.keyMap = keyMap;\n                 /**\n@@ -30229,14 +46929,15 @@\n         \"../../../node_modules/graphql/jsutils/keyValMap.mjs\":\n             /*!***********************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/keyValMap.mjs ***!\n               \\***********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.keyValMap = keyValMap;\n                 /**\n@@ -30271,14 +46972,15 @@\n         \"../../../node_modules/graphql/jsutils/mapValue.mjs\":\n             /*!**********************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/mapValue.mjs ***!\n               \\**********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.mapValue = mapValue;\n                 /**\n@@ -30300,14 +47002,15 @@\n         \"../../../node_modules/graphql/jsutils/memoize3.mjs\":\n             /*!**********************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/memoize3.mjs ***!\n               \\**********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.memoize3 = memoize3;\n                 /**\n@@ -30345,14 +47048,15 @@\n         \"../../../node_modules/graphql/jsutils/naturalCompare.mjs\":\n             /*!****************************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/naturalCompare.mjs ***!\n               \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.naturalCompare = naturalCompare;\n                 /**\n@@ -30414,14 +47118,15 @@\n         \"../../../node_modules/graphql/jsutils/printPathArray.mjs\":\n             /*!****************************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/printPathArray.mjs ***!\n               \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.printPathArray = printPathArray;\n                 /**\n@@ -30438,49 +47143,50 @@\n         \"../../../node_modules/graphql/jsutils/promiseForObject.mjs\":\n             /*!******************************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/promiseForObject.mjs ***!\n               \\******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.promiseForObject = promiseForObject;\n                 /**\n                  * This function transforms a JS object `ObjMap<Promise<T>>` into\n                  * a `Promise<ObjMap<T>>`\n                  *\n                  * This is akin to bluebird's `Promise.props`, but implemented only using\n                  * `Promise.all` so it will work with any implementation of ES6 promises.\n                  */\n-                async function promiseForObject(object, callback) {\n-                    const keys = Object.keys(object);\n-                    const values = Object.values(object);\n-                    const resolvedValues = await Promise.all(values);\n-                    const resolvedObject = Object.create(null);\n-                    for (let i = 0; i < keys.length; ++i) {\n-                        resolvedObject[keys[i]] = resolvedValues[i];\n-                    }\n-                    return callback(resolvedObject);\n+                function promiseForObject(object) {\n+                    return Promise.all(Object.values(object)).then(resolvedValues => {\n+                        const resolvedObject = Object.create(null);\n+                        for (const [i, key] of Object.keys(object).entries()) {\n+                            resolvedObject[key] = resolvedValues[i];\n+                        }\n+                        return resolvedObject;\n+                    });\n                 }\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/jsutils/promiseReduce.mjs\":\n             /*!***************************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/promiseReduce.mjs ***!\n               \\***************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.promiseReduce = promiseReduce;\n                 var _isPromise = __webpack_require__( /*! ./isPromise.mjs */ \"../../../node_modules/graphql/jsutils/isPromise.mjs\");\n@@ -30499,68 +47205,34 @@\n                     return accumulator;\n                 }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/graphql/jsutils/promiseWithResolvers.mjs\":\n-            /*!**********************************************************************!*\\\n-              !*** ../../../node_modules/graphql/jsutils/promiseWithResolvers.mjs ***!\n-              \\**********************************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports) {\n-\n-\n-\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.promiseWithResolvers = promiseWithResolvers;\n-                /**\n-                 * Based on Promise.withResolvers proposal\n-                 * https://github.com/tc39/proposal-promise-with-resolvers\n-                 */\n-                function promiseWithResolvers() {\n-                    // these are assigned synchronously within the Promise constructor\n-                    let resolve;\n-                    let reject;\n-                    const promise = new Promise((res, rej) => {\n-                        resolve = res;\n-                        reject = rej;\n-                    });\n-                    return {\n-                        promise,\n-                        resolve,\n-                        reject\n-                    };\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n         \"../../../node_modules/graphql/jsutils/suggestionList.mjs\":\n             /*!****************************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/suggestionList.mjs ***!\n               \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.suggestionList = suggestionList;\n                 var _naturalCompare = __webpack_require__( /*! ./naturalCompare.mjs */ \"../../../node_modules/graphql/jsutils/naturalCompare.mjs\");\n                 /**\n                  * Given an invalid input string and a list of valid options, returns a filtered\n                  * list of valid options sorted based on their similarity with the input.\n                  */\n+\n                 function suggestionList(input, options) {\n                     const optionsByDistance = Object.create(null);\n                     const lexicalDistance = new LexicalDistance(input);\n                     const threshold = Math.floor(input.length * 0.4) + 1;\n                     for (const option of options) {\n                         const distance = lexicalDistance.measure(option, threshold);\n                         if (distance !== undefined) {\n@@ -30582,27 +47254,28 @@\n                  *\n                  * Includes a custom alteration from Damerau-Levenshtein to treat case changes\n                  * as a single edit which helps identify mis-cased values with an edit distance\n                  * of 1.\n                  *\n                  * This distance can be useful for detecting typos in input or sorting\n                  */\n+\n                 class LexicalDistance {\n                     constructor(input) {\n                         this._input = input;\n                         this._inputLowerCase = input.toLowerCase();\n                         this._inputArray = stringToArray(this._inputLowerCase);\n                         this._rows = [new Array(input.length + 1).fill(0), new Array(input.length + 1).fill(0), new Array(input.length + 1).fill(0)];\n                     }\n                     measure(option, threshold) {\n                         if (this._input === option) {\n                             return 0;\n                         }\n-                        const optionLowerCase = option.toLowerCase();\n-                        // Any case change counts as a single edit\n+                        const optionLowerCase = option.toLowerCase(); // Any case change counts as a single edit\n+\n                         if (this._inputLowerCase === optionLowerCase) {\n                             return 1;\n                         }\n                         let a = stringToArray(optionLowerCase);\n                         let b = this._inputArray;\n                         if (a.length < b.length) {\n                             const tmp = a;\n@@ -30624,26 +47297,27 @@\n                             let smallestCell = currentRow[0] = i;\n                             for (let j = 1; j <= bLength; j++) {\n                                 const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n                                 let currentCell = Math.min(upRow[j] + 1,\n                                     // delete\n                                     currentRow[j - 1] + 1,\n                                     // insert\n-                                    upRow[j - 1] + cost);\n+                                    upRow[j - 1] + cost // substitute\n+                                );\n                                 if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n                                     // transposition\n                                     const doubleDiagonalCell = rows[(i - 2) % 3][j - 2];\n                                     currentCell = Math.min(currentCell, doubleDiagonalCell + 1);\n                                 }\n                                 if (currentCell < smallestCell) {\n                                     smallestCell = currentCell;\n                                 }\n                                 currentRow[j] = currentCell;\n-                            }\n-                            // Early exit, since distance can't go smaller than smallest element of the previous row.\n+                            } // Early exit, since distance can't go smaller than smallest element of the previous row.\n+\n                             if (smallestCell > threshold) {\n                                 return undefined;\n                             }\n                         }\n                         const distance = rows[aLength % 3][bLength];\n                         return distance <= threshold ? distance : undefined;\n                     }\n@@ -30665,24 +47339,26 @@\n         \"../../../node_modules/graphql/jsutils/toError.mjs\":\n             /*!*********************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/toError.mjs ***!\n               \\*********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.toError = toError;\n                 var _inspect = __webpack_require__( /*! ./inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n                 /**\n                  * Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.\n                  */\n+\n                 function toError(thrownValue) {\n                     return thrownValue instanceof Error ? thrownValue : new NonErrorThrown(thrownValue);\n                 }\n                 class NonErrorThrown extends Error {\n                     constructor(thrownValue) {\n                         super('Unexpected error value: ' + (0, _inspect.inspect)(thrownValue));\n                         this.name = 'NonErrorThrown';\n@@ -30697,14 +47373,15 @@\n         \"../../../node_modules/graphql/jsutils/toObjMap.mjs\":\n             /*!**********************************************************!*\\\n               !*** ../../../node_modules/graphql/jsutils/toObjMap.mjs ***!\n               \\**********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.toObjMap = toObjMap;\n \n@@ -30729,26 +47406,46 @@\n         \"../../../node_modules/graphql/language/ast.mjs\":\n             /*!******************************************************!*\\\n               !*** ../../../node_modules/graphql/language/ast.mjs ***!\n               \\******************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.Token = exports.QueryDocumentKeys = exports.OperationTypeNode = exports.Location = void 0;\n                 exports.isNode = isNode;\n                 /**\n                  * Contains a range of UTF-8 character offsets and token references that\n                  * identify the region of the source from which the AST derived.\n                  */\n                 class Location {\n+                    /**\n+                     * The character offset at which this Node begins.\n+                     */\n+\n+                    /**\n+                     * The character offset at which this Node ends.\n+                     */\n+\n+                    /**\n+                     * The Token at which this Node begins.\n+                     */\n+\n+                    /**\n+                     * The Token at which this Node ends.\n+                     */\n+\n+                    /**\n+                     * The Source document the AST represents.\n+                     */\n                     constructor(startToken, endToken, source) {\n                         this.start = startToken.start;\n                         this.end = endToken.end;\n                         this.startToken = startToken;\n                         this.endToken = endToken;\n                         this.source = source;\n                     }\n@@ -30764,22 +47461,53 @@\n                 }\n                 /**\n                  * Represents a range of characters represented by a lexical token\n                  * within a Source.\n                  */\n                 exports.Location = Location;\n                 class Token {\n-                    // eslint-disable-next-line max-params\n+                    /**\n+                     * The kind of Token.\n+                     */\n+\n+                    /**\n+                     * The character offset at which this Node begins.\n+                     */\n+\n+                    /**\n+                     * The character offset at which this Node ends.\n+                     */\n+\n+                    /**\n+                     * The 1-indexed line number on which this Token appears.\n+                     */\n+\n+                    /**\n+                     * The 1-indexed column number at which this Token begins.\n+                     */\n+\n+                    /**\n+                     * For non-punctuation tokens, represents the interpreted value of the token.\n+                     *\n+                     * Note: is undefined for punctuation tokens, but typed as string for\n+                     * convenience in the parser.\n+                     */\n+\n+                    /**\n+                     * Tokens exist as nodes in a double-linked-list amongst all tokens\n+                     * including ignored tokens. <SOF> is always the first node and <EOF>\n+                     * the last.\n+                     */\n                     constructor(kind, start, end, line, column, value) {\n                         this.kind = kind;\n                         this.start = start;\n                         this.end = end;\n                         this.line = line;\n-                        this.column = column;\n-                        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n+                        this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n+\n                         this.value = value;\n                         this.prev = null;\n                         this.next = null;\n                     }\n                     get[Symbol.toStringTag]() {\n                         return 'Token';\n                     }\n@@ -30789,35 +47517,30 @@\n                             value: this.value,\n                             line: this.line,\n                             column: this.column\n                         };\n                     }\n                 }\n                 /**\n+                 * The list of all possible AST node types.\n+                 */\n+\n+                /**\n                  * @internal\n                  */\n                 exports.Token = Token;\n                 const QueryDocumentKeys = exports.QueryDocumentKeys = {\n                     Name: [],\n                     Document: ['definitions'],\n                     OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n                     VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n                     Variable: ['name'],\n                     SelectionSet: ['selections'],\n-                    Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet',\n-                        // Note: Client Controlled Nullability is experimental and may be changed\n-                        // or removed in the future.\n-                        'nullabilityAssertion'\n-                    ],\n+                    Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n                     Argument: ['name', 'value'],\n-                    // Note: Client Controlled Nullability is experimental and may be changed\n-                    // or removed in the future.\n-                    ListNullabilityOperator: ['nullabilityAssertion'],\n-                    NonNullAssertion: ['nullabilityAssertion'],\n-                    ErrorBoundary: ['nullabilityAssertion'],\n                     FragmentSpread: ['name', 'directives'],\n                     InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n                     FragmentDefinition: ['name',\n                         // Note: fragment variable definitions are deprecated and will removed in v17.0.0\n                         'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'\n                     ],\n                     IntValue: [],\n@@ -30853,18 +47576,21 @@\n                     EnumTypeExtension: ['name', 'directives', 'values'],\n                     InputObjectTypeExtension: ['name', 'directives', 'fields']\n                 };\n                 const kindValues = new Set(Object.keys(QueryDocumentKeys));\n                 /**\n                  * @internal\n                  */\n+\n                 function isNode(maybeNode) {\n                     const maybeKind = maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n                     return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n                 }\n+                /** Name */\n+\n                 var OperationTypeNode;\n                 (function(OperationTypeNode) {\n                     OperationTypeNode['QUERY'] = 'query';\n                     OperationTypeNode['MUTATION'] = 'mutation';\n                     OperationTypeNode['SUBSCRIPTION'] = 'subscription';\n                 })(OperationTypeNode || (exports.OperationTypeNode = OperationTypeNode = {}));\n \n@@ -30875,14 +47601,15 @@\n         \"../../../node_modules/graphql/language/blockString.mjs\":\n             /*!**************************************************************!*\\\n               !*** ../../../node_modules/graphql/language/blockString.mjs ***!\n               \\**************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.dedentBlockStringLines = dedentBlockStringLines;\n                 exports.isPrintableAsBlockString = isPrintableAsBlockString;\n@@ -30892,48 +47619,49 @@\n                  * Produces the value of a block string from its parsed raw value, similar to\n                  * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n                  *\n                  * This implements the GraphQL spec's BlockStringValue() static algorithm.\n                  *\n                  * @internal\n                  */\n+\n                 function dedentBlockStringLines(lines) {\n-                    var _firstNonEmptyLine;\n+                    var _firstNonEmptyLine2;\n                     let commonIndent = Number.MAX_SAFE_INTEGER;\n                     let firstNonEmptyLine = null;\n                     let lastNonEmptyLine = -1;\n                     for (let i = 0; i < lines.length; ++i) {\n+                        var _firstNonEmptyLine;\n                         const line = lines[i];\n                         const indent = leadingWhitespace(line);\n                         if (indent === line.length) {\n                             continue; // skip empty lines\n                         }\n-                        firstNonEmptyLine ??= i;\n+                        firstNonEmptyLine = (_firstNonEmptyLine = firstNonEmptyLine) !== null && _firstNonEmptyLine !== void 0 ? _firstNonEmptyLine : i;\n                         lastNonEmptyLine = i;\n                         if (i !== 0 && indent < commonIndent) {\n                             commonIndent = indent;\n                         }\n                     }\n-                    return lines\n-                        // Remove common indentation from all lines but first.\n-                        .map((line, i) => i === 0 ? line : line.slice(commonIndent))\n-                        // Remove leading and trailing blank lines.\n-                        .slice((_firstNonEmptyLine = firstNonEmptyLine) !== null && _firstNonEmptyLine !== void 0 ? _firstNonEmptyLine : 0, lastNonEmptyLine + 1);\n+                    return lines // Remove common indentation from all lines but first.\n+                        .map((line, i) => i === 0 ? line : line.slice(commonIndent)) // Remove leading and trailing blank lines.\n+                        .slice((_firstNonEmptyLine2 = firstNonEmptyLine) !== null && _firstNonEmptyLine2 !== void 0 ? _firstNonEmptyLine2 : 0, lastNonEmptyLine + 1);\n                 }\n \n                 function leadingWhitespace(str) {\n                     let i = 0;\n                     while (i < str.length && (0, _characterClasses.isWhiteSpace)(str.charCodeAt(i))) {\n                         ++i;\n                     }\n                     return i;\n                 }\n                 /**\n                  * @internal\n                  */\n+\n                 function isPrintableAsBlockString(value) {\n                     if (value === '') {\n                         return true; // empty string is printable\n                     }\n                     let isEmptyLine = true;\n                     let hasIndent = false;\n                     let hasCommonIndent = true;\n@@ -30951,34 +47679,37 @@\n                             case 0x0008:\n                             case 0x000b:\n                             case 0x000c:\n                             case 0x000e:\n                             case 0x000f:\n                                 return false;\n                                 // Has non-printable characters\n+\n                             case 0x000d:\n                                 //  \\r\n                                 return false;\n                                 // Has \\r or \\r\\n which will be replaced as \\n\n+\n                             case 10:\n                                 //  \\n\n                                 if (isEmptyLine && !seenNonEmptyLine) {\n                                     return false; // Has leading new line\n                                 }\n                                 seenNonEmptyLine = true;\n                                 isEmptyLine = true;\n                                 hasIndent = false;\n                                 break;\n                             case 9: //   \\t\n+\n                             case 32:\n                                 //  <space>\n-                                hasIndent ||= isEmptyLine;\n+                                hasIndent || (hasIndent = isEmptyLine);\n                                 break;\n                             default:\n-                                hasCommonIndent &&= hasIndent;\n+                                hasCommonIndent && (hasCommonIndent = hasIndent);\n                                 isEmptyLine = false;\n                         }\n                     }\n                     if (isEmptyLine) {\n                         return false; // Has trailing empty lines\n                     }\n                     if (hasCommonIndent && seenNonEmptyLine) {\n@@ -30989,32 +47720,33 @@\n                 /**\n                  * Print a block string in the indented block form by adding a leading and\n                  * trailing blank line. However, if a block string starts with whitespace and is\n                  * a single-line, adding a leading blank line would strip that whitespace.\n                  *\n                  * @internal\n                  */\n+\n                 function printBlockString(value, options) {\n-                    const escapedValue = value.replaceAll('\"\"\"', '\\\\\"\"\"');\n-                    // Expand a block string's raw value into independent lines.\n+                    const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"'); // Expand a block string's raw value into independent lines.\n+\n                     const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n-                    const isSingleLine = lines.length === 1;\n-                    // If common indentation is found we can fix some of those cases by adding leading new line\n-                    const forceLeadingNewLine = lines.length > 1 && lines.slice(1).every(line => line.length === 0 || (0, _characterClasses.isWhiteSpace)(line.charCodeAt(0)));\n-                    // Trailing triple quotes just looks confusing but doesn't force trailing new line\n-                    const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"');\n-                    // Trailing quote (single or double) or slash forces trailing new line\n+                    const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line\n+\n+                    const forceLeadingNewLine = lines.length > 1 && lines.slice(1).every(line => line.length === 0 || (0, _characterClasses.isWhiteSpace)(line.charCodeAt(0))); // Trailing triple quotes just looks confusing but doesn't force trailing new line\n+\n+                    const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"'); // Trailing quote (single or double) or slash forces trailing new line\n+\n                     const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n                     const hasTrailingSlash = value.endsWith('\\\\');\n                     const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n                     const printAsMultipleLines = !(options !== null && options !== void 0 && options.minimize) && (\n                         // add leading and trailing new lines only if it improves readability\n                         !isSingleLine || value.length > 70 || forceTrailingNewline || forceLeadingNewLine || hasTrailingTripleQuotes);\n-                    let result = '';\n-                    // Format a multi-line block quote to account for leading space.\n+                    let result = ''; // Format a multi-line block quote to account for leading space.\n+\n                     const skipLeadingNewLine = isSingleLine && (0, _characterClasses.isWhiteSpace)(value.charCodeAt(0));\n                     if (printAsMultipleLines && !skipLeadingNewLine || forceLeadingNewLine) {\n                         result += '\\n';\n                     }\n                     result += escapedValue;\n                     if (printAsMultipleLines || forceTrailingNewline) {\n                         result += '\\n';\n@@ -31029,14 +47761,15 @@\n         \"../../../node_modules/graphql/language/characterClasses.mjs\":\n             /*!*******************************************************************!*\\\n               !*** ../../../node_modules/graphql/language/characterClasses.mjs ***!\n               \\*******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isDigit = isDigit;\n                 exports.isLetter = isLetter;\n@@ -31057,53 +47790,57 @@\n                 /**\n                  * ```\n                  * Digit :: one of\n                  *   - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n                  * ```\n                  * @internal\n                  */\n+\n                 function isDigit(code) {\n                     return code >= 0x0030 && code <= 0x0039;\n                 }\n                 /**\n                  * ```\n                  * Letter :: one of\n                  *   - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`\n                  *   - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`\n                  *   - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`\n                  *   - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`\n                  * ```\n                  * @internal\n                  */\n+\n                 function isLetter(code) {\n                     return code >= 0x0061 && code <= 0x007a ||\n                         // A-Z\n                         code >= 0x0041 && code <= 0x005a // a-z\n                     ;\n                 }\n                 /**\n                  * ```\n                  * NameStart ::\n                  *   - Letter\n                  *   - `_`\n                  * ```\n                  * @internal\n                  */\n+\n                 function isNameStart(code) {\n                     return isLetter(code) || code === 0x005f;\n                 }\n                 /**\n                  * ```\n                  * NameContinue ::\n                  *   - Letter\n                  *   - Digit\n                  *   - `_`\n                  * ```\n                  * @internal\n                  */\n+\n                 function isNameContinue(code) {\n                     return isLetter(code) || isDigit(code) || code === 0x005f;\n                 }\n \n                 /***/\n             }),\n \n@@ -31111,59 +47848,65 @@\n         \"../../../node_modules/graphql/language/directiveLocation.mjs\":\n             /*!********************************************************************!*\\\n               !*** ../../../node_modules/graphql/language/directiveLocation.mjs ***!\n               \\********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.DirectiveLocation = void 0;\n                 /**\n                  * The set of allowed directive location values.\n                  */\n                 var DirectiveLocation;\n                 (function(DirectiveLocation) {\n-                    /** Request Definitions */\n                     DirectiveLocation['QUERY'] = 'QUERY';\n                     DirectiveLocation['MUTATION'] = 'MUTATION';\n                     DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n                     DirectiveLocation['FIELD'] = 'FIELD';\n                     DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n                     DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n                     DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n                     DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n-                    /** Type System Definitions */\n                     DirectiveLocation['SCHEMA'] = 'SCHEMA';\n                     DirectiveLocation['SCALAR'] = 'SCALAR';\n                     DirectiveLocation['OBJECT'] = 'OBJECT';\n                     DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n                     DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n                     DirectiveLocation['INTERFACE'] = 'INTERFACE';\n                     DirectiveLocation['UNION'] = 'UNION';\n                     DirectiveLocation['ENUM'] = 'ENUM';\n                     DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n                     DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n                     DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n                 })(DirectiveLocation || (exports.DirectiveLocation = DirectiveLocation = {}));\n \n+                /**\n+                 * The enum type representing the directive location values.\n+                 *\n+                 * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n+                 */\n+\n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/language/index.mjs\":\n             /*!********************************************************!*\\\n               !*** ../../../node_modules/graphql/language/index.mjs ***!\n               \\********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"BREAK\", ({\n                     enumerable: true,\n@@ -31227,14 +47970,20 @@\n                 }));\n                 Object.defineProperty(exports, \"getLocation\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _location.getLocation;\n                     }\n                 }));\n+                Object.defineProperty(exports, \"getVisitFn\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return _visitor.getVisitFn;\n+                    }\n+                }));\n                 Object.defineProperty(exports, \"isConstValueNode\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _predicates.isConstValueNode;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"isDefinitionNode\", ({\n@@ -31245,20 +47994,14 @@\n                 }));\n                 Object.defineProperty(exports, \"isExecutableDefinitionNode\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _predicates.isExecutableDefinitionNode;\n                     }\n                 }));\n-                Object.defineProperty(exports, \"isNullabilityAssertionNode\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return _predicates.isNullabilityAssertionNode;\n-                    }\n-                }));\n                 Object.defineProperty(exports, \"isSelectionNode\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _predicates.isSelectionNode;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"isTypeDefinitionNode\", ({\n@@ -31371,96 +48114,89 @@\n         \"../../../node_modules/graphql/language/kinds.mjs\":\n             /*!********************************************************!*\\\n               !*** ../../../node_modules/graphql/language/kinds.mjs ***!\n               \\********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.Kind = void 0;\n                 /**\n                  * The set of allowed kind values for AST nodes.\n                  */\n                 var Kind;\n                 (function(Kind) {\n-                    /** Name */\n                     Kind['NAME'] = 'Name';\n-                    /** Document */\n                     Kind['DOCUMENT'] = 'Document';\n                     Kind['OPERATION_DEFINITION'] = 'OperationDefinition';\n                     Kind['VARIABLE_DEFINITION'] = 'VariableDefinition';\n                     Kind['SELECTION_SET'] = 'SelectionSet';\n                     Kind['FIELD'] = 'Field';\n                     Kind['ARGUMENT'] = 'Argument';\n-                    /** Nullability Modifiers */\n-                    Kind['LIST_NULLABILITY_OPERATOR'] = 'ListNullabilityOperator';\n-                    Kind['NON_NULL_ASSERTION'] = 'NonNullAssertion';\n-                    Kind['ERROR_BOUNDARY'] = 'ErrorBoundary';\n-                    /** Fragments */\n                     Kind['FRAGMENT_SPREAD'] = 'FragmentSpread';\n                     Kind['INLINE_FRAGMENT'] = 'InlineFragment';\n                     Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition';\n-                    /** Values */\n                     Kind['VARIABLE'] = 'Variable';\n                     Kind['INT'] = 'IntValue';\n                     Kind['FLOAT'] = 'FloatValue';\n                     Kind['STRING'] = 'StringValue';\n                     Kind['BOOLEAN'] = 'BooleanValue';\n                     Kind['NULL'] = 'NullValue';\n                     Kind['ENUM'] = 'EnumValue';\n                     Kind['LIST'] = 'ListValue';\n                     Kind['OBJECT'] = 'ObjectValue';\n                     Kind['OBJECT_FIELD'] = 'ObjectField';\n-                    /** Directives */\n                     Kind['DIRECTIVE'] = 'Directive';\n-                    /** Types */\n                     Kind['NAMED_TYPE'] = 'NamedType';\n                     Kind['LIST_TYPE'] = 'ListType';\n                     Kind['NON_NULL_TYPE'] = 'NonNullType';\n-                    /** Type System Definitions */\n                     Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition';\n                     Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition';\n-                    /** Type Definitions */\n                     Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition';\n                     Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition';\n                     Kind['FIELD_DEFINITION'] = 'FieldDefinition';\n                     Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition';\n                     Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition';\n                     Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition';\n                     Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition';\n                     Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition';\n                     Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition';\n-                    /** Directive Definitions */\n                     Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition';\n-                    /** Type System Extensions */\n                     Kind['SCHEMA_EXTENSION'] = 'SchemaExtension';\n-                    /** Type Extensions */\n                     Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension';\n                     Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension';\n                     Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension';\n                     Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension';\n                     Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension';\n                     Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension';\n                 })(Kind || (exports.Kind = Kind = {}));\n \n+                /**\n+                 * The enum type representing the possible kind values of AST nodes.\n+                 *\n+                 * @deprecated Please use `Kind`. Will be remove in v17.\n+                 */\n+\n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/language/lexer.mjs\":\n             /*!********************************************************!*\\\n               !*** ../../../node_modules/graphql/language/lexer.mjs ***!\n               \\********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.Lexer = void 0;\n                 exports.isPunctuatorTokenKind = isPunctuatorTokenKind;\n@@ -31473,85 +48209,105 @@\n                  * Given a Source object, creates a Lexer for that source.\n                  * A Lexer is a stateful stream generator in that every time\n                  * it is advanced, it returns the next token in the Source. Assuming the\n                  * source lexes, the final Token emitted by the lexer will be of kind\n                  * EOF, after which the lexer will repeatedly return the same EOF token\n                  * whenever called.\n                  */\n+\n                 class Lexer {\n+                    /**\n+                     * The previously focused non-ignored token.\n+                     */\n+\n+                    /**\n+                     * The currently focused non-ignored token.\n+                     */\n+\n+                    /**\n+                     * The (1-indexed) line containing the current token.\n+                     */\n+\n+                    /**\n+                     * The character offset at which the current line begins.\n+                     */\n                     constructor(source) {\n                         const startOfFileToken = new _ast.Token(_tokenKind.TokenKind.SOF, 0, 0, 0, 0);\n                         this.source = source;\n                         this.lastToken = startOfFileToken;\n                         this.token = startOfFileToken;\n                         this.line = 1;\n                         this.lineStart = 0;\n                     }\n                     get[Symbol.toStringTag]() {\n                         return 'Lexer';\n                     }\n                     /**\n                      * Advances the token stream to the next non-ignored token.\n                      */\n+\n                     advance() {\n                         this.lastToken = this.token;\n                         const token = this.token = this.lookahead();\n                         return token;\n                     }\n                     /**\n                      * Looks ahead and returns the next non-ignored token, but does not change\n                      * the state of Lexer.\n                      */\n+\n                     lookahead() {\n                         let token = this.token;\n                         if (token.kind !== _tokenKind.TokenKind.EOF) {\n                             do {\n                                 if (token.next) {\n                                     token = token.next;\n                                 } else {\n                                     // Read the next token and form a link in the token linked-list.\n-                                    const nextToken = readNextToken(this, token.end);\n-                                    // @ts-expect-error next is only mutable during parsing.\n-                                    token.next = nextToken;\n-                                    // @ts-expect-error prev is only mutable during parsing.\n+                                    const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n+\n+                                    token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n+\n                                     nextToken.prev = token;\n                                     token = nextToken;\n                                 }\n                             } while (token.kind === _tokenKind.TokenKind.COMMENT);\n                         }\n                         return token;\n                     }\n                 }\n                 /**\n                  * @internal\n                  */\n                 exports.Lexer = Lexer;\n \n                 function isPunctuatorTokenKind(kind) {\n-                    return kind === _tokenKind.TokenKind.BANG || kind === _tokenKind.TokenKind.QUESTION_MARK || kind === _tokenKind.TokenKind.DOLLAR || kind === _tokenKind.TokenKind.AMP || kind === _tokenKind.TokenKind.PAREN_L || kind === _tokenKind.TokenKind.PAREN_R || kind === _tokenKind.TokenKind.SPREAD || kind === _tokenKind.TokenKind.COLON || kind === _tokenKind.TokenKind.EQUALS || kind === _tokenKind.TokenKind.AT || kind === _tokenKind.TokenKind.BRACKET_L || kind === _tokenKind.TokenKind.BRACKET_R || kind === _tokenKind.TokenKind.BRACE_L || kind === _tokenKind.TokenKind.PIPE || kind === _tokenKind.TokenKind.BRACE_R;\n+                    return kind === _tokenKind.TokenKind.BANG || kind === _tokenKind.TokenKind.DOLLAR || kind === _tokenKind.TokenKind.AMP || kind === _tokenKind.TokenKind.PAREN_L || kind === _tokenKind.TokenKind.PAREN_R || kind === _tokenKind.TokenKind.SPREAD || kind === _tokenKind.TokenKind.COLON || kind === _tokenKind.TokenKind.EQUALS || kind === _tokenKind.TokenKind.AT || kind === _tokenKind.TokenKind.BRACKET_L || kind === _tokenKind.TokenKind.BRACKET_R || kind === _tokenKind.TokenKind.BRACE_L || kind === _tokenKind.TokenKind.PIPE || kind === _tokenKind.TokenKind.BRACE_R;\n                 }\n                 /**\n                  * A Unicode scalar value is any Unicode code point except surrogate code\n                  * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and\n                  * 0xE000 to 0x10FFFF.\n                  *\n                  * SourceCharacter ::\n                  *   - \"Any Unicode scalar value\"\n                  */\n+\n                 function isUnicodeScalarValue(code) {\n                     return code >= 0x0000 && code <= 0xd7ff || code >= 0xe000 && code <= 0x10ffff;\n                 }\n                 /**\n                  * The GraphQL specification defines source text as a sequence of unicode scalar\n                  * values (which Unicode defines to exclude surrogate code points). However\n                  * JavaScript defines strings as a sequence of UTF-16 code units which may\n                  * include surrogates. A surrogate pair is a valid source character as it\n                  * encodes a supplementary code point (above U+FFFF), but unpaired surrogate\n                  * code points are not valid source characters.\n                  */\n+\n                 function isSupplementaryCodePoint(body, location) {\n                     return isLeadingSurrogate(body.charCodeAt(location)) && isTrailingSurrogate(body.charCodeAt(location + 1));\n                 }\n \n                 function isLeadingSurrogate(code) {\n                     return code >= 0xd800 && code <= 0xdbff;\n                 }\n@@ -31562,48 +48318,51 @@\n                 /**\n                  * Prints the code point (or end of file reference) at a given location in a\n                  * source for use in error messages.\n                  *\n                  * Printable ASCII is printed quoted, while other points are printed in Unicode\n                  * code point form (ie. U+1234).\n                  */\n+\n                 function printCodePointAt(lexer, location) {\n                     const code = lexer.source.body.codePointAt(location);\n                     if (code === undefined) {\n                         return _tokenKind.TokenKind.EOF;\n                     } else if (code >= 0x0020 && code <= 0x007e) {\n                         // Printable ASCII\n                         const char = String.fromCodePoint(code);\n                         return char === '\"' ? \"'\\\"'\" : `\"${char}\"`;\n-                    }\n-                    // Unicode code point\n+                    } // Unicode code point\n+\n                     return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n                 }\n                 /**\n                  * Create a token with line and column location information.\n                  */\n+\n                 function createToken(lexer, kind, start, end, value) {\n                     const line = lexer.line;\n                     const col = 1 + start - lexer.lineStart;\n                     return new _ast.Token(kind, start, end, line, col, value);\n                 }\n                 /**\n                  * Gets the next token from the source starting at the given position.\n                  *\n                  * This skips over whitespace until it finds the next lexable token, then lexes\n                  * punctuators immediately or calls the appropriate helper function for more\n                  * complicated tokens.\n                  */\n+\n                 function readNextToken(lexer, start) {\n                     const body = lexer.source.body;\n                     const bodyLength = body.length;\n                     let position = start;\n                     while (position < bodyLength) {\n-                        const code = body.charCodeAt(position);\n-                        // SourceCharacter\n+                        const code = body.charCodeAt(position); // SourceCharacter\n+\n                         switch (code) {\n                             // Ignored ::\n                             //   - UnicodeBOM\n                             //   - WhiteSpace\n                             //   - LineTerminator\n                             //   - Comment\n                             //   - Comma\n@@ -31612,24 +48371,28 @@\n                             //\n                             // WhiteSpace ::\n                             //   - \"Horizontal Tab (U+0009)\"\n                             //   - \"Space (U+0020)\"\n                             //\n                             // Comma :: ,\n                             case 0xfeff: // <BOM>\n+\n                             case 0x0009: // \\t\n+\n                             case 0x0020: // <space>\n+\n                             case 0x002c:\n                                 // ,\n                                 ++position;\n                                 continue;\n                                 // LineTerminator ::\n                                 //   - \"New Line (U+000A)\"\n                                 //   - \"Carriage Return (U+000D)\" [lookahead != \"New Line (U+000A)\"]\n                                 //   - \"Carriage Return (U+000D)\" \"New Line (U+000A)\"\n+\n                             case 0x000a:\n                                 // \\n\n                                 ++position;\n                                 ++lexer.line;\n                                 lexer.lineStart = position;\n                                 continue;\n                             case 0x000d:\n@@ -31639,25 +48402,27 @@\n                                 } else {\n                                     ++position;\n                                 }\n                                 ++lexer.line;\n                                 lexer.lineStart = position;\n                                 continue;\n                                 // Comment\n+\n                             case 0x0023:\n                                 // #\n                                 return readComment(lexer, position);\n                                 // Token ::\n                                 //   - Punctuator\n                                 //   - Name\n                                 //   - IntValue\n                                 //   - FloatValue\n                                 //   - StringValue\n                                 //\n                                 // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | }\n+\n                             case 0x0021:\n                                 // !\n                                 return createToken(lexer, _tokenKind.TokenKind.BANG, position, position + 1);\n                             case 0x0024:\n                                 // $\n                                 return createToken(lexer, _tokenKind.TokenKind.DOLLAR, position, position + 1);\n                             case 0x0026:\n@@ -31695,30 +48460,28 @@\n                                 return createToken(lexer, _tokenKind.TokenKind.BRACE_L, position, position + 1);\n                             case 0x007c:\n                                 // |\n                                 return createToken(lexer, _tokenKind.TokenKind.PIPE, position, position + 1);\n                             case 0x007d:\n                                 // }\n                                 return createToken(lexer, _tokenKind.TokenKind.BRACE_R, position, position + 1);\n-                            case 0x003f:\n-                                // ?\n-                                return createToken(lexer, _tokenKind.TokenKind.QUESTION_MARK, position, position + 1);\n                                 // StringValue\n+\n                             case 0x0022:\n                                 // \"\n                                 if (body.charCodeAt(position + 1) === 0x0022 && body.charCodeAt(position + 2) === 0x0022) {\n                                     return readBlockString(lexer, position);\n                                 }\n                                 return readString(lexer, position);\n-                        }\n-                        // IntValue | FloatValue (Digit | -)\n+                        } // IntValue | FloatValue (Digit | -)\n+\n                         if ((0, _characterClasses.isDigit)(code) || code === 0x002d) {\n                             return readNumber(lexer, position, code);\n-                        }\n-                        // Name\n+                        } // Name\n+\n                         if ((0, _characterClasses.isNameStart)(code)) {\n                             return readName(lexer, position);\n                         }\n                         throw (0, _syntaxError.syntaxError)(lexer.source, position, code === 0x0027 ? 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?' : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position) ? `Unexpected character: ${printCodePointAt(lexer, position)}.` : `Invalid character: ${printCodePointAt(lexer, position)}.`);\n                     }\n                     return createToken(lexer, _tokenKind.TokenKind.EOF, bodyLength, bodyLength);\n                 }\n@@ -31727,25 +48490,26 @@\n                  *\n                  * ```\n                  * Comment :: # CommentChar* [lookahead != CommentChar]\n                  *\n                  * CommentChar :: SourceCharacter but not LineTerminator\n                  * ```\n                  */\n+\n                 function readComment(lexer, start) {\n                     const body = lexer.source.body;\n                     const bodyLength = body.length;\n                     let position = start + 1;\n                     while (position < bodyLength) {\n-                        const code = body.charCodeAt(position);\n-                        // LineTerminator (\\n | \\r)\n+                        const code = body.charCodeAt(position); // LineTerminator (\\n | \\r)\n+\n                         if (code === 0x000a || code === 0x000d) {\n                             break;\n-                        }\n-                        // SourceCharacter\n+                        } // SourceCharacter\n+\n                         if (isUnicodeScalarValue(code)) {\n                             ++position;\n                         } else if (isSupplementaryCodePoint(body, position)) {\n                             position += 2;\n                         } else {\n                             break;\n                         }\n@@ -31777,66 +48541,69 @@\n                  * ExponentPart :: ExponentIndicator Sign? Digit+\n                  *\n                  * ExponentIndicator :: one of `e` `E`\n                  *\n                  * Sign :: one of + -\n                  * ```\n                  */\n+\n                 function readNumber(lexer, start, firstCode) {\n                     const body = lexer.source.body;\n                     let position = start;\n                     let code = firstCode;\n-                    let isFloat = false;\n-                    // NegativeSign (-)\n+                    let isFloat = false; // NegativeSign (-)\n+\n                     if (code === 0x002d) {\n                         code = body.charCodeAt(++position);\n-                    }\n-                    // Zero (0)\n+                    } // Zero (0)\n+\n                     if (code === 0x0030) {\n                         code = body.charCodeAt(++position);\n                         if ((0, _characterClasses.isDigit)(code)) {\n                             throw (0, _syntaxError.syntaxError)(lexer.source, position, `Invalid number, unexpected digit after 0: ${printCodePointAt(lexer, position)}.`);\n                         }\n                     } else {\n                         position = readDigits(lexer, position, code);\n                         code = body.charCodeAt(position);\n-                    }\n-                    // Full stop (.)\n+                    } // Full stop (.)\n+\n                     if (code === 0x002e) {\n                         isFloat = true;\n                         code = body.charCodeAt(++position);\n                         position = readDigits(lexer, position, code);\n                         code = body.charCodeAt(position);\n-                    }\n-                    // E e\n+                    } // E e\n+\n                     if (code === 0x0045 || code === 0x0065) {\n                         isFloat = true;\n-                        code = body.charCodeAt(++position);\n-                        // + -\n+                        code = body.charCodeAt(++position); // + -\n+\n                         if (code === 0x002b || code === 0x002d) {\n                             code = body.charCodeAt(++position);\n                         }\n                         position = readDigits(lexer, position, code);\n                         code = body.charCodeAt(position);\n-                    }\n-                    // Numbers cannot be followed by . or NameStart\n+                    } // Numbers cannot be followed by . or NameStart\n+\n                     if (code === 0x002e || (0, _characterClasses.isNameStart)(code)) {\n                         throw (0, _syntaxError.syntaxError)(lexer.source, position, `Invalid number, expected digit but got: ${printCodePointAt(lexer, position)}.`);\n                     }\n                     return createToken(lexer, isFloat ? _tokenKind.TokenKind.FLOAT : _tokenKind.TokenKind.INT, start, position, body.slice(start, position));\n                 }\n                 /**\n                  * Returns the new position in the source after reading one or more digits.\n                  */\n+\n                 function readDigits(lexer, start, firstCode) {\n                     if (!(0, _characterClasses.isDigit)(firstCode)) {\n                         throw (0, _syntaxError.syntaxError)(lexer.source, start, `Invalid number, expected digit but got: ${printCodePointAt(lexer, start)}.`);\n                     }\n                     const body = lexer.source.body;\n                     let position = start + 1; // +1 to skip first firstCode\n+\n                     while ((0, _characterClasses.isDigit)(body.charCodeAt(position))) {\n                         ++position;\n                     }\n                     return position;\n                 }\n                 /**\n                  * Reads a single-quote string token from the source file.\n@@ -31854,75 +48621,76 @@\n                  * EscapedUnicode ::\n                  *   - `{` HexDigit+ `}`\n                  *   - HexDigit HexDigit HexDigit HexDigit\n                  *\n                  * EscapedCharacter :: one of `\"` `\\` `/` `b` `f` `n` `r` `t`\n                  * ```\n                  */\n+\n                 function readString(lexer, start) {\n                     const body = lexer.source.body;\n                     const bodyLength = body.length;\n                     let position = start + 1;\n                     let chunkStart = position;\n                     let value = '';\n                     while (position < bodyLength) {\n-                        const code = body.charCodeAt(position);\n-                        // Closing Quote (\")\n+                        const code = body.charCodeAt(position); // Closing Quote (\")\n+\n                         if (code === 0x0022) {\n                             value += body.slice(chunkStart, position);\n                             return createToken(lexer, _tokenKind.TokenKind.STRING, start, position + 1, value);\n-                        }\n-                        // Escape Sequence (\\)\n+                        } // Escape Sequence (\\)\n+\n                         if (code === 0x005c) {\n                             value += body.slice(chunkStart, position);\n                             const escape = body.charCodeAt(position + 1) === 0x0075 // u\n                                 ?\n                                 body.charCodeAt(position + 2) === 0x007b // {\n                                 ?\n                                 readEscapedUnicodeVariableWidth(lexer, position) : readEscapedUnicodeFixedWidth(lexer, position) : readEscapedCharacter(lexer, position);\n                             value += escape.value;\n                             position += escape.size;\n                             chunkStart = position;\n                             continue;\n-                        }\n-                        // LineTerminator (\\n | \\r)\n+                        } // LineTerminator (\\n | \\r)\n+\n                         if (code === 0x000a || code === 0x000d) {\n                             break;\n-                        }\n-                        // SourceCharacter\n+                        } // SourceCharacter\n+\n                         if (isUnicodeScalarValue(code)) {\n                             ++position;\n                         } else if (isSupplementaryCodePoint(body, position)) {\n                             position += 2;\n                         } else {\n                             throw (0, _syntaxError.syntaxError)(lexer.source, position, `Invalid character within String: ${printCodePointAt(lexer, position)}.`);\n                         }\n                     }\n                     throw (0, _syntaxError.syntaxError)(lexer.source, position, 'Unterminated string.');\n-                }\n+                } // The string value and lexed size of an escape sequence.\n \n                 function readEscapedUnicodeVariableWidth(lexer, position) {\n                     const body = lexer.source.body;\n                     let point = 0;\n-                    let size = 3;\n-                    // Cannot be larger than 12 chars (\\u{00000000}).\n+                    let size = 3; // Cannot be larger than 12 chars (\\u{00000000}).\n+\n                     while (size < 12) {\n-                        const code = body.charCodeAt(position + size++);\n-                        // Closing Brace (})\n+                        const code = body.charCodeAt(position + size++); // Closing Brace (})\n+\n                         if (code === 0x007d) {\n                             // Must be at least 5 chars (\\u{0}) and encode a Unicode scalar value.\n                             if (size < 5 || !isUnicodeScalarValue(point)) {\n                                 break;\n                             }\n                             return {\n                                 value: String.fromCodePoint(point),\n                                 size\n                             };\n-                        }\n-                        // Append this hex digit to the code point.\n+                        } // Append this hex digit to the code point.\n+\n                         point = point << 4 | readHexDigit(code);\n                         if (point < 0) {\n                             break;\n                         }\n                     }\n                     throw (0, _syntaxError.syntaxError)(lexer.source, position, `Invalid Unicode escape sequence: \"${body.slice(position, position + size)}\".`);\n                 }\n@@ -31931,17 +48699,17 @@\n                     const body = lexer.source.body;\n                     const code = read16BitHexCode(body, position + 2);\n                     if (isUnicodeScalarValue(code)) {\n                         return {\n                             value: String.fromCodePoint(code),\n                             size: 6\n                         };\n-                    }\n-                    // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n+                    } // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n                     // a valid pair is formed.\n+\n                     if (isLeadingSurrogate(code)) {\n                         // \\u\n                         if (body.charCodeAt(position + 6) === 0x005c && body.charCodeAt(position + 7) === 0x0075) {\n                             const trailingCode = read16BitHexCode(body, position + 8);\n                             if (isTrailingSurrogate(trailingCode)) {\n                                 // JavaScript defines strings as a sequence of UTF-16 code units and\n                                 // encodes Unicode code points above U+FFFF using a surrogate pair of\n@@ -31961,14 +48729,15 @@\n                 /**\n                  * Reads four hexadecimal characters and returns the positive integer that 16bit\n                  * hexadecimal string represents. For example, \"000f\" will return 15, and \"dead\"\n                  * will return 57005.\n                  *\n                  * Returns a negative number if any char was not a valid hexadecimal digit.\n                  */\n+\n                 function read16BitHexCode(body, position) {\n                     // readHexDigit() returns -1 on error. ORing a negative value with any other\n                     // value always produces a negative value.\n                     return readHexDigit(body.charCodeAt(position)) << 12 | readHexDigit(body.charCodeAt(position + 1)) << 8 | readHexDigit(body.charCodeAt(position + 2)) << 4 | readHexDigit(body.charCodeAt(position + 3));\n                 }\n                 /**\n                  * Reads a hexadecimal character and returns its positive integer value (0-15).\n@@ -31980,14 +48749,15 @@\n                  * Returns -1 if the provided character code was not a valid hexadecimal digit.\n                  *\n                  * HexDigit :: one of\n                  *   - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n                  *   - `A` `B` `C` `D` `E` `F`\n                  *   - `a` `b` `c` `d` `e` `f`\n                  */\n+\n                 function readHexDigit(code) {\n                     return code >= 0x0030 && code <= 0x0039 // 0-9\n                         ?\n                         code - 0x0030 : code >= 0x0041 && code <= 0x0046 // A-F\n                         ?\n                         code - 0x0037 : code >= 0x0061 && code <= 0x0066 // a-f\n                         ?\n@@ -32001,14 +48771,15 @@\n                  * | `/`               | U+002F     | solidus (forward slash)      |\n                  * | `b`               | U+0008     | backspace                    |\n                  * | `f`               | U+000C     | form feed                    |\n                  * | `n`               | U+000A     | line feed (new line)         |\n                  * | `r`               | U+000D     | carriage return              |\n                  * | `t`               | U+0009     | horizontal tab               |\n                  */\n+\n                 function readEscapedCharacter(lexer, position) {\n                     const body = lexer.source.body;\n                     const code = body.charCodeAt(position + 1);\n                     switch (code) {\n                         case 0x0022:\n                             // \"\n                             return {\n@@ -32068,57 +48839,59 @@\n                  *   - `\"\"\"` BlockStringCharacter* `\"\"\"`\n                  *\n                  * BlockStringCharacter ::\n                  *   - SourceCharacter but not `\"\"\"` or `\\\"\"\"`\n                  *   - `\\\"\"\"`\n                  * ```\n                  */\n+\n                 function readBlockString(lexer, start) {\n                     const body = lexer.source.body;\n                     const bodyLength = body.length;\n                     let lineStart = lexer.lineStart;\n                     let position = start + 3;\n                     let chunkStart = position;\n                     let currentLine = '';\n                     const blockLines = [];\n                     while (position < bodyLength) {\n-                        const code = body.charCodeAt(position);\n-                        // Closing Triple-Quote (\"\"\")\n+                        const code = body.charCodeAt(position); // Closing Triple-Quote (\"\"\")\n+\n                         if (code === 0x0022 && body.charCodeAt(position + 1) === 0x0022 && body.charCodeAt(position + 2) === 0x0022) {\n                             currentLine += body.slice(chunkStart, position);\n                             blockLines.push(currentLine);\n                             const token = createToken(lexer, _tokenKind.TokenKind.BLOCK_STRING, start, position + 3,\n                                 // Return a string of the lines joined with U+000A.\n                                 (0, _blockString.dedentBlockStringLines)(blockLines).join('\\n'));\n                             lexer.line += blockLines.length - 1;\n                             lexer.lineStart = lineStart;\n                             return token;\n-                        }\n-                        // Escaped Triple-Quote (\\\"\"\")\n+                        } // Escaped Triple-Quote (\\\"\"\")\n+\n                         if (code === 0x005c && body.charCodeAt(position + 1) === 0x0022 && body.charCodeAt(position + 2) === 0x0022 && body.charCodeAt(position + 3) === 0x0022) {\n                             currentLine += body.slice(chunkStart, position);\n                             chunkStart = position + 1; // skip only slash\n+\n                             position += 4;\n                             continue;\n-                        }\n-                        // LineTerminator\n+                        } // LineTerminator\n+\n                         if (code === 0x000a || code === 0x000d) {\n                             currentLine += body.slice(chunkStart, position);\n                             blockLines.push(currentLine);\n                             if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) {\n                                 position += 2;\n                             } else {\n                                 ++position;\n                             }\n                             currentLine = '';\n                             chunkStart = position;\n                             lineStart = position;\n                             continue;\n-                        }\n-                        // SourceCharacter\n+                        } // SourceCharacter\n+\n                         if (isUnicodeScalarValue(code)) {\n                             ++position;\n                         } else if (isSupplementaryCodePoint(body, position)) {\n                             position += 2;\n                         } else {\n                             throw (0, _syntaxError.syntaxError)(lexer.source, position, `Invalid character within String: ${printCodePointAt(lexer, position)}.`);\n                         }\n@@ -32129,14 +48902,15 @@\n                  * Reads an alphanumeric + underscore name from the source.\n                  *\n                  * ```\n                  * Name ::\n                  *   - NameStart NameContinue* [lookahead != NameContinue]\n                  * ```\n                  */\n+\n                 function readName(lexer, start) {\n                     const body = lexer.source.body;\n                     const bodyLength = body.length;\n                     let position = start + 1;\n                     while (position < bodyLength) {\n                         const code = body.charCodeAt(position);\n                         if ((0, _characterClasses.isNameContinue)(code)) {\n@@ -32155,23 +48929,28 @@\n         \"../../../node_modules/graphql/language/location.mjs\":\n             /*!***********************************************************!*\\\n               !*** ../../../node_modules/graphql/language/location.mjs ***!\n               \\***********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getLocation = getLocation;\n                 var _invariant = __webpack_require__( /*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n                 const LineRegExp = /\\r\\n|[\\n\\r]/g;\n                 /**\n+                 * Represents a location in a Source.\n+                 */\n+\n+                /**\n                  * Takes a Source and a UTF-8 character offset, and returns the corresponding\n                  * line and column as a SourceLocation.\n                  */\n                 function getLocation(source, position) {\n                     let lastLineStart = 0;\n                     let line = 1;\n                     for (const match of source.body.matchAll(LineRegExp)) {\n@@ -32195,14 +48974,15 @@\n         \"../../../node_modules/graphql/language/parser.mjs\":\n             /*!*********************************************************!*\\\n               !*** ../../../node_modules/graphql/language/parser.mjs ***!\n               \\*********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.Parser = void 0;\n                 exports.parse = parse;\n@@ -32213,14 +48993,18 @@\n                 var _ast = __webpack_require__( /*! ./ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n                 var _directiveLocation = __webpack_require__( /*! ./directiveLocation.mjs */ \"../../../node_modules/graphql/language/directiveLocation.mjs\");\n                 var _kinds = __webpack_require__( /*! ./kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 var _lexer = __webpack_require__( /*! ./lexer.mjs */ \"../../../node_modules/graphql/language/lexer.mjs\");\n                 var _source = __webpack_require__( /*! ./source.mjs */ \"../../../node_modules/graphql/language/source.mjs\");\n                 var _tokenKind = __webpack_require__( /*! ./tokenKind.mjs */ \"../../../node_modules/graphql/language/tokenKind.mjs\");\n                 /**\n+                 * Configuration options to control parser behavior\n+                 */\n+\n+                /**\n                  * Given a GraphQL source, parses it into a Document.\n                  * Throws GraphQLError if a syntax error is encountered.\n                  */\n                 function parse(source, options) {\n                     const parser = new Parser(source, options);\n                     return parser.parseDocument();\n                 }\n@@ -32230,25 +49014,27 @@\n                  * Throws GraphQLError if a syntax error is encountered.\n                  *\n                  * This is useful within tools that operate upon GraphQL Values directly and\n                  * in isolation of complete GraphQL documents.\n                  *\n                  * Consider providing the results to the utility function: valueFromAST().\n                  */\n+\n                 function parseValue(source, options) {\n                     const parser = new Parser(source, options);\n                     parser.expectToken(_tokenKind.TokenKind.SOF);\n                     const value = parser.parseValueLiteral(false);\n                     parser.expectToken(_tokenKind.TokenKind.EOF);\n                     return value;\n                 }\n                 /**\n                  * Similar to parseValue(), but raises a parse error if it encounters a\n                  * variable. The return type will be a constant value.\n                  */\n+\n                 function parseConstValue(source, options) {\n                     const parser = new Parser(source, options);\n                     parser.expectToken(_tokenKind.TokenKind.SOF);\n                     const value = parser.parseConstValueLiteral();\n                     parser.expectToken(_tokenKind.TokenKind.EOF);\n                     return value;\n                 }\n@@ -32258,14 +49044,15 @@\n                  * Throws GraphQLError if a syntax error is encountered.\n                  *\n                  * This is useful within tools that operate upon GraphQL Types directly and\n                  * in isolation of complete GraphQL documents.\n                  *\n                  * Consider providing the results to the utility function: typeFromAST().\n                  */\n+\n                 function parseType(source, options) {\n                     const parser = new Parser(source, options);\n                     parser.expectToken(_tokenKind.TokenKind.SOF);\n                     const type = parser.parseTypeReference();\n                     parser.expectToken(_tokenKind.TokenKind.EOF);\n                     return type;\n                 }\n@@ -32276,35 +49063,38 @@\n                  *\n                  * It is still part of the internal API and is versioned, so any changes to it are never\n                  * considered breaking changes. If you still need to support multiple versions of the\n                  * library, please use the `versionInfo` variable for version detection.\n                  *\n                  * @internal\n                  */\n+\n                 class Parser {\n                     constructor(source, options = {}) {\n                         const sourceObj = (0, _source.isSource)(source) ? source : new _source.Source(source);\n                         this._lexer = new _lexer.Lexer(sourceObj);\n                         this._options = options;\n                         this._tokenCounter = 0;\n                     }\n                     /**\n                      * Converts a name lex token into a name parse node.\n                      */\n+\n                     parseName() {\n                         const token = this.expectToken(_tokenKind.TokenKind.NAME);\n                         return this.node(token, {\n                             kind: _kinds.Kind.NAME,\n                             value: token.value\n                         });\n-                    }\n-                    // Implements the parsing rules in the Document section.\n+                    } // Implements the parsing rules in the Document section.\n+\n                     /**\n                      * Document : Definition+\n                      */\n+\n                     parseDocument() {\n                         return this.node(this._lexer.token, {\n                             kind: _kinds.Kind.DOCUMENT,\n                             definitions: this.many(_tokenKind.TokenKind.SOF, this.parseDefinition, _tokenKind.TokenKind.EOF)\n                         });\n                     }\n                     /**\n@@ -32326,19 +49116,20 @@\n                      *   - ScalarTypeDefinition\n                      *   - ObjectTypeDefinition\n                      *   - InterfaceTypeDefinition\n                      *   - UnionTypeDefinition\n                      *   - EnumTypeDefinition\n                      *   - InputObjectTypeDefinition\n                      */\n+\n                     parseDefinition() {\n                         if (this.peek(_tokenKind.TokenKind.BRACE_L)) {\n                             return this.parseOperationDefinition();\n-                        }\n-                        // Many definitions begin with a description and require a lookahead.\n+                        } // Many definitions begin with a description and require a lookahead.\n+\n                         const hasDescription = this.peekDescription();\n                         const keywordToken = hasDescription ? this._lexer.lookahead() : this._lexer.token;\n                         if (keywordToken.kind === _tokenKind.TokenKind.NAME) {\n                             switch (keywordToken.value) {\n                                 case 'schema':\n                                     return this.parseSchemaDefinition();\n                                 case 'scalar':\n@@ -32367,21 +49158,22 @@\n                                 case 'fragment':\n                                     return this.parseFragmentDefinition();\n                                 case 'extend':\n                                     return this.parseTypeSystemExtension();\n                             }\n                         }\n                         throw this.unexpected(keywordToken);\n-                    }\n-                    // Implements the parsing rules in the Operations section.\n+                    } // Implements the parsing rules in the Operations section.\n+\n                     /**\n                      * OperationDefinition :\n                      *  - SelectionSet\n                      *  - OperationType Name? VariableDefinitions? Directives? SelectionSet\n                      */\n+\n                     parseOperationDefinition() {\n                         const start = this._lexer.token;\n                         if (this.peek(_tokenKind.TokenKind.BRACE_L)) {\n                             return this.node(start, {\n                                 kind: _kinds.Kind.OPERATION_DEFINITION,\n                                 operation: _ast.OperationTypeNode.QUERY,\n                                 name: undefined,\n@@ -32403,14 +49195,15 @@\n                             directives: this.parseDirectives(false),\n                             selectionSet: this.parseSelectionSet()\n                         });\n                     }\n                     /**\n                      * OperationType : one of query mutation subscription\n                      */\n+\n                     parseOperationType() {\n                         const operationToken = this.expectToken(_tokenKind.TokenKind.NAME);\n                         switch (operationToken.value) {\n                             case 'query':\n                                 return _ast.OperationTypeNode.QUERY;\n                             case 'mutation':\n                                 return _ast.OperationTypeNode.MUTATION;\n@@ -32418,65 +49211,71 @@\n                                 return _ast.OperationTypeNode.SUBSCRIPTION;\n                         }\n                         throw this.unexpected(operationToken);\n                     }\n                     /**\n                      * VariableDefinitions : ( VariableDefinition+ )\n                      */\n+\n                     parseVariableDefinitions() {\n                         return this.optionalMany(_tokenKind.TokenKind.PAREN_L, this.parseVariableDefinition, _tokenKind.TokenKind.PAREN_R);\n                     }\n                     /**\n                      * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n                      */\n+\n                     parseVariableDefinition() {\n                         return this.node(this._lexer.token, {\n                             kind: _kinds.Kind.VARIABLE_DEFINITION,\n                             variable: this.parseVariable(),\n                             type: (this.expectToken(_tokenKind.TokenKind.COLON), this.parseTypeReference()),\n                             defaultValue: this.expectOptionalToken(_tokenKind.TokenKind.EQUALS) ? this.parseConstValueLiteral() : undefined,\n                             directives: this.parseConstDirectives()\n                         });\n                     }\n                     /**\n                      * Variable : $ Name\n                      */\n+\n                     parseVariable() {\n                         const start = this._lexer.token;\n                         this.expectToken(_tokenKind.TokenKind.DOLLAR);\n                         return this.node(start, {\n                             kind: _kinds.Kind.VARIABLE,\n                             name: this.parseName()\n                         });\n                     }\n                     /**\n                      * ```\n                      * SelectionSet : { Selection+ }\n                      * ```\n                      */\n+\n                     parseSelectionSet() {\n                         return this.node(this._lexer.token, {\n                             kind: _kinds.Kind.SELECTION_SET,\n                             selections: this.many(_tokenKind.TokenKind.BRACE_L, this.parseSelection, _tokenKind.TokenKind.BRACE_R)\n                         });\n                     }\n                     /**\n                      * Selection :\n                      *   - Field\n                      *   - FragmentSpread\n                      *   - InlineFragment\n                      */\n+\n                     parseSelection() {\n                         return this.peek(_tokenKind.TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n                     }\n                     /**\n                      * Field : Alias? Name Arguments? Directives? SelectionSet?\n                      *\n                      * Alias : Name :\n                      */\n+\n                     parseField() {\n                         const start = this._lexer.token;\n                         const nameOrAlias = this.parseName();\n                         let alias;\n                         let name;\n                         if (this.expectOptionalToken(_tokenKind.TokenKind.COLON)) {\n                             alias = nameOrAlias;\n@@ -32485,76 +49284,52 @@\n                             name = nameOrAlias;\n                         }\n                         return this.node(start, {\n                             kind: _kinds.Kind.FIELD,\n                             alias,\n                             name,\n                             arguments: this.parseArguments(false),\n-                            // Experimental support for Client Controlled Nullability changes\n-                            // the grammar of Field:\n-                            nullabilityAssertion: this.parseNullabilityAssertion(),\n                             directives: this.parseDirectives(false),\n                             selectionSet: this.peek(_tokenKind.TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined\n                         });\n                     }\n-                    // TODO: add grammar comment after it finalizes\n-                    parseNullabilityAssertion() {\n-                        // Note: Client Controlled Nullability is experimental and may be changed or\n-                        // removed in the future.\n-                        if (this._options.experimentalClientControlledNullability !== true) {\n-                            return undefined;\n-                        }\n-                        const start = this._lexer.token;\n-                        let nullabilityAssertion;\n-                        if (this.expectOptionalToken(_tokenKind.TokenKind.BRACKET_L)) {\n-                            const innerModifier = this.parseNullabilityAssertion();\n-                            this.expectToken(_tokenKind.TokenKind.BRACKET_R);\n-                            nullabilityAssertion = this.node(start, {\n-                                kind: _kinds.Kind.LIST_NULLABILITY_OPERATOR,\n-                                nullabilityAssertion: innerModifier\n-                            });\n-                        }\n-                        if (this.expectOptionalToken(_tokenKind.TokenKind.BANG)) {\n-                            nullabilityAssertion = this.node(start, {\n-                                kind: _kinds.Kind.NON_NULL_ASSERTION,\n-                                nullabilityAssertion\n-                            });\n-                        } else if (this.expectOptionalToken(_tokenKind.TokenKind.QUESTION_MARK)) {\n-                            nullabilityAssertion = this.node(start, {\n-                                kind: _kinds.Kind.ERROR_BOUNDARY,\n-                                nullabilityAssertion\n-                            });\n-                        }\n-                        return nullabilityAssertion;\n-                    }\n+                    /**\n+                     * Arguments[Const] : ( Argument[?Const]+ )\n+                     */\n+\n                     parseArguments(isConst) {\n                         const item = isConst ? this.parseConstArgument : this.parseArgument;\n                         return this.optionalMany(_tokenKind.TokenKind.PAREN_L, item, _tokenKind.TokenKind.PAREN_R);\n                     }\n+                    /**\n+                     * Argument[Const] : Name : Value[?Const]\n+                     */\n+\n                     parseArgument(isConst = false) {\n                         const start = this._lexer.token;\n                         const name = this.parseName();\n                         this.expectToken(_tokenKind.TokenKind.COLON);\n                         return this.node(start, {\n                             kind: _kinds.Kind.ARGUMENT,\n                             name,\n                             value: this.parseValueLiteral(isConst)\n                         });\n                     }\n                     parseConstArgument() {\n                         return this.parseArgument(true);\n-                    }\n-                    // Implements the parsing rules in the Fragments section.\n+                    } // Implements the parsing rules in the Fragments section.\n+\n                     /**\n                      * Corresponds to both FragmentSpread and InlineFragment in the spec.\n                      *\n                      * FragmentSpread : ... FragmentName Directives?\n                      *\n                      * InlineFragment : ... TypeCondition? Directives? SelectionSet\n                      */\n+\n                     parseFragment() {\n                         const start = this._lexer.token;\n                         this.expectToken(_tokenKind.TokenKind.SPREAD);\n                         const hasTypeCondition = this.expectOptionalKeyword('on');\n                         if (!hasTypeCondition && this.peek(_tokenKind.TokenKind.NAME)) {\n                             return this.node(start, {\n                                 kind: _kinds.Kind.FRAGMENT_SPREAD,\n@@ -32571,20 +49346,21 @@\n                     }\n                     /**\n                      * FragmentDefinition :\n                      *   - fragment FragmentName on TypeCondition Directives? SelectionSet\n                      *\n                      * TypeCondition : NamedType\n                      */\n+\n                     parseFragmentDefinition() {\n                         const start = this._lexer.token;\n-                        this.expectKeyword('fragment');\n-                        // Legacy support for defining variables within fragments changes\n+                        this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n                         // the grammar of FragmentDefinition:\n                         //   - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n+\n                         if (this._options.allowLegacyFragmentVariables === true) {\n                             return this.node(start, {\n                                 kind: _kinds.Kind.FRAGMENT_DEFINITION,\n                                 name: this.parseFragmentName(),\n                                 variableDefinitions: this.parseVariableDefinitions(),\n                                 typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n                                 directives: this.parseDirectives(false),\n@@ -32598,20 +49374,41 @@\n                             directives: this.parseDirectives(false),\n                             selectionSet: this.parseSelectionSet()\n                         });\n                     }\n                     /**\n                      * FragmentName : Name but not `on`\n                      */\n+\n                     parseFragmentName() {\n                         if (this._lexer.token.value === 'on') {\n                             throw this.unexpected();\n                         }\n                         return this.parseName();\n-                    }\n+                    } // Implements the parsing rules in the Values section.\n+\n+                    /**\n+                     * Value[Const] :\n+                     *   - [~Const] Variable\n+                     *   - IntValue\n+                     *   - FloatValue\n+                     *   - StringValue\n+                     *   - BooleanValue\n+                     *   - NullValue\n+                     *   - EnumValue\n+                     *   - ListValue[?Const]\n+                     *   - ObjectValue[?Const]\n+                     *\n+                     * BooleanValue : one of `true` `false`\n+                     *\n+                     * NullValue : `null`\n+                     *\n+                     * EnumValue : Name but not `true`, `false` or `null`\n+                     */\n+\n                     parseValueLiteral(isConst) {\n                         const token = this._lexer.token;\n                         switch (token.kind) {\n                             case _tokenKind.TokenKind.BRACKET_L:\n                                 return this.parseList(isConst);\n                             case _tokenKind.TokenKind.BRACE_L:\n                                 return this.parseObject(isConst);\n@@ -32676,64 +49473,94 @@\n                         this.advanceLexer();\n                         return this.node(token, {\n                             kind: _kinds.Kind.STRING,\n                             value: token.value,\n                             block: token.kind === _tokenKind.TokenKind.BLOCK_STRING\n                         });\n                     }\n+                    /**\n+                     * ListValue[Const] :\n+                     *   - [ ]\n+                     *   - [ Value[?Const]+ ]\n+                     */\n+\n                     parseList(isConst) {\n                         const item = () => this.parseValueLiteral(isConst);\n                         return this.node(this._lexer.token, {\n                             kind: _kinds.Kind.LIST,\n                             values: this.any(_tokenKind.TokenKind.BRACKET_L, item, _tokenKind.TokenKind.BRACKET_R)\n                         });\n                     }\n+                    /**\n+                     * ```\n+                     * ObjectValue[Const] :\n+                     *   - { }\n+                     *   - { ObjectField[?Const]+ }\n+                     * ```\n+                     */\n+\n                     parseObject(isConst) {\n                         const item = () => this.parseObjectField(isConst);\n                         return this.node(this._lexer.token, {\n                             kind: _kinds.Kind.OBJECT,\n                             fields: this.any(_tokenKind.TokenKind.BRACE_L, item, _tokenKind.TokenKind.BRACE_R)\n                         });\n                     }\n+                    /**\n+                     * ObjectField[Const] : Name : Value[?Const]\n+                     */\n+\n                     parseObjectField(isConst) {\n                         const start = this._lexer.token;\n                         const name = this.parseName();\n                         this.expectToken(_tokenKind.TokenKind.COLON);\n                         return this.node(start, {\n                             kind: _kinds.Kind.OBJECT_FIELD,\n                             name,\n                             value: this.parseValueLiteral(isConst)\n                         });\n-                    }\n+                    } // Implements the parsing rules in the Directives section.\n+\n+                    /**\n+                     * Directives[Const] : Directive[?Const]+\n+                     */\n+\n                     parseDirectives(isConst) {\n                         const directives = [];\n                         while (this.peek(_tokenKind.TokenKind.AT)) {\n                             directives.push(this.parseDirective(isConst));\n                         }\n                         return directives;\n                     }\n                     parseConstDirectives() {\n                         return this.parseDirectives(true);\n                     }\n+                    /**\n+                     * ```\n+                     * Directive[Const] : @ Name Arguments[?Const]?\n+                     * ```\n+                     */\n+\n                     parseDirective(isConst) {\n                         const start = this._lexer.token;\n                         this.expectToken(_tokenKind.TokenKind.AT);\n                         return this.node(start, {\n                             kind: _kinds.Kind.DIRECTIVE,\n                             name: this.parseName(),\n                             arguments: this.parseArguments(isConst)\n                         });\n-                    }\n-                    // Implements the parsing rules in the Types section.\n+                    } // Implements the parsing rules in the Types section.\n+\n                     /**\n                      * Type :\n                      *   - NamedType\n                      *   - ListType\n                      *   - NonNullType\n                      */\n+\n                     parseTypeReference() {\n                         const start = this._lexer.token;\n                         let type;\n                         if (this.expectOptionalToken(_tokenKind.TokenKind.BRACKET_L)) {\n                             const innerType = this.parseTypeReference();\n                             this.expectToken(_tokenKind.TokenKind.BRACKET_R);\n                             type = this.node(start, {\n@@ -32750,37 +49577,40 @@\n                             });\n                         }\n                         return type;\n                     }\n                     /**\n                      * NamedType : Name\n                      */\n+\n                     parseNamedType() {\n                         return this.node(this._lexer.token, {\n                             kind: _kinds.Kind.NAMED_TYPE,\n                             name: this.parseName()\n                         });\n-                    }\n-                    // Implements the parsing rules in the Type Definition section.\n+                    } // Implements the parsing rules in the Type Definition section.\n+\n                     peekDescription() {\n                         return this.peek(_tokenKind.TokenKind.STRING) || this.peek(_tokenKind.TokenKind.BLOCK_STRING);\n                     }\n                     /**\n                      * Description : StringValue\n                      */\n+\n                     parseDescription() {\n                         if (this.peekDescription()) {\n                             return this.parseStringLiteral();\n                         }\n                     }\n                     /**\n                      * ```\n                      * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n                      * ```\n                      */\n+\n                     parseSchemaDefinition() {\n                         const start = this._lexer.token;\n                         const description = this.parseDescription();\n                         this.expectKeyword('schema');\n                         const directives = this.parseConstDirectives();\n                         const operationTypes = this.many(_tokenKind.TokenKind.BRACE_L, this.parseOperationTypeDefinition, _tokenKind.TokenKind.BRACE_R);\n                         return this.node(start, {\n@@ -32789,28 +49619,30 @@\n                             directives,\n                             operationTypes\n                         });\n                     }\n                     /**\n                      * OperationTypeDefinition : OperationType : NamedType\n                      */\n+\n                     parseOperationTypeDefinition() {\n                         const start = this._lexer.token;\n                         const operation = this.parseOperationType();\n                         this.expectToken(_tokenKind.TokenKind.COLON);\n                         const type = this.parseNamedType();\n                         return this.node(start, {\n                             kind: _kinds.Kind.OPERATION_TYPE_DEFINITION,\n                             operation,\n                             type\n                         });\n                     }\n                     /**\n                      * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n                      */\n+\n                     parseScalarTypeDefinition() {\n                         const start = this._lexer.token;\n                         const description = this.parseDescription();\n                         this.expectKeyword('scalar');\n                         const name = this.parseName();\n                         const directives = this.parseConstDirectives();\n                         return this.node(start, {\n@@ -32821,14 +49653,15 @@\n                         });\n                     }\n                     /**\n                      * ObjectTypeDefinition :\n                      *   Description?\n                      *   type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n                      */\n+\n                     parseObjectTypeDefinition() {\n                         const start = this._lexer.token;\n                         const description = this.parseDescription();\n                         this.expectKeyword('type');\n                         const name = this.parseName();\n                         const interfaces = this.parseImplementsInterfaces();\n                         const directives = this.parseConstDirectives();\n@@ -32843,29 +49676,32 @@\n                         });\n                     }\n                     /**\n                      * ImplementsInterfaces :\n                      *   - implements `&`? NamedType\n                      *   - ImplementsInterfaces & NamedType\n                      */\n+\n                     parseImplementsInterfaces() {\n                         return this.expectOptionalKeyword('implements') ? this.delimitedMany(_tokenKind.TokenKind.AMP, this.parseNamedType) : [];\n                     }\n                     /**\n                      * ```\n                      * FieldsDefinition : { FieldDefinition+ }\n                      * ```\n                      */\n+\n                     parseFieldsDefinition() {\n                         return this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseFieldDefinition, _tokenKind.TokenKind.BRACE_R);\n                     }\n                     /**\n                      * FieldDefinition :\n                      *   - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n                      */\n+\n                     parseFieldDefinition() {\n                         const start = this._lexer.token;\n                         const description = this.parseDescription();\n                         const name = this.parseName();\n                         const args = this.parseArgumentDefs();\n                         this.expectToken(_tokenKind.TokenKind.COLON);\n                         const type = this.parseTypeReference();\n@@ -32878,21 +49714,23 @@\n                             type,\n                             directives\n                         });\n                     }\n                     /**\n                      * ArgumentsDefinition : ( InputValueDefinition+ )\n                      */\n+\n                     parseArgumentDefs() {\n                         return this.optionalMany(_tokenKind.TokenKind.PAREN_L, this.parseInputValueDef, _tokenKind.TokenKind.PAREN_R);\n                     }\n                     /**\n                      * InputValueDefinition :\n                      *   - Description? Name : Type DefaultValue? Directives[Const]?\n                      */\n+\n                     parseInputValueDef() {\n                         const start = this._lexer.token;\n                         const description = this.parseDescription();\n                         const name = this.parseName();\n                         this.expectToken(_tokenKind.TokenKind.COLON);\n                         const type = this.parseTypeReference();\n                         let defaultValue;\n@@ -32909,14 +49747,15 @@\n                             directives\n                         });\n                     }\n                     /**\n                      * InterfaceTypeDefinition :\n                      *   - Description? interface Name Directives[Const]? FieldsDefinition?\n                      */\n+\n                     parseInterfaceTypeDefinition() {\n                         const start = this._lexer.token;\n                         const description = this.parseDescription();\n                         this.expectKeyword('interface');\n                         const name = this.parseName();\n                         const interfaces = this.parseImplementsInterfaces();\n                         const directives = this.parseConstDirectives();\n@@ -32930,14 +49769,15 @@\n                             fields\n                         });\n                     }\n                     /**\n                      * UnionTypeDefinition :\n                      *   - Description? union Name Directives[Const]? UnionMemberTypes?\n                      */\n+\n                     parseUnionTypeDefinition() {\n                         const start = this._lexer.token;\n                         const description = this.parseDescription();\n                         this.expectKeyword('union');\n                         const name = this.parseName();\n                         const directives = this.parseConstDirectives();\n                         const types = this.parseUnionMemberTypes();\n@@ -32950,21 +49790,23 @@\n                         });\n                     }\n                     /**\n                      * UnionMemberTypes :\n                      *   - = `|`? NamedType\n                      *   - UnionMemberTypes | NamedType\n                      */\n+\n                     parseUnionMemberTypes() {\n                         return this.expectOptionalToken(_tokenKind.TokenKind.EQUALS) ? this.delimitedMany(_tokenKind.TokenKind.PIPE, this.parseNamedType) : [];\n                     }\n                     /**\n                      * EnumTypeDefinition :\n                      *   - Description? enum Name Directives[Const]? EnumValuesDefinition?\n                      */\n+\n                     parseEnumTypeDefinition() {\n                         const start = this._lexer.token;\n                         const description = this.parseDescription();\n                         this.expectKeyword('enum');\n                         const name = this.parseName();\n                         const directives = this.parseConstDirectives();\n                         const values = this.parseEnumValuesDefinition();\n@@ -32977,20 +49819,22 @@\n                         });\n                     }\n                     /**\n                      * ```\n                      * EnumValuesDefinition : { EnumValueDefinition+ }\n                      * ```\n                      */\n+\n                     parseEnumValuesDefinition() {\n                         return this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseEnumValueDefinition, _tokenKind.TokenKind.BRACE_R);\n                     }\n                     /**\n                      * EnumValueDefinition : Description? EnumValue Directives[Const]?\n                      */\n+\n                     parseEnumValueDefinition() {\n                         const start = this._lexer.token;\n                         const description = this.parseDescription();\n                         const name = this.parseEnumValueName();\n                         const directives = this.parseConstDirectives();\n                         return this.node(start, {\n                             kind: _kinds.Kind.ENUM_VALUE_DEFINITION,\n@@ -32998,24 +49842,26 @@\n                             name,\n                             directives\n                         });\n                     }\n                     /**\n                      * EnumValue : Name but not `true`, `false` or `null`\n                      */\n+\n                     parseEnumValueName() {\n                         if (this._lexer.token.value === 'true' || this._lexer.token.value === 'false' || this._lexer.token.value === 'null') {\n                             throw (0, _syntaxError.syntaxError)(this._lexer.source, this._lexer.token.start, `${getTokenDesc(this._lexer.token)} is reserved and cannot be used for an enum value.`);\n                         }\n                         return this.parseName();\n                     }\n                     /**\n                      * InputObjectTypeDefinition :\n                      *   - Description? input Name Directives[Const]? InputFieldsDefinition?\n                      */\n+\n                     parseInputObjectTypeDefinition() {\n                         const start = this._lexer.token;\n                         const description = this.parseDescription();\n                         this.expectKeyword('input');\n                         const name = this.parseName();\n                         const directives = this.parseConstDirectives();\n                         const fields = this.parseInputFieldsDefinition();\n@@ -33028,14 +49874,15 @@\n                         });\n                     }\n                     /**\n                      * ```\n                      * InputFieldsDefinition : { InputValueDefinition+ }\n                      * ```\n                      */\n+\n                     parseInputFieldsDefinition() {\n                         return this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseInputValueDef, _tokenKind.TokenKind.BRACE_R);\n                     }\n                     /**\n                      * TypeSystemExtension :\n                      *   - SchemaExtension\n                      *   - TypeExtension\n@@ -33044,14 +49891,15 @@\n                      *   - ScalarTypeExtension\n                      *   - ObjectTypeExtension\n                      *   - InterfaceTypeExtension\n                      *   - UnionTypeExtension\n                      *   - EnumTypeExtension\n                      *   - InputObjectTypeDefinition\n                      */\n+\n                     parseTypeSystemExtension() {\n                         const keywordToken = this._lexer.lookahead();\n                         if (keywordToken.kind === _tokenKind.TokenKind.NAME) {\n                             switch (keywordToken.value) {\n                                 case 'schema':\n                                     return this.parseSchemaExtension();\n                                 case 'scalar':\n@@ -33073,14 +49921,15 @@\n                     /**\n                      * ```\n                      * SchemaExtension :\n                      *  - extend schema Directives[Const]? { OperationTypeDefinition+ }\n                      *  - extend schema Directives[Const]\n                      * ```\n                      */\n+\n                     parseSchemaExtension() {\n                         const start = this._lexer.token;\n                         this.expectKeyword('extend');\n                         this.expectKeyword('schema');\n                         const directives = this.parseConstDirectives();\n                         const operationTypes = this.optionalMany(_tokenKind.TokenKind.BRACE_L, this.parseOperationTypeDefinition, _tokenKind.TokenKind.BRACE_R);\n                         if (directives.length === 0 && operationTypes.length === 0) {\n@@ -33092,14 +49941,15 @@\n                             operationTypes\n                         });\n                     }\n                     /**\n                      * ScalarTypeExtension :\n                      *   - extend scalar Name Directives[Const]\n                      */\n+\n                     parseScalarTypeExtension() {\n                         const start = this._lexer.token;\n                         this.expectKeyword('extend');\n                         this.expectKeyword('scalar');\n                         const name = this.parseName();\n                         const directives = this.parseConstDirectives();\n                         if (directives.length === 0) {\n@@ -33113,14 +49963,15 @@\n                     }\n                     /**\n                      * ObjectTypeExtension :\n                      *  - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n                      *  - extend type Name ImplementsInterfaces? Directives[Const]\n                      *  - extend type Name ImplementsInterfaces\n                      */\n+\n                     parseObjectTypeExtension() {\n                         const start = this._lexer.token;\n                         this.expectKeyword('extend');\n                         this.expectKeyword('type');\n                         const name = this.parseName();\n                         const interfaces = this.parseImplementsInterfaces();\n                         const directives = this.parseConstDirectives();\n@@ -33138,14 +49989,15 @@\n                     }\n                     /**\n                      * InterfaceTypeExtension :\n                      *  - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n                      *  - extend interface Name ImplementsInterfaces? Directives[Const]\n                      *  - extend interface Name ImplementsInterfaces\n                      */\n+\n                     parseInterfaceTypeExtension() {\n                         const start = this._lexer.token;\n                         this.expectKeyword('extend');\n                         this.expectKeyword('interface');\n                         const name = this.parseName();\n                         const interfaces = this.parseImplementsInterfaces();\n                         const directives = this.parseConstDirectives();\n@@ -33162,14 +50014,15 @@\n                         });\n                     }\n                     /**\n                      * UnionTypeExtension :\n                      *   - extend union Name Directives[Const]? UnionMemberTypes\n                      *   - extend union Name Directives[Const]\n                      */\n+\n                     parseUnionTypeExtension() {\n                         const start = this._lexer.token;\n                         this.expectKeyword('extend');\n                         this.expectKeyword('union');\n                         const name = this.parseName();\n                         const directives = this.parseConstDirectives();\n                         const types = this.parseUnionMemberTypes();\n@@ -33184,14 +50037,15 @@\n                         });\n                     }\n                     /**\n                      * EnumTypeExtension :\n                      *   - extend enum Name Directives[Const]? EnumValuesDefinition\n                      *   - extend enum Name Directives[Const]\n                      */\n+\n                     parseEnumTypeExtension() {\n                         const start = this._lexer.token;\n                         this.expectKeyword('extend');\n                         this.expectKeyword('enum');\n                         const name = this.parseName();\n                         const directives = this.parseConstDirectives();\n                         const values = this.parseEnumValuesDefinition();\n@@ -33206,14 +50060,15 @@\n                         });\n                     }\n                     /**\n                      * InputObjectTypeExtension :\n                      *   - extend input Name Directives[Const]? InputFieldsDefinition\n                      *   - extend input Name Directives[Const]\n                      */\n+\n                     parseInputObjectTypeExtension() {\n                         const start = this._lexer.token;\n                         this.expectKeyword('extend');\n                         this.expectKeyword('input');\n                         const name = this.parseName();\n                         const directives = this.parseConstDirectives();\n                         const fields = this.parseInputFieldsDefinition();\n@@ -33229,14 +50084,15 @@\n                     }\n                     /**\n                      * ```\n                      * DirectiveDefinition :\n                      *   - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n                      * ```\n                      */\n+\n                     parseDirectiveDefinition() {\n                         const start = this._lexer.token;\n                         const description = this.parseDescription();\n                         this.expectKeyword('directive');\n                         this.expectToken(_tokenKind.TokenKind.AT);\n                         const name = this.parseName();\n                         const args = this.parseArgumentDefs();\n@@ -33253,14 +50109,15 @@\n                         });\n                     }\n                     /**\n                      * DirectiveLocations :\n                      *   - `|`? DirectiveLocation\n                      *   - DirectiveLocations | DirectiveLocation\n                      */\n+\n                     parseDirectiveLocations() {\n                         return this.delimitedMany(_tokenKind.TokenKind.PIPE, this.parseDirectiveLocation);\n                     }\n                     /*\n                      * DirectiveLocation :\n                      *   - ExecutableDirectiveLocation\n                      *   - TypeSystemDirectiveLocation\n@@ -33283,114 +50140,124 @@\n                      *   `INTERFACE`\n                      *   `UNION`\n                      *   `ENUM`\n                      *   `ENUM_VALUE`\n                      *   `INPUT_OBJECT`\n                      *   `INPUT_FIELD_DEFINITION`\n                      */\n+\n                     parseDirectiveLocation() {\n                         const start = this._lexer.token;\n                         const name = this.parseName();\n-                        if (Object.hasOwn(_directiveLocation.DirectiveLocation, name.value)) {\n+                        if (Object.prototype.hasOwnProperty.call(_directiveLocation.DirectiveLocation, name.value)) {\n                             return name;\n                         }\n                         throw this.unexpected(start);\n-                    }\n-                    // Core parsing utility functions\n+                    } // Core parsing utility functions\n+\n                     /**\n                      * Returns a node that, if configured to do so, sets a \"loc\" field as a\n                      * location object, used to identify the place in the source that created a\n                      * given parsed object.\n                      */\n+\n                     node(startToken, node) {\n                         if (this._options.noLocation !== true) {\n                             node.loc = new _ast.Location(startToken, this._lexer.lastToken, this._lexer.source);\n                         }\n                         return node;\n                     }\n                     /**\n                      * Determines if the next token is of a given kind\n                      */\n+\n                     peek(kind) {\n                         return this._lexer.token.kind === kind;\n                     }\n                     /**\n                      * If the next token is of the given kind, return that token after advancing the lexer.\n                      * Otherwise, do not change the parser state and throw an error.\n                      */\n+\n                     expectToken(kind) {\n                         const token = this._lexer.token;\n                         if (token.kind === kind) {\n                             this.advanceLexer();\n                             return token;\n                         }\n                         throw (0, _syntaxError.syntaxError)(this._lexer.source, token.start, `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`);\n                     }\n                     /**\n                      * If the next token is of the given kind, return \"true\" after advancing the lexer.\n                      * Otherwise, do not change the parser state and return \"false\".\n                      */\n+\n                     expectOptionalToken(kind) {\n                         const token = this._lexer.token;\n                         if (token.kind === kind) {\n                             this.advanceLexer();\n                             return true;\n                         }\n                         return false;\n                     }\n                     /**\n                      * If the next token is a given keyword, advance the lexer.\n                      * Otherwise, do not change the parser state and throw an error.\n                      */\n+\n                     expectKeyword(value) {\n                         const token = this._lexer.token;\n                         if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) {\n                             this.advanceLexer();\n                         } else {\n                             throw (0, _syntaxError.syntaxError)(this._lexer.source, token.start, `Expected \"${value}\", found ${getTokenDesc(token)}.`);\n                         }\n                     }\n                     /**\n                      * If the next token is a given keyword, return \"true\" after advancing the lexer.\n                      * Otherwise, do not change the parser state and return \"false\".\n                      */\n+\n                     expectOptionalKeyword(value) {\n                         const token = this._lexer.token;\n                         if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) {\n                             this.advanceLexer();\n                             return true;\n                         }\n                         return false;\n                     }\n                     /**\n                      * Helper function for creating an error when an unexpected lexed token is encountered.\n                      */\n+\n                     unexpected(atToken) {\n                         const token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n                         return (0, _syntaxError.syntaxError)(this._lexer.source, token.start, `Unexpected ${getTokenDesc(token)}.`);\n                     }\n                     /**\n                      * Returns a possibly empty list of parse nodes, determined by the parseFn.\n                      * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n                      * Advances the parser to the next lex token after the closing token.\n                      */\n+\n                     any(openKind, parseFn, closeKind) {\n                         this.expectToken(openKind);\n                         const nodes = [];\n                         while (!this.expectOptionalToken(closeKind)) {\n                             nodes.push(parseFn.call(this));\n                         }\n                         return nodes;\n                     }\n                     /**\n                      * Returns a list of parse nodes, determined by the parseFn.\n                      * It can be empty only if open token is missing otherwise it will always return non-empty list\n                      * that begins with a lex token of openKind and ends with a lex token of closeKind.\n                      * Advances the parser to the next lex token after the closing token.\n                      */\n+\n                     optionalMany(openKind, parseFn, closeKind) {\n                         if (this.expectOptionalToken(openKind)) {\n                             const nodes = [];\n                             do {\n                                 nodes.push(parseFn.call(this));\n                             } while (!this.expectOptionalToken(closeKind));\n                             return nodes;\n@@ -33398,27 +50265,29 @@\n                         return [];\n                     }\n                     /**\n                      * Returns a non-empty list of parse nodes, determined by the parseFn.\n                      * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n                      * Advances the parser to the next lex token after the closing token.\n                      */\n+\n                     many(openKind, parseFn, closeKind) {\n                         this.expectToken(openKind);\n                         const nodes = [];\n                         do {\n                             nodes.push(parseFn.call(this));\n                         } while (!this.expectOptionalToken(closeKind));\n                         return nodes;\n                     }\n                     /**\n                      * Returns a non-empty list of parse nodes, determined by the parseFn.\n                      * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n                      * Advances the parser to the next lex token after last item in the list.\n                      */\n+\n                     delimitedMany(delimiterKind, parseFn) {\n                         this.expectOptionalToken(delimiterKind);\n                         const nodes = [];\n                         do {\n                             nodes.push(parseFn.call(this));\n                         } while (this.expectOptionalToken(delimiterKind));\n                         return nodes;\n@@ -33427,15 +50296,15 @@\n                         const {\n                             maxTokens\n                         } = this._options;\n                         const token = this._lexer.advance();\n                         if (maxTokens !== undefined && token.kind !== _tokenKind.TokenKind.EOF) {\n                             ++this._tokenCounter;\n                             if (this._tokenCounter > maxTokens) {\n-                                throw (0, _syntaxError.syntaxError)(this._lexer.source, token.start, `Document contains more than ${maxTokens} tokens. Parsing aborted.`);\n+                                throw (0, _syntaxError.syntaxError)(this._lexer.source, token.start, `Document contains more that ${maxTokens} tokens. Parsing aborted.`);\n                             }\n                         }\n                     }\n                 }\n                 /**\n                  * A helper function to describe a token as a string for debugging.\n                  */\n@@ -33444,14 +50313,15 @@\n                 function getTokenDesc(token) {\n                     const value = token.value;\n                     return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n                 }\n                 /**\n                  * A helper function to describe a token kind as a string for debugging.\n                  */\n+\n                 function getTokenKindDesc(kind) {\n                     return (0, _lexer.isPunctuatorTokenKind)(kind) ? `\"${kind}\"` : kind;\n                 }\n \n                 /***/\n             }),\n \n@@ -33459,23 +50329,23 @@\n         \"../../../node_modules/graphql/language/predicates.mjs\":\n             /*!*************************************************************!*\\\n               !*** ../../../node_modules/graphql/language/predicates.mjs ***!\n               \\*************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isConstValueNode = isConstValueNode;\n                 exports.isDefinitionNode = isDefinitionNode;\n                 exports.isExecutableDefinitionNode = isExecutableDefinitionNode;\n-                exports.isNullabilityAssertionNode = isNullabilityAssertionNode;\n                 exports.isSelectionNode = isSelectionNode;\n                 exports.isTypeDefinitionNode = isTypeDefinitionNode;\n                 exports.isTypeExtensionNode = isTypeExtensionNode;\n                 exports.isTypeNode = isTypeNode;\n                 exports.isTypeSystemDefinitionNode = isTypeSystemDefinitionNode;\n                 exports.isTypeSystemExtensionNode = isTypeSystemExtensionNode;\n                 exports.isValueNode = isValueNode;\n@@ -33489,18 +50359,14 @@\n                     return node.kind === _kinds.Kind.OPERATION_DEFINITION || node.kind === _kinds.Kind.FRAGMENT_DEFINITION;\n                 }\n \n                 function isSelectionNode(node) {\n                     return node.kind === _kinds.Kind.FIELD || node.kind === _kinds.Kind.FRAGMENT_SPREAD || node.kind === _kinds.Kind.INLINE_FRAGMENT;\n                 }\n \n-                function isNullabilityAssertionNode(node) {\n-                    return node.kind === _kinds.Kind.LIST_NULLABILITY_OPERATOR || node.kind === _kinds.Kind.NON_NULL_ASSERTION || node.kind === _kinds.Kind.ERROR_BOUNDARY;\n-                }\n-\n                 function isValueNode(node) {\n                     return node.kind === _kinds.Kind.VARIABLE || node.kind === _kinds.Kind.INT || node.kind === _kinds.Kind.FLOAT || node.kind === _kinds.Kind.STRING || node.kind === _kinds.Kind.BOOLEAN || node.kind === _kinds.Kind.NULL || node.kind === _kinds.Kind.ENUM || node.kind === _kinds.Kind.LIST || node.kind === _kinds.Kind.OBJECT;\n                 }\n \n                 function isConstValueNode(node) {\n                     return isValueNode(node) && (node.kind === _kinds.Kind.LIST ? node.values.some(isConstValueNode) : node.kind === _kinds.Kind.OBJECT ? node.fields.some(field => isConstValueNode(field.value)) : node.kind !== _kinds.Kind.VARIABLE);\n                 }\n@@ -33532,14 +50398,15 @@\n         \"../../../node_modules/graphql/language/printLocation.mjs\":\n             /*!****************************************************************!*\\\n               !*** ../../../node_modules/graphql/language/printLocation.mjs ***!\n               \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.printLocation = printLocation;\n                 exports.printSourceLocation = printSourceLocation;\n@@ -33549,26 +50416,27 @@\n                  */\n                 function printLocation(location) {\n                     return printSourceLocation(location.source, (0, _location.getLocation)(location.source, location.start));\n                 }\n                 /**\n                  * Render a helpful description of the location in the GraphQL Source document.\n                  */\n+\n                 function printSourceLocation(source, sourceLocation) {\n                     const firstLineColumnOffset = source.locationOffset.column - 1;\n                     const body = ''.padStart(firstLineColumnOffset) + source.body;\n                     const lineIndex = sourceLocation.line - 1;\n                     const lineOffset = source.locationOffset.line - 1;\n                     const lineNum = sourceLocation.line + lineOffset;\n                     const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n                     const columnNum = sourceLocation.column + columnOffset;\n                     const locationStr = `${source.name}:${lineNum}:${columnNum}\\n`;\n                     const lines = body.split(/\\r\\n|[\\n\\r]/g);\n-                    const locationLine = lines[lineIndex];\n-                    // Special case for minified documents\n+                    const locationLine = lines[lineIndex]; // Special case for minified documents\n+\n                     if (locationLine.length > 120) {\n                         const subLineIndex = Math.floor(columnNum / 80);\n                         const subLineColumnNum = columnNum % 80;\n                         const subLines = [];\n                         for (let i = 0; i < locationLine.length; i += 80) {\n                             subLines.push(locationLine.slice(i, i + 80));\n                         }\n@@ -33599,60 +50467,74 @@\n         \"../../../node_modules/graphql/language/printString.mjs\":\n             /*!**************************************************************!*\\\n               !*** ../../../node_modules/graphql/language/printString.mjs ***!\n               \\**************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.printString = printString;\n                 /**\n                  * Prints a string as a GraphQL StringValue literal. Replaces control characters\n                  * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n                  */\n                 function printString(str) {\n                     return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n-                }\n-                // eslint-disable-next-line no-control-regex\n+                } // eslint-disable-next-line no-control-regex\n+\n                 const escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n \n                 function escapedReplacer(str) {\n                     return escapeSequences[str.charCodeAt(0)];\n-                }\n-                // prettier-ignore\n-                const escapeSequences = ['\\\\u0000', '\\\\u0001', '\\\\u0002', '\\\\u0003', '\\\\u0004', '\\\\u0005', '\\\\u0006', '\\\\u0007', '\\\\b', '\\\\t', '\\\\n', '\\\\u000B', '\\\\f', '\\\\r', '\\\\u000E', '\\\\u000F', '\\\\u0010', '\\\\u0011', '\\\\u0012', '\\\\u0013', '\\\\u0014', '\\\\u0015', '\\\\u0016', '\\\\u0017', '\\\\u0018', '\\\\u0019', '\\\\u001A', '\\\\u001B', '\\\\u001C', '\\\\u001D', '\\\\u001E', '\\\\u001F', '', '', '\\\\\"', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '\\\\\\\\', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '\\\\u007F', '\\\\u0080', '\\\\u0081', '\\\\u0082', '\\\\u0083', '\\\\u0084', '\\\\u0085', '\\\\u0086', '\\\\u0087', '\\\\u0088', '\\\\u0089', '\\\\u008A', '\\\\u008B', '\\\\u008C', '\\\\u008D', '\\\\u008E', '\\\\u008F', '\\\\u0090', '\\\\u0091', '\\\\u0092', '\\\\u0093', '\\\\u0094', '\\\\u0095', '\\\\u0096', '\\\\u0097', '\\\\u0098', '\\\\u0099', '\\\\u009A', '\\\\u009B', '\\\\u009C', '\\\\u009D', '\\\\u009E', '\\\\u009F'];\n+                } // prettier-ignore\n+\n+                const escapeSequences = ['\\\\u0000', '\\\\u0001', '\\\\u0002', '\\\\u0003', '\\\\u0004', '\\\\u0005', '\\\\u0006', '\\\\u0007', '\\\\b', '\\\\t', '\\\\n', '\\\\u000B', '\\\\f', '\\\\r', '\\\\u000E', '\\\\u000F', '\\\\u0010', '\\\\u0011', '\\\\u0012', '\\\\u0013', '\\\\u0014', '\\\\u0015', '\\\\u0016', '\\\\u0017', '\\\\u0018', '\\\\u0019', '\\\\u001A', '\\\\u001B', '\\\\u001C', '\\\\u001D', '\\\\u001E', '\\\\u001F', '', '', '\\\\\"', '', '', '', '', '', '', '', '', '', '', '', '', '',\n+                    // 2F\n+                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n+                    // 3F\n+                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n+                    // 4F\n+                    '', '', '', '', '', '', '', '', '', '', '', '', '\\\\\\\\', '', '', '',\n+                    // 5F\n+                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n+                    // 6F\n+                    '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '\\\\u007F', '\\\\u0080', '\\\\u0081', '\\\\u0082', '\\\\u0083', '\\\\u0084', '\\\\u0085', '\\\\u0086', '\\\\u0087', '\\\\u0088', '\\\\u0089', '\\\\u008A', '\\\\u008B', '\\\\u008C', '\\\\u008D', '\\\\u008E', '\\\\u008F', '\\\\u0090', '\\\\u0091', '\\\\u0092', '\\\\u0093', '\\\\u0094', '\\\\u0095', '\\\\u0096', '\\\\u0097', '\\\\u0098', '\\\\u0099', '\\\\u009A', '\\\\u009B', '\\\\u009C', '\\\\u009D', '\\\\u009E', '\\\\u009F'\n+                ];\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/language/printer.mjs\":\n             /*!**********************************************************!*\\\n               !*** ../../../node_modules/graphql/language/printer.mjs ***!\n               \\**********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.print = print;\n                 var _blockString = __webpack_require__( /*! ./blockString.mjs */ \"../../../node_modules/graphql/language/blockString.mjs\");\n                 var _printString = __webpack_require__( /*! ./printString.mjs */ \"../../../node_modules/graphql/language/printString.mjs\");\n                 var _visitor = __webpack_require__( /*! ./visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n                 /**\n                  * Converts an AST into a string, using one set of reasonable\n                  * formatting rules.\n                  */\n+\n                 function print(ast) {\n                     return (0, _visitor.visit)(ast, printDocASTReducer);\n                 }\n                 const MAX_LINE_LENGTH = 80;\n                 const printDocASTReducer = {\n                     Name: {\n                         leave: node => node.value\n@@ -33663,17 +50545,17 @@\n                     // Document\n                     Document: {\n                         leave: node => join(node.definitions, '\\n\\n')\n                     },\n                     OperationDefinition: {\n                         leave(node) {\n                             const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n-                            const prefix = join([node.operation, join([node.name, varDefs]), join(node.directives, ' ')], ' ');\n-                            // Anonymous queries with no directives or variable definitions can use\n+                            const prefix = join([node.operation, join([node.name, varDefs]), join(node.directives, ' ')], ' '); // Anonymous queries with no directives or variable definitions can use\n                             // the query short form.\n+\n                             return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n                         }\n                     },\n                     VariableDefinition: {\n                         leave: ({\n                             variable,\n                             type,\n@@ -33687,58 +50569,31 @@\n                         }) => block(selections)\n                     },\n                     Field: {\n                         leave({\n                             alias,\n                             name,\n                             arguments: args,\n-                            nullabilityAssertion,\n                             directives,\n                             selectionSet\n                         }) {\n-                            const prefix = join([wrap('', alias, ': '), name], '');\n+                            const prefix = wrap('', alias, ': ') + name;\n                             let argsLine = prefix + wrap('(', join(args, ', '), ')');\n                             if (argsLine.length > MAX_LINE_LENGTH) {\n                                 argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n                             }\n-                            return join([argsLine,\n-                                // Note: Client Controlled Nullability is experimental and may be\n-                                // changed or removed in the future.\n-                                nullabilityAssertion, wrap(' ', join(directives, ' ')), wrap(' ', selectionSet)\n-                            ]);\n+                            return join([argsLine, join(directives, ' '), selectionSet], ' ');\n                         }\n                     },\n                     Argument: {\n                         leave: ({\n                             name,\n                             value\n                         }) => name + ': ' + value\n                     },\n-                    // Nullability Modifiers\n-                    ListNullabilityOperator: {\n-                        leave({\n-                            nullabilityAssertion\n-                        }) {\n-                            return join(['[', nullabilityAssertion, ']']);\n-                        }\n-                    },\n-                    NonNullAssertion: {\n-                        leave({\n-                            nullabilityAssertion\n-                        }) {\n-                            return join([nullabilityAssertion, '!']);\n-                        }\n-                    },\n-                    ErrorBoundary: {\n-                        leave({\n-                            nullabilityAssertion\n-                        }) {\n-                            return join([nullabilityAssertion, '?']);\n-                        }\n-                    },\n                     // Fragments\n                     FragmentSpread: {\n                         leave: ({\n                             name,\n                             directives\n                         }) => '...' + name + wrap(' ', join(directives, ' '))\n                     },\n@@ -33747,21 +50602,21 @@\n                             typeCondition,\n                             directives,\n                             selectionSet\n                         }) => join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ')\n                     },\n                     FragmentDefinition: {\n                         leave: ({\n-                                name,\n-                                typeCondition,\n-                                variableDefinitions,\n-                                directives,\n-                                selectionSet\n-                            }) =>\n-                            // Note: fragment variable definitions are experimental and may be changed\n+                                    name,\n+                                    typeCondition,\n+                                    variableDefinitions,\n+                                    directives,\n+                                    selectionSet\n+                                } // Note: fragment variable definitions are experimental and may be changed\n+                            ) =>\n                             // or removed in the future.\n                             `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` + `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` + selectionSet\n                     },\n                     // Value\n                     IntValue: {\n                         leave: ({\n                             value\n@@ -33772,15 +50627,15 @@\n                             value\n                         }) => value\n                     },\n                     StringValue: {\n                         leave: ({\n                             value,\n                             block: isBlockString\n-                        }) => isBlockString === true ? (0, _blockString.printBlockString)(value) : (0, _printString.printString)(value)\n+                        }) => isBlockString ? (0, _blockString.printBlockString)(value) : (0, _printString.printString)(value)\n                     },\n                     BooleanValue: {\n                         leave: ({\n                             value\n                         }) => value ? 'true' : 'false'\n                     },\n                     NullValue: {\n@@ -33790,29 +50645,20 @@\n                         leave: ({\n                             value\n                         }) => value\n                     },\n                     ListValue: {\n                         leave: ({\n                             values\n-                        }) => {\n-                            const valuesLine = '[' + join(values, ', ') + ']';\n-                            if (valuesLine.length > MAX_LINE_LENGTH) {\n-                                return '[\\n' + indent(join(values, '\\n')) + '\\n]';\n-                            }\n-                            return valuesLine;\n-                        }\n+                        }) => '[' + join(values, ', ') + ']'\n                     },\n                     ObjectValue: {\n                         leave: ({\n                             fields\n-                        }) => {\n-                            const fieldsLine = '{ ' + join(fields, ', ') + ' }';\n-                            return fieldsLine.length > MAX_LINE_LENGTH ? block(fields) : fieldsLine;\n-                        }\n+                        }) => '{' + join(fields, ', ') + '}'\n                     },\n                     ObjectField: {\n                         leave: ({\n                             name,\n                             value\n                         }) => name + ': ' + value\n                     },\n@@ -33986,38 +50832,43 @@\n                         }) => join(['extend input', name, join(directives, ' '), block(fields)], ' ')\n                     }\n                 };\n                 /**\n                  * Given maybeArray, print an empty string if it is null or empty, otherwise\n                  * print all items together separated by separator if provided\n                  */\n+\n                 function join(maybeArray, separator = '') {\n                     var _maybeArray$filter$jo;\n                     return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(x => x).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : '';\n                 }\n                 /**\n                  * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n                  */\n+\n                 function block(array) {\n                     return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n                 }\n                 /**\n                  * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n                  */\n+\n                 function wrap(start, maybeString, end = '') {\n                     return maybeString != null && maybeString !== '' ? start + maybeString + end : '';\n                 }\n \n                 function indent(str) {\n-                    return wrap('  ', str.replaceAll('\\n', '\\n  '));\n+                    return wrap('  ', str.replace(/\\n/g, '\\n  '));\n                 }\n \n                 function hasMultilineItems(maybeArray) {\n                     var _maybeArray$some;\n+\n                     // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+\n                     /* c8 ignore next */\n                     return (_maybeArray$some = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.some(str => str.includes('\\n'))) !== null && _maybeArray$some !== void 0 ? _maybeArray$some : false;\n                 }\n \n                 /***/\n             }),\n \n@@ -34025,35 +50876,38 @@\n         \"../../../node_modules/graphql/language/source.mjs\":\n             /*!*********************************************************!*\\\n               !*** ../../../node_modules/graphql/language/source.mjs ***!\n               \\*********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.Source = void 0;\n                 exports.isSource = isSource;\n                 var _devAssert = __webpack_require__( /*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n+                var _inspect = __webpack_require__( /*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n                 var _instanceOf = __webpack_require__( /*! ../jsutils/instanceOf.mjs */ \"../../../node_modules/graphql/jsutils/instanceOf.mjs\");\n                 /**\n                  * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n                  * optional, but they are useful for clients who store GraphQL documents in source files.\n                  * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n                  * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n                  * The `line` and `column` properties in `locationOffset` are 1-indexed.\n                  */\n                 class Source {\n                     constructor(body, name = 'GraphQL request', locationOffset = {\n                         line: 1,\n                         column: 1\n                     }) {\n+                        typeof body === 'string' || (0, _devAssert.devAssert)(false, `Body must be a string. Received: ${(0, _inspect.inspect)(body)}.`);\n                         this.body = body;\n                         this.name = name;\n                         this.locationOffset = locationOffset;\n                         this.locationOffset.line > 0 || (0, _devAssert.devAssert)(false, 'line in locationOffset is 1-indexed and must be positive.');\n                         this.locationOffset.column > 0 || (0, _devAssert.devAssert)(false, 'column in locationOffset is 1-indexed and must be positive.');\n                     }\n                     get[Symbol.toStringTag]() {\n@@ -34078,14 +50932,15 @@\n         \"../../../node_modules/graphql/language/tokenKind.mjs\":\n             /*!************************************************************!*\\\n               !*** ../../../node_modules/graphql/language/tokenKind.mjs ***!\n               \\************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.TokenKind = void 0;\n                 /**\n@@ -34093,15 +50948,14 @@\n                  * lexer emits.\n                  */\n                 var TokenKind;\n                 (function(TokenKind) {\n                     TokenKind['SOF'] = '<SOF>';\n                     TokenKind['EOF'] = '<EOF>';\n                     TokenKind['BANG'] = '!';\n-                    TokenKind['QUESTION_MARK'] = '?';\n                     TokenKind['DOLLAR'] = '$';\n                     TokenKind['AMP'] = '&';\n                     TokenKind['PAREN_L'] = '(';\n                     TokenKind['PAREN_R'] = ')';\n                     TokenKind['SPREAD'] = '...';\n                     TokenKind['COLON'] = ':';\n                     TokenKind['EQUALS'] = '=';\n@@ -34115,57 +50969,150 @@\n                     TokenKind['INT'] = 'Int';\n                     TokenKind['FLOAT'] = 'Float';\n                     TokenKind['STRING'] = 'String';\n                     TokenKind['BLOCK_STRING'] = 'BlockString';\n                     TokenKind['COMMENT'] = 'Comment';\n                 })(TokenKind || (exports.TokenKind = TokenKind = {}));\n \n+                /**\n+                 * The enum type representing the token kinds values.\n+                 *\n+                 * @deprecated Please use `TokenKind`. Will be remove in v17.\n+                 */\n+\n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/language/visitor.mjs\":\n             /*!**********************************************************!*\\\n               !*** ../../../node_modules/graphql/language/visitor.mjs ***!\n               \\**********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.BREAK = void 0;\n                 exports.getEnterLeaveForKind = getEnterLeaveForKind;\n+                exports.getVisitFn = getVisitFn;\n                 exports.visit = visit;\n                 exports.visitInParallel = visitInParallel;\n                 var _devAssert = __webpack_require__( /*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n                 var _inspect = __webpack_require__( /*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n                 var _ast = __webpack_require__( /*! ./ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n                 var _kinds = __webpack_require__( /*! ./kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n+                /**\n+                 * A visitor is provided to visit, it contains the collection of\n+                 * relevant functions to be called during the visitor's traversal.\n+                 */\n+\n                 const BREAK = exports.BREAK = Object.freeze({});\n+                /**\n+                 * visit() will walk through an AST using a depth-first traversal, calling\n+                 * the visitor's enter function at each node in the traversal, and calling the\n+                 * leave function after visiting that node and all of its child nodes.\n+                 *\n+                 * By returning different values from the enter and leave functions, the\n+                 * behavior of the visitor can be altered, including skipping over a sub-tree of\n+                 * the AST (by returning false), editing the AST by returning a value or null\n+                 * to remove the value, or to stop the whole traversal by returning BREAK.\n+                 *\n+                 * When using visit() to edit an AST, the original AST will not be modified, and\n+                 * a new version of the AST with the changes applied will be returned from the\n+                 * visit function.\n+                 *\n+                 * ```ts\n+                 * const editedAST = visit(ast, {\n+                 *   enter(node, key, parent, path, ancestors) {\n+                 *     // @return\n+                 *     //   undefined: no action\n+                 *     //   false: skip visiting this node\n+                 *     //   visitor.BREAK: stop visiting altogether\n+                 *     //   null: delete this node\n+                 *     //   any value: replace this node with the returned value\n+                 *   },\n+                 *   leave(node, key, parent, path, ancestors) {\n+                 *     // @return\n+                 *     //   undefined: no action\n+                 *     //   false: no action\n+                 *     //   visitor.BREAK: stop visiting altogether\n+                 *     //   null: delete this node\n+                 *     //   any value: replace this node with the returned value\n+                 *   }\n+                 * });\n+                 * ```\n+                 *\n+                 * Alternatively to providing enter() and leave() functions, a visitor can\n+                 * instead provide functions named the same as the kinds of AST nodes, or\n+                 * enter/leave visitors at a named key, leading to three permutations of the\n+                 * visitor API:\n+                 *\n+                 * 1) Named visitors triggered when entering a node of a specific kind.\n+                 *\n+                 * ```ts\n+                 * visit(ast, {\n+                 *   Kind(node) {\n+                 *     // enter the \"Kind\" node\n+                 *   }\n+                 * })\n+                 * ```\n+                 *\n+                 * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n+                 *\n+                 * ```ts\n+                 * visit(ast, {\n+                 *   Kind: {\n+                 *     enter(node) {\n+                 *       // enter the \"Kind\" node\n+                 *     }\n+                 *     leave(node) {\n+                 *       // leave the \"Kind\" node\n+                 *     }\n+                 *   }\n+                 * })\n+                 * ```\n+                 *\n+                 * 3) Generic visitors that trigger upon entering and leaving any node.\n+                 *\n+                 * ```ts\n+                 * visit(ast, {\n+                 *   enter(node) {\n+                 *     // enter any node\n+                 *   },\n+                 *   leave(node) {\n+                 *     // leave any node\n+                 *   }\n+                 * })\n+                 * ```\n+                 */\n \n                 function visit(root, visitor, visitorKeys = _ast.QueryDocumentKeys) {\n                     const enterLeaveMap = new Map();\n                     for (const kind of Object.values(_kinds.Kind)) {\n                         enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n                     }\n                     /* eslint-disable no-undef-init */\n+\n                     let stack = undefined;\n                     let inArray = Array.isArray(root);\n                     let keys = [root];\n                     let index = -1;\n                     let edits = [];\n                     let node = root;\n                     let key = undefined;\n                     let parent = undefined;\n                     const path = [];\n                     const ancestors = [];\n                     /* eslint-enable no-undef-init */\n+\n                     do {\n                         index++;\n                         const isLeaving = index === keys.length;\n                         const isEdited = isLeaving && edits.length !== 0;\n                         if (isLeaving) {\n                             key = ancestors.length === 0 ? undefined : path[path.length - 1];\n                             node = parent;\n@@ -34191,15 +51138,15 @@\n                                 }\n                             }\n                             index = stack.index;\n                             keys = stack.keys;\n                             edits = stack.edits;\n                             inArray = stack.inArray;\n                             stack = stack.prev;\n-                        } else if (parent != null) {\n+                        } else if (parent) {\n                             key = inArray ? index : keys[index];\n                             node = parent[key];\n                             if (node === null || node === undefined) {\n                                 continue;\n                             }\n                             path.push(key);\n                         }\n@@ -34231,57 +51178,58 @@\n                         }\n                         if (result === undefined && isEdited) {\n                             edits.push([key, node]);\n                         }\n                         if (isLeaving) {\n                             path.pop();\n                         } else {\n-                            var _visitorKeys$node$kin;\n+                            var _node$kind;\n                             stack = {\n                                 inArray,\n                                 index,\n                                 keys,\n                                 edits,\n                                 prev: stack\n                             };\n                             inArray = Array.isArray(node);\n-                            keys = inArray ? node : (_visitorKeys$node$kin = visitorKeys[node.kind]) !== null && _visitorKeys$node$kin !== void 0 ? _visitorKeys$node$kin : [];\n+                            keys = inArray ? node : (_node$kind = visitorKeys[node.kind]) !== null && _node$kind !== void 0 ? _node$kind : [];\n                             index = -1;\n                             edits = [];\n-                            if (parent != null) {\n+                            if (parent) {\n                                 ancestors.push(parent);\n                             }\n                             parent = node;\n                         }\n                     } while (stack !== undefined);\n                     if (edits.length !== 0) {\n                         // New root\n-                        return edits.at(-1)[1];\n+                        return edits[edits.length - 1][1];\n                     }\n                     return root;\n                 }\n                 /**\n                  * Creates a new visitor instance which delegates to many visitors to run in\n                  * parallel. Each visitor will be visited for each node before moving on.\n                  *\n                  * If a prior visitor edits a node, no following visitors will see that node.\n                  */\n+\n                 function visitInParallel(visitors) {\n                     const skipping = new Array(visitors.length).fill(null);\n                     const mergedVisitor = Object.create(null);\n                     for (const kind of Object.values(_kinds.Kind)) {\n                         let hasVisitor = false;\n                         const enterList = new Array(visitors.length).fill(undefined);\n                         const leaveList = new Array(visitors.length).fill(undefined);\n                         for (let i = 0; i < visitors.length; ++i) {\n                             const {\n                                 enter,\n                                 leave\n                             } = getEnterLeaveForKind(visitors[i], kind);\n-                            hasVisitor ||= enter != null || leave != null;\n+                            hasVisitor || (hasVisitor = enter != null || leave != null);\n                             enterList[i] = enter;\n                             leaveList[i] = leave;\n                         }\n                         if (!hasVisitor) {\n                             continue;\n                         }\n                         const mergedEnterLeave = {\n@@ -34321,57 +51269,79 @@\n                         mergedVisitor[kind] = mergedEnterLeave;\n                     }\n                     return mergedVisitor;\n                 }\n                 /**\n                  * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n                  */\n+\n                 function getEnterLeaveForKind(visitor, kind) {\n                     const kindVisitor = visitor[kind];\n                     if (typeof kindVisitor === 'object') {\n                         // { Kind: { enter() {}, leave() {} } }\n                         return kindVisitor;\n                     } else if (typeof kindVisitor === 'function') {\n                         // { Kind() {} }\n                         return {\n                             enter: kindVisitor,\n                             leave: undefined\n                         };\n-                    }\n-                    // { enter() {}, leave() {} }\n+                    } // { enter() {}, leave() {} }\n+\n                     return {\n                         enter: visitor.enter,\n                         leave: visitor.leave\n                     };\n                 }\n+                /**\n+                 * Given a visitor instance, if it is leaving or not, and a node kind, return\n+                 * the function the visitor runtime should call.\n+                 *\n+                 * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17\n+                 */\n+\n+                /* c8 ignore next 8 */\n+\n+                function getVisitFn(visitor, kind, isLeaving) {\n+                    const {\n+                        enter,\n+                        leave\n+                    } = getEnterLeaveForKind(visitor, kind);\n+                    return isLeaving ? leave : enter;\n+                }\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/type/assertName.mjs\":\n             /*!*********************************************************!*\\\n               !*** ../../../node_modules/graphql/type/assertName.mjs ***!\n               \\*********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.assertEnumValueName = assertEnumValueName;\n                 exports.assertName = assertName;\n+                var _devAssert = __webpack_require__( /*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n                 var _GraphQLError = __webpack_require__( /*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 var _characterClasses = __webpack_require__( /*! ../language/characterClasses.mjs */ \"../../../node_modules/graphql/language/characterClasses.mjs\");\n                 /**\n                  * Upholds the spec rules about naming.\n                  */\n+\n                 function assertName(name) {\n+                    name != null || (0, _devAssert.devAssert)(false, 'Must provide name.');\n+                    typeof name === 'string' || (0, _devAssert.devAssert)(false, 'Expected name to be a string.');\n                     if (name.length === 0) {\n                         throw new _GraphQLError.GraphQLError('Expected name to be a non-empty string.');\n                     }\n                     for (let i = 1; i < name.length; ++i) {\n                         if (!(0, _characterClasses.isNameContinue)(name.charCodeAt(i))) {\n                             throw new _GraphQLError.GraphQLError(`Names must only contain [_a-zA-Z0-9] but \"${name}\" does not.`);\n                         }\n@@ -34382,14 +51352,15 @@\n                     return name;\n                 }\n                 /**\n                  * Upholds the spec rules about naming enum values.\n                  *\n                  * @internal\n                  */\n+\n                 function assertEnumValueName(name) {\n                     if (name === 'true' || name === 'false' || name === 'null') {\n                         throw new _GraphQLError.GraphQLError(`Enum values cannot be named: ${name}`);\n                     }\n                     return assertName(name);\n                 }\n \n@@ -34400,14 +51371,15 @@\n         \"../../../node_modules/graphql/type/definition.mjs\":\n             /*!*********************************************************!*\\\n               !*** ../../../node_modules/graphql/type/definition.mjs ***!\n               \\*********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.GraphQLUnionType = exports.GraphQLScalarType = exports.GraphQLObjectType = exports.GraphQLNonNull = exports.GraphQLList = exports.GraphQLInterfaceType = exports.GraphQLInputObjectType = exports.GraphQLEnumType = void 0;\n                 exports.argsToArgsConfig = argsToArgsConfig;\n@@ -34453,14 +51425,15 @@\n                 exports.resolveObjMapThunk = resolveObjMapThunk;\n                 exports.resolveReadonlyArrayThunk = resolveReadonlyArrayThunk;\n                 var _devAssert = __webpack_require__( /*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n                 var _didYouMean = __webpack_require__( /*! ../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n                 var _identityFunc = __webpack_require__( /*! ../jsutils/identityFunc.mjs */ \"../../../node_modules/graphql/jsutils/identityFunc.mjs\");\n                 var _inspect = __webpack_require__( /*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n                 var _instanceOf = __webpack_require__( /*! ../jsutils/instanceOf.mjs */ \"../../../node_modules/graphql/jsutils/instanceOf.mjs\");\n+                var _isObjectLike = __webpack_require__( /*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n                 var _keyMap = __webpack_require__( /*! ../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n                 var _keyValMap = __webpack_require__( /*! ../jsutils/keyValMap.mjs */ \"../../../node_modules/graphql/jsutils/keyValMap.mjs\");\n                 var _mapValue = __webpack_require__( /*! ../jsutils/mapValue.mjs */ \"../../../node_modules/graphql/jsutils/mapValue.mjs\");\n                 var _suggestionList = __webpack_require__( /*! ../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n                 var _toObjMap = __webpack_require__( /*! ../jsutils/toObjMap.mjs */ \"../../../node_modules/graphql/jsutils/toObjMap.mjs\");\n                 var _GraphQLError = __webpack_require__( /*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n@@ -34477,14 +51450,15 @@\n                         throw new Error(`Expected ${(0, _inspect.inspect)(type)} to be a GraphQL type.`);\n                     }\n                     return type;\n                 }\n                 /**\n                  * There are predicates for each kind of GraphQL type.\n                  */\n+\n                 function isScalarType(type) {\n                     return (0, _instanceOf.instanceOf)(type, GraphQLScalarType);\n                 }\n \n                 function assertScalarType(type) {\n                     if (!isScalarType(type)) {\n                         throw new Error(`Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Scalar type.`);\n@@ -34564,58 +51538,73 @@\n \n                 function assertNonNullType(type) {\n                     if (!isNonNullType(type)) {\n                         throw new Error(`Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Non-Null type.`);\n                     }\n                     return type;\n                 }\n+                /**\n+                 * These types may be used as input types for arguments and directives.\n+                 */\n \n                 function isInputType(type) {\n                     return isScalarType(type) || isEnumType(type) || isInputObjectType(type) || isWrappingType(type) && isInputType(type.ofType);\n                 }\n \n                 function assertInputType(type) {\n                     if (!isInputType(type)) {\n                         throw new Error(`Expected ${(0, _inspect.inspect)(type)} to be a GraphQL input type.`);\n                     }\n                     return type;\n                 }\n+                /**\n+                 * These types may be used as output types as the result of fields.\n+                 */\n \n                 function isOutputType(type) {\n                     return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isWrappingType(type) && isOutputType(type.ofType);\n                 }\n \n                 function assertOutputType(type) {\n                     if (!isOutputType(type)) {\n                         throw new Error(`Expected ${(0, _inspect.inspect)(type)} to be a GraphQL output type.`);\n                     }\n                     return type;\n                 }\n+                /**\n+                 * These types may describe types which may be leaf values.\n+                 */\n \n                 function isLeafType(type) {\n                     return isScalarType(type) || isEnumType(type);\n                 }\n \n                 function assertLeafType(type) {\n                     if (!isLeafType(type)) {\n                         throw new Error(`Expected ${(0, _inspect.inspect)(type)} to be a GraphQL leaf type.`);\n                     }\n                     return type;\n                 }\n+                /**\n+                 * These types may describe the parent context of a selection set.\n+                 */\n \n                 function isCompositeType(type) {\n                     return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n                 }\n \n                 function assertCompositeType(type) {\n                     if (!isCompositeType(type)) {\n                         throw new Error(`Expected ${(0, _inspect.inspect)(type)} to be a GraphQL composite type.`);\n                     }\n                     return type;\n                 }\n+                /**\n+                 * These types may describe the parent context of a selection set.\n+                 */\n \n                 function isAbstractType(type) {\n                     return isInterfaceType(type) || isUnionType(type);\n                 }\n \n                 function assertAbstractType(type) {\n                     if (!isAbstractType(type)) {\n@@ -34638,16 +51627,18 @@\n                  *   fields: () => ({\n                  *     parents: { type: new GraphQLList(PersonType) },\n                  *     children: { type: new GraphQLList(PersonType) },\n                  *   })\n                  * })\n                  * ```\n                  */\n+\n                 class GraphQLList {\n                     constructor(ofType) {\n+                        isType(ofType) || (0, _devAssert.devAssert)(false, `Expected ${(0, _inspect.inspect)(ofType)} to be a GraphQL type.`);\n                         this.ofType = ofType;\n                     }\n                     get[Symbol.toStringTag]() {\n                         return 'GraphQLList';\n                     }\n                     toString() {\n                         return '[' + String(this.ofType) + ']';\n@@ -34676,38 +51667,45 @@\n                  * })\n                  * ```\n                  * Note: the enforcement of non-nullability occurs within the executor.\n                  */\n                 exports.GraphQLList = GraphQLList;\n                 class GraphQLNonNull {\n                     constructor(ofType) {\n+                        isNullableType(ofType) || (0, _devAssert.devAssert)(false, `Expected ${(0, _inspect.inspect)(ofType)} to be a GraphQL nullable type.`);\n                         this.ofType = ofType;\n                     }\n                     get[Symbol.toStringTag]() {\n                         return 'GraphQLNonNull';\n                     }\n                     toString() {\n                         return String(this.ofType) + '!';\n                     }\n                     toJSON() {\n                         return this.toString();\n                     }\n                 }\n+                /**\n+                 * These types wrap and modify other types\n+                 */\n                 exports.GraphQLNonNull = GraphQLNonNull;\n \n                 function isWrappingType(type) {\n                     return isListType(type) || isNonNullType(type);\n                 }\n \n                 function assertWrappingType(type) {\n                     if (!isWrappingType(type)) {\n                         throw new Error(`Expected ${(0, _inspect.inspect)(type)} to be a GraphQL wrapping type.`);\n                     }\n                     return type;\n                 }\n+                /**\n+                 * These types can all accept null as a value.\n+                 */\n \n                 function isNullableType(type) {\n                     return isType(type) && !isNonNullType(type);\n                 }\n \n                 function assertNullableType(type) {\n                     if (!isNullableType(type)) {\n@@ -34717,14 +51715,17 @@\n                 }\n \n                 function getNullableType(type) {\n                     if (type) {\n                         return isNonNullType(type) ? type.ofType : type;\n                     }\n                 }\n+                /**\n+                 * These named types do not include modifiers like List or NonNull.\n+                 */\n \n                 function isNamedType(type) {\n                     return isScalarType(type) || isObjectType(type) || isInterfaceType(type) || isUnionType(type) || isEnumType(type) || isInputObjectType(type);\n                 }\n \n                 function assertNamedType(type) {\n                     if (!isNamedType(type)) {\n@@ -34738,23 +51739,37 @@\n                         let unwrappedType = type;\n                         while (isWrappingType(unwrappedType)) {\n                             unwrappedType = unwrappedType.ofType;\n                         }\n                         return unwrappedType;\n                     }\n                 }\n+                /**\n+                 * Used while defining GraphQL types to allow for circular references in\n+                 * otherwise immutable type definitions.\n+                 */\n \n                 function resolveReadonlyArrayThunk(thunk) {\n                     return typeof thunk === 'function' ? thunk() : thunk;\n                 }\n \n                 function resolveObjMapThunk(thunk) {\n                     return typeof thunk === 'function' ? thunk() : thunk;\n                 }\n                 /**\n+                 * Custom extensions\n+                 *\n+                 * @remarks\n+                 * Use a unique identifier name for your extension, for example the name of\n+                 * your library or project. Do not use a shortened identifier as this increases\n+                 * the risk of conflicts. We recommend you add at most one extension field,\n+                 * an object which can contain all the values you need.\n+                 */\n+\n+                /**\n                  * Scalar Type Definition\n                  *\n                  * The leaf values of any request and input values to arguments are\n                  * Scalars (or Enums) and are defined with a name and a series of functions\n                  * used to parse input from ast or variables and to ensure validity.\n                  *\n                  * If a type's serialize function returns `null` or does not return a value\n@@ -34790,14 +51805,16 @@\n                         this.specifiedByURL = config.specifiedByURL;\n                         this.serialize = (_config$serialize = config.serialize) !== null && _config$serialize !== void 0 ? _config$serialize : _identityFunc.identityFunc;\n                         this.parseValue = parseValue;\n                         this.parseLiteral = (_config$parseLiteral = config.parseLiteral) !== null && _config$parseLiteral !== void 0 ? _config$parseLiteral : (node, variables) => parseValue((0, _valueFromASTUntyped.valueFromASTUntyped)(node, variables));\n                         this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n                         this.astNode = config.astNode;\n                         this.extensionASTNodes = (_config$extensionASTN = config.extensionASTNodes) !== null && _config$extensionASTN !== void 0 ? _config$extensionASTN : [];\n+                        config.specifiedByURL == null || typeof config.specifiedByURL === 'string' || (0, _devAssert.devAssert)(false, `${this.name} must provide \"specifiedByURL\" as a string, ` + `but got: ${(0, _inspect.inspect)(config.specifiedByURL)}.`);\n+                        config.serialize == null || typeof config.serialize === 'function' || (0, _devAssert.devAssert)(false, `${this.name} must provide \"serialize\" function. If this custom Scalar is also used as an input type, ensure \"parseValue\" and \"parseLiteral\" functions are also provided.`);\n                         if (config.parseLiteral) {\n                             typeof config.parseValue === 'function' && typeof config.parseLiteral === 'function' || (0, _devAssert.devAssert)(false, `${this.name} must provide both \"parseValue\" and \"parseLiteral\" functions.`);\n                         }\n                     }\n                     get[Symbol.toStringTag]() {\n                         return 'GraphQLScalarType';\n                     }\n@@ -34817,14 +51834,15 @@\n                     toString() {\n                         return this.name;\n                     }\n                     toJSON() {\n                         return this.toString();\n                     }\n                 }\n+\n                 /**\n                  * Object Type Definition\n                  *\n                  * Almost all of the GraphQL types you define will be object types. Object types\n                  * have a name, but most importantly describe their fields.\n                  *\n                  * Example:\n@@ -34867,18 +51885,17 @@\n                         var _config$extensionASTN2;\n                         this.name = (0, _assertName.assertName)(config.name);\n                         this.description = config.description;\n                         this.isTypeOf = config.isTypeOf;\n                         this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n                         this.astNode = config.astNode;\n                         this.extensionASTNodes = (_config$extensionASTN2 = config.extensionASTNodes) !== null && _config$extensionASTN2 !== void 0 ? _config$extensionASTN2 : [];\n-                        // prettier-ignore\n-                        // FIXME: blocked by https://github.com/prettier/prettier/issues/14625\n-                        this._fields = defineFieldMap.bind(undefined, config.fields);\n-                        this._interfaces = defineInterfaces.bind(undefined, config.interfaces);\n+                        this._fields = () => defineFieldMap(config);\n+                        this._interfaces = () => defineInterfaces(config);\n+                        config.isTypeOf == null || typeof config.isTypeOf === 'function' || (0, _devAssert.devAssert)(false, `${this.name} must provide \"isTypeOf\" as a function, ` + `but got: ${(0, _inspect.inspect)(config.isTypeOf)}.`);\n                     }\n                     get[Symbol.toStringTag]() {\n                         return 'GraphQLObjectType';\n                     }\n                     getFields() {\n                         if (typeof this._fields === 'function') {\n                             this._fields = this._fields();\n@@ -34908,49 +51925,60 @@\n                     }\n                     toJSON() {\n                         return this.toString();\n                     }\n                 }\n                 exports.GraphQLObjectType = GraphQLObjectType;\n \n-                function defineInterfaces(interfaces) {\n-                    return resolveReadonlyArrayThunk(interfaces !== null && interfaces !== void 0 ? interfaces : []);\n+                function defineInterfaces(config) {\n+                    var _config$interfaces;\n+                    const interfaces = resolveReadonlyArrayThunk((_config$interfaces = config.interfaces) !== null && _config$interfaces !== void 0 ? _config$interfaces : []);\n+                    Array.isArray(interfaces) || (0, _devAssert.devAssert)(false, `${config.name} interfaces must be an Array or a function which returns an Array.`);\n+                    return interfaces;\n                 }\n \n-                function defineFieldMap(fields) {\n-                    const fieldMap = resolveObjMapThunk(fields);\n+                function defineFieldMap(config) {\n+                    const fieldMap = resolveObjMapThunk(config.fields);\n+                    isPlainObj(fieldMap) || (0, _devAssert.devAssert)(false, `${config.name} fields must be an object with field names as keys or a function which returns such an object.`);\n                     return (0, _mapValue.mapValue)(fieldMap, (fieldConfig, fieldName) => {\n                         var _fieldConfig$args;\n+                        isPlainObj(fieldConfig) || (0, _devAssert.devAssert)(false, `${config.name}.${fieldName} field config must be an object.`);\n+                        fieldConfig.resolve == null || typeof fieldConfig.resolve === 'function' || (0, _devAssert.devAssert)(false, `${config.name}.${fieldName} field resolver must be a function if ` + `provided, but got: ${(0, _inspect.inspect)(fieldConfig.resolve)}.`);\n                         const argsConfig = (_fieldConfig$args = fieldConfig.args) !== null && _fieldConfig$args !== void 0 ? _fieldConfig$args : {};\n+                        isPlainObj(argsConfig) || (0, _devAssert.devAssert)(false, `${config.name}.${fieldName} args must be an object with argument names as keys.`);\n                         return {\n                             name: (0, _assertName.assertName)(fieldName),\n                             description: fieldConfig.description,\n                             type: fieldConfig.type,\n                             args: defineArguments(argsConfig),\n                             resolve: fieldConfig.resolve,\n                             subscribe: fieldConfig.subscribe,\n                             deprecationReason: fieldConfig.deprecationReason,\n                             extensions: (0, _toObjMap.toObjMap)(fieldConfig.extensions),\n                             astNode: fieldConfig.astNode\n                         };\n                     });\n                 }\n \n-                function defineArguments(args) {\n-                    return Object.entries(args).map(([argName, argConfig]) => ({\n+                function defineArguments(config) {\n+                    return Object.entries(config).map(([argName, argConfig]) => ({\n                         name: (0, _assertName.assertName)(argName),\n                         description: argConfig.description,\n                         type: argConfig.type,\n                         defaultValue: argConfig.defaultValue,\n                         deprecationReason: argConfig.deprecationReason,\n                         extensions: (0, _toObjMap.toObjMap)(argConfig.extensions),\n                         astNode: argConfig.astNode\n                     }));\n                 }\n \n+                function isPlainObj(obj) {\n+                    return (0, _isObjectLike.isObjectLike)(obj) && !Array.isArray(obj);\n+                }\n+\n                 function fieldsToFieldsConfig(fields) {\n                     return (0, _mapValue.mapValue)(fields, field => ({\n                         description: field.description,\n                         type: field.type,\n                         args: argsToArgsConfig(field.args),\n                         resolve: field.resolve,\n                         subscribe: field.subscribe,\n@@ -34958,28 +51986,30 @@\n                         extensions: field.extensions,\n                         astNode: field.astNode\n                     }));\n                 }\n                 /**\n                  * @internal\n                  */\n+\n                 function argsToArgsConfig(args) {\n                     return (0, _keyValMap.keyValMap)(args, arg => arg.name, arg => ({\n                         description: arg.description,\n                         type: arg.type,\n                         defaultValue: arg.defaultValue,\n                         deprecationReason: arg.deprecationReason,\n                         extensions: arg.extensions,\n                         astNode: arg.astNode\n                     }));\n                 }\n \n                 function isRequiredArgument(arg) {\n                     return isNonNullType(arg.type) && arg.defaultValue === undefined;\n                 }\n+\n                 /**\n                  * Interface Type Definition\n                  *\n                  * When a field can return one of a heterogeneous set of types, a Interface type\n                  * is used to describe what types are possible, what fields are in common across\n                  * all types, as well as a function to determine which type is actually used\n                  * when the field is resolved.\n@@ -35000,18 +52030,17 @@\n                         var _config$extensionASTN3;\n                         this.name = (0, _assertName.assertName)(config.name);\n                         this.description = config.description;\n                         this.resolveType = config.resolveType;\n                         this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n                         this.astNode = config.astNode;\n                         this.extensionASTNodes = (_config$extensionASTN3 = config.extensionASTNodes) !== null && _config$extensionASTN3 !== void 0 ? _config$extensionASTN3 : [];\n-                        // prettier-ignore\n-                        // FIXME: blocked by https://github.com/prettier/prettier/issues/14625\n-                        this._fields = defineFieldMap.bind(undefined, config.fields);\n-                        this._interfaces = defineInterfaces.bind(undefined, config.interfaces);\n+                        this._fields = defineFieldMap.bind(undefined, config);\n+                        this._interfaces = defineInterfaces.bind(undefined, config);\n+                        config.resolveType == null || typeof config.resolveType === 'function' || (0, _devAssert.devAssert)(false, `${this.name} must provide \"resolveType\" as a function, ` + `but got: ${(0, _inspect.inspect)(config.resolveType)}.`);\n                     }\n                     get[Symbol.toStringTag]() {\n                         return 'GraphQLInterfaceType';\n                     }\n                     getFields() {\n                         if (typeof this._fields === 'function') {\n                             this._fields = this._fields();\n@@ -35039,14 +52068,15 @@\n                     toString() {\n                         return this.name;\n                     }\n                     toJSON() {\n                         return this.toString();\n                     }\n                 }\n+\n                 /**\n                  * Union Type Definition\n                  *\n                  * When a field can return one of a heterogeneous set of types, a Union type\n                  * is used to describe what types are possible as well as providing a function\n                  * to determine which type is actually used when the field is resolved.\n                  *\n@@ -35073,15 +52103,16 @@\n                         var _config$extensionASTN4;\n                         this.name = (0, _assertName.assertName)(config.name);\n                         this.description = config.description;\n                         this.resolveType = config.resolveType;\n                         this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n                         this.astNode = config.astNode;\n                         this.extensionASTNodes = (_config$extensionASTN4 = config.extensionASTNodes) !== null && _config$extensionASTN4 !== void 0 ? _config$extensionASTN4 : [];\n-                        this._types = defineTypes.bind(undefined, config.types);\n+                        this._types = defineTypes.bind(undefined, config);\n+                        config.resolveType == null || typeof config.resolveType === 'function' || (0, _devAssert.devAssert)(false, `${this.name} must provide \"resolveType\" as a function, ` + `but got: ${(0, _inspect.inspect)(config.resolveType)}.`);\n                     }\n                     get[Symbol.toStringTag]() {\n                         return 'GraphQLUnionType';\n                     }\n                     getTypes() {\n                         if (typeof this._types === 'function') {\n                             this._types = this._types();\n@@ -35104,28 +52135,20 @@\n                     }\n                     toJSON() {\n                         return this.toString();\n                     }\n                 }\n                 exports.GraphQLUnionType = GraphQLUnionType;\n \n-                function defineTypes(types) {\n-                    return resolveReadonlyArrayThunk(types);\n+                function defineTypes(config) {\n+                    const types = resolveReadonlyArrayThunk(config.types);\n+                    Array.isArray(types) || (0, _devAssert.devAssert)(false, `Must provide Array of types or a function which returns such an array for Union ${config.name}.`);\n+                    return types;\n                 }\n \n-                function enumValuesFromConfig(values) {\n-                    return Object.entries(values).map(([valueName, valueConfig]) => ({\n-                        name: (0, _assertName.assertEnumValueName)(valueName),\n-                        description: valueConfig.description,\n-                        value: valueConfig.value !== undefined ? valueConfig.value : valueName,\n-                        deprecationReason: valueConfig.deprecationReason,\n-                        extensions: (0, _toObjMap.toObjMap)(valueConfig.extensions),\n-                        astNode: valueConfig.astNode\n-                    }));\n-                }\n                 /**\n                  * Enum Type Definition\n                  *\n                  * Some leaf values of requests and input values are Enums. GraphQL serializes\n                  * Enum values as strings, however internally Enums can be represented by any\n                  * kind of type, often integers.\n                  *\n@@ -35141,63 +52164,64 @@\n                  *   }\n                  * });\n                  * ```\n                  *\n                  * Note: If a value is not provided in a definition, the name of the enum value\n                  * will be used as its internal value.\n                  */\n-                class GraphQLEnumType /* <T> */ {\n+                class GraphQLEnumType {\n+                    /* <T> */\n                     constructor(config) {\n                         var _config$extensionASTN5;\n                         this.name = (0, _assertName.assertName)(config.name);\n                         this.description = config.description;\n                         this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n                         this.astNode = config.astNode;\n                         this.extensionASTNodes = (_config$extensionASTN5 = config.extensionASTNodes) !== null && _config$extensionASTN5 !== void 0 ? _config$extensionASTN5 : [];\n-                        this._values = typeof config.values === 'function' ? config.values : enumValuesFromConfig(config.values);\n+                        this._values = typeof config.values === 'function' ? config.values : defineEnumValues(this.name, config.values);\n                         this._valueLookup = null;\n                         this._nameLookup = null;\n                     }\n                     get[Symbol.toStringTag]() {\n                         return 'GraphQLEnumType';\n                     }\n                     getValues() {\n                         if (typeof this._values === 'function') {\n-                            this._values = enumValuesFromConfig(this._values());\n+                            this._values = defineEnumValues(this.name, this._values());\n                         }\n                         return this._values;\n                     }\n                     getValue(name) {\n                         if (this._nameLookup === null) {\n                             this._nameLookup = (0, _keyMap.keyMap)(this.getValues(), value => value.name);\n                         }\n                         return this._nameLookup[name];\n                     }\n-                    serialize(outputValue /* T */ ) {\n+                    serialize(outputValue) {\n                         if (this._valueLookup === null) {\n                             this._valueLookup = new Map(this.getValues().map(enumValue => [enumValue.value, enumValue]));\n                         }\n                         const enumValue = this._valueLookup.get(outputValue);\n                         if (enumValue === undefined) {\n                             throw new _GraphQLError.GraphQLError(`Enum \"${this.name}\" cannot represent value: ${(0, _inspect.inspect)(outputValue)}`);\n                         }\n                         return enumValue.name;\n                     }\n-                    parseValue(inputValue) {\n+                    parseValue(inputValue) /* T */ {\n                         if (typeof inputValue !== 'string') {\n                             const valueStr = (0, _inspect.inspect)(inputValue);\n                             throw new _GraphQLError.GraphQLError(`Enum \"${this.name}\" cannot represent non-string value: ${valueStr}.` + didYouMeanEnumValue(this, valueStr));\n                         }\n                         const enumValue = this.getValue(inputValue);\n                         if (enumValue == null) {\n                             throw new _GraphQLError.GraphQLError(`Value \"${inputValue}\" does not exist in \"${this.name}\" enum.` + didYouMeanEnumValue(this, inputValue));\n                         }\n                         return enumValue.value;\n                     }\n-                    parseLiteral(valueNode, _variables) {\n+                    parseLiteral(valueNode, _variables) /* T */ {\n                         // Note: variables will be resolved to a value before calling this function.\n                         if (valueNode.kind !== _kinds.Kind.ENUM) {\n                             const valueStr = (0, _printer.print)(valueNode);\n                             throw new _GraphQLError.GraphQLError(`Enum \"${this.name}\" cannot represent non-enum value: ${valueStr}.` + didYouMeanEnumValue(this, valueStr), {\n                                 nodes: valueNode\n                             });\n                         }\n@@ -35237,14 +52261,30 @@\n                 exports.GraphQLEnumType = GraphQLEnumType;\n \n                 function didYouMeanEnumValue(enumType, unknownValueStr) {\n                     const allNames = enumType.getValues().map(value => value.name);\n                     const suggestedValues = (0, _suggestionList.suggestionList)(unknownValueStr, allNames);\n                     return (0, _didYouMean.didYouMean)('the enum value', suggestedValues);\n                 }\n+\n+                function defineEnumValues(typeName, valueMap) {\n+                    isPlainObj(valueMap) || (0, _devAssert.devAssert)(false, `${typeName} values must be an object with value names as keys.`);\n+                    return Object.entries(valueMap).map(([valueName, valueConfig]) => {\n+                        isPlainObj(valueConfig) || (0, _devAssert.devAssert)(false, `${typeName}.${valueName} must refer to an object with a \"value\" key ` + `representing an internal value but got: ${(0, _inspect.inspect)(valueConfig)}.`);\n+                        return {\n+                            name: (0, _assertName.assertEnumValueName)(valueName),\n+                            description: valueConfig.description,\n+                            value: valueConfig.value !== undefined ? valueConfig.value : valueName,\n+                            deprecationReason: valueConfig.deprecationReason,\n+                            extensions: (0, _toObjMap.toObjMap)(valueConfig.extensions),\n+                            astNode: valueConfig.astNode\n+                        };\n+                    });\n+                }\n+\n                 /**\n                  * Input Object Type Definition\n                  *\n                  * An input object defines a structured collection of fields which may be\n                  * supplied to a field argument.\n                  *\n                  * Using `NonNull` will ensure that a value must be provided by the query\n@@ -35267,15 +52307,15 @@\n                         var _config$extensionASTN6, _config$isOneOf;\n                         this.name = (0, _assertName.assertName)(config.name);\n                         this.description = config.description;\n                         this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n                         this.astNode = config.astNode;\n                         this.extensionASTNodes = (_config$extensionASTN6 = config.extensionASTNodes) !== null && _config$extensionASTN6 !== void 0 ? _config$extensionASTN6 : [];\n                         this.isOneOf = (_config$isOneOf = config.isOneOf) !== null && _config$isOneOf !== void 0 ? _config$isOneOf : false;\n-                        this._fields = defineInputFieldMap.bind(undefined, config.fields);\n+                        this._fields = defineInputFieldMap.bind(undefined, config);\n                     }\n                     get[Symbol.toStringTag]() {\n                         return 'GraphQLInputObjectType';\n                     }\n                     getFields() {\n                         if (typeof this._fields === 'function') {\n                             this._fields = this._fields();\n@@ -35306,25 +52346,29 @@\n                     }\n                     toJSON() {\n                         return this.toString();\n                     }\n                 }\n                 exports.GraphQLInputObjectType = GraphQLInputObjectType;\n \n-                function defineInputFieldMap(fields) {\n-                    const fieldMap = resolveObjMapThunk(fields);\n-                    return (0, _mapValue.mapValue)(fieldMap, (fieldConfig, fieldName) => ({\n-                        name: (0, _assertName.assertName)(fieldName),\n-                        description: fieldConfig.description,\n-                        type: fieldConfig.type,\n-                        defaultValue: fieldConfig.defaultValue,\n-                        deprecationReason: fieldConfig.deprecationReason,\n-                        extensions: (0, _toObjMap.toObjMap)(fieldConfig.extensions),\n-                        astNode: fieldConfig.astNode\n-                    }));\n+                function defineInputFieldMap(config) {\n+                    const fieldMap = resolveObjMapThunk(config.fields);\n+                    isPlainObj(fieldMap) || (0, _devAssert.devAssert)(false, `${config.name} fields must be an object with field names as keys or a function which returns such an object.`);\n+                    return (0, _mapValue.mapValue)(fieldMap, (fieldConfig, fieldName) => {\n+                        !('resolve' in fieldConfig) || (0, _devAssert.devAssert)(false, `${config.name}.${fieldName} field has a resolve property, but Input Types cannot define resolvers.`);\n+                        return {\n+                            name: (0, _assertName.assertName)(fieldName),\n+                            description: fieldConfig.description,\n+                            type: fieldConfig.type,\n+                            defaultValue: fieldConfig.defaultValue,\n+                            deprecationReason: fieldConfig.deprecationReason,\n+                            extensions: (0, _toObjMap.toObjMap)(fieldConfig.extensions),\n+                            astNode: fieldConfig.astNode\n+                        };\n+                    });\n                 }\n \n                 function isRequiredInputField(field) {\n                     return isNonNullType(field.type) && field.defaultValue === undefined;\n                 }\n \n                 /***/\n@@ -35334,58 +52378,74 @@\n         \"../../../node_modules/graphql/type/directives.mjs\":\n             /*!*********************************************************!*\\\n               !*** ../../../node_modules/graphql/type/directives.mjs ***!\n               \\*********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n-                exports.GraphQLStreamDirective = exports.GraphQLSpecifiedByDirective = exports.GraphQLSkipDirective = exports.GraphQLOneOfDirective = exports.GraphQLIncludeDirective = exports.GraphQLDirective = exports.GraphQLDeprecatedDirective = exports.GraphQLDeferDirective = exports.DEFAULT_DEPRECATION_REASON = void 0;\n+                exports.GraphQLSpecifiedByDirective = exports.GraphQLSkipDirective = exports.GraphQLOneOfDirective = exports.GraphQLIncludeDirective = exports.GraphQLDirective = exports.GraphQLDeprecatedDirective = exports.DEFAULT_DEPRECATION_REASON = void 0;\n                 exports.assertDirective = assertDirective;\n                 exports.isDirective = isDirective;\n                 exports.isSpecifiedDirective = isSpecifiedDirective;\n                 exports.specifiedDirectives = void 0;\n+                var _devAssert = __webpack_require__( /*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n                 var _inspect = __webpack_require__( /*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n                 var _instanceOf = __webpack_require__( /*! ../jsutils/instanceOf.mjs */ \"../../../node_modules/graphql/jsutils/instanceOf.mjs\");\n+                var _isObjectLike = __webpack_require__( /*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n                 var _toObjMap = __webpack_require__( /*! ../jsutils/toObjMap.mjs */ \"../../../node_modules/graphql/jsutils/toObjMap.mjs\");\n                 var _directiveLocation = __webpack_require__( /*! ../language/directiveLocation.mjs */ \"../../../node_modules/graphql/language/directiveLocation.mjs\");\n                 var _assertName = __webpack_require__( /*! ./assertName.mjs */ \"../../../node_modules/graphql/type/assertName.mjs\");\n                 var _definition = __webpack_require__( /*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n                 var _scalars = __webpack_require__( /*! ./scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n                 /**\n                  * Test if the given value is a GraphQL directive.\n                  */\n+\n                 function isDirective(directive) {\n                     return (0, _instanceOf.instanceOf)(directive, GraphQLDirective);\n                 }\n \n                 function assertDirective(directive) {\n                     if (!isDirective(directive)) {\n                         throw new Error(`Expected ${(0, _inspect.inspect)(directive)} to be a GraphQL directive.`);\n                     }\n                     return directive;\n                 }\n                 /**\n+                 * Custom extensions\n+                 *\n+                 * @remarks\n+                 * Use a unique identifier name for your extension, for example the name of\n+                 * your library or project. Do not use a shortened identifier as this increases\n+                 * the risk of conflicts. We recommend you add at most one extension field,\n+                 * an object which can contain all the values you need.\n+                 */\n+\n+                /**\n                  * Directives are used by the GraphQL runtime as a way of modifying execution\n                  * behavior. Type system creators will usually not create these directly.\n                  */\n                 class GraphQLDirective {\n                     constructor(config) {\n                         var _config$isRepeatable, _config$args;\n                         this.name = (0, _assertName.assertName)(config.name);\n                         this.description = config.description;\n                         this.locations = config.locations;\n                         this.isRepeatable = (_config$isRepeatable = config.isRepeatable) !== null && _config$isRepeatable !== void 0 ? _config$isRepeatable : false;\n                         this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n                         this.astNode = config.astNode;\n+                        Array.isArray(config.locations) || (0, _devAssert.devAssert)(false, `@${config.name} locations must be an Array.`);\n                         const args = (_config$args = config.args) !== null && _config$args !== void 0 ? _config$args : {};\n+                        (0, _isObjectLike.isObjectLike)(args) && !Array.isArray(args) || (0, _devAssert.devAssert)(false, `@${config.name} args must be an object with argument names as keys.`);\n                         this.args = (0, _definition.defineArguments)(args);\n                     }\n                     get[Symbol.toStringTag]() {\n                         return 'GraphQLDirective';\n                     }\n                     toConfig() {\n                         return {\n@@ -35401,14 +52461,15 @@\n                     toString() {\n                         return '@' + this.name;\n                     }\n                     toJSON() {\n                         return this.toString();\n                     }\n                 }\n+\n                 /**\n                  * Used to conditionally include fields or fragments.\n                  */\n                 exports.GraphQLDirective = GraphQLDirective;\n                 const GraphQLIncludeDirective = exports.GraphQLIncludeDirective = new GraphQLDirective({\n                     name: 'include',\n                     description: 'Directs the executor to include this field or fragment only when the `if` argument is true.',\n@@ -35419,75 +52480,35 @@\n                             description: 'Included when true.'\n                         }\n                     }\n                 });\n                 /**\n                  * Used to conditionally skip (exclude) fields or fragments.\n                  */\n+\n                 const GraphQLSkipDirective = exports.GraphQLSkipDirective = new GraphQLDirective({\n                     name: 'skip',\n                     description: 'Directs the executor to skip this field or fragment when the `if` argument is true.',\n                     locations: [_directiveLocation.DirectiveLocation.FIELD, _directiveLocation.DirectiveLocation.FRAGMENT_SPREAD, _directiveLocation.DirectiveLocation.INLINE_FRAGMENT],\n                     args: {\n                         if: {\n                             type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n                             description: 'Skipped when true.'\n                         }\n                     }\n                 });\n                 /**\n-                 * Used to conditionally defer fragments.\n-                 */\n-                const GraphQLDeferDirective = exports.GraphQLDeferDirective = new GraphQLDirective({\n-                    name: 'defer',\n-                    description: 'Directs the executor to defer this fragment when the `if` argument is true or undefined.',\n-                    locations: [_directiveLocation.DirectiveLocation.FRAGMENT_SPREAD, _directiveLocation.DirectiveLocation.INLINE_FRAGMENT],\n-                    args: {\n-                        if: {\n-                            type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n-                            description: 'Deferred when true or undefined.',\n-                            defaultValue: true\n-                        },\n-                        label: {\n-                            type: _scalars.GraphQLString,\n-                            description: 'Unique name'\n-                        }\n-                    }\n-                });\n-                /**\n-                 * Used to conditionally stream list fields.\n-                 */\n-                const GraphQLStreamDirective = exports.GraphQLStreamDirective = new GraphQLDirective({\n-                    name: 'stream',\n-                    description: 'Directs the executor to stream plural fields when the `if` argument is true or undefined.',\n-                    locations: [_directiveLocation.DirectiveLocation.FIELD],\n-                    args: {\n-                        if: {\n-                            type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n-                            description: 'Stream when true or undefined.',\n-                            defaultValue: true\n-                        },\n-                        label: {\n-                            type: _scalars.GraphQLString,\n-                            description: 'Unique name'\n-                        },\n-                        initialCount: {\n-                            defaultValue: 0,\n-                            type: _scalars.GraphQLInt,\n-                            description: 'Number of items to return immediately'\n-                        }\n-                    }\n-                });\n-                /**\n                  * Constant string used for default reason for a deprecation.\n                  */\n+\n                 const DEFAULT_DEPRECATION_REASON = exports.DEFAULT_DEPRECATION_REASON = 'No longer supported';\n                 /**\n                  * Used to declare element of a GraphQL schema as deprecated.\n                  */\n+\n                 const GraphQLDeprecatedDirective = exports.GraphQLDeprecatedDirective = new GraphQLDirective({\n                     name: 'deprecated',\n                     description: 'Marks an element of a GraphQL schema as no longer supported.',\n                     locations: [_directiveLocation.DirectiveLocation.FIELD_DEFINITION, _directiveLocation.DirectiveLocation.ARGUMENT_DEFINITION, _directiveLocation.DirectiveLocation.INPUT_FIELD_DEFINITION, _directiveLocation.DirectiveLocation.ENUM_VALUE],\n                     args: {\n                         reason: {\n                             type: _scalars.GraphQLString,\n@@ -35495,37 +52516,40 @@\n                             defaultValue: DEFAULT_DEPRECATION_REASON\n                         }\n                     }\n                 });\n                 /**\n                  * Used to provide a URL for specifying the behavior of custom scalar definitions.\n                  */\n+\n                 const GraphQLSpecifiedByDirective = exports.GraphQLSpecifiedByDirective = new GraphQLDirective({\n                     name: 'specifiedBy',\n                     description: 'Exposes a URL that specifies the behavior of this scalar.',\n                     locations: [_directiveLocation.DirectiveLocation.SCALAR],\n                     args: {\n                         url: {\n                             type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n                             description: 'The URL that specifies the behavior of this scalar.'\n                         }\n                     }\n                 });\n                 /**\n                  * Used to indicate an Input Object is a OneOf Input Object.\n                  */\n+\n                 const GraphQLOneOfDirective = exports.GraphQLOneOfDirective = new GraphQLDirective({\n                     name: 'oneOf',\n                     description: 'Indicates exactly one field must be supplied and this field must not be `null`.',\n                     locations: [_directiveLocation.DirectiveLocation.INPUT_OBJECT],\n                     args: {}\n                 });\n                 /**\n                  * The full list of specified directives.\n                  */\n+\n                 const specifiedDirectives = exports.specifiedDirectives = Object.freeze([GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeprecatedDirective, GraphQLSpecifiedByDirective, GraphQLOneOfDirective]);\n \n                 function isSpecifiedDirective(directive) {\n                     return specifiedDirectives.some(({\n                         name\n                     }) => name === directive.name);\n                 }\n@@ -35537,14 +52561,15 @@\n         \"../../../node_modules/graphql/type/index.mjs\":\n             /*!****************************************************!*\\\n               !*** ../../../node_modules/graphql/type/index.mjs ***!\n               \\****************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"DEFAULT_DEPRECATION_REASON\", ({\n                     enumerable: true,\n@@ -35566,20 +52591,14 @@\n                 }));\n                 Object.defineProperty(exports, \"GraphQLBoolean\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _scalars.GraphQLBoolean;\n                     }\n                 }));\n-                Object.defineProperty(exports, \"GraphQLDeferDirective\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return _directives.GraphQLDeferDirective;\n-                    }\n-                }));\n                 Object.defineProperty(exports, \"GraphQLDeprecatedDirective\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _directives.GraphQLDeprecatedDirective;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"GraphQLDirective\", ({\n@@ -35674,20 +52693,14 @@\n                 }));\n                 Object.defineProperty(exports, \"GraphQLSpecifiedByDirective\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _directives.GraphQLSpecifiedByDirective;\n                     }\n                 }));\n-                Object.defineProperty(exports, \"GraphQLStreamDirective\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return _directives.GraphQLStreamDirective;\n-                    }\n-                }));\n                 Object.defineProperty(exports, \"GraphQLString\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _scalars.GraphQLString;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"GraphQLUnionType\", ({\n@@ -36107,14 +53120,15 @@\n         \"../../../node_modules/graphql/type/introspection.mjs\":\n             /*!************************************************************!*\\\n               !*** ../../../node_modules/graphql/type/introspection.mjs ***!\n               \\************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.introspectionTypes = exports.__TypeKind = exports.__Type = exports.__Schema = exports.__InputValue = exports.__Field = exports.__EnumValue = exports.__DirectiveLocation = exports.__Directive = exports.TypeNameMetaFieldDef = exports.TypeMetaFieldDef = exports.TypeKind = exports.SchemaMetaFieldDef = void 0;\n                 exports.isIntrospectionType = isIntrospectionType;\n@@ -36189,15 +53203,15 @@\n                                     type: _scalars.GraphQLBoolean,\n                                     defaultValue: false\n                                 }\n                             },\n                             resolve(field, {\n                                 includeDeprecated\n                             }) {\n-                                return includeDeprecated === true ? field.args : field.args.filter(arg => arg.deprecationReason == null);\n+                                return includeDeprecated ? field.args : field.args.filter(arg => arg.deprecationReason == null);\n                             }\n                         }\n                     })\n                 });\n                 const __DirectiveLocation = exports.__DirectiveLocation = new _definition.GraphQLEnumType({\n                     name: '__DirectiveLocation',\n                     description: 'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.',\n@@ -36309,26 +53323,26 @@\n                                     return TypeKind.LIST;\n                                 }\n                                 if ((0, _definition.isNonNullType)(type)) {\n                                     return TypeKind.NON_NULL;\n                                 }\n                                 /* c8 ignore next 3 */\n                                 // Not reachable, all possible types have been considered)\n+\n                                 false || (0, _invariant.invariant)(false, `Unexpected type: \"${(0, _inspect.inspect)(type)}\".`);\n                             }\n                         },\n                         name: {\n                             type: _scalars.GraphQLString,\n                             resolve: type => 'name' in type ? type.name : undefined\n                         },\n                         description: {\n                             type: _scalars.GraphQLString,\n-                            resolve: type =>\n-                                // FIXME: add test case\n-                                /* c8 ignore next */\n+                            resolve: (type // FIXME: add test case\n+                                ) => /* c8 ignore next */\n                                 'description' in type ? type.description : undefined\n                         },\n                         specifiedByURL: {\n                             type: _scalars.GraphQLString,\n                             resolve: obj => 'specifiedByURL' in obj ? obj.specifiedByURL : undefined\n                         },\n                         fields: {\n@@ -36340,15 +53354,15 @@\n                                 }\n                             },\n                             resolve(type, {\n                                 includeDeprecated\n                             }) {\n                                 if ((0, _definition.isObjectType)(type) || (0, _definition.isInterfaceType)(type)) {\n                                     const fields = Object.values(type.getFields());\n-                                    return includeDeprecated === true ? fields : fields.filter(field => field.deprecationReason == null);\n+                                    return includeDeprecated ? fields : fields.filter(field => field.deprecationReason == null);\n                                 }\n                             }\n                         },\n                         interfaces: {\n                             type: new _definition.GraphQLList(new _definition.GraphQLNonNull(__Type)),\n                             resolve(type) {\n                                 if ((0, _definition.isObjectType)(type) || (0, _definition.isInterfaceType)(type)) {\n@@ -36375,15 +53389,15 @@\n                                 }\n                             },\n                             resolve(type, {\n                                 includeDeprecated\n                             }) {\n                                 if ((0, _definition.isEnumType)(type)) {\n                                     const values = type.getValues();\n-                                    return includeDeprecated === true ? values : values.filter(field => field.deprecationReason == null);\n+                                    return includeDeprecated ? values : values.filter(field => field.deprecationReason == null);\n                                 }\n                             }\n                         },\n                         inputFields: {\n                             type: new _definition.GraphQLList(new _definition.GraphQLNonNull(__InputValue)),\n                             args: {\n                                 includeDeprecated: {\n@@ -36392,15 +53406,15 @@\n                                 }\n                             },\n                             resolve(type, {\n                                 includeDeprecated\n                             }) {\n                                 if ((0, _definition.isInputObjectType)(type)) {\n                                     const values = Object.values(type.getFields());\n-                                    return includeDeprecated === true ? values : values.filter(field => field.deprecationReason == null);\n+                                    return includeDeprecated ? values : values.filter(field => field.deprecationReason == null);\n                                 }\n                             }\n                         },\n                         ofType: {\n                             type: __Type,\n                             resolve: type => 'ofType' in type ? type.ofType : undefined\n                         },\n@@ -36433,15 +53447,15 @@\n                                     type: _scalars.GraphQLBoolean,\n                                     defaultValue: false\n                                 }\n                             },\n                             resolve(field, {\n                                 includeDeprecated\n                             }) {\n-                                return includeDeprecated === true ? field.args : field.args.filter(arg => arg.deprecationReason == null);\n+                                return includeDeprecated ? field.args : field.args.filter(arg => arg.deprecationReason == null);\n                             }\n                         },\n                         type: {\n                             type: new _definition.GraphQLNonNull(__Type),\n                             resolve: field => field.type\n                         },\n                         isDeprecated: {\n@@ -36563,14 +53577,15 @@\n                         }\n                     }\n                 });\n                 /**\n                  * Note that these are GraphQLField and not GraphQLFieldConfig,\n                  * so the format for args is different.\n                  */\n+\n                 const SchemaMetaFieldDef = exports.SchemaMetaFieldDef = {\n                     name: '__schema',\n                     type: new _definition.GraphQLNonNull(__Schema),\n                     description: 'Access the current type schema of this server.',\n                     args: [],\n                     resolve: (_source, _args, _context, {\n                         schema\n@@ -36628,14 +53643,15 @@\n         \"../../../node_modules/graphql/type/scalars.mjs\":\n             /*!******************************************************!*\\\n               !*** ../../../node_modules/graphql/type/scalars.mjs ***!\n               \\******************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.GraphQLString = exports.GraphQLInt = exports.GraphQLID = exports.GraphQLFloat = exports.GraphQLBoolean = exports.GRAPHQL_MIN_INT = exports.GRAPHQL_MAX_INT = void 0;\n                 exports.isSpecifiedScalarType = isSpecifiedScalarType;\n@@ -36646,19 +53662,21 @@\n                 var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 var _printer = __webpack_require__( /*! ../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n                 var _definition = __webpack_require__( /*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n                 /**\n                  * Maximum possible Int value as per GraphQL Spec (32-bit signed integer).\n                  * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe up-to 2^53 - 1\n                  * */\n+\n                 const GRAPHQL_MAX_INT = exports.GRAPHQL_MAX_INT = 2147483647;\n                 /**\n                  * Minimum possible Int value as per GraphQL Spec (32-bit signed integer).\n                  * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe starting at -(2^53 - 1)\n                  * */\n+\n                 const GRAPHQL_MIN_INT = exports.GRAPHQL_MIN_INT = -2147483648;\n                 const GraphQLInt = exports.GraphQLInt = new _definition.GraphQLScalarType({\n                     name: 'Int',\n                     description: 'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.',\n                     serialize(outputValue) {\n                         const coercedValue = serializeObject(outputValue);\n                         if (typeof coercedValue === 'boolean') {\n@@ -36721,28 +53739,26 @@\n                         if (typeof inputValue !== 'number' || !Number.isFinite(inputValue)) {\n                             throw new _GraphQLError.GraphQLError(`Float cannot represent non numeric value: ${(0, _inspect.inspect)(inputValue)}`);\n                         }\n                         return inputValue;\n                     },\n                     parseLiteral(valueNode) {\n                         if (valueNode.kind !== _kinds.Kind.FLOAT && valueNode.kind !== _kinds.Kind.INT) {\n-                            throw new _GraphQLError.GraphQLError(`Float cannot represent non numeric value: ${(0, _printer.print)(valueNode)}`, {\n-                                nodes: valueNode\n-                            });\n+                            throw new _GraphQLError.GraphQLError(`Float cannot represent non numeric value: ${(0, _printer.print)(valueNode)}`, valueNode);\n                         }\n                         return parseFloat(valueNode.value);\n                     }\n                 });\n                 const GraphQLString = exports.GraphQLString = new _definition.GraphQLScalarType({\n                     name: 'String',\n                     description: 'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.',\n                     serialize(outputValue) {\n-                        const coercedValue = serializeObject(outputValue);\n-                        // Serialize string, boolean and number values to a string, but do not\n+                        const coercedValue = serializeObject(outputValue); // Serialize string, boolean and number values to a string, but do not\n                         // attempt to coerce object, function, symbol, or other types as strings.\n+\n                         if (typeof coercedValue === 'string') {\n                             return coercedValue;\n                         }\n                         if (typeof coercedValue === 'boolean') {\n                             return coercedValue ? 'true' : 'false';\n                         }\n                         if (typeof coercedValue === 'number' && Number.isFinite(coercedValue)) {\n@@ -36826,18 +53842,18 @@\n                 });\n                 const specifiedScalarTypes = exports.specifiedScalarTypes = Object.freeze([GraphQLString, GraphQLInt, GraphQLFloat, GraphQLBoolean, GraphQLID]);\n \n                 function isSpecifiedScalarType(type) {\n                     return specifiedScalarTypes.some(({\n                         name\n                     }) => type.name === name);\n-                }\n-                // Support serializing objects with custom valueOf() or toJSON() functions -\n+                } // Support serializing objects with custom valueOf() or toJSON() functions -\n                 // a common way to represent a complex value which can be represented as\n                 // a string (ex: MongoDB id objects).\n+\n                 function serializeObject(outputValue) {\n                     if ((0, _isObjectLike.isObjectLike)(outputValue)) {\n                         if (typeof outputValue.valueOf === 'function') {\n                             const valueOfResult = outputValue.valueOf();\n                             if (!(0, _isObjectLike.isObjectLike)(valueOfResult)) {\n                                 return valueOfResult;\n                             }\n@@ -36856,43 +53872,57 @@\n         \"../../../node_modules/graphql/type/schema.mjs\":\n             /*!*****************************************************!*\\\n               !*** ../../../node_modules/graphql/type/schema.mjs ***!\n               \\*****************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.GraphQLSchema = void 0;\n                 exports.assertSchema = assertSchema;\n                 exports.isSchema = isSchema;\n+                var _devAssert = __webpack_require__( /*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n                 var _inspect = __webpack_require__( /*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n                 var _instanceOf = __webpack_require__( /*! ../jsutils/instanceOf.mjs */ \"../../../node_modules/graphql/jsutils/instanceOf.mjs\");\n+                var _isObjectLike = __webpack_require__( /*! ../jsutils/isObjectLike.mjs */ \"../../../node_modules/graphql/jsutils/isObjectLike.mjs\");\n                 var _toObjMap = __webpack_require__( /*! ../jsutils/toObjMap.mjs */ \"../../../node_modules/graphql/jsutils/toObjMap.mjs\");\n                 var _ast = __webpack_require__( /*! ../language/ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n                 var _definition = __webpack_require__( /*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n                 var _directives = __webpack_require__( /*! ./directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n                 var _introspection = __webpack_require__( /*! ./introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n                 /**\n                  * Test if the given value is a GraphQL schema.\n                  */\n+\n                 function isSchema(schema) {\n                     return (0, _instanceOf.instanceOf)(schema, GraphQLSchema);\n                 }\n \n                 function assertSchema(schema) {\n                     if (!isSchema(schema)) {\n                         throw new Error(`Expected ${(0, _inspect.inspect)(schema)} to be a GraphQL schema.`);\n                     }\n                     return schema;\n                 }\n                 /**\n+                 * Custom extensions\n+                 *\n+                 * @remarks\n+                 * Use a unique identifier name for your extension, for example the name of\n+                 * your library or project. Do not use a shortened identifier as this increases\n+                 * the risk of conflicts. We recommend you add at most one extension field,\n+                 * an object which can contain all the values you need.\n+                 */\n+\n+                /**\n                  * Schema Definition\n                  *\n                  * A Schema is created by supplying the root types of each type of operation,\n                  * query and mutation (optional). A schema definition is then supplied to the\n                  * validator and executor.\n                  *\n                  * Example:\n@@ -36953,30 +53983,36 @@\n                  * const MyAppSchema = new GraphQLSchema({\n                  *   ...\n                  *   directives: specifiedDirectives.concat([ myCustomDirective ]),\n                  * })\n                  * ```\n                  */\n                 class GraphQLSchema {\n+                    // Used as a cache for validateSchema().\n                     constructor(config) {\n                         var _config$extensionASTN, _config$directives;\n+\n                         // If this schema was built from a source known to be valid, then it may be\n                         // marked with assumeValid to avoid an additional type system validation.\n-                        this.__validationErrors = config.assumeValid === true ? [] : undefined;\n+                        this.__validationErrors = config.assumeValid === true ? [] : undefined; // Check for common mistakes during construction to produce early errors.\n+\n+                        (0, _isObjectLike.isObjectLike)(config) || (0, _devAssert.devAssert)(false, 'Must provide configuration object.');\n+                        !config.types || Array.isArray(config.types) || (0, _devAssert.devAssert)(false, `\"types\" must be Array if provided but got: ${(0, _inspect.inspect)(config.types)}.`);\n+                        !config.directives || Array.isArray(config.directives) || (0, _devAssert.devAssert)(false, '\"directives\" must be Array if provided but got: ' + `${(0, _inspect.inspect)(config.directives)}.`);\n                         this.description = config.description;\n                         this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n                         this.astNode = config.astNode;\n                         this.extensionASTNodes = (_config$extensionASTN = config.extensionASTNodes) !== null && _config$extensionASTN !== void 0 ? _config$extensionASTN : [];\n                         this._queryType = config.query;\n                         this._mutationType = config.mutation;\n-                        this._subscriptionType = config.subscription;\n-                        // Provide specified directives (e.g. @include and @skip) by default.\n-                        this._directives = (_config$directives = config.directives) !== null && _config$directives !== void 0 ? _config$directives : _directives.specifiedDirectives;\n-                        // To preserve order of user-provided types, we add first to add them to\n+                        this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default.\n+\n+                        this._directives = (_config$directives = config.directives) !== null && _config$directives !== void 0 ? _config$directives : _directives.specifiedDirectives; // To preserve order of user-provided types, we add first to add them to\n                         // the set of \"collected\" types, so `collectReferencedTypes` ignore them.\n+\n                         const allReferencedTypes = new Set(config.types);\n                         if (config.types != null) {\n                             for (const type of config.types) {\n                                 // When we ready to process this type, we remove it from \"collected\" types\n                                 // and then add it together with all dependent types in the correct position.\n                                 allReferencedTypes.delete(type);\n                                 collectReferencedTypes(type, allReferencedTypes);\n@@ -36995,25 +54031,26 @@\n                             // Directives are not validated until validateSchema() is called.\n                             if ((0, _directives.isDirective)(directive)) {\n                                 for (const arg of directive.args) {\n                                     collectReferencedTypes(arg.type, allReferencedTypes);\n                                 }\n                             }\n                         }\n-                        collectReferencedTypes(_introspection.__Schema, allReferencedTypes);\n-                        // Storing the resulting map for reference by the schema.\n+                        collectReferencedTypes(_introspection.__Schema, allReferencedTypes); // Storing the resulting map for reference by the schema.\n+\n                         this._typeMap = Object.create(null);\n-                        this._subTypeMap = new Map();\n-                        // Keep track of all implementations by interface name.\n+                        this._subTypeMap = Object.create(null); // Keep track of all implementations by interface name.\n+\n                         this._implementationsMap = Object.create(null);\n                         for (const namedType of allReferencedTypes) {\n                             if (namedType == null) {\n                                 continue;\n                             }\n                             const typeName = namedType.name;\n+                            typeName || (0, _devAssert.devAssert)(false, 'One of the provided types for building the Schema is missing a name.');\n                             if (this._typeMap[typeName] !== undefined) {\n                                 throw new Error(`Schema must contain uniquely named types but contains multiple types named \"${typeName}\".`);\n                             }\n                             this._typeMap[typeName] = namedType;\n                             if ((0, _definition.isInterfaceType)(namedType)) {\n                                 // Store implementations by interface.\n                                 for (const iface of namedType.getInterfaces()) {\n@@ -37080,59 +54117,40 @@\n                         const implementations = this._implementationsMap[interfaceType.name];\n                         return implementations !== null && implementations !== void 0 ? implementations : {\n                             objects: [],\n                             interfaces: []\n                         };\n                     }\n                     isSubType(abstractType, maybeSubType) {\n-                        let set = this._subTypeMap.get(abstractType);\n-                        if (set === undefined) {\n+                        let map = this._subTypeMap[abstractType.name];\n+                        if (map === undefined) {\n+                            map = Object.create(null);\n                             if ((0, _definition.isUnionType)(abstractType)) {\n-                                set = new Set(abstractType.getTypes());\n+                                for (const type of abstractType.getTypes()) {\n+                                    map[type.name] = true;\n+                                }\n                             } else {\n                                 const implementations = this.getImplementations(abstractType);\n-                                set = new Set([...implementations.objects, ...implementations.interfaces]);\n+                                for (const type of implementations.objects) {\n+                                    map[type.name] = true;\n+                                }\n+                                for (const type of implementations.interfaces) {\n+                                    map[type.name] = true;\n+                                }\n                             }\n-                            this._subTypeMap.set(abstractType, set);\n+                            this._subTypeMap[abstractType.name] = map;\n                         }\n-                        return set.has(maybeSubType);\n+                        return map[maybeSubType.name] !== undefined;\n                     }\n                     getDirectives() {\n                         return this._directives;\n                     }\n                     getDirective(name) {\n                         return this.getDirectives().find(directive => directive.name === name);\n                     }\n-                    /**\n-                     * This method looks up the field on the given type definition.\n-                     * It has special casing for the three introspection fields, `__schema`,\n-                     * `__type` and `__typename`.\n-                     *\n-                     * `__typename` is special because it can always be queried as a field, even\n-                     * in situations where no other fields are allowed, like on a Union.\n-                     *\n-                     * `__schema` and `__type` could get automatically added to the query type,\n-                     * but that would require mutating type definitions, which would cause issues.\n-                     */\n-                    getField(parentType, fieldName) {\n-                        switch (fieldName) {\n-                            case _introspection.SchemaMetaFieldDef.name:\n-                                return this.getQueryType() === parentType ? _introspection.SchemaMetaFieldDef : undefined;\n-                            case _introspection.TypeMetaFieldDef.name:\n-                                return this.getQueryType() === parentType ? _introspection.TypeMetaFieldDef : undefined;\n-                            case _introspection.TypeNameMetaFieldDef.name:\n-                                return _introspection.TypeNameMetaFieldDef;\n-                        }\n-                        // this function is part \"hot\" path inside executor and check presence\n-                        // of 'getFields' is faster than to use `!isUnionType`\n-                        if ('getFields' in parentType) {\n-                            return parentType.getFields()[fieldName];\n-                        }\n-                        return undefined;\n-                    }\n                     toConfig() {\n                         return {\n                             description: this.description,\n                             query: this.getQueryType(),\n                             mutation: this.getMutationType(),\n                             subscription: this.getSubscriptionType(),\n                             types: Object.values(this.getTypeMap()),\n@@ -37180,24 +54198,22 @@\n         \"../../../node_modules/graphql/type/validate.mjs\":\n             /*!*******************************************************!*\\\n               !*** ../../../node_modules/graphql/type/validate.mjs ***!\n               \\*******************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.assertValidSchema = assertValidSchema;\n                 exports.validateSchema = validateSchema;\n-                var _AccumulatorMap = __webpack_require__( /*! ../jsutils/AccumulatorMap.mjs */ \"../../../node_modules/graphql/jsutils/AccumulatorMap.mjs\");\n-                var _capitalize = __webpack_require__( /*! ../jsutils/capitalize.mjs */ \"../../../node_modules/graphql/jsutils/capitalize.mjs\");\n-                var _formatList = __webpack_require__( /*! ../jsutils/formatList.mjs */ \"../../../node_modules/graphql/jsutils/formatList.mjs\");\n                 var _inspect = __webpack_require__( /*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n                 var _GraphQLError = __webpack_require__( /*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 var _ast = __webpack_require__( /*! ../language/ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n                 var _typeComparators = __webpack_require__( /*! ../utilities/typeComparators.mjs */ \"../../../node_modules/graphql/utilities/typeComparators.mjs\");\n                 var _definition = __webpack_require__( /*! ./definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n                 var _directives = __webpack_require__( /*! ./directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n                 var _introspection = __webpack_require__( /*! ./introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n@@ -37205,36 +54221,38 @@\n                 /**\n                  * Implements the \"Type Validation\" sub-sections of the specification's\n                  * \"Type System\" section.\n                  *\n                  * Validation runs synchronously, returning an array of encountered errors, or\n                  * an empty array if no errors were encountered and the Schema is valid.\n                  */\n+\n                 function validateSchema(schema) {\n                     // First check to ensure the provided value is in fact a GraphQLSchema.\n-                    (0, _schema.assertSchema)(schema);\n-                    // If this Schema has already been validated, return the previous results.\n+                    (0, _schema.assertSchema)(schema); // If this Schema has already been validated, return the previous results.\n+\n                     if (schema.__validationErrors) {\n                         return schema.__validationErrors;\n-                    }\n-                    // Validate the schema, producing a list of errors.\n+                    } // Validate the schema, producing a list of errors.\n+\n                     const context = new SchemaValidationContext(schema);\n                     validateRootTypes(context);\n                     validateDirectives(context);\n-                    validateTypes(context);\n-                    // Persist the results of validation before returning to ensure validation\n+                    validateTypes(context); // Persist the results of validation before returning to ensure validation\n                     // does not run multiple times for this schema.\n+\n                     const errors = context.getErrors();\n                     schema.__validationErrors = errors;\n                     return errors;\n                 }\n                 /**\n                  * Utility function which asserts a schema is valid by throwing an error if\n                  * it is invalid.\n                  */\n+\n                 function assertValidSchema(schema) {\n                     const errors = validateSchema(schema);\n                     if (errors.length !== 0) {\n                         throw new Error(errors.map(error => error.message).join('\\n\\n'));\n                     }\n                 }\n                 class SchemaValidationContext {\n@@ -37251,66 +54269,60 @@\n                     getErrors() {\n                         return this._errors;\n                     }\n                 }\n \n                 function validateRootTypes(context) {\n                     const schema = context.schema;\n-                    if (schema.getQueryType() == null) {\n+                    const queryType = schema.getQueryType();\n+                    if (!queryType) {\n                         context.reportError('Query root type must be provided.', schema.astNode);\n+                    } else if (!(0, _definition.isObjectType)(queryType)) {\n+                        var _getOperationTypeNode;\n+                        context.reportError(`Query root type must be Object type, it cannot be ${(0, _inspect.inspect)(queryType)}.`, (_getOperationTypeNode = getOperationTypeNode(schema, _ast.OperationTypeNode.QUERY)) !== null && _getOperationTypeNode !== void 0 ? _getOperationTypeNode : queryType.astNode);\n                     }\n-                    const rootTypesMap = new _AccumulatorMap.AccumulatorMap();\n-                    for (const operationType of Object.values(_ast.OperationTypeNode)) {\n-                        const rootType = schema.getRootType(operationType);\n-                        if (rootType != null) {\n-                            if (!(0, _definition.isObjectType)(rootType)) {\n-                                var _getOperationTypeNode;\n-                                const operationTypeStr = (0, _capitalize.capitalize)(operationType);\n-                                const rootTypeStr = (0, _inspect.inspect)(rootType);\n-                                context.reportError(operationType === _ast.OperationTypeNode.QUERY ? `${operationTypeStr} root type must be Object type, it cannot be ${rootTypeStr}.` : `${operationTypeStr} root type must be Object type if provided, it cannot be ${rootTypeStr}.`, (_getOperationTypeNode = getOperationTypeNode(schema, operationType)) !== null && _getOperationTypeNode !== void 0 ? _getOperationTypeNode : rootType.astNode);\n-                            } else {\n-                                rootTypesMap.add(rootType, operationType);\n-                            }\n-                        }\n+                    const mutationType = schema.getMutationType();\n+                    if (mutationType && !(0, _definition.isObjectType)(mutationType)) {\n+                        var _getOperationTypeNode2;\n+                        context.reportError('Mutation root type must be Object type if provided, it cannot be ' + `${(0, _inspect.inspect)(mutationType)}.`, (_getOperationTypeNode2 = getOperationTypeNode(schema, _ast.OperationTypeNode.MUTATION)) !== null && _getOperationTypeNode2 !== void 0 ? _getOperationTypeNode2 : mutationType.astNode);\n                     }\n-                    for (const [rootType, operationTypes] of rootTypesMap) {\n-                        if (operationTypes.length > 1) {\n-                            const operationList = (0, _formatList.andList)(operationTypes);\n-                            context.reportError(`All root types must be different, \"${rootType.name}\" type is used as ${operationList} root types.`, operationTypes.map(operationType => getOperationTypeNode(schema, operationType)));\n-                        }\n+                    const subscriptionType = schema.getSubscriptionType();\n+                    if (subscriptionType && !(0, _definition.isObjectType)(subscriptionType)) {\n+                        var _getOperationTypeNode3;\n+                        context.reportError('Subscription root type must be Object type if provided, it cannot be ' + `${(0, _inspect.inspect)(subscriptionType)}.`, (_getOperationTypeNode3 = getOperationTypeNode(schema, _ast.OperationTypeNode.SUBSCRIPTION)) !== null && _getOperationTypeNode3 !== void 0 ? _getOperationTypeNode3 : subscriptionType.astNode);\n                     }\n                 }\n \n                 function getOperationTypeNode(schema, operation) {\n                     var _flatMap$find;\n                     return (_flatMap$find = [schema.astNode, ...schema.extensionASTNodes].flatMap(\n                         // FIXME: https://github.com/graphql/graphql-js/issues/2203\n                         schemaNode => {\n                             var _schemaNode$operation;\n-                            return /* c8 ignore next */ (_schemaNode$operation = schemaNode === null || schemaNode === void 0 ? void 0 : schemaNode.operationTypes) !== null && _schemaNode$operation !== void 0 ? _schemaNode$operation : [];\n+                            return /* c8 ignore next */ (\n+                                (_schemaNode$operation = schemaNode === null || schemaNode === void 0 ? void 0 : schemaNode.operationTypes) !== null && _schemaNode$operation !== void 0 ? _schemaNode$operation : []\n+                            );\n                         }).find(operationNode => operationNode.operation === operation)) === null || _flatMap$find === void 0 ? void 0 : _flatMap$find.type;\n                 }\n \n                 function validateDirectives(context) {\n                     for (const directive of context.schema.getDirectives()) {\n                         // Ensure all directives are in fact GraphQL directives.\n                         if (!(0, _directives.isDirective)(directive)) {\n                             context.reportError(`Expected directive but got: ${(0, _inspect.inspect)(directive)}.`, directive === null || directive === void 0 ? void 0 : directive.astNode);\n                             continue;\n-                        }\n-                        // Ensure they are named correctly.\n-                        validateName(context, directive);\n-                        if (directive.locations.length === 0) {\n-                            context.reportError(`Directive @${directive.name} must include 1 or more locations.`, directive.astNode);\n-                        }\n+                        } // Ensure they are named correctly.\n+\n+                        validateName(context, directive); // TODO: Ensure proper locations.\n                         // Ensure the arguments are valid.\n+\n                         for (const arg of directive.args) {\n                             // Ensure they are named correctly.\n-                            validateName(context, arg);\n-                            // Ensure the type is an input type.\n+                            validateName(context, arg); // Ensure the type is an input type.\n+\n                             if (!(0, _definition.isInputType)(arg.type)) {\n                                 context.reportError(`The type of @${directive.name}(${arg.name}:) must be Input Type ` + `but got: ${(0, _inspect.inspect)(arg.type)}.`, arg.astNode);\n                             }\n                             if ((0, _definition.isRequiredArgument)(arg) && arg.deprecationReason != null) {\n                                 var _arg$astNode;\n                                 context.reportError(`Required argument @${directive.name}(${arg.name}:) cannot be deprecated.`, [getDeprecatedDirectiveNode(arg.astNode), (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0 ? void 0 : _arg$astNode.type]);\n                             }\n@@ -37329,133 +54341,132 @@\n                     const validateInputObjectCircularRefs = createInputObjectCircularRefsValidator(context);\n                     const typeMap = context.schema.getTypeMap();\n                     for (const type of Object.values(typeMap)) {\n                         // Ensure all provided types are in fact GraphQL type.\n                         if (!(0, _definition.isNamedType)(type)) {\n                             context.reportError(`Expected GraphQL named type but got: ${(0, _inspect.inspect)(type)}.`, type.astNode);\n                             continue;\n-                        }\n-                        // Ensure it is named correctly (excluding introspection types).\n+                        } // Ensure it is named correctly (excluding introspection types).\n+\n                         if (!(0, _introspection.isIntrospectionType)(type)) {\n                             validateName(context, type);\n                         }\n                         if ((0, _definition.isObjectType)(type)) {\n                             // Ensure fields are valid\n-                            validateFields(context, type);\n-                            // Ensure objects implement the interfaces they claim to.\n+                            validateFields(context, type); // Ensure objects implement the interfaces they claim to.\n+\n                             validateInterfaces(context, type);\n                         } else if ((0, _definition.isInterfaceType)(type)) {\n                             // Ensure fields are valid.\n-                            validateFields(context, type);\n-                            // Ensure interfaces implement the interfaces they claim to.\n+                            validateFields(context, type); // Ensure interfaces implement the interfaces they claim to.\n+\n                             validateInterfaces(context, type);\n                         } else if ((0, _definition.isUnionType)(type)) {\n                             // Ensure Unions include valid member types.\n                             validateUnionMembers(context, type);\n                         } else if ((0, _definition.isEnumType)(type)) {\n                             // Ensure Enums have valid values.\n                             validateEnumValues(context, type);\n                         } else if ((0, _definition.isInputObjectType)(type)) {\n                             // Ensure Input Object fields are valid.\n-                            validateInputFields(context, type);\n-                            // Ensure Input Objects do not contain non-nullable circular references\n+                            validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references\n+\n                             validateInputObjectCircularRefs(type);\n                         }\n                     }\n                 }\n \n                 function validateFields(context, type) {\n-                    const fields = Object.values(type.getFields());\n-                    // Objects and Interfaces both must define one or more fields.\n+                    const fields = Object.values(type.getFields()); // Objects and Interfaces both must define one or more fields.\n+\n                     if (fields.length === 0) {\n                         context.reportError(`Type ${type.name} must define one or more fields.`, [type.astNode, ...type.extensionASTNodes]);\n                     }\n                     for (const field of fields) {\n                         // Ensure they are named correctly.\n-                        validateName(context, field);\n-                        // Ensure the type is an output type\n+                        validateName(context, field); // Ensure the type is an output type\n+\n                         if (!(0, _definition.isOutputType)(field.type)) {\n                             var _field$astNode;\n                             context.reportError(`The type of ${type.name}.${field.name} must be Output Type ` + `but got: ${(0, _inspect.inspect)(field.type)}.`, (_field$astNode = field.astNode) === null || _field$astNode === void 0 ? void 0 : _field$astNode.type);\n-                        }\n-                        // Ensure the arguments are valid\n+                        } // Ensure the arguments are valid\n+\n                         for (const arg of field.args) {\n-                            const argName = arg.name;\n-                            // Ensure they are named correctly.\n-                            validateName(context, arg);\n-                            // Ensure the type is an input type\n+                            const argName = arg.name; // Ensure they are named correctly.\n+\n+                            validateName(context, arg); // Ensure the type is an input type\n+\n                             if (!(0, _definition.isInputType)(arg.type)) {\n                                 var _arg$astNode2;\n                                 context.reportError(`The type of ${type.name}.${field.name}(${argName}:) must be Input ` + `Type but got: ${(0, _inspect.inspect)(arg.type)}.`, (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0 ? void 0 : _arg$astNode2.type);\n                             }\n                             if ((0, _definition.isRequiredArgument)(arg) && arg.deprecationReason != null) {\n                                 var _arg$astNode3;\n                                 context.reportError(`Required argument ${type.name}.${field.name}(${argName}:) cannot be deprecated.`, [getDeprecatedDirectiveNode(arg.astNode), (_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0 ? void 0 : _arg$astNode3.type]);\n                             }\n                         }\n                     }\n                 }\n \n                 function validateInterfaces(context, type) {\n-                    const ifaceTypeNames = new Set();\n+                    const ifaceTypeNames = Object.create(null);\n                     for (const iface of type.getInterfaces()) {\n                         if (!(0, _definition.isInterfaceType)(iface)) {\n                             context.reportError(`Type ${(0, _inspect.inspect)(type)} must only implement Interface types, ` + `it cannot implement ${(0, _inspect.inspect)(iface)}.`, getAllImplementsInterfaceNodes(type, iface));\n                             continue;\n                         }\n                         if (type === iface) {\n                             context.reportError(`Type ${type.name} cannot implement itself because it would create a circular reference.`, getAllImplementsInterfaceNodes(type, iface));\n                             continue;\n                         }\n-                        if (ifaceTypeNames.has(iface.name)) {\n+                        if (ifaceTypeNames[iface.name]) {\n                             context.reportError(`Type ${type.name} can only implement ${iface.name} once.`, getAllImplementsInterfaceNodes(type, iface));\n                             continue;\n                         }\n-                        ifaceTypeNames.add(iface.name);\n+                        ifaceTypeNames[iface.name] = true;\n                         validateTypeImplementsAncestors(context, type, iface);\n                         validateTypeImplementsInterface(context, type, iface);\n                     }\n                 }\n \n                 function validateTypeImplementsInterface(context, type, iface) {\n-                    const typeFieldMap = type.getFields();\n-                    // Assert each interface field is implemented.\n+                    const typeFieldMap = type.getFields(); // Assert each interface field is implemented.\n+\n                     for (const ifaceField of Object.values(iface.getFields())) {\n                         const fieldName = ifaceField.name;\n-                        const typeField = typeFieldMap[fieldName];\n-                        // Assert interface field exists on type.\n-                        if (typeField == null) {\n+                        const typeField = typeFieldMap[fieldName]; // Assert interface field exists on type.\n+\n+                        if (!typeField) {\n                             context.reportError(`Interface field ${iface.name}.${fieldName} expected but ${type.name} does not provide it.`, [ifaceField.astNode, type.astNode, ...type.extensionASTNodes]);\n                             continue;\n-                        }\n-                        // Assert interface field type is satisfied by type field type, by being\n+                        } // Assert interface field type is satisfied by type field type, by being\n                         // a valid subtype. (covariant)\n+\n                         if (!(0, _typeComparators.isTypeSubTypeOf)(context.schema, typeField.type, ifaceField.type)) {\n                             var _ifaceField$astNode, _typeField$astNode;\n                             context.reportError(`Interface field ${iface.name}.${fieldName} expects type ` + `${(0, _inspect.inspect)(ifaceField.type)} but ${type.name}.${fieldName} ` + `is type ${(0, _inspect.inspect)(typeField.type)}.`, [(_ifaceField$astNode = ifaceField.astNode) === null || _ifaceField$astNode === void 0 ? void 0 : _ifaceField$astNode.type, (_typeField$astNode = typeField.astNode) === null || _typeField$astNode === void 0 ? void 0 : _typeField$astNode.type]);\n-                        }\n-                        // Assert each interface field arg is implemented.\n+                        } // Assert each interface field arg is implemented.\n+\n                         for (const ifaceArg of ifaceField.args) {\n                             const argName = ifaceArg.name;\n-                            const typeArg = typeField.args.find(arg => arg.name === argName);\n-                            // Assert interface field arg exists on object field.\n+                            const typeArg = typeField.args.find(arg => arg.name === argName); // Assert interface field arg exists on object field.\n+\n                             if (!typeArg) {\n                                 context.reportError(`Interface field argument ${iface.name}.${fieldName}(${argName}:) expected but ${type.name}.${fieldName} does not provide it.`, [ifaceArg.astNode, typeField.astNode]);\n                                 continue;\n-                            }\n-                            // Assert interface field arg type matches object field arg type.\n+                            } // Assert interface field arg type matches object field arg type.\n                             // (invariant)\n                             // TODO: change to contravariant?\n+\n                             if (!(0, _typeComparators.isEqualType)(ifaceArg.type, typeArg.type)) {\n                                 var _ifaceArg$astNode, _typeArg$astNode;\n                                 context.reportError(`Interface field argument ${iface.name}.${fieldName}(${argName}:) ` + `expects type ${(0, _inspect.inspect)(ifaceArg.type)} but ` + `${type.name}.${fieldName}(${argName}:) is type ` + `${(0, _inspect.inspect)(typeArg.type)}.`, [(_ifaceArg$astNode = ifaceArg.astNode) === null || _ifaceArg$astNode === void 0 ? void 0 : _ifaceArg$astNode.type, (_typeArg$astNode = typeArg.astNode) === null || _typeArg$astNode === void 0 ? void 0 : _typeArg$astNode.type]);\n-                            }\n-                            // TODO: validate default values?\n-                        }\n-                        // Assert additional arguments must not be required.\n+                            } // TODO: validate default values?\n+                        } // Assert additional arguments must not be required.\n+\n                         for (const typeArg of typeField.args) {\n                             const argName = typeArg.name;\n                             const ifaceArg = ifaceField.args.find(arg => arg.name === argName);\n                             if (!ifaceArg && (0, _definition.isRequiredArgument)(typeArg)) {\n                                 context.reportError(`Object field ${type.name}.${fieldName} includes required argument ${argName} that is missing from the Interface field ${iface.name}.${fieldName}.`, [typeArg.astNode, ifaceField.astNode]);\n                             }\n                         }\n@@ -37472,21 +54483,21 @@\n                 }\n \n                 function validateUnionMembers(context, union) {\n                     const memberTypes = union.getTypes();\n                     if (memberTypes.length === 0) {\n                         context.reportError(`Union type ${union.name} must define one or more member types.`, [union.astNode, ...union.extensionASTNodes]);\n                     }\n-                    const includedTypeNames = new Set();\n+                    const includedTypeNames = Object.create(null);\n                     for (const memberType of memberTypes) {\n-                        if (includedTypeNames.has(memberType.name)) {\n+                        if (includedTypeNames[memberType.name]) {\n                             context.reportError(`Union type ${union.name} can only include type ${memberType.name} once.`, getUnionMemberTypeNodes(union, memberType.name));\n                             continue;\n                         }\n-                        includedTypeNames.add(memberType.name);\n+                        includedTypeNames[memberType.name] = true;\n                         if (!(0, _definition.isObjectType)(memberType)) {\n                             context.reportError(`Union type ${union.name} can only include Object types, ` + `it cannot include ${(0, _inspect.inspect)(memberType)}.`, getUnionMemberTypeNodes(union, String(memberType)));\n                         }\n                     }\n                 }\n \n                 function validateEnumValues(context, enumType) {\n@@ -37500,20 +54511,20 @@\n                     }\n                 }\n \n                 function validateInputFields(context, inputObj) {\n                     const fields = Object.values(inputObj.getFields());\n                     if (fields.length === 0) {\n                         context.reportError(`Input Object type ${inputObj.name} must define one or more fields.`, [inputObj.astNode, ...inputObj.extensionASTNodes]);\n-                    }\n-                    // Ensure the arguments are valid\n+                    } // Ensure the arguments are valid\n+\n                     for (const field of fields) {\n                         // Ensure they are named correctly.\n-                        validateName(context, field);\n-                        // Ensure the type is an input type\n+                        validateName(context, field); // Ensure the type is an input type\n+\n                         if (!(0, _definition.isInputType)(field.type)) {\n                             var _field$astNode2;\n                             context.reportError(`The type of ${inputObj.name}.${field.name} must be Input Type ` + `but got: ${(0, _inspect.inspect)(field.type)}.`, (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0 ? void 0 : _field$astNode2.type);\n                         }\n                         if ((0, _definition.isRequiredInputField)(field) && field.deprecationReason != null) {\n                             var _field$astNode3;\n                             context.reportError(`Required input field ${inputObj.name}.${field.name} cannot be deprecated.`, [getDeprecatedDirectiveNode(field.astNode), (_field$astNode3 = field.astNode) === null || _field$astNode3 === void 0 ? void 0 : _field$astNode3.type]);\n@@ -37534,28 +54545,28 @@\n                     }\n                 }\n \n                 function createInputObjectCircularRefsValidator(context) {\n                     // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n                     // Tracks already visited types to maintain O(N) and to ensure that cycles\n                     // are not redundantly reported.\n-                    const visitedTypes = new Set();\n-                    // Array of types nodes used to produce meaningful errors\n-                    const fieldPath = [];\n-                    // Position in the type path\n+                    const visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors\n+\n+                    const fieldPath = []; // Position in the type path\n+\n                     const fieldPathIndexByTypeName = Object.create(null);\n-                    return detectCycleRecursive;\n-                    // This does a straight-forward DFS to find cycles.\n+                    return detectCycleRecursive; // This does a straight-forward DFS to find cycles.\n                     // It does not terminate when a cycle was found but continues to explore\n                     // the graph to find all possible cycles.\n+\n                     function detectCycleRecursive(inputObj) {\n-                        if (visitedTypes.has(inputObj)) {\n+                        if (visitedTypes[inputObj.name]) {\n                             return;\n                         }\n-                        visitedTypes.add(inputObj);\n+                        visitedTypes[inputObj.name] = true;\n                         fieldPathIndexByTypeName[inputObj.name] = fieldPath.length;\n                         const fields = Object.values(inputObj.getFields());\n                         for (const field of fields) {\n                             if ((0, _definition.isNonNullType)(field.type) && (0, _definition.isInputObjectType)(field.type.ofType)) {\n                                 const fieldType = field.type.ofType;\n                                 const cycleIndex = fieldPathIndexByTypeName[fieldType.name];\n                                 fieldPath.push(field);\n@@ -37574,32 +54585,36 @@\n                 }\n \n                 function getAllImplementsInterfaceNodes(type, iface) {\n                     const {\n                         astNode,\n                         extensionASTNodes\n                     } = type;\n-                    const nodes = astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes;\n-                    // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+                    const nodes = astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+\n                     return nodes.flatMap(typeNode => {\n                         var _typeNode$interfaces;\n-                        return /* c8 ignore next */ (_typeNode$interfaces = typeNode.interfaces) !== null && _typeNode$interfaces !== void 0 ? _typeNode$interfaces : [];\n+                        return /* c8 ignore next */ (\n+                            (_typeNode$interfaces = typeNode.interfaces) !== null && _typeNode$interfaces !== void 0 ? _typeNode$interfaces : []\n+                        );\n                     }).filter(ifaceNode => ifaceNode.name.value === iface.name);\n                 }\n \n                 function getUnionMemberTypeNodes(union, typeName) {\n                     const {\n                         astNode,\n                         extensionASTNodes\n                     } = union;\n-                    const nodes = astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes;\n-                    // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+                    const nodes = astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+\n                     return nodes.flatMap(unionNode => {\n                         var _unionNode$types;\n-                        return /* c8 ignore next */ (_unionNode$types = unionNode.types) !== null && _unionNode$types !== void 0 ? _unionNode$types : [];\n+                        return /* c8 ignore next */ (\n+                            (_unionNode$types = unionNode.types) !== null && _unionNode$types !== void 0 ? _unionNode$types : []\n+                        );\n                     }).filter(typeNode => typeNode.name.value === typeName);\n                 }\n \n                 function getDeprecatedDirectiveNode(definitionNode) {\n                     var _definitionNode$direc;\n                     return definitionNode === null || definitionNode === void 0 ? void 0 : (_definitionNode$direc = definitionNode.directives) === null || _definitionNode$direc === void 0 ? void 0 : _definitionNode$direc.find(node => node.name.value === _directives.GraphQLDeprecatedDirective.name);\n                 }\n@@ -37611,31 +54626,34 @@\n         \"../../../node_modules/graphql/utilities/TypeInfo.mjs\":\n             /*!************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/TypeInfo.mjs ***!\n               \\************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.TypeInfo = void 0;\n                 exports.visitWithTypeInfo = visitWithTypeInfo;\n                 var _ast = __webpack_require__( /*! ../language/ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n                 var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 var _visitor = __webpack_require__( /*! ../language/visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n                 var _definition = __webpack_require__( /*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n+                var _introspection = __webpack_require__( /*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n                 var _typeFromAST = __webpack_require__( /*! ./typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n                 /**\n                  * TypeInfo is a utility class which, given a GraphQL schema, can keep track\n                  * of the current field and type definitions at any point in a GraphQL document\n                  * AST during a recursive descent by calling `enter(node)` and `leave(node)`.\n                  */\n+\n                 class TypeInfo {\n                     constructor(schema,\n                         /**\n                          * Initial type may be provided in rare cases to facilitate traversals\n                          *  beginning somewhere other than documents.\n                          */\n                         initialType, /** @deprecated will be removed in 17.0.0 */\n@@ -37662,46 +54680,58 @@\n                             }\n                         }\n                     }\n                     get[Symbol.toStringTag]() {\n                         return 'TypeInfo';\n                     }\n                     getType() {\n-                        return this._typeStack.at(-1);\n+                        if (this._typeStack.length > 0) {\n+                            return this._typeStack[this._typeStack.length - 1];\n+                        }\n                     }\n                     getParentType() {\n-                        return this._parentTypeStack.at(-1);\n+                        if (this._parentTypeStack.length > 0) {\n+                            return this._parentTypeStack[this._parentTypeStack.length - 1];\n+                        }\n                     }\n                     getInputType() {\n-                        return this._inputTypeStack.at(-1);\n+                        if (this._inputTypeStack.length > 0) {\n+                            return this._inputTypeStack[this._inputTypeStack.length - 1];\n+                        }\n                     }\n                     getParentInputType() {\n-                        return this._inputTypeStack.at(-2);\n+                        if (this._inputTypeStack.length > 1) {\n+                            return this._inputTypeStack[this._inputTypeStack.length - 2];\n+                        }\n                     }\n                     getFieldDef() {\n-                        return this._fieldDefStack.at(-1);\n+                        if (this._fieldDefStack.length > 0) {\n+                            return this._fieldDefStack[this._fieldDefStack.length - 1];\n+                        }\n                     }\n                     getDefaultValue() {\n-                        return this._defaultValueStack.at(-1);\n+                        if (this._defaultValueStack.length > 0) {\n+                            return this._defaultValueStack[this._defaultValueStack.length - 1];\n+                        }\n                     }\n                     getDirective() {\n                         return this._directive;\n                     }\n                     getArgument() {\n                         return this._argument;\n                     }\n                     getEnumValue() {\n                         return this._enumValue;\n                     }\n                     enter(node) {\n-                        const schema = this._schema;\n-                        // Note: many of the types below are explicitly typed as \"unknown\" to drop\n+                        const schema = this._schema; // Note: many of the types below are explicitly typed as \"unknown\" to drop\n                         // any assumptions of a valid schema to ensure runtime types are properly\n                         // checked before continuing since TypeInfo is used as part of validation\n                         // which occurs before guarantees of schema and document validity.\n+\n                         switch (node.kind) {\n                             case _kinds.Kind.SELECTION_SET: {\n                                 const namedType = (0, _definition.getNamedType)(this.getType());\n                                 this._parentTypeStack.push((0, _definition.isCompositeType)(namedType) ? namedType : undefined);\n                                 break;\n                             }\n                             case _kinds.Kind.FIELD: {\n@@ -37752,27 +54782,27 @@\n                                 this._argument = argDef;\n                                 this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);\n                                 this._inputTypeStack.push((0, _definition.isInputType)(argType) ? argType : undefined);\n                                 break;\n                             }\n                             case _kinds.Kind.LIST: {\n                                 const listType = (0, _definition.getNullableType)(this.getInputType());\n-                                const itemType = (0, _definition.isListType)(listType) ? listType.ofType : listType;\n-                                // List positions never have a default value.\n+                                const itemType = (0, _definition.isListType)(listType) ? listType.ofType : listType; // List positions never have a default value.\n+\n                                 this._defaultValueStack.push(undefined);\n                                 this._inputTypeStack.push((0, _definition.isInputType)(itemType) ? itemType : undefined);\n                                 break;\n                             }\n                             case _kinds.Kind.OBJECT_FIELD: {\n                                 const objectType = (0, _definition.getNamedType)(this.getInputType());\n                                 let inputFieldType;\n                                 let inputField;\n                                 if ((0, _definition.isInputObjectType)(objectType)) {\n                                     inputField = objectType.getFields()[node.name.value];\n-                                    if (inputField != null) {\n+                                    if (inputField) {\n                                         inputFieldType = inputField.type;\n                                     }\n                                 }\n                                 this._defaultValueStack.push(inputField ? inputField.defaultValue : undefined);\n                                 this._inputTypeStack.push((0, _definition.isInputType)(inputFieldType) ? inputFieldType : undefined);\n                                 break;\n                             }\n@@ -37781,16 +54811,15 @@\n                                 let enumValue;\n                                 if ((0, _definition.isEnumType)(enumType)) {\n                                     enumValue = enumType.getValue(node.value);\n                                 }\n                                 this._enumValue = enumValue;\n                                 break;\n                             }\n-                            default:\n-                                // Ignore other nodes\n+                            default: // Ignore other nodes\n                         }\n                     }\n                     leave(node) {\n                         switch (node.kind) {\n                             case _kinds.Kind.SELECTION_SET:\n                                 this._parentTypeStack.pop();\n                                 break;\n@@ -37818,28 +54847,46 @@\n                             case _kinds.Kind.OBJECT_FIELD:\n                                 this._defaultValueStack.pop();\n                                 this._inputTypeStack.pop();\n                                 break;\n                             case _kinds.Kind.ENUM:\n                                 this._enumValue = null;\n                                 break;\n-                            default:\n-                                // Ignore other nodes\n+                            default: // Ignore other nodes\n                         }\n                     }\n                 }\n+\n+                /**\n+                 * Not exactly the same as the executor's definition of getFieldDef, in this\n+                 * statically evaluated environment we do not always have an Object type,\n+                 * and need to handle Interface and Union types.\n+                 */\n                 exports.TypeInfo = TypeInfo;\n \n                 function getFieldDef(schema, parentType, fieldNode) {\n-                    return schema.getField(parentType, fieldNode.name.value);\n+                    const name = fieldNode.name.value;\n+                    if (name === _introspection.SchemaMetaFieldDef.name && schema.getQueryType() === parentType) {\n+                        return _introspection.SchemaMetaFieldDef;\n+                    }\n+                    if (name === _introspection.TypeMetaFieldDef.name && schema.getQueryType() === parentType) {\n+                        return _introspection.TypeMetaFieldDef;\n+                    }\n+                    if (name === _introspection.TypeNameMetaFieldDef.name && (0, _definition.isCompositeType)(parentType)) {\n+                        return _introspection.TypeNameMetaFieldDef;\n+                    }\n+                    if ((0, _definition.isObjectType)(parentType) || (0, _definition.isInterfaceType)(parentType)) {\n+                        return parentType.getFields()[name];\n+                    }\n                 }\n                 /**\n                  * Creates a new visitor instance which maintains a provided TypeInfo instance\n                  * along with visiting visitor.\n                  */\n+\n                 function visitWithTypeInfo(typeInfo, visitor) {\n                     return {\n                         enter(...args) {\n                             const node = args[0];\n                             typeInfo.enter(node);\n                             const fn = (0, _visitor.getEnterLeaveForKind)(visitor, node.kind).enter;\n                             if (fn) {\n@@ -37866,21 +54913,76 @@\n                     };\n                 }\n \n                 /***/\n             }),\n \n         /***/\n+        \"../../../node_modules/graphql/utilities/assertValidName.mjs\":\n+            /*!*******************************************************************!*\\\n+              !*** ../../../node_modules/graphql/utilities/assertValidName.mjs ***!\n+              \\*******************************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports.assertValidName = assertValidName;\n+                exports.isValidNameError = isValidNameError;\n+                var _devAssert = __webpack_require__( /*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n+                var _GraphQLError = __webpack_require__( /*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n+                var _assertName = __webpack_require__( /*! ../type/assertName.mjs */ \"../../../node_modules/graphql/type/assertName.mjs\");\n+                /* c8 ignore start */\n+\n+                /**\n+                 * Upholds the spec rules about naming.\n+                 * @deprecated Please use `assertName` instead. Will be removed in v17\n+                 */\n+\n+                function assertValidName(name) {\n+                    const error = isValidNameError(name);\n+                    if (error) {\n+                        throw error;\n+                    }\n+                    return name;\n+                }\n+                /**\n+                 * Returns an Error if a name is invalid.\n+                 * @deprecated Please use `assertName` instead. Will be removed in v17\n+                 */\n+\n+                function isValidNameError(name) {\n+                    typeof name === 'string' || (0, _devAssert.devAssert)(false, 'Expected name to be a string.');\n+                    if (name.startsWith('__')) {\n+                        return new _GraphQLError.GraphQLError(`Name \"${name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`);\n+                    }\n+                    try {\n+                        (0, _assertName.assertName)(name);\n+                    } catch (error) {\n+                        return error;\n+                    }\n+                }\n+                /* c8 ignore stop */\n+\n+                /***/\n+            }),\n+\n+        /***/\n         \"../../../node_modules/graphql/utilities/astFromValue.mjs\":\n             /*!****************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/astFromValue.mjs ***!\n               \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.astFromValue = astFromValue;\n                 var _inspect = __webpack_require__( /*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n@@ -37907,34 +55009,35 @@\n                  * | Boolean       | Boolean              |\n                  * | String        | String / Enum Value  |\n                  * | Number        | Int / Float          |\n                  * | Unknown       | Enum Value           |\n                  * | null          | NullValue            |\n                  *\n                  */\n+\n                 function astFromValue(value, type) {\n                     if ((0, _definition.isNonNullType)(type)) {\n                         const astValue = astFromValue(value, type.ofType);\n                         if ((astValue === null || astValue === void 0 ? void 0 : astValue.kind) === _kinds.Kind.NULL) {\n                             return null;\n                         }\n                         return astValue;\n-                    }\n-                    // only explicit null, not undefined, NaN\n+                    } // only explicit null, not undefined, NaN\n+\n                     if (value === null) {\n                         return {\n                             kind: _kinds.Kind.NULL\n                         };\n-                    }\n-                    // undefined\n+                    } // undefined\n+\n                     if (value === undefined) {\n                         return null;\n-                    }\n-                    // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n+                    } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n                     // the value is not an array, convert the value using the list's item type.\n+\n                     if ((0, _definition.isListType)(type)) {\n                         const itemType = type.ofType;\n                         if ((0, _isIterableObject.isIterableObject)(value)) {\n                             const valuesNodes = [];\n                             for (const item of value) {\n                                 const itemNode = astFromValue(item, itemType);\n                                 if (itemNode != null) {\n@@ -37943,17 +55046,17 @@\n                             }\n                             return {\n                                 kind: _kinds.Kind.LIST,\n                                 values: valuesNodes\n                             };\n                         }\n                         return astFromValue(value, itemType);\n-                    }\n-                    // Populate the fields of the input object by creating ASTs from each value\n+                    } // Populate the fields of the input object by creating ASTs from each value\n                     // in the JavaScript object according to the fields in the input type.\n+\n                     if ((0, _definition.isInputObjectType)(type)) {\n                         if (!(0, _isObjectLike.isObjectLike)(value)) {\n                             return null;\n                         }\n                         const fieldNodes = [];\n                         for (const field of Object.values(type.getFields())) {\n                             const fieldValue = astFromValue(value[field.name], field.type);\n@@ -37975,23 +55078,23 @@\n                     }\n                     if ((0, _definition.isLeafType)(type)) {\n                         // Since value is an internally represented value, it must be serialized\n                         // to an externally represented value before converting into an AST.\n                         const serialized = type.serialize(value);\n                         if (serialized == null) {\n                             return null;\n-                        }\n-                        // Others serialize based on their corresponding JavaScript scalar types.\n+                        } // Others serialize based on their corresponding JavaScript scalar types.\n+\n                         if (typeof serialized === 'boolean') {\n                             return {\n                                 kind: _kinds.Kind.BOOLEAN,\n                                 value: serialized\n                             };\n-                        }\n-                        // JavaScript numbers can be Int or Float values.\n+                        } // JavaScript numbers can be Int or Float values.\n+\n                         if (typeof serialized === 'number' && Number.isFinite(serialized)) {\n                             const stringNum = String(serialized);\n                             return integerStringRegExp.test(stringNum) ? {\n                                 kind: _kinds.Kind.INT,\n                                 value: stringNum\n                             } : {\n                                 kind: _kinds.Kind.FLOAT,\n@@ -38001,16 +55104,16 @@\n                         if (typeof serialized === 'string') {\n                             // Enum types use Enum literals.\n                             if ((0, _definition.isEnumType)(type)) {\n                                 return {\n                                     kind: _kinds.Kind.ENUM,\n                                     value: serialized\n                                 };\n-                            }\n-                            // ID types can use Int literals.\n+                            } // ID types can use Int literals.\n+\n                             if (type === _scalars.GraphQLID && integerStringRegExp.test(serialized)) {\n                                 return {\n                                     kind: _kinds.Kind.INT,\n                                     value: serialized\n                                 };\n                             }\n                             return {\n@@ -38018,41 +55121,46 @@\n                                 value: serialized\n                             };\n                         }\n                         throw new TypeError(`Cannot convert value to AST: ${(0, _inspect.inspect)(serialized)}.`);\n                     }\n                     /* c8 ignore next 3 */\n                     // Not reachable, all possible types have been considered.\n+\n                     false || (0, _invariant.invariant)(false, 'Unexpected input type: ' + (0, _inspect.inspect)(type));\n                 }\n                 /**\n                  * IntValue:\n                  *   - NegativeSign? 0\n                  *   - NegativeSign? NonZeroDigit ( Digit+ )?\n                  */\n+\n                 const integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/utilities/buildASTSchema.mjs\":\n             /*!******************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/buildASTSchema.mjs ***!\n               \\******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.buildASTSchema = buildASTSchema;\n                 exports.buildSchema = buildSchema;\n+                var _devAssert = __webpack_require__( /*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n+                var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 var _parser = __webpack_require__( /*! ../language/parser.mjs */ \"../../../node_modules/graphql/language/parser.mjs\");\n                 var _directives = __webpack_require__( /*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n                 var _schema = __webpack_require__( /*! ../type/schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n                 var _validate = __webpack_require__( /*! ../validation/validate.mjs */ \"../../../node_modules/graphql/validation/validate.mjs\");\n                 var _extendSchema = __webpack_require__( /*! ./extendSchema.mjs */ \"../../../node_modules/graphql/utilities/extendSchema.mjs\");\n                 /**\n                  * This takes the ast of a schema document produced by the parse function in\n@@ -38061,14 +55169,15 @@\n                  * If no schema definition is provided, then it will look for types named Query,\n                  * Mutation and Subscription.\n                  *\n                  * Given that AST it constructs a GraphQLSchema. The resulting schema\n                  * has no resolve methods, so execution will use default resolvers.\n                  */\n                 function buildASTSchema(documentAST, options) {\n+                    documentAST != null && documentAST.kind === _kinds.Kind.DOCUMENT || (0, _devAssert.devAssert)(false, 'Must provide valid Document AST.');\n                     if ((options === null || options === void 0 ? void 0 : options.assumeValid) !== true && (options === null || options === void 0 ? void 0 : options.assumeValidSDL) !== true) {\n                         (0, _validate.assertValidSDL)(documentAST);\n                     }\n                     const emptySchemaConfig = {\n                         description: undefined,\n                         types: [],\n                         directives: [],\n@@ -38107,14 +55216,15 @@\n                         directives\n                     });\n                 }\n                 /**\n                  * A helper function to build a GraphQLSchema directly from a source\n                  * document.\n                  */\n+\n                 function buildSchema(source, options) {\n                     const document = (0, _parser.parse)(source, {\n                         noLocation: options === null || options === void 0 ? void 0 : options.noLocation,\n                         allowLegacyFragmentVariables: options === null || options === void 0 ? void 0 : options.allowLegacyFragmentVariables\n                     });\n                     return buildASTSchema(document, {\n                         assumeValidSDL: options === null || options === void 0 ? void 0 : options.assumeValidSDL,\n@@ -38129,14 +55239,15 @@\n         \"../../../node_modules/graphql/utilities/buildClientSchema.mjs\":\n             /*!*********************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/buildClientSchema.mjs ***!\n               \\*********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.buildClientSchema = buildClientSchema;\n                 var _devAssert = __webpack_require__( /*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n@@ -38158,87 +55269,86 @@\n                  * tools, but cannot be used to execute a query, as introspection does not\n                  * represent the \"resolver\", \"parse\" or \"serialize\" functions or any other\n                  * server-internal mechanisms.\n                  *\n                  * This function expects a complete introspection result. Don't forget to check\n                  * the \"errors\" field of a server response before calling this function.\n                  */\n+\n                 function buildClientSchema(introspection, options) {\n-                    // Even though the `introspection` argument is typed, in most cases it's received\n-                    // as an untyped value from the server, so we will do an additional check here.\n-                    (0, _isObjectLike.isObjectLike)(introspection) && (0, _isObjectLike.isObjectLike)(introspection.__schema) || (0, _devAssert.devAssert)(false, `Invalid or incomplete introspection result. Ensure that you are passing \"data\" property of introspection response and no \"errors\" was returned alongside: ${(0, _inspect.inspect)(introspection)}.`);\n-                    // Get the schema from the introspection result.\n-                    const schemaIntrospection = introspection.__schema;\n-                    // Iterate through all types, getting the type definition for each.\n-                    const typeMap = new Map(schemaIntrospection.types.map(typeIntrospection => [typeIntrospection.name, buildType(typeIntrospection)]));\n-                    // Include standard types only if they are used.\n+                    (0, _isObjectLike.isObjectLike)(introspection) && (0, _isObjectLike.isObjectLike)(introspection.__schema) || (0, _devAssert.devAssert)(false, `Invalid or incomplete introspection result. Ensure that you are passing \"data\" property of introspection response and no \"errors\" was returned alongside: ${(0, _inspect.inspect)(introspection)}.`); // Get the schema from the introspection result.\n+\n+                    const schemaIntrospection = introspection.__schema; // Iterate through all types, getting the type definition for each.\n+\n+                    const typeMap = (0, _keyValMap.keyValMap)(schemaIntrospection.types, typeIntrospection => typeIntrospection.name, typeIntrospection => buildType(typeIntrospection)); // Include standard types only if they are used.\n+\n                     for (const stdType of [..._scalars.specifiedScalarTypes, ..._introspection.introspectionTypes]) {\n-                        if (typeMap.has(stdType.name)) {\n-                            typeMap.set(stdType.name, stdType);\n+                        if (typeMap[stdType.name]) {\n+                            typeMap[stdType.name] = stdType;\n                         }\n-                    }\n-                    // Get the root Query, Mutation, and Subscription types.\n-                    const queryType = schemaIntrospection.queryType != null ? getObjectType(schemaIntrospection.queryType) : null;\n-                    const mutationType = schemaIntrospection.mutationType != null ? getObjectType(schemaIntrospection.mutationType) : null;\n-                    const subscriptionType = schemaIntrospection.subscriptionType != null ? getObjectType(schemaIntrospection.subscriptionType) : null;\n-                    // Get the directives supported by Introspection, assuming empty-set if\n+                    } // Get the root Query, Mutation, and Subscription types.\n+\n+                    const queryType = schemaIntrospection.queryType ? getObjectType(schemaIntrospection.queryType) : null;\n+                    const mutationType = schemaIntrospection.mutationType ? getObjectType(schemaIntrospection.mutationType) : null;\n+                    const subscriptionType = schemaIntrospection.subscriptionType ? getObjectType(schemaIntrospection.subscriptionType) : null; // Get the directives supported by Introspection, assuming empty-set if\n                     // directives were not queried for.\n-                    const directives = schemaIntrospection.directives != null ? schemaIntrospection.directives.map(buildDirective) : [];\n-                    // Then produce and return a Schema with these types.\n+\n+                    const directives = schemaIntrospection.directives ? schemaIntrospection.directives.map(buildDirective) : []; // Then produce and return a Schema with these types.\n+\n                     return new _schema.GraphQLSchema({\n                         description: schemaIntrospection.description,\n                         query: queryType,\n                         mutation: mutationType,\n                         subscription: subscriptionType,\n-                        types: [...typeMap.values()],\n+                        types: Object.values(typeMap),\n                         directives,\n                         assumeValid: options === null || options === void 0 ? void 0 : options.assumeValid\n-                    });\n-                    // Given a type reference in introspection, return the GraphQLType instance.\n+                    }); // Given a type reference in introspection, return the GraphQLType instance.\n                     // preferring cached instances before building new instances.\n+\n                     function getType(typeRef) {\n                         if (typeRef.kind === _introspection.TypeKind.LIST) {\n                             const itemRef = typeRef.ofType;\n-                            if (itemRef == null) {\n+                            if (!itemRef) {\n                                 throw new Error('Decorated type deeper than introspection query.');\n                             }\n                             return new _definition.GraphQLList(getType(itemRef));\n                         }\n                         if (typeRef.kind === _introspection.TypeKind.NON_NULL) {\n                             const nullableRef = typeRef.ofType;\n-                            if (nullableRef == null) {\n+                            if (!nullableRef) {\n                                 throw new Error('Decorated type deeper than introspection query.');\n                             }\n                             const nullableType = getType(nullableRef);\n                             return new _definition.GraphQLNonNull((0, _definition.assertNullableType)(nullableType));\n                         }\n                         return getNamedType(typeRef);\n                     }\n \n                     function getNamedType(typeRef) {\n                         const typeName = typeRef.name;\n                         if (!typeName) {\n                             throw new Error(`Unknown type reference: ${(0, _inspect.inspect)(typeRef)}.`);\n                         }\n-                        const type = typeMap.get(typeName);\n-                        if (type == null) {\n+                        const type = typeMap[typeName];\n+                        if (!type) {\n                             throw new Error(`Invalid or incomplete schema, unknown type: ${typeName}. Ensure that a full introspection query is used in order to build a client schema.`);\n                         }\n                         return type;\n                     }\n \n                     function getObjectType(typeRef) {\n                         return (0, _definition.assertObjectType)(getNamedType(typeRef));\n                     }\n \n                     function getInterfaceType(typeRef) {\n                         return (0, _definition.assertInterfaceType)(getNamedType(typeRef));\n-                    }\n-                    // Given a type's introspection result, construct the correct\n+                    } // Given a type's introspection result, construct the correct\n                     // GraphQLType instance.\n+\n                     function buildType(type) {\n                         // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n                         if (type != null && type.name != null && type.kind != null) {\n                             // FIXME: Properly type IntrospectionType, it's a breaking change so fix in v17\n                             // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n                             switch (type.kind) {\n                                 case _introspection.TypeKind.SCALAR:\n@@ -38269,15 +55379,15 @@\n \n                     function buildImplementationsList(implementingIntrospection) {\n                         // TODO: Temporary workaround until GraphQL ecosystem will fully support\n                         // 'interfaces' on interface types.\n                         if (implementingIntrospection.interfaces === null && implementingIntrospection.kind === _introspection.TypeKind.INTERFACE) {\n                             return [];\n                         }\n-                        if (implementingIntrospection.interfaces == null) {\n+                        if (!implementingIntrospection.interfaces) {\n                             const implementingIntrospectionStr = (0, _inspect.inspect)(implementingIntrospection);\n                             throw new Error(`Introspection result missing interfaces: ${implementingIntrospectionStr}.`);\n                         }\n                         return implementingIntrospection.interfaces.map(getInterfaceType);\n                     }\n \n                     function buildObjectDef(objectIntrospection) {\n@@ -38295,67 +55405,67 @@\n                             description: interfaceIntrospection.description,\n                             interfaces: () => buildImplementationsList(interfaceIntrospection),\n                             fields: () => buildFieldDefMap(interfaceIntrospection)\n                         });\n                     }\n \n                     function buildUnionDef(unionIntrospection) {\n-                        if (unionIntrospection.possibleTypes == null) {\n+                        if (!unionIntrospection.possibleTypes) {\n                             const unionIntrospectionStr = (0, _inspect.inspect)(unionIntrospection);\n                             throw new Error(`Introspection result missing possibleTypes: ${unionIntrospectionStr}.`);\n                         }\n                         return new _definition.GraphQLUnionType({\n                             name: unionIntrospection.name,\n                             description: unionIntrospection.description,\n                             types: () => unionIntrospection.possibleTypes.map(getObjectType)\n                         });\n                     }\n \n                     function buildEnumDef(enumIntrospection) {\n-                        if (enumIntrospection.enumValues == null) {\n+                        if (!enumIntrospection.enumValues) {\n                             const enumIntrospectionStr = (0, _inspect.inspect)(enumIntrospection);\n                             throw new Error(`Introspection result missing enumValues: ${enumIntrospectionStr}.`);\n                         }\n                         return new _definition.GraphQLEnumType({\n                             name: enumIntrospection.name,\n                             description: enumIntrospection.description,\n                             values: (0, _keyValMap.keyValMap)(enumIntrospection.enumValues, valueIntrospection => valueIntrospection.name, valueIntrospection => ({\n                                 description: valueIntrospection.description,\n                                 deprecationReason: valueIntrospection.deprecationReason\n                             }))\n                         });\n                     }\n \n                     function buildInputObjectDef(inputObjectIntrospection) {\n-                        if (inputObjectIntrospection.inputFields == null) {\n+                        if (!inputObjectIntrospection.inputFields) {\n                             const inputObjectIntrospectionStr = (0, _inspect.inspect)(inputObjectIntrospection);\n                             throw new Error(`Introspection result missing inputFields: ${inputObjectIntrospectionStr}.`);\n                         }\n                         return new _definition.GraphQLInputObjectType({\n                             name: inputObjectIntrospection.name,\n                             description: inputObjectIntrospection.description,\n                             fields: () => buildInputValueDefMap(inputObjectIntrospection.inputFields),\n                             isOneOf: inputObjectIntrospection.isOneOf\n                         });\n                     }\n \n                     function buildFieldDefMap(typeIntrospection) {\n-                        if (typeIntrospection.fields == null) {\n+                        if (!typeIntrospection.fields) {\n                             throw new Error(`Introspection result missing fields: ${(0, _inspect.inspect)(typeIntrospection)}.`);\n                         }\n                         return (0, _keyValMap.keyValMap)(typeIntrospection.fields, fieldIntrospection => fieldIntrospection.name, buildField);\n                     }\n \n                     function buildField(fieldIntrospection) {\n                         const type = getType(fieldIntrospection.type);\n                         if (!(0, _definition.isOutputType)(type)) {\n                             const typeStr = (0, _inspect.inspect)(type);\n                             throw new Error(`Introspection must provide output type for fields, but received: ${typeStr}.`);\n                         }\n-                        if (fieldIntrospection.args == null) {\n+                        if (!fieldIntrospection.args) {\n                             const fieldIntrospectionStr = (0, _inspect.inspect)(fieldIntrospection);\n                             throw new Error(`Introspection result missing field args: ${fieldIntrospectionStr}.`);\n                         }\n                         return {\n                             description: fieldIntrospection.description,\n                             deprecationReason: fieldIntrospection.deprecationReason,\n                             type,\n@@ -38379,19 +55489,19 @@\n                             type,\n                             defaultValue,\n                             deprecationReason: inputValueIntrospection.deprecationReason\n                         };\n                     }\n \n                     function buildDirective(directiveIntrospection) {\n-                        if (directiveIntrospection.args == null) {\n+                        if (!directiveIntrospection.args) {\n                             const directiveIntrospectionStr = (0, _inspect.inspect)(directiveIntrospection);\n                             throw new Error(`Introspection result missing directive args: ${directiveIntrospectionStr}.`);\n                         }\n-                        if (directiveIntrospection.locations == null) {\n+                        if (!directiveIntrospection.locations) {\n                             const directiveIntrospectionStr = (0, _inspect.inspect)(directiveIntrospection);\n                             throw new Error(`Introspection result missing directive locations: ${directiveIntrospectionStr}.`);\n                         }\n                         return new _directives.GraphQLDirective({\n                             name: directiveIntrospection.name,\n                             description: directiveIntrospection.description,\n                             isRepeatable: directiveIntrospection.isRepeatable,\n@@ -38408,14 +55518,15 @@\n         \"../../../node_modules/graphql/utilities/coerceInputValue.mjs\":\n             /*!********************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/coerceInputValue.mjs ***!\n               \\********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.coerceInputValue = coerceInputValue;\n                 var _didYouMean = __webpack_require__( /*! ../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n@@ -38459,16 +55570,16 @@\n                     if ((0, _definition.isListType)(type)) {\n                         const itemType = type.ofType;\n                         if ((0, _isIterableObject.isIterableObject)(inputValue)) {\n                             return Array.from(inputValue, (itemValue, index) => {\n                                 const itemPath = (0, _Path.addPath)(path, index, undefined);\n                                 return coerceInputValueImpl(itemValue, itemType, onError, itemPath);\n                             });\n-                        }\n-                        // Lists accept a non-list value as a list of one.\n+                        } // Lists accept a non-list value as a list of one.\n+\n                         return [coerceInputValueImpl(inputValue, itemType, onError, path)];\n                     }\n                     if ((0, _definition.isInputObjectType)(type)) {\n                         if (!(0, _isObjectLike.isObjectLike)(inputValue)) {\n                             onError((0, _Path.pathToArray)(path), inputValue, new _GraphQLError.GraphQLError(`Expected type \"${type.name}\" to be an object.`));\n                             return;\n                         }\n@@ -38482,18 +55593,18 @@\n                                 } else if ((0, _definition.isNonNullType)(field.type)) {\n                                     const typeStr = (0, _inspect.inspect)(field.type);\n                                     onError((0, _Path.pathToArray)(path), inputValue, new _GraphQLError.GraphQLError(`Field \"${field.name}\" of required type \"${typeStr}\" was not provided.`));\n                                 }\n                                 continue;\n                             }\n                             coercedValue[field.name] = coerceInputValueImpl(fieldValue, field.type, onError, (0, _Path.addPath)(path, field.name, type.name));\n-                        }\n-                        // Ensure every provided field is defined.\n+                        } // Ensure every provided field is defined.\n+\n                         for (const fieldName of Object.keys(inputValue)) {\n-                            if (fieldDefs[fieldName] == null) {\n+                            if (!fieldDefs[fieldName]) {\n                                 const suggestions = (0, _suggestionList.suggestionList)(fieldName, Object.keys(type.getFields()));\n                                 onError((0, _Path.pathToArray)(path), inputValue, new _GraphQLError.GraphQLError(`Field \"${fieldName}\" is not defined by type \"${type.name}\".` + (0, _didYouMean.didYouMean)(suggestions)));\n                             }\n                         }\n                         if (type.isOneOf) {\n                             const keys = Object.keys(coercedValue);\n                             if (keys.length !== 1) {\n@@ -38504,18 +55615,18 @@\n                             if (value === null) {\n                                 onError((0, _Path.pathToArray)(path).concat(key), value, new _GraphQLError.GraphQLError(`Field \"${key}\" must be non-null.`));\n                             }\n                         }\n                         return coercedValue;\n                     }\n                     if ((0, _definition.isLeafType)(type)) {\n-                        let parseResult;\n-                        // Scalars and Enums determine if an input value is valid via parseValue(),\n+                        let parseResult; // Scalars and Enums determine if a input value is valid via parseValue(),\n                         // which can throw to indicate failure. If it throws, maintain a reference\n                         // to the original error.\n+\n                         try {\n                             parseResult = type.parseValue(inputValue);\n                         } catch (error) {\n                             if (error instanceof _GraphQLError.GraphQLError) {\n                                 onError((0, _Path.pathToArray)(path), inputValue, error);\n                             } else {\n                                 onError((0, _Path.pathToArray)(path), inputValue, new _GraphQLError.GraphQLError(`Expected type \"${type.name}\". ` + error.message, {\n@@ -38527,40 +55638,43 @@\n                         if (parseResult === undefined) {\n                             onError((0, _Path.pathToArray)(path), inputValue, new _GraphQLError.GraphQLError(`Expected type \"${type.name}\".`));\n                         }\n                         return parseResult;\n                     }\n                     /* c8 ignore next 3 */\n                     // Not reachable, all possible types have been considered.\n+\n                     false || (0, _invariant.invariant)(false, 'Unexpected input type: ' + (0, _inspect.inspect)(type));\n                 }\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/utilities/concatAST.mjs\":\n             /*!*************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/concatAST.mjs ***!\n               \\*************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.concatAST = concatAST;\n                 var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 /**\n                  * Provided a collection of ASTs, presumably each from different files,\n                  * concatenate the ASTs together into batched AST, useful for validating many\n                  * GraphQL source files which together represent one conceptual application.\n                  */\n+\n                 function concatAST(documents) {\n                     const definitions = [];\n                     for (const doc of documents) {\n                         definitions.push(...doc.definitions);\n                     }\n                     return {\n                         kind: _kinds.Kind.DOCUMENT,\n@@ -38575,26 +55689,29 @@\n         \"../../../node_modules/graphql/utilities/extendSchema.mjs\":\n             /*!****************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/extendSchema.mjs ***!\n               \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.extendSchema = extendSchema;\n                 exports.extendSchemaImpl = extendSchemaImpl;\n-                var _AccumulatorMap = __webpack_require__( /*! ../jsutils/AccumulatorMap.mjs */ \"../../../node_modules/graphql/jsutils/AccumulatorMap.mjs\");\n+                var _devAssert = __webpack_require__( /*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n                 var _inspect = __webpack_require__( /*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n                 var _invariant = __webpack_require__( /*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n+                var _keyMap = __webpack_require__( /*! ../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n                 var _mapValue = __webpack_require__( /*! ../jsutils/mapValue.mjs */ \"../../../node_modules/graphql/jsutils/mapValue.mjs\");\n                 var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n+                var _predicates = __webpack_require__( /*! ../language/predicates.mjs */ \"../../../node_modules/graphql/language/predicates.mjs\");\n                 var _definition = __webpack_require__( /*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n                 var _directives = __webpack_require__( /*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n                 var _introspection = __webpack_require__( /*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n                 var _scalars = __webpack_require__( /*! ../type/scalars.mjs */ \"../../../node_modules/graphql/type/scalars.mjs\");\n                 var _schema = __webpack_require__( /*! ../type/schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n                 var _validate = __webpack_require__( /*! ../validation/validate.mjs */ \"../../../node_modules/graphql/validation/validate.mjs\");\n                 var _values = __webpack_require__( /*! ../execution/values.mjs */ \"../../../node_modules/graphql/execution/values.mjs\");\n@@ -38609,143 +55726,110 @@\n                  * too late if subgraphs remain unchanged.\n                  *\n                  * This algorithm copies the provided schema, applying extensions while\n                  * producing the copy. The original schema remains unaltered.\n                  */\n                 function extendSchema(schema, documentAST, options) {\n                     (0, _schema.assertSchema)(schema);\n+                    documentAST != null && documentAST.kind === _kinds.Kind.DOCUMENT || (0, _devAssert.devAssert)(false, 'Must provide valid Document AST.');\n                     if ((options === null || options === void 0 ? void 0 : options.assumeValid) !== true && (options === null || options === void 0 ? void 0 : options.assumeValidSDL) !== true) {\n                         (0, _validate.assertValidSDLExtension)(documentAST, schema);\n                     }\n                     const schemaConfig = schema.toConfig();\n                     const extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);\n                     return schemaConfig === extendedConfig ? schema : new _schema.GraphQLSchema(extendedConfig);\n                 }\n                 /**\n                  * @internal\n                  */\n+\n                 function extendSchemaImpl(schemaConfig, documentAST, options) {\n-                    var _schemaDef$descriptio, _schemaDef, _schemaDef$descriptio2, _schemaDef2, _options$assumeValid;\n+                    var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;\n+\n                     // Collect the type definitions and extensions found in the document.\n                     const typeDefs = [];\n-                    const scalarExtensions = new _AccumulatorMap.AccumulatorMap();\n-                    const objectExtensions = new _AccumulatorMap.AccumulatorMap();\n-                    const interfaceExtensions = new _AccumulatorMap.AccumulatorMap();\n-                    const unionExtensions = new _AccumulatorMap.AccumulatorMap();\n-                    const enumExtensions = new _AccumulatorMap.AccumulatorMap();\n-                    const inputObjectExtensions = new _AccumulatorMap.AccumulatorMap();\n-                    // New directives and types are separate because a directives and types can\n+                    const typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can\n                     // have the same name. For example, a type named \"skip\".\n+\n                     const directiveDefs = [];\n-                    let schemaDef;\n-                    // Schema extensions are collected which may add additional operation types.\n+                    let schemaDef; // Schema extensions are collected which may add additional operation types.\n+\n                     const schemaExtensions = [];\n-                    let isSchemaChanged = false;\n                     for (const def of documentAST.definitions) {\n-                        switch (def.kind) {\n-                            case _kinds.Kind.SCHEMA_DEFINITION:\n-                                schemaDef = def;\n-                                break;\n-                            case _kinds.Kind.SCHEMA_EXTENSION:\n-                                schemaExtensions.push(def);\n-                                break;\n-                            case _kinds.Kind.DIRECTIVE_DEFINITION:\n-                                directiveDefs.push(def);\n-                                break;\n-                                // Type Definitions\n-                            case _kinds.Kind.SCALAR_TYPE_DEFINITION:\n-                            case _kinds.Kind.OBJECT_TYPE_DEFINITION:\n-                            case _kinds.Kind.INTERFACE_TYPE_DEFINITION:\n-                            case _kinds.Kind.UNION_TYPE_DEFINITION:\n-                            case _kinds.Kind.ENUM_TYPE_DEFINITION:\n-                            case _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION:\n-                                typeDefs.push(def);\n-                                break;\n-                                // Type System Extensions\n-                            case _kinds.Kind.SCALAR_TYPE_EXTENSION:\n-                                scalarExtensions.add(def.name.value, def);\n-                                break;\n-                            case _kinds.Kind.OBJECT_TYPE_EXTENSION:\n-                                objectExtensions.add(def.name.value, def);\n-                                break;\n-                            case _kinds.Kind.INTERFACE_TYPE_EXTENSION:\n-                                interfaceExtensions.add(def.name.value, def);\n-                                break;\n-                            case _kinds.Kind.UNION_TYPE_EXTENSION:\n-                                unionExtensions.add(def.name.value, def);\n-                                break;\n-                            case _kinds.Kind.ENUM_TYPE_EXTENSION:\n-                                enumExtensions.add(def.name.value, def);\n-                                break;\n-                            case _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION:\n-                                inputObjectExtensions.add(def.name.value, def);\n-                                break;\n-                            default:\n-                                continue;\n+                        if (def.kind === _kinds.Kind.SCHEMA_DEFINITION) {\n+                            schemaDef = def;\n+                        } else if (def.kind === _kinds.Kind.SCHEMA_EXTENSION) {\n+                            schemaExtensions.push(def);\n+                        } else if ((0, _predicates.isTypeDefinitionNode)(def)) {\n+                            typeDefs.push(def);\n+                        } else if ((0, _predicates.isTypeExtensionNode)(def)) {\n+                            const extendedTypeName = def.name.value;\n+                            const existingTypeExtensions = typeExtensionsMap[extendedTypeName];\n+                            typeExtensionsMap[extendedTypeName] = existingTypeExtensions ? existingTypeExtensions.concat([def]) : [def];\n+                        } else if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n+                            directiveDefs.push(def);\n                         }\n-                        isSchemaChanged = true;\n-                    }\n-                    // If this document contains no new types, extensions, or directives then\n+                    } // If this document contains no new types, extensions, or directives then\n                     // return the same unmodified GraphQLSchema instance.\n-                    if (!isSchemaChanged) {\n+\n+                    if (Object.keys(typeExtensionsMap).length === 0 && typeDefs.length === 0 && directiveDefs.length === 0 && schemaExtensions.length === 0 && schemaDef == null) {\n                         return schemaConfig;\n                     }\n-                    const typeMap = new Map(schemaConfig.types.map(type => [type.name, extendNamedType(type)]));\n+                    const typeMap = Object.create(null);\n+                    for (const existingType of schemaConfig.types) {\n+                        typeMap[existingType.name] = extendNamedType(existingType);\n+                    }\n                     for (const typeNode of typeDefs) {\n-                        var _stdTypeMap$get;\n+                        var _stdTypeMap$name;\n                         const name = typeNode.name.value;\n-                        typeMap.set(name, (_stdTypeMap$get = stdTypeMap.get(name)) !== null && _stdTypeMap$get !== void 0 ? _stdTypeMap$get : buildType(typeNode));\n+                        typeMap[name] = (_stdTypeMap$name = stdTypeMap[name]) !== null && _stdTypeMap$name !== void 0 ? _stdTypeMap$name : buildType(typeNode);\n                     }\n                     const operationTypes = {\n                         // Get the extended root operation types.\n                         query: schemaConfig.query && replaceNamedType(schemaConfig.query),\n                         mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation),\n                         subscription: schemaConfig.subscription && replaceNamedType(schemaConfig.subscription),\n                         // Then, incorporate schema definition and all schema extensions.\n                         ...(schemaDef && getOperationTypes([schemaDef])),\n                         ...getOperationTypes(schemaExtensions)\n-                    };\n-                    // Then produce and return a Schema config with these types.\n+                    }; // Then produce and return a Schema config with these types.\n+\n                     return {\n-                        description: (_schemaDef$descriptio = (_schemaDef = schemaDef) === null || _schemaDef === void 0 ? void 0 : (_schemaDef$descriptio2 = _schemaDef.description) === null || _schemaDef$descriptio2 === void 0 ? void 0 : _schemaDef$descriptio2.value) !== null && _schemaDef$descriptio !== void 0 ? _schemaDef$descriptio : schemaConfig.description,\n+                        description: (_schemaDef = schemaDef) === null || _schemaDef === void 0 ? void 0 : (_schemaDef$descriptio = _schemaDef.description) === null || _schemaDef$descriptio === void 0 ? void 0 : _schemaDef$descriptio.value,\n                         ...operationTypes,\n-                        types: Array.from(typeMap.values()),\n+                        types: Object.values(typeMap),\n                         directives: [...schemaConfig.directives.map(replaceDirective), ...directiveDefs.map(buildDirective)],\n-                        extensions: schemaConfig.extensions,\n+                        extensions: Object.create(null),\n                         astNode: (_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0 ? _schemaDef2 : schemaConfig.astNode,\n                         extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions),\n                         assumeValid: (_options$assumeValid = options === null || options === void 0 ? void 0 : options.assumeValid) !== null && _options$assumeValid !== void 0 ? _options$assumeValid : false\n-                    };\n-                    // Below are functions used for producing this schema that have closed over\n+                    }; // Below are functions used for producing this schema that have closed over\n                     // this scope and have access to the schema, cache, and newly defined types.\n+\n                     function replaceType(type) {\n                         if ((0, _definition.isListType)(type)) {\n                             // @ts-expect-error\n                             return new _definition.GraphQLList(replaceType(type.ofType));\n                         }\n                         if ((0, _definition.isNonNullType)(type)) {\n                             // @ts-expect-error\n                             return new _definition.GraphQLNonNull(replaceType(type.ofType));\n-                        }\n-                        // @ts-expect-error FIXME\n+                        } // @ts-expect-error FIXME\n+\n                         return replaceNamedType(type);\n                     }\n \n                     function replaceNamedType(type) {\n                         // Note: While this could make early assertions to get the correctly\n                         // typed values, that would throw immediately while type system\n                         // validation with validateSchema() will produce more actionable results.\n-                        return typeMap.get(type.name);\n+                        return typeMap[type.name];\n                     }\n \n                     function replaceDirective(directive) {\n-                        if ((0, _directives.isSpecifiedDirective)(directive)) {\n-                            // Builtin directives are not extended.\n-                            return directive;\n-                        }\n                         const config = directive.toConfig();\n                         return new _directives.GraphQLDirective({\n                             ...config,\n                             args: (0, _mapValue.mapValue)(config.args, extendArg)\n                         });\n                     }\n \n@@ -38770,98 +55854,99 @@\n                             return extendEnumType(type);\n                         }\n                         if ((0, _definition.isInputObjectType)(type)) {\n                             return extendInputObjectType(type);\n                         }\n                         /* c8 ignore next 3 */\n                         // Not reachable, all possible type definition nodes have been considered.\n+\n                         false || (0, _invariant.invariant)(false, 'Unexpected type: ' + (0, _inspect.inspect)(type));\n                     }\n \n                     function extendInputObjectType(type) {\n-                        var _inputObjectExtension;\n+                        var _typeExtensionsMap$co;\n                         const config = type.toConfig();\n-                        const extensions = (_inputObjectExtension = inputObjectExtensions.get(config.name)) !== null && _inputObjectExtension !== void 0 ? _inputObjectExtension : [];\n+                        const extensions = (_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co !== void 0 ? _typeExtensionsMap$co : [];\n                         return new _definition.GraphQLInputObjectType({\n                             ...config,\n                             fields: () => ({\n                                 ...(0, _mapValue.mapValue)(config.fields, field => ({\n                                     ...field,\n                                     type: replaceType(field.type)\n                                 })),\n                                 ...buildInputFieldMap(extensions)\n                             }),\n                             extensionASTNodes: config.extensionASTNodes.concat(extensions)\n                         });\n                     }\n \n                     function extendEnumType(type) {\n-                        var _enumExtensions$get;\n+                        var _typeExtensionsMap$ty;\n                         const config = type.toConfig();\n-                        const extensions = (_enumExtensions$get = enumExtensions.get(type.name)) !== null && _enumExtensions$get !== void 0 ? _enumExtensions$get : [];\n+                        const extensions = (_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null && _typeExtensionsMap$ty !== void 0 ? _typeExtensionsMap$ty : [];\n                         return new _definition.GraphQLEnumType({\n                             ...config,\n                             values: {\n                                 ...config.values,\n                                 ...buildEnumValueMap(extensions)\n                             },\n                             extensionASTNodes: config.extensionASTNodes.concat(extensions)\n                         });\n                     }\n \n                     function extendScalarType(type) {\n-                        var _scalarExtensions$get;\n+                        var _typeExtensionsMap$co2;\n                         const config = type.toConfig();\n-                        const extensions = (_scalarExtensions$get = scalarExtensions.get(config.name)) !== null && _scalarExtensions$get !== void 0 ? _scalarExtensions$get : [];\n+                        const extensions = (_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co2 !== void 0 ? _typeExtensionsMap$co2 : [];\n                         let specifiedByURL = config.specifiedByURL;\n                         for (const extensionNode of extensions) {\n                             var _getSpecifiedByURL;\n                             specifiedByURL = (_getSpecifiedByURL = getSpecifiedByURL(extensionNode)) !== null && _getSpecifiedByURL !== void 0 ? _getSpecifiedByURL : specifiedByURL;\n                         }\n                         return new _definition.GraphQLScalarType({\n                             ...config,\n                             specifiedByURL,\n                             extensionASTNodes: config.extensionASTNodes.concat(extensions)\n                         });\n                     }\n \n                     function extendObjectType(type) {\n-                        var _objectExtensions$get;\n+                        var _typeExtensionsMap$co3;\n                         const config = type.toConfig();\n-                        const extensions = (_objectExtensions$get = objectExtensions.get(config.name)) !== null && _objectExtensions$get !== void 0 ? _objectExtensions$get : [];\n+                        const extensions = (_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co3 !== void 0 ? _typeExtensionsMap$co3 : [];\n                         return new _definition.GraphQLObjectType({\n                             ...config,\n                             interfaces: () => [...type.getInterfaces().map(replaceNamedType), ...buildInterfaces(extensions)],\n                             fields: () => ({\n                                 ...(0, _mapValue.mapValue)(config.fields, extendField),\n                                 ...buildFieldMap(extensions)\n                             }),\n                             extensionASTNodes: config.extensionASTNodes.concat(extensions)\n                         });\n                     }\n \n                     function extendInterfaceType(type) {\n-                        var _interfaceExtensions$;\n+                        var _typeExtensionsMap$co4;\n                         const config = type.toConfig();\n-                        const extensions = (_interfaceExtensions$ = interfaceExtensions.get(config.name)) !== null && _interfaceExtensions$ !== void 0 ? _interfaceExtensions$ : [];\n+                        const extensions = (_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co4 !== void 0 ? _typeExtensionsMap$co4 : [];\n                         return new _definition.GraphQLInterfaceType({\n                             ...config,\n                             interfaces: () => [...type.getInterfaces().map(replaceNamedType), ...buildInterfaces(extensions)],\n                             fields: () => ({\n                                 ...(0, _mapValue.mapValue)(config.fields, extendField),\n                                 ...buildFieldMap(extensions)\n                             }),\n                             extensionASTNodes: config.extensionASTNodes.concat(extensions)\n                         });\n                     }\n \n                     function extendUnionType(type) {\n-                        var _unionExtensions$get;\n+                        var _typeExtensionsMap$co5;\n                         const config = type.toConfig();\n-                        const extensions = (_unionExtensions$get = unionExtensions.get(config.name)) !== null && _unionExtensions$get !== void 0 ? _unionExtensions$get : [];\n+                        const extensions = (_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null && _typeExtensionsMap$co5 !== void 0 ? _typeExtensionsMap$co5 : [];\n                         return new _definition.GraphQLUnionType({\n                             ...config,\n                             types: () => [...type.getTypes().map(replaceNamedType), ...buildUnionTypes(extensions)],\n                             extensionASTNodes: config.extensionASTNodes.concat(extensions)\n                         });\n                     }\n \n@@ -38880,31 +55965,33 @@\n                         };\n                     }\n \n                     function getOperationTypes(nodes) {\n                         const opTypes = {};\n                         for (const node of nodes) {\n                             var _node$operationTypes;\n+\n                             // FIXME: https://github.com/graphql/graphql-js/issues/2203\n-                            const operationTypesNodes = /* c8 ignore next */ (_node$operationTypes = node.operationTypes) !== null && _node$operationTypes !== void 0 ? _node$operationTypes : [];\n+                            const operationTypesNodes = /* c8 ignore next */\n+                                (_node$operationTypes = node.operationTypes) !== null && _node$operationTypes !== void 0 ? _node$operationTypes : [];\n                             for (const operationType of operationTypesNodes) {\n                                 // Note: While this could make early assertions to get the correctly\n                                 // typed values below, that would throw immediately while type system\n                                 // validation with validateSchema() will produce more actionable results.\n                                 // @ts-expect-error\n                                 opTypes[operationType.operation] = getNamedType(operationType.type);\n                             }\n                         }\n                         return opTypes;\n                     }\n \n                     function getNamedType(node) {\n-                        var _stdTypeMap$get2;\n+                        var _stdTypeMap$name2;\n                         const name = node.name.value;\n-                        const type = (_stdTypeMap$get2 = stdTypeMap.get(name)) !== null && _stdTypeMap$get2 !== void 0 ? _stdTypeMap$get2 : typeMap.get(name);\n+                        const type = (_stdTypeMap$name2 = stdTypeMap[name]) !== null && _stdTypeMap$name2 !== void 0 ? _stdTypeMap$name2 : typeMap[name];\n                         if (type === undefined) {\n                             throw new Error(`Unknown type: \"${name}\".`);\n                         }\n                         return type;\n                     }\n \n                     function getWrappedType(node) {\n@@ -38932,16 +56019,18 @@\n                         });\n                     }\n \n                     function buildFieldMap(nodes) {\n                         const fieldConfigMap = Object.create(null);\n                         for (const node of nodes) {\n                             var _node$fields;\n+\n                             // FIXME: https://github.com/graphql/graphql-js/issues/2203\n-                            const nodeFields = /* c8 ignore next */ (_node$fields = node.fields) !== null && _node$fields !== void 0 ? _node$fields : [];\n+                            const nodeFields = /* c8 ignore next */\n+                                (_node$fields = node.fields) !== null && _node$fields !== void 0 ? _node$fields : [];\n                             for (const field of nodeFields) {\n                                 var _field$description;\n                                 fieldConfigMap[field.name.value] = {\n                                     // Note: While this could make assertions to get the correctly typed\n                                     // value, that would throw immediately while type system validation\n                                     // with validateSchema() will produce more actionable results.\n                                     type: getWrappedType(field.type),\n@@ -38953,18 +56042,20 @@\n                             }\n                         }\n                         return fieldConfigMap;\n                     }\n \n                     function buildArgumentMap(args) {\n                         // FIXME: https://github.com/graphql/graphql-js/issues/2203\n-                        const argsNodes = /* c8 ignore next */ args !== null && args !== void 0 ? args : [];\n+                        const argsNodes = /* c8 ignore next */\n+                            args !== null && args !== void 0 ? args : [];\n                         const argConfigMap = Object.create(null);\n                         for (const arg of argsNodes) {\n                             var _arg$description;\n+\n                             // Note: While this could make assertions to get the correctly typed\n                             // value, that would throw immediately while type system validation\n                             // with validateSchema() will produce more actionable results.\n                             const type = getWrappedType(arg.type);\n                             argConfigMap[arg.name.value] = {\n                                 type,\n                                 description: (_arg$description = arg.description) === null || _arg$description === void 0 ? void 0 : _arg$description.value,\n@@ -38976,18 +56067,21 @@\n                         return argConfigMap;\n                     }\n \n                     function buildInputFieldMap(nodes) {\n                         const inputFieldMap = Object.create(null);\n                         for (const node of nodes) {\n                             var _node$fields2;\n+\n                             // FIXME: https://github.com/graphql/graphql-js/issues/2203\n-                            const fieldsNodes = /* c8 ignore next */ (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0 ? _node$fields2 : [];\n+                            const fieldsNodes = /* c8 ignore next */\n+                                (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0 ? _node$fields2 : [];\n                             for (const field of fieldsNodes) {\n                                 var _field$description2;\n+\n                                 // Note: While this could make assertions to get the correctly typed\n                                 // value, that would throw immediately while type system validation\n                                 // with validateSchema() will produce more actionable results.\n                                 const type = getWrappedType(field.type);\n                                 inputFieldMap[field.name.value] = {\n                                     type,\n                                     description: (_field$description2 = field.description) === null || _field$description2 === void 0 ? void 0 : _field$description2.value,\n@@ -39000,16 +56094,18 @@\n                         return inputFieldMap;\n                     }\n \n                     function buildEnumValueMap(nodes) {\n                         const enumValueMap = Object.create(null);\n                         for (const node of nodes) {\n                             var _node$values;\n+\n                             // FIXME: https://github.com/graphql/graphql-js/issues/2203\n-                            const valuesNodes = /* c8 ignore next */ (_node$values = node.values) !== null && _node$values !== void 0 ? _node$values : [];\n+                            const valuesNodes = /* c8 ignore next */\n+                                (_node$values = node.values) !== null && _node$values !== void 0 ? _node$values : [];\n                             for (const value of valuesNodes) {\n                                 var _value$description;\n                                 enumValueMap[value.name.value] = {\n                                     description: (_value$description = value.description) === null || _value$description === void 0 ? void 0 : _value$description.value,\n                                     deprecationReason: getDeprecationReason(value),\n                                     astNode: value\n                                 };\n@@ -39023,132 +56119,135 @@\n                         // values below, that would throw immediately while type system\n                         // validation with validateSchema() will produce more actionable results.\n                         // @ts-expect-error\n                         return nodes.flatMap(\n                             // FIXME: https://github.com/graphql/graphql-js/issues/2203\n                             node => {\n                                 var _node$interfaces$map, _node$interfaces;\n-                                return /* c8 ignore next */ (_node$interfaces$map = (_node$interfaces = node.interfaces) === null || _node$interfaces === void 0 ? void 0 : _node$interfaces.map(getNamedType)) !== null && _node$interfaces$map !== void 0 ? _node$interfaces$map : [];\n+                                return /* c8 ignore next */ (\n+                                    (_node$interfaces$map = (_node$interfaces = node.interfaces) === null || _node$interfaces === void 0 ? void 0 : _node$interfaces.map(getNamedType)) !== null && _node$interfaces$map !== void 0 ? _node$interfaces$map : []\n+                                );\n                             });\n                     }\n \n                     function buildUnionTypes(nodes) {\n                         // Note: While this could make assertions to get the correctly typed\n                         // values below, that would throw immediately while type system\n                         // validation with validateSchema() will produce more actionable results.\n                         // @ts-expect-error\n                         return nodes.flatMap(\n                             // FIXME: https://github.com/graphql/graphql-js/issues/2203\n                             node => {\n                                 var _node$types$map, _node$types;\n-                                return /* c8 ignore next */ (_node$types$map = (_node$types = node.types) === null || _node$types === void 0 ? void 0 : _node$types.map(getNamedType)) !== null && _node$types$map !== void 0 ? _node$types$map : [];\n+                                return /* c8 ignore next */ (\n+                                    (_node$types$map = (_node$types = node.types) === null || _node$types === void 0 ? void 0 : _node$types.map(getNamedType)) !== null && _node$types$map !== void 0 ? _node$types$map : []\n+                                );\n                             });\n                     }\n \n                     function buildType(astNode) {\n+                        var _typeExtensionsMap$na;\n                         const name = astNode.name.value;\n+                        const extensionASTNodes = (_typeExtensionsMap$na = typeExtensionsMap[name]) !== null && _typeExtensionsMap$na !== void 0 ? _typeExtensionsMap$na : [];\n                         switch (astNode.kind) {\n                             case _kinds.Kind.OBJECT_TYPE_DEFINITION: {\n-                                var _objectExtensions$get2, _astNode$description;\n-                                const extensionASTNodes = (_objectExtensions$get2 = objectExtensions.get(name)) !== null && _objectExtensions$get2 !== void 0 ? _objectExtensions$get2 : [];\n+                                var _astNode$description;\n                                 const allNodes = [astNode, ...extensionASTNodes];\n                                 return new _definition.GraphQLObjectType({\n                                     name,\n                                     description: (_astNode$description = astNode.description) === null || _astNode$description === void 0 ? void 0 : _astNode$description.value,\n                                     interfaces: () => buildInterfaces(allNodes),\n                                     fields: () => buildFieldMap(allNodes),\n                                     astNode,\n                                     extensionASTNodes\n                                 });\n                             }\n                             case _kinds.Kind.INTERFACE_TYPE_DEFINITION: {\n-                                var _interfaceExtensions$2, _astNode$description2;\n-                                const extensionASTNodes = (_interfaceExtensions$2 = interfaceExtensions.get(name)) !== null && _interfaceExtensions$2 !== void 0 ? _interfaceExtensions$2 : [];\n+                                var _astNode$description2;\n                                 const allNodes = [astNode, ...extensionASTNodes];\n                                 return new _definition.GraphQLInterfaceType({\n                                     name,\n                                     description: (_astNode$description2 = astNode.description) === null || _astNode$description2 === void 0 ? void 0 : _astNode$description2.value,\n                                     interfaces: () => buildInterfaces(allNodes),\n                                     fields: () => buildFieldMap(allNodes),\n                                     astNode,\n                                     extensionASTNodes\n                                 });\n                             }\n                             case _kinds.Kind.ENUM_TYPE_DEFINITION: {\n-                                var _enumExtensions$get2, _astNode$description3;\n-                                const extensionASTNodes = (_enumExtensions$get2 = enumExtensions.get(name)) !== null && _enumExtensions$get2 !== void 0 ? _enumExtensions$get2 : [];\n+                                var _astNode$description3;\n                                 const allNodes = [astNode, ...extensionASTNodes];\n                                 return new _definition.GraphQLEnumType({\n                                     name,\n                                     description: (_astNode$description3 = astNode.description) === null || _astNode$description3 === void 0 ? void 0 : _astNode$description3.value,\n                                     values: buildEnumValueMap(allNodes),\n                                     astNode,\n                                     extensionASTNodes\n                                 });\n                             }\n                             case _kinds.Kind.UNION_TYPE_DEFINITION: {\n-                                var _unionExtensions$get2, _astNode$description4;\n-                                const extensionASTNodes = (_unionExtensions$get2 = unionExtensions.get(name)) !== null && _unionExtensions$get2 !== void 0 ? _unionExtensions$get2 : [];\n+                                var _astNode$description4;\n                                 const allNodes = [astNode, ...extensionASTNodes];\n                                 return new _definition.GraphQLUnionType({\n                                     name,\n                                     description: (_astNode$description4 = astNode.description) === null || _astNode$description4 === void 0 ? void 0 : _astNode$description4.value,\n                                     types: () => buildUnionTypes(allNodes),\n                                     astNode,\n                                     extensionASTNodes\n                                 });\n                             }\n                             case _kinds.Kind.SCALAR_TYPE_DEFINITION: {\n-                                var _scalarExtensions$get2, _astNode$description5;\n-                                const extensionASTNodes = (_scalarExtensions$get2 = scalarExtensions.get(name)) !== null && _scalarExtensions$get2 !== void 0 ? _scalarExtensions$get2 : [];\n+                                var _astNode$description5;\n                                 return new _definition.GraphQLScalarType({\n                                     name,\n                                     description: (_astNode$description5 = astNode.description) === null || _astNode$description5 === void 0 ? void 0 : _astNode$description5.value,\n                                     specifiedByURL: getSpecifiedByURL(astNode),\n                                     astNode,\n                                     extensionASTNodes\n                                 });\n                             }\n                             case _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n-                                var _inputObjectExtension2, _astNode$description6;\n-                                const extensionASTNodes = (_inputObjectExtension2 = inputObjectExtensions.get(name)) !== null && _inputObjectExtension2 !== void 0 ? _inputObjectExtension2 : [];\n+                                var _astNode$description6;\n                                 const allNodes = [astNode, ...extensionASTNodes];\n                                 return new _definition.GraphQLInputObjectType({\n                                     name,\n                                     description: (_astNode$description6 = astNode.description) === null || _astNode$description6 === void 0 ? void 0 : _astNode$description6.value,\n                                     fields: () => buildInputFieldMap(allNodes),\n                                     astNode,\n                                     extensionASTNodes,\n                                     isOneOf: isOneOf(astNode)\n                                 });\n                             }\n                         }\n                     }\n                 }\n-                const stdTypeMap = new Map([..._scalars.specifiedScalarTypes, ..._introspection.introspectionTypes].map(type => [type.name, type]));\n+                const stdTypeMap = (0, _keyMap.keyMap)([..._scalars.specifiedScalarTypes, ..._introspection.introspectionTypes], type => type.name);\n                 /**\n                  * Given a field or enum value node, returns the string value for the\n                  * deprecation reason.\n                  */\n+\n                 function getDeprecationReason(node) {\n-                    const deprecated = (0, _values.getDirectiveValues)(_directives.GraphQLDeprecatedDirective, node);\n-                    // @ts-expect-error validated by `getDirectiveValues`\n+                    const deprecated = (0, _values.getDirectiveValues)(_directives.GraphQLDeprecatedDirective, node); // @ts-expect-error validated by `getDirectiveValues`\n+\n                     return deprecated === null || deprecated === void 0 ? void 0 : deprecated.reason;\n                 }\n                 /**\n                  * Given a scalar node, returns the string value for the specifiedByURL.\n                  */\n+\n                 function getSpecifiedByURL(node) {\n-                    const specifiedBy = (0, _values.getDirectiveValues)(_directives.GraphQLSpecifiedByDirective, node);\n-                    // @ts-expect-error validated by `getDirectiveValues`\n+                    const specifiedBy = (0, _values.getDirectiveValues)(_directives.GraphQLSpecifiedByDirective, node); // @ts-expect-error validated by `getDirectiveValues`\n+\n                     return specifiedBy === null || specifiedBy === void 0 ? void 0 : specifiedBy.url;\n                 }\n                 /**\n                  * Given an input object node, returns if the node should be OneOf.\n                  */\n+\n                 function isOneOf(node) {\n                     return Boolean((0, _values.getDirectiveValues)(_directives.GraphQLOneOfDirective, node));\n                 }\n \n                 /***/\n             }),\n \n@@ -39156,14 +56255,15 @@\n         \"../../../node_modules/graphql/utilities/findBreakingChanges.mjs\":\n             /*!***********************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/findBreakingChanges.mjs ***!\n               \\***********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.DangerousChangeType = exports.BreakingChangeType = void 0;\n                 exports.findBreakingChanges = findBreakingChanges;\n@@ -39212,14 +56312,15 @@\n                     // @ts-expect-error\n                     return findSchemaChanges(oldSchema, newSchema).filter(change => change.type in BreakingChangeType);\n                 }\n                 /**\n                  * Given two schemas, returns an Array containing descriptions of all the types\n                  * of potentially dangerous changes covered by the other functions down below.\n                  */\n+\n                 function findDangerousChanges(oldSchema, newSchema) {\n                     // @ts-expect-error\n                     return findSchemaChanges(oldSchema, newSchema).filter(change => change.type in DangerousChangeType);\n                 }\n \n                 function findSchemaChanges(oldSchema, newSchema) {\n                     return [...findTypeChanges(oldSchema, newSchema), ...findDirectiveChanges(oldSchema, newSchema)];\n@@ -39491,16 +56592,16 @@\n                         return (\n                             // if they're both non-null, make sure the underlying types are\n                             // compatible\n                             (0, _definition.isNonNullType)(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType) ||\n                             // moving from non-null to nullable of the same underlying type is safe\n                             !(0, _definition.isNonNullType)(newType) && isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType)\n                         );\n-                    }\n-                    // if they're both named types, see if their names are equivalent\n+                    } // if they're both named types, see if their names are equivalent\n+\n                     return (0, _definition.isNamedType)(newType) && oldType.name === newType.name;\n                 }\n \n                 function typeKindName(type) {\n                     if ((0, _definition.isScalarType)(type)) {\n                         return 'a Scalar type';\n                     }\n@@ -39517,14 +56618,15 @@\n                         return 'an Enum type';\n                     }\n                     if ((0, _definition.isInputObjectType)(type)) {\n                         return 'an Input type';\n                     }\n                     /* c8 ignore next 3 */\n                     // Not reachable, all possible types have been considered.\n+\n                     false || (0, _invariant.invariant)(false, 'Unexpected type: ' + (0, _inspect.inspect)(type));\n                 }\n \n                 function stringifyValue(value, type) {\n                     const ast = (0, _astFromValue.astFromValue)(value, type);\n                     ast != null || (0, _invariant.invariant)(false);\n                     return (0, _printer.print)((0, _sortValueNode.sortValueNode)(ast));\n@@ -39567,14 +56669,15 @@\n         \"../../../node_modules/graphql/utilities/getIntrospectionQuery.mjs\":\n             /*!*************************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/getIntrospectionQuery.mjs ***!\n               \\*************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getIntrospectionQuery = getIntrospectionQuery;\n                 /**\n@@ -39716,26 +56819,28 @@\n         \"../../../node_modules/graphql/utilities/getOperationAST.mjs\":\n             /*!*******************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/getOperationAST.mjs ***!\n               \\*******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getOperationAST = getOperationAST;\n                 var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 /**\n                  * Returns an operation AST given a document AST and optionally an operation\n                  * name. If a name is not provided, an operation is only returned if only one is\n                  * provided in the document.\n                  */\n+\n                 function getOperationAST(documentAST, operationName) {\n                     let operation = null;\n                     for (const definition of documentAST.definitions) {\n                         if (definition.kind === _kinds.Kind.OPERATION_DEFINITION) {\n                             var _definition$name;\n                             if (operationName == null) {\n                                 // If no operation name was provided, only return an Operation if there\n@@ -39753,21 +56858,79 @@\n                     return operation;\n                 }\n \n                 /***/\n             }),\n \n         /***/\n+        \"../../../node_modules/graphql/utilities/getOperationRootType.mjs\":\n+            /*!************************************************************************!*\\\n+              !*** ../../../node_modules/graphql/utilities/getOperationRootType.mjs ***!\n+              \\************************************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports.getOperationRootType = getOperationRootType;\n+                var _GraphQLError = __webpack_require__( /*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n+                /**\n+                 * Extracts the root type of the operation from the schema.\n+                 *\n+                 * @deprecated Please use `GraphQLSchema.getRootType` instead. Will be removed in v17\n+                 */\n+                function getOperationRootType(schema, operation) {\n+                    if (operation.operation === 'query') {\n+                        const queryType = schema.getQueryType();\n+                        if (!queryType) {\n+                            throw new _GraphQLError.GraphQLError('Schema does not define the required query root type.', {\n+                                nodes: operation\n+                            });\n+                        }\n+                        return queryType;\n+                    }\n+                    if (operation.operation === 'mutation') {\n+                        const mutationType = schema.getMutationType();\n+                        if (!mutationType) {\n+                            throw new _GraphQLError.GraphQLError('Schema is not configured for mutations.', {\n+                                nodes: operation\n+                            });\n+                        }\n+                        return mutationType;\n+                    }\n+                    if (operation.operation === 'subscription') {\n+                        const subscriptionType = schema.getSubscriptionType();\n+                        if (!subscriptionType) {\n+                            throw new _GraphQLError.GraphQLError('Schema is not configured for subscriptions.', {\n+                                nodes: operation\n+                            });\n+                        }\n+                        return subscriptionType;\n+                    }\n+                    throw new _GraphQLError.GraphQLError('Can only have query, mutation and subscription operations.', {\n+                        nodes: operation\n+                    });\n+                }\n+\n+                /***/\n+            }),\n+\n+        /***/\n         \"../../../node_modules/graphql/utilities/index.mjs\":\n             /*!*********************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/index.mjs ***!\n               \\*********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"BreakingChangeType\", ({\n                     enumerable: true,\n@@ -39783,14 +56946,20 @@\n                 }));\n                 Object.defineProperty(exports, \"TypeInfo\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _TypeInfo.TypeInfo;\n                     }\n                 }));\n+                Object.defineProperty(exports, \"assertValidName\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return _assertValidName.assertValidName;\n+                    }\n+                }));\n                 Object.defineProperty(exports, \"astFromValue\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _astFromValue.astFromValue;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"buildASTSchema\", ({\n@@ -39855,14 +57024,20 @@\n                 }));\n                 Object.defineProperty(exports, \"getOperationAST\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _getOperationAST.getOperationAST;\n                     }\n                 }));\n+                Object.defineProperty(exports, \"getOperationRootType\", ({\n+                    enumerable: true,\n+                    get: function() {\n+                        return _getOperationRootType.getOperationRootType;\n+                    }\n+                }));\n                 Object.defineProperty(exports, \"introspectionFromSchema\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _introspectionFromSchema.introspectionFromSchema;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"isEqualType\", ({\n@@ -39873,24 +57048,24 @@\n                 }));\n                 Object.defineProperty(exports, \"isTypeSubTypeOf\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _typeComparators.isTypeSubTypeOf;\n                     }\n                 }));\n-                Object.defineProperty(exports, \"lexicographicSortSchema\", ({\n+                Object.defineProperty(exports, \"isValidNameError\", ({\n                     enumerable: true,\n                     get: function() {\n-                        return _lexicographicSortSchema.lexicographicSortSchema;\n+                        return _assertValidName.isValidNameError;\n                     }\n                 }));\n-                Object.defineProperty(exports, \"printDirective\", ({\n+                Object.defineProperty(exports, \"lexicographicSortSchema\", ({\n                     enumerable: true,\n                     get: function() {\n-                        return _printSchema.printDirective;\n+                        return _lexicographicSortSchema.lexicographicSortSchema;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"printIntrospectionSchema\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _printSchema.printIntrospectionSchema;\n                     }\n@@ -39941,14 +57116,15 @@\n                     enumerable: true,\n                     get: function() {\n                         return _TypeInfo.visitWithTypeInfo;\n                     }\n                 }));\n                 var _getIntrospectionQuery = __webpack_require__( /*! ./getIntrospectionQuery.mjs */ \"../../../node_modules/graphql/utilities/getIntrospectionQuery.mjs\");\n                 var _getOperationAST = __webpack_require__( /*! ./getOperationAST.mjs */ \"../../../node_modules/graphql/utilities/getOperationAST.mjs\");\n+                var _getOperationRootType = __webpack_require__( /*! ./getOperationRootType.mjs */ \"../../../node_modules/graphql/utilities/getOperationRootType.mjs\");\n                 var _introspectionFromSchema = __webpack_require__( /*! ./introspectionFromSchema.mjs */ \"../../../node_modules/graphql/utilities/introspectionFromSchema.mjs\");\n                 var _buildClientSchema = __webpack_require__( /*! ./buildClientSchema.mjs */ \"../../../node_modules/graphql/utilities/buildClientSchema.mjs\");\n                 var _buildASTSchema = __webpack_require__( /*! ./buildASTSchema.mjs */ \"../../../node_modules/graphql/utilities/buildASTSchema.mjs\");\n                 var _extendSchema = __webpack_require__( /*! ./extendSchema.mjs */ \"../../../node_modules/graphql/utilities/extendSchema.mjs\");\n                 var _lexicographicSortSchema = __webpack_require__( /*! ./lexicographicSortSchema.mjs */ \"../../../node_modules/graphql/utilities/lexicographicSortSchema.mjs\");\n                 var _printSchema = __webpack_require__( /*! ./printSchema.mjs */ \"../../../node_modules/graphql/utilities/printSchema.mjs\");\n                 var _typeFromAST = __webpack_require__( /*! ./typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n@@ -39957,27 +57133,29 @@\n                 var _astFromValue = __webpack_require__( /*! ./astFromValue.mjs */ \"../../../node_modules/graphql/utilities/astFromValue.mjs\");\n                 var _TypeInfo = __webpack_require__( /*! ./TypeInfo.mjs */ \"../../../node_modules/graphql/utilities/TypeInfo.mjs\");\n                 var _coerceInputValue = __webpack_require__( /*! ./coerceInputValue.mjs */ \"../../../node_modules/graphql/utilities/coerceInputValue.mjs\");\n                 var _concatAST = __webpack_require__( /*! ./concatAST.mjs */ \"../../../node_modules/graphql/utilities/concatAST.mjs\");\n                 var _separateOperations = __webpack_require__( /*! ./separateOperations.mjs */ \"../../../node_modules/graphql/utilities/separateOperations.mjs\");\n                 var _stripIgnoredCharacters = __webpack_require__( /*! ./stripIgnoredCharacters.mjs */ \"../../../node_modules/graphql/utilities/stripIgnoredCharacters.mjs\");\n                 var _typeComparators = __webpack_require__( /*! ./typeComparators.mjs */ \"../../../node_modules/graphql/utilities/typeComparators.mjs\");\n+                var _assertValidName = __webpack_require__( /*! ./assertValidName.mjs */ \"../../../node_modules/graphql/utilities/assertValidName.mjs\");\n                 var _findBreakingChanges = __webpack_require__( /*! ./findBreakingChanges.mjs */ \"../../../node_modules/graphql/utilities/findBreakingChanges.mjs\");\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/utilities/introspectionFromSchema.mjs\":\n             /*!***************************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/introspectionFromSchema.mjs ***!\n               \\***************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.introspectionFromSchema = introspectionFromSchema;\n                 var _invariant = __webpack_require__( /*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n@@ -39989,87 +57167,91 @@\n                  *\n                  * IntrospectionQuery is useful for utilities that care about type and field\n                  * relationships, but do not need to traverse through those relationships.\n                  *\n                  * This is the inverse of buildClientSchema. The primary use case is outside\n                  * of the server context, for instance when doing schema comparisons.\n                  */\n+\n                 function introspectionFromSchema(schema, options) {\n                     const optionsWithDefaults = {\n                         specifiedByUrl: true,\n                         directiveIsRepeatable: true,\n                         schemaDescription: true,\n                         inputValueDeprecation: true,\n                         oneOf: true,\n                         ...options\n                     };\n                     const document = (0, _parser.parse)((0, _getIntrospectionQuery.getIntrospectionQuery)(optionsWithDefaults));\n                     const result = (0, _execute.executeSync)({\n                         schema,\n                         document\n                     });\n-                    result.errors == null && result.data != null || (0, _invariant.invariant)(false);\n+                    !result.errors && result.data || (0, _invariant.invariant)(false);\n                     return result.data;\n                 }\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/utilities/lexicographicSortSchema.mjs\":\n             /*!***************************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/lexicographicSortSchema.mjs ***!\n               \\***************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.lexicographicSortSchema = lexicographicSortSchema;\n                 var _inspect = __webpack_require__( /*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n                 var _invariant = __webpack_require__( /*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n+                var _keyValMap = __webpack_require__( /*! ../jsutils/keyValMap.mjs */ \"../../../node_modules/graphql/jsutils/keyValMap.mjs\");\n                 var _naturalCompare = __webpack_require__( /*! ../jsutils/naturalCompare.mjs */ \"../../../node_modules/graphql/jsutils/naturalCompare.mjs\");\n                 var _definition = __webpack_require__( /*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n                 var _directives = __webpack_require__( /*! ../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n                 var _introspection = __webpack_require__( /*! ../type/introspection.mjs */ \"../../../node_modules/graphql/type/introspection.mjs\");\n                 var _schema = __webpack_require__( /*! ../type/schema.mjs */ \"../../../node_modules/graphql/type/schema.mjs\");\n                 /**\n                  * Sort GraphQLSchema.\n                  *\n                  * This function returns a sorted copy of the given GraphQLSchema.\n                  */\n+\n                 function lexicographicSortSchema(schema) {\n                     const schemaConfig = schema.toConfig();\n-                    const typeMap = new Map(sortByName(schemaConfig.types).map(type => [type.name, sortNamedType(type)]));\n+                    const typeMap = (0, _keyValMap.keyValMap)(sortByName(schemaConfig.types), type => type.name, sortNamedType);\n                     return new _schema.GraphQLSchema({\n                         ...schemaConfig,\n-                        types: Array.from(typeMap.values()),\n+                        types: Object.values(typeMap),\n                         directives: sortByName(schemaConfig.directives).map(sortDirective),\n                         query: replaceMaybeType(schemaConfig.query),\n                         mutation: replaceMaybeType(schemaConfig.mutation),\n                         subscription: replaceMaybeType(schemaConfig.subscription)\n                     });\n \n                     function replaceType(type) {\n                         if ((0, _definition.isListType)(type)) {\n                             // @ts-expect-error\n                             return new _definition.GraphQLList(replaceType(type.ofType));\n                         } else if ((0, _definition.isNonNullType)(type)) {\n                             // @ts-expect-error\n                             return new _definition.GraphQLNonNull(replaceType(type.ofType));\n-                        }\n-                        // @ts-expect-error FIXME: TS Conversion\n+                        } // @ts-expect-error FIXME: TS Conversion\n+\n                         return replaceNamedType(type);\n                     }\n \n                     function replaceNamedType(type) {\n-                        return typeMap.get(type.name);\n+                        return typeMap[type.name];\n                     }\n \n                     function replaceMaybeType(maybeType) {\n                         return maybeType && replaceNamedType(maybeType);\n                     }\n \n                     function sortDirective(directive) {\n@@ -40146,14 +57328,15 @@\n                             return new _definition.GraphQLInputObjectType({\n                                 ...config,\n                                 fields: () => sortInputFields(config.fields)\n                             });\n                         }\n                         /* c8 ignore next 3 */\n                         // Not reachable, all possible types have been considered.\n+\n                         false || (0, _invariant.invariant)(false, 'Unexpected type: ' + (0, _inspect.inspect)(type));\n                     }\n                 }\n \n                 function sortObjMap(map, sortValueFn) {\n                     const sortedMap = Object.create(null);\n                     for (const key of Object.keys(map).sort(_naturalCompare.naturalCompare)) {\n@@ -40181,20 +57364,20 @@\n         \"../../../node_modules/graphql/utilities/printSchema.mjs\":\n             /*!***************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/printSchema.mjs ***!\n               \\***************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n-                exports.printDirective = printDirective;\n                 exports.printIntrospectionSchema = printIntrospectionSchema;\n                 exports.printSchema = printSchema;\n                 exports.printType = printType;\n                 var _inspect = __webpack_require__( /*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n                 var _invariant = __webpack_require__( /*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n                 var _blockString = __webpack_require__( /*! ../language/blockString.mjs */ \"../../../node_modules/graphql/language/blockString.mjs\");\n                 var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n@@ -40220,51 +57403,62 @@\n                 function printFilteredSchema(schema, directiveFilter, typeFilter) {\n                     const directives = schema.getDirectives().filter(directiveFilter);\n                     const types = Object.values(schema.getTypeMap()).filter(typeFilter);\n                     return [printSchemaDefinition(schema), ...directives.map(directive => printDirective(directive)), ...types.map(type => printType(type))].filter(Boolean).join('\\n\\n');\n                 }\n \n                 function printSchemaDefinition(schema) {\n+                    if (schema.description == null && isSchemaOfCommonNames(schema)) {\n+                        return;\n+                    }\n+                    const operationTypes = [];\n                     const queryType = schema.getQueryType();\n+                    if (queryType) {\n+                        operationTypes.push(`  query: ${queryType.name}`);\n+                    }\n                     const mutationType = schema.getMutationType();\n-                    const subscriptionType = schema.getSubscriptionType();\n-                    // Special case: When a schema has no root operation types, no valid schema\n-                    // definition can be printed.\n-                    if (!queryType && !mutationType && !subscriptionType) {\n-                        return;\n+                    if (mutationType) {\n+                        operationTypes.push(`  mutation: ${mutationType.name}`);\n                     }\n-                    // Only print a schema definition if there is a description or if it should\n-                    // not be omitted because of having default type names.\n-                    if (schema.description != null || !hasDefaultRootOperationTypes(schema)) {\n-                        return printDescription(schema) + 'schema {\\n' + (queryType ? `  query: ${queryType.name}\\n` : '') + (mutationType ? `  mutation: ${mutationType.name}\\n` : '') + (subscriptionType ? `  subscription: ${subscriptionType.name}\\n` : '') + '}';\n+                    const subscriptionType = schema.getSubscriptionType();\n+                    if (subscriptionType) {\n+                        operationTypes.push(`  subscription: ${subscriptionType.name}`);\n                     }\n+                    return printDescription(schema) + `schema {\\n${operationTypes.join('\\n')}\\n}`;\n                 }\n                 /**\n                  * GraphQL schema define root types for each type of operation. These types are\n                  * the same as any other type and can be named in any manner, however there is\n                  * a common naming convention:\n                  *\n                  * ```graphql\n                  *   schema {\n                  *     query: Query\n                  *     mutation: Mutation\n                  *     subscription: Subscription\n                  *   }\n                  * ```\n                  *\n-                 * When using this naming convention, the schema description can be omitted so\n-                 * long as these names are only used for operation types.\n-                 *\n-                 * Note however that if any of these default names are used elsewhere in the\n-                 * schema but not as a root operation type, the schema definition must still\n-                 * be printed to avoid ambiguity.\n-                 */\n-                function hasDefaultRootOperationTypes(schema) {\n-                    /* eslint-disable eqeqeq */\n-                    return schema.getQueryType() == schema.getType('Query') && schema.getMutationType() == schema.getType('Mutation') && schema.getSubscriptionType() == schema.getType('Subscription');\n+                 * When using this naming convention, the schema description can be omitted.\n+                 */\n+\n+                function isSchemaOfCommonNames(schema) {\n+                    const queryType = schema.getQueryType();\n+                    if (queryType && queryType.name !== 'Query') {\n+                        return false;\n+                    }\n+                    const mutationType = schema.getMutationType();\n+                    if (mutationType && mutationType.name !== 'Mutation') {\n+                        return false;\n+                    }\n+                    const subscriptionType = schema.getSubscriptionType();\n+                    if (subscriptionType && subscriptionType.name !== 'Subscription') {\n+                        return false;\n+                    }\n+                    return true;\n                 }\n \n                 function printType(type) {\n                     if ((0, _definition.isScalarType)(type)) {\n                         return printScalar(type);\n                     }\n                     if ((0, _definition.isObjectType)(type)) {\n@@ -40280,14 +57474,15 @@\n                         return printEnum(type);\n                     }\n                     if ((0, _definition.isInputObjectType)(type)) {\n                         return printInputObject(type);\n                     }\n                     /* c8 ignore next 3 */\n                     // Not reachable, all possible types have been considered.\n+\n                     false || (0, _invariant.invariant)(false, 'Unexpected type: ' + (0, _inspect.inspect)(type));\n                 }\n \n                 function printScalar(type) {\n                     return printDescription(type) + `scalar ${type.name}` + printSpecifiedByURL(type);\n                 }\n \n@@ -40328,17 +57523,17 @@\n                 function printBlock(items) {\n                     return items.length !== 0 ? ' {\\n' + items.join('\\n') + '\\n}' : '';\n                 }\n \n                 function printArgs(args, indentation = '') {\n                     if (args.length === 0) {\n                         return '';\n-                    }\n-                    // If every arg does not have a description, print them on one line.\n-                    if (args.every(arg => arg.description == null)) {\n+                    } // If every arg does not have a description, print them on one line.\n+\n+                    if (args.every(arg => !arg.description)) {\n                         return '(' + args.map(printInputValue).join(', ') + ')';\n                     }\n                     return '(\\n' + args.map((arg, i) => printDescription(arg, '  ' + indentation, !i) + '  ' + indentation + printInputValue(arg)).join('\\n') + '\\n' + indentation + ')';\n                 }\n \n                 function printInputValue(arg) {\n                     const defaultAST = (0, _astFromValue.astFromValue)(arg.defaultValue, arg.type);\n@@ -40387,77 +57582,79 @@\n                     }\n                     const blockString = (0, _printer.print)({\n                         kind: _kinds.Kind.STRING,\n                         value: description,\n                         block: (0, _blockString.isPrintableAsBlockString)(description)\n                     });\n                     const prefix = indentation && !firstInBlock ? '\\n' + indentation : indentation;\n-                    return prefix + blockString.replaceAll('\\n', '\\n' + indentation) + '\\n';\n+                    return prefix + blockString.replace(/\\n/g, '\\n' + indentation) + '\\n';\n                 }\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/utilities/separateOperations.mjs\":\n             /*!**********************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/separateOperations.mjs ***!\n               \\**********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.separateOperations = separateOperations;\n                 var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 var _visitor = __webpack_require__( /*! ../language/visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n                 /**\n                  * separateOperations accepts a single AST document which may contain many\n                  * operations and fragments and returns a collection of AST documents each of\n                  * which contains a single operation as well the fragment definitions it\n                  * refers to.\n                  */\n+\n                 function separateOperations(documentAST) {\n                     const operations = [];\n-                    const depGraph = Object.create(null);\n-                    // Populate metadata and build a dependency graph.\n+                    const depGraph = Object.create(null); // Populate metadata and build a dependency graph.\n+\n                     for (const definitionNode of documentAST.definitions) {\n                         switch (definitionNode.kind) {\n                             case _kinds.Kind.OPERATION_DEFINITION:\n                                 operations.push(definitionNode);\n                                 break;\n                             case _kinds.Kind.FRAGMENT_DEFINITION:\n                                 depGraph[definitionNode.name.value] = collectDependencies(definitionNode.selectionSet);\n                                 break;\n-                            default:\n-                                // ignore non-executable definitions\n+                            default: // ignore non-executable definitions\n                         }\n-                    }\n-                    // For each operation, produce a new synthesized AST which includes only what\n+                    } // For each operation, produce a new synthesized AST which includes only what\n                     // is necessary for completing that operation.\n+\n                     const separatedDocumentASTs = Object.create(null);\n                     for (const operation of operations) {\n                         const dependencies = new Set();\n                         for (const fragmentName of collectDependencies(operation.selectionSet)) {\n                             collectTransitiveDependencies(dependencies, depGraph, fragmentName);\n-                        }\n-                        // Provides the empty string for anonymous operations.\n-                        const operationName = operation.name ? operation.name.value : '';\n-                        // The list of definition nodes to be included for this operation, sorted\n+                        } // Provides the empty string for anonymous operations.\n+\n+                        const operationName = operation.name ? operation.name.value : ''; // The list of definition nodes to be included for this operation, sorted\n                         // to retain the same order as the original document.\n+\n                         separatedDocumentASTs[operationName] = {\n                             kind: _kinds.Kind.DOCUMENT,\n                             definitions: documentAST.definitions.filter(node => node === operation || node.kind === _kinds.Kind.FRAGMENT_DEFINITION && dependencies.has(node.name.value))\n                         };\n                     }\n                     return separatedDocumentASTs;\n                 }\n+\n                 // From a dependency graph, collects a list of transitive dependencies by\n                 // recursing through a dependency graph.\n                 function collectTransitiveDependencies(collected, depGraph, fromName) {\n                     if (!collected.has(fromName)) {\n                         collected.add(fromName);\n                         const immediateDeps = depGraph[fromName];\n                         if (immediateDeps !== undefined) {\n@@ -40485,14 +57682,15 @@\n         \"../../../node_modules/graphql/utilities/sortValueNode.mjs\":\n             /*!*****************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/sortValueNode.mjs ***!\n               \\*****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.sortValueNode = sortValueNode;\n                 var _naturalCompare = __webpack_require__( /*! ../jsutils/naturalCompare.mjs */ \"../../../node_modules/graphql/jsutils/naturalCompare.mjs\");\n@@ -40500,14 +57698,15 @@\n                 /**\n                  * Sort ValueNode.\n                  *\n                  * This function returns a sorted copy of the given ValueNode.\n                  *\n                  * @internal\n                  */\n+\n                 function sortValueNode(valueNode) {\n                     switch (valueNode.kind) {\n                         case _kinds.Kind.OBJECT:\n                             return {\n                                 ...valueNode,\n                                 fields: sortFields(valueNode.fields)\n                             };\n@@ -40541,14 +57740,15 @@\n         \"../../../node_modules/graphql/utilities/stripIgnoredCharacters.mjs\":\n             /*!**************************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/stripIgnoredCharacters.mjs ***!\n               \\**************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.stripIgnoredCharacters = stripIgnoredCharacters;\n                 var _blockString = __webpack_require__( /*! ../language/blockString.mjs */ \"../../../node_modules/graphql/language/blockString.mjs\");\n@@ -40611,28 +57811,30 @@\n                  *\n                  * Becomes:\n                  *\n                  * ```graphql\n                  * \"\"\"Type description\"\"\" type Foo{\"\"\"Field description\"\"\" bar:String}\n                  * ```\n                  */\n+\n                 function stripIgnoredCharacters(source) {\n                     const sourceObj = (0, _source.isSource)(source) ? source : new _source.Source(source);\n                     const body = sourceObj.body;\n                     const lexer = new _lexer.Lexer(sourceObj);\n                     let strippedBody = '';\n                     let wasLastAddedTokenNonPunctuator = false;\n                     while (lexer.advance().kind !== _tokenKind.TokenKind.EOF) {\n                         const currentToken = lexer.token;\n                         const tokenKind = currentToken.kind;\n                         /**\n                          * Every two non-punctuator tokens should have space between them.\n                          * Also prevent case of non-punctuator token following by spread resulting\n                          * in invalid token (e.g. `1...` is invalid Float token).\n                          */\n+\n                         const isNonPunctuator = !(0, _lexer.isPunctuatorTokenKind)(currentToken.kind);\n                         if (wasLastAddedTokenNonPunctuator) {\n                             if (isNonPunctuator || currentToken.kind === _tokenKind.TokenKind.SPREAD) {\n                                 strippedBody += ' ';\n                             }\n                         }\n                         const tokenBody = body.slice(currentToken.start, currentToken.end);\n@@ -40655,14 +57857,15 @@\n         \"../../../node_modules/graphql/utilities/typeComparators.mjs\":\n             /*!*******************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/typeComparators.mjs ***!\n               \\*******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.doTypesOverlap = doTypesOverlap;\n                 exports.isEqualType = isEqualType;\n@@ -40671,103 +57874,106 @@\n                 /**\n                  * Provided two types, return true if the types are equal (invariant).\n                  */\n                 function isEqualType(typeA, typeB) {\n                     // Equivalent types are equal.\n                     if (typeA === typeB) {\n                         return true;\n-                    }\n-                    // If either type is non-null, the other must also be non-null.\n+                    } // If either type is non-null, the other must also be non-null.\n+\n                     if ((0, _definition.isNonNullType)(typeA) && (0, _definition.isNonNullType)(typeB)) {\n                         return isEqualType(typeA.ofType, typeB.ofType);\n-                    }\n-                    // If either type is a list, the other must also be a list.\n+                    } // If either type is a list, the other must also be a list.\n+\n                     if ((0, _definition.isListType)(typeA) && (0, _definition.isListType)(typeB)) {\n                         return isEqualType(typeA.ofType, typeB.ofType);\n-                    }\n-                    // Otherwise the types are not equal.\n+                    } // Otherwise the types are not equal.\n+\n                     return false;\n                 }\n                 /**\n                  * Provided a type and a super type, return true if the first type is either\n                  * equal or a subset of the second super type (covariant).\n                  */\n+\n                 function isTypeSubTypeOf(schema, maybeSubType, superType) {\n                     // Equivalent type is a valid subtype\n                     if (maybeSubType === superType) {\n                         return true;\n-                    }\n-                    // If superType is non-null, maybeSubType must also be non-null.\n+                    } // If superType is non-null, maybeSubType must also be non-null.\n+\n                     if ((0, _definition.isNonNullType)(superType)) {\n                         if ((0, _definition.isNonNullType)(maybeSubType)) {\n                             return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n                         }\n                         return false;\n                     }\n                     if ((0, _definition.isNonNullType)(maybeSubType)) {\n                         // If superType is nullable, maybeSubType may be non-null or nullable.\n                         return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);\n-                    }\n-                    // If superType type is a list, maybeSubType type must also be a list.\n+                    } // If superType type is a list, maybeSubType type must also be a list.\n+\n                     if ((0, _definition.isListType)(superType)) {\n                         if ((0, _definition.isListType)(maybeSubType)) {\n                             return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n                         }\n                         return false;\n                     }\n                     if ((0, _definition.isListType)(maybeSubType)) {\n                         // If superType is not a list, maybeSubType must also be not a list.\n                         return false;\n-                    }\n-                    // If superType type is an abstract type, check if it is super type of maybeSubType.\n+                    } // If superType type is an abstract type, check if it is super type of maybeSubType.\n                     // Otherwise, the child type is not a valid subtype of the parent type.\n+\n                     return (0, _definition.isAbstractType)(superType) && ((0, _definition.isInterfaceType)(maybeSubType) || (0, _definition.isObjectType)(maybeSubType)) && schema.isSubType(superType, maybeSubType);\n                 }\n                 /**\n                  * Provided two composite types, determine if they \"overlap\". Two composite\n                  * types overlap when the Sets of possible concrete types for each intersect.\n                  *\n                  * This is often used to determine if a fragment of a given type could possibly\n                  * be visited in a context of another type.\n                  *\n                  * This function is commutative.\n                  */\n+\n                 function doTypesOverlap(schema, typeA, typeB) {\n                     // Equivalent types overlap\n                     if (typeA === typeB) {\n                         return true;\n                     }\n                     if ((0, _definition.isAbstractType)(typeA)) {\n                         if ((0, _definition.isAbstractType)(typeB)) {\n                             // If both types are abstract, then determine if there is any intersection\n                             // between possible concrete types of each.\n                             return schema.getPossibleTypes(typeA).some(type => schema.isSubType(typeB, type));\n-                        }\n-                        // Determine if the latter type is a possible concrete type of the former.\n+                        } // Determine if the latter type is a possible concrete type of the former.\n+\n                         return schema.isSubType(typeA, typeB);\n                     }\n                     if ((0, _definition.isAbstractType)(typeB)) {\n                         // Determine if the former type is a possible concrete type of the latter.\n                         return schema.isSubType(typeB, typeA);\n-                    }\n-                    // Otherwise the types do not overlap.\n+                    } // Otherwise the types do not overlap.\n+\n                     return false;\n                 }\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/utilities/typeFromAST.mjs\":\n             /*!***************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/typeFromAST.mjs ***!\n               \\***************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.typeFromAST = typeFromAST;\n                 var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n@@ -40795,22 +58001,24 @@\n         \"../../../node_modules/graphql/utilities/valueFromAST.mjs\":\n             /*!****************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/valueFromAST.mjs ***!\n               \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.valueFromAST = valueFromAST;\n                 var _inspect = __webpack_require__( /*! ../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n                 var _invariant = __webpack_require__( /*! ../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n+                var _keyMap = __webpack_require__( /*! ../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n                 var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 var _definition = __webpack_require__( /*! ../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n                 /**\n                  * Produces a JavaScript value given a GraphQL Value AST.\n                  *\n                  * A GraphQL type must be provided, which will be used to interpret different\n                  * GraphQL Value literals.\n@@ -40825,14 +58033,15 @@\n                  * | Boolean              | Boolean       |\n                  * | String               | String        |\n                  * | Int / Float          | Number        |\n                  * | Enum Value           | Unknown       |\n                  * | NullValue            | null          |\n                  *\n                  */\n+\n                 function valueFromAST(valueNode, type, variables) {\n                     if (!valueNode) {\n                         // When there is no node, then there is also no value.\n                         // Importantly, this is different from returning the value null.\n                         return;\n                     }\n                     if (valueNode.kind === _kinds.Kind.VARIABLE) {\n@@ -40840,18 +58049,18 @@\n                         if (variables == null || variables[variableName] === undefined) {\n                             // No valid return value.\n                             return;\n                         }\n                         const variableValue = variables[variableName];\n                         if (variableValue === null && (0, _definition.isNonNullType)(type)) {\n                             return; // Invalid: intentionally return no value.\n-                        }\n-                        // Note: This does no further checking that this variable is correct.\n+                        } // Note: This does no further checking that this variable is correct.\n                         // This assumes that this query has been validated and the variable\n                         // usage here is of the correct type.\n+\n                         return variableValue;\n                     }\n                     if ((0, _definition.isNonNullType)(type)) {\n                         if (valueNode.kind === _kinds.Kind.NULL) {\n                             return; // Invalid: intentionally return no value.\n                         }\n                         return valueFromAST(valueNode, type.ofType, variables);\n@@ -40889,18 +58098,18 @@\n                         return [coercedValue];\n                     }\n                     if ((0, _definition.isInputObjectType)(type)) {\n                         if (valueNode.kind !== _kinds.Kind.OBJECT) {\n                             return; // Invalid: intentionally return no value.\n                         }\n                         const coercedObj = Object.create(null);\n-                        const fieldNodes = new Map(valueNode.fields.map(field => [field.name.value, field]));\n+                        const fieldNodes = (0, _keyMap.keyMap)(valueNode.fields, field => field.name.value);\n                         for (const field of Object.values(type.getFields())) {\n-                            const fieldNode = fieldNodes.get(field.name);\n-                            if (fieldNode == null || isMissingVariable(fieldNode.value, variables)) {\n+                            const fieldNode = fieldNodes[field.name];\n+                            if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {\n                                 if (field.defaultValue !== undefined) {\n                                     coercedObj[field.name] = field.defaultValue;\n                                 } else if ((0, _definition.isNonNullType)(field.type)) {\n                                     return; // Invalid: intentionally return no value.\n                                 }\n                                 continue;\n                             }\n@@ -40934,18 +58143,19 @@\n                         if (result === undefined) {\n                             return; // Invalid: intentionally return no value.\n                         }\n                         return result;\n                     }\n                     /* c8 ignore next 3 */\n                     // Not reachable, all possible input types have been considered.\n+\n                     false || (0, _invariant.invariant)(false, 'Unexpected input type: ' + (0, _inspect.inspect)(type));\n-                }\n-                // Returns true if the provided valueNode is a variable which is not defined\n+                } // Returns true if the provided valueNode is a variable which is not defined\n                 // in the set of variables.\n+\n                 function isMissingVariable(valueNode, variables) {\n                     return valueNode.kind === _kinds.Kind.VARIABLE && (variables == null || variables[valueNode.name.value] === undefined);\n                 }\n \n                 /***/\n             }),\n \n@@ -40953,14 +58163,15 @@\n         \"../../../node_modules/graphql/utilities/valueFromASTUntyped.mjs\":\n             /*!***********************************************************************!*\\\n               !*** ../../../node_modules/graphql/utilities/valueFromASTUntyped.mjs ***!\n               \\***********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.valueFromASTUntyped = valueFromASTUntyped;\n                 var _keyValMap = __webpack_require__( /*! ../jsutils/keyValMap.mjs */ \"../../../node_modules/graphql/jsutils/keyValMap.mjs\");\n@@ -40977,14 +58188,15 @@\n                  * | List                 | Array            |\n                  * | Boolean              | Boolean          |\n                  * | String / Enum        | String           |\n                  * | Int / Float          | Number           |\n                  * | Null                 | null             |\n                  *\n                  */\n+\n                 function valueFromASTUntyped(valueNode, variables) {\n                     switch (valueNode.kind) {\n                         case _kinds.Kind.NULL:\n                             return null;\n                         case _kinds.Kind.INT:\n                             return parseInt(valueNode.value, 10);\n                         case _kinds.Kind.FLOAT:\n@@ -41009,14 +58221,15 @@\n         \"../../../node_modules/graphql/validation/ValidationContext.mjs\":\n             /*!**********************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/ValidationContext.mjs ***!\n               \\**********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.ValidationContext = exports.SDLValidationContext = exports.ASTValidationContext = void 0;\n                 var _kinds = __webpack_require__( /*! ../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n@@ -41078,22 +58291,22 @@\n                         }\n                         return spreads;\n                     }\n                     getRecursivelyReferencedFragments(operation) {\n                         let fragments = this._recursivelyReferencedFragments.get(operation);\n                         if (!fragments) {\n                             fragments = [];\n-                            const collectedNames = new Set();\n+                            const collectedNames = Object.create(null);\n                             const nodesToVisit = [operation.selectionSet];\n                             let node;\n                             while (node = nodesToVisit.pop()) {\n                                 for (const spread of this.getFragmentSpreads(node)) {\n                                     const fragName = spread.name.value;\n-                                    if (!collectedNames.has(fragName)) {\n-                                        collectedNames.add(fragName);\n+                                    if (collectedNames[fragName] !== true) {\n+                                        collectedNames[fragName] = true;\n                                         const fragment = this.getFragment(fragName);\n                                         if (fragment) {\n                                             fragments.push(fragment);\n                                             nodesToVisit.push(fragment.selectionSet);\n                                         }\n                                     }\n                                 }\n@@ -41196,37 +58409,20 @@\n         \"../../../node_modules/graphql/validation/index.mjs\":\n             /*!**********************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/index.mjs ***!\n               \\**********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n-                Object.defineProperty(exports, \"DeferStreamDirectiveLabelRule\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return _DeferStreamDirectiveLabelRule.DeferStreamDirectiveLabelRule;\n-                    }\n-                }));\n-                Object.defineProperty(exports, \"DeferStreamDirectiveOnRootFieldRule\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return _DeferStreamDirectiveOnRootFieldRule.DeferStreamDirectiveOnRootFieldRule;\n-                    }\n-                }));\n-                Object.defineProperty(exports, \"DeferStreamDirectiveOnValidOperationsRule\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return _DeferStreamDirectiveOnValidOperationsRule.DeferStreamDirectiveOnValidOperationsRule;\n-                    }\n-                }));\n                 Object.defineProperty(exports, \"ExecutableDefinitionsRule\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _ExecutableDefinitionsRule.ExecutableDefinitionsRule;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"FieldsOnCorrectTypeRule\", ({\n@@ -41351,20 +58547,14 @@\n                 }));\n                 Object.defineProperty(exports, \"SingleFieldSubscriptionsRule\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _SingleFieldSubscriptionsRule.SingleFieldSubscriptionsRule;\n                     }\n                 }));\n-                Object.defineProperty(exports, \"StreamDirectiveOnListFieldRule\", ({\n-                    enumerable: true,\n-                    get: function() {\n-                        return _StreamDirectiveOnListFieldRule.StreamDirectiveOnListFieldRule;\n-                    }\n-                }));\n                 Object.defineProperty(exports, \"UniqueArgumentDefinitionNamesRule\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _UniqueArgumentDefinitionNamesRule.UniqueArgumentDefinitionNamesRule;\n                     }\n                 }));\n                 Object.defineProperty(exports, \"UniqueArgumentNamesRule\", ({\n@@ -41474,17 +58664,14 @@\n                     get: function() {\n                         return _validate.validate;\n                     }\n                 }));\n                 var _validate = __webpack_require__( /*! ./validate.mjs */ \"../../../node_modules/graphql/validation/validate.mjs\");\n                 var _ValidationContext = __webpack_require__( /*! ./ValidationContext.mjs */ \"../../../node_modules/graphql/validation/ValidationContext.mjs\");\n                 var _specifiedRules = __webpack_require__( /*! ./specifiedRules.mjs */ \"../../../node_modules/graphql/validation/specifiedRules.mjs\");\n-                var _DeferStreamDirectiveLabelRule = __webpack_require__( /*! ./rules/DeferStreamDirectiveLabelRule.mjs */ \"../../../node_modules/graphql/validation/rules/DeferStreamDirectiveLabelRule.mjs\");\n-                var _DeferStreamDirectiveOnRootFieldRule = __webpack_require__( /*! ./rules/DeferStreamDirectiveOnRootFieldRule.mjs */ \"../../../node_modules/graphql/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs\");\n-                var _DeferStreamDirectiveOnValidOperationsRule = __webpack_require__( /*! ./rules/DeferStreamDirectiveOnValidOperationsRule.mjs */ \"../../../node_modules/graphql/validation/rules/DeferStreamDirectiveOnValidOperationsRule.mjs\");\n                 var _ExecutableDefinitionsRule = __webpack_require__( /*! ./rules/ExecutableDefinitionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs\");\n                 var _FieldsOnCorrectTypeRule = __webpack_require__( /*! ./rules/FieldsOnCorrectTypeRule.mjs */ \"../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs\");\n                 var _FragmentsOnCompositeTypesRule = __webpack_require__( /*! ./rules/FragmentsOnCompositeTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs\");\n                 var _KnownArgumentNamesRule = __webpack_require__( /*! ./rules/KnownArgumentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs\");\n                 var _KnownDirectivesRule = __webpack_require__( /*! ./rules/KnownDirectivesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownDirectivesRule.mjs\");\n                 var _KnownFragmentNamesRule = __webpack_require__( /*! ./rules/KnownFragmentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs\");\n                 var _KnownTypeNamesRule = __webpack_require__( /*! ./rules/KnownTypeNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs\");\n@@ -41494,15 +58681,14 @@\n                 var _NoUnusedFragmentsRule = __webpack_require__( /*! ./rules/NoUnusedFragmentsRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs\");\n                 var _NoUnusedVariablesRule = __webpack_require__( /*! ./rules/NoUnusedVariablesRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs\");\n                 var _OverlappingFieldsCanBeMergedRule = __webpack_require__( /*! ./rules/OverlappingFieldsCanBeMergedRule.mjs */ \"../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs\");\n                 var _PossibleFragmentSpreadsRule = __webpack_require__( /*! ./rules/PossibleFragmentSpreadsRule.mjs */ \"../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs\");\n                 var _ProvidedRequiredArgumentsRule = __webpack_require__( /*! ./rules/ProvidedRequiredArgumentsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs\");\n                 var _ScalarLeafsRule = __webpack_require__( /*! ./rules/ScalarLeafsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ScalarLeafsRule.mjs\");\n                 var _SingleFieldSubscriptionsRule = __webpack_require__( /*! ./rules/SingleFieldSubscriptionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs\");\n-                var _StreamDirectiveOnListFieldRule = __webpack_require__( /*! ./rules/StreamDirectiveOnListFieldRule.mjs */ \"../../../node_modules/graphql/validation/rules/StreamDirectiveOnListFieldRule.mjs\");\n                 var _UniqueArgumentNamesRule = __webpack_require__( /*! ./rules/UniqueArgumentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs\");\n                 var _UniqueDirectivesPerLocationRule = __webpack_require__( /*! ./rules/UniqueDirectivesPerLocationRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs\");\n                 var _UniqueFragmentNamesRule = __webpack_require__( /*! ./rules/UniqueFragmentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs\");\n                 var _UniqueInputFieldNamesRule = __webpack_require__( /*! ./rules/UniqueInputFieldNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs\");\n                 var _UniqueOperationNamesRule = __webpack_require__( /*! ./rules/UniqueOperationNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs\");\n                 var _UniqueVariableNamesRule = __webpack_require__( /*! ./rules/UniqueVariableNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs\");\n                 var _ValuesOfCorrectTypeRule = __webpack_require__( /*! ./rules/ValuesOfCorrectTypeRule.mjs */ \"../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs\");\n@@ -41520,207 +58706,22 @@\n                 var _NoDeprecatedCustomRule = __webpack_require__( /*! ./rules/custom/NoDeprecatedCustomRule.mjs */ \"../../../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs\");\n                 var _NoSchemaIntrospectionCustomRule = __webpack_require__( /*! ./rules/custom/NoSchemaIntrospectionCustomRule.mjs */ \"../../../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs\");\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/graphql/validation/rules/DeferStreamDirectiveLabelRule.mjs\":\n-            /*!****************************************************************************************!*\\\n-              !*** ../../../node_modules/graphql/validation/rules/DeferStreamDirectiveLabelRule.mjs ***!\n-              \\****************************************************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.DeferStreamDirectiveLabelRule = DeferStreamDirectiveLabelRule;\n-                var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n-                var _kinds = __webpack_require__( /*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n-                var _directives = __webpack_require__( /*! ../../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n-                /**\n-                 * Defer and stream directive labels are unique\n-                 *\n-                 * A GraphQL document is only valid if defer and stream directives' label argument is static and unique.\n-                 */\n-                function DeferStreamDirectiveLabelRule(context) {\n-                    const knownLabels = new Map();\n-                    return {\n-                        Directive(node) {\n-                            if (node.name.value === _directives.GraphQLDeferDirective.name || node.name.value === _directives.GraphQLStreamDirective.name) {\n-                                var _node$arguments;\n-                                const labelArgument = (_node$arguments = node.arguments) === null || _node$arguments === void 0 ? void 0 : _node$arguments.find(arg => arg.name.value === 'label');\n-                                const labelValue = labelArgument === null || labelArgument === void 0 ? void 0 : labelArgument.value;\n-                                if (!labelValue) {\n-                                    return;\n-                                }\n-                                if (labelValue.kind !== _kinds.Kind.STRING) {\n-                                    context.reportError(new _GraphQLError.GraphQLError(`Directive \"${node.name.value}\"'s label argument must be a static string.`, {\n-                                        nodes: node\n-                                    }));\n-                                    return;\n-                                }\n-                                const knownLabel = knownLabels.get(labelValue.value);\n-                                if (knownLabel != null) {\n-                                    context.reportError(new _GraphQLError.GraphQLError('Defer/Stream directive label argument must be unique.', {\n-                                        nodes: [knownLabel, node]\n-                                    }));\n-                                } else {\n-                                    knownLabels.set(labelValue.value, node);\n-                                }\n-                            }\n-                        }\n-                    };\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../../node_modules/graphql/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs\":\n-            /*!**********************************************************************************************!*\\\n-              !*** ../../../node_modules/graphql/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs ***!\n-              \\**********************************************************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.DeferStreamDirectiveOnRootFieldRule = DeferStreamDirectiveOnRootFieldRule;\n-                var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n-                var _directives = __webpack_require__( /*! ../../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n-                /**\n-                 * Defer and stream directives are used on valid root field\n-                 *\n-                 * A GraphQL document is only valid if defer directives are not used on root mutation or subscription types.\n-                 */\n-                function DeferStreamDirectiveOnRootFieldRule(context) {\n-                    return {\n-                        Directive(node) {\n-                            const mutationType = context.getSchema().getMutationType();\n-                            const subscriptionType = context.getSchema().getSubscriptionType();\n-                            const parentType = context.getParentType();\n-                            if (parentType && node.name.value === _directives.GraphQLDeferDirective.name) {\n-                                if (mutationType && parentType === mutationType) {\n-                                    context.reportError(new _GraphQLError.GraphQLError(`Defer directive cannot be used on root mutation type \"${parentType.name}\".`, {\n-                                        nodes: node\n-                                    }));\n-                                }\n-                                if (subscriptionType && parentType === subscriptionType) {\n-                                    context.reportError(new _GraphQLError.GraphQLError(`Defer directive cannot be used on root subscription type \"${parentType.name}\".`, {\n-                                        nodes: node\n-                                    }));\n-                                }\n-                            }\n-                            if (parentType && node.name.value === _directives.GraphQLStreamDirective.name) {\n-                                if (mutationType && parentType === mutationType) {\n-                                    context.reportError(new _GraphQLError.GraphQLError(`Stream directive cannot be used on root mutation type \"${parentType.name}\".`, {\n-                                        nodes: node\n-                                    }));\n-                                }\n-                                if (subscriptionType && parentType === subscriptionType) {\n-                                    context.reportError(new _GraphQLError.GraphQLError(`Stream directive cannot be used on root subscription type \"${parentType.name}\".`, {\n-                                        nodes: node\n-                                    }));\n-                                }\n-                            }\n-                        }\n-                    };\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../../node_modules/graphql/validation/rules/DeferStreamDirectiveOnValidOperationsRule.mjs\":\n-            /*!****************************************************************************************************!*\\\n-              !*** ../../../node_modules/graphql/validation/rules/DeferStreamDirectiveOnValidOperationsRule.mjs ***!\n-              \\****************************************************************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.DeferStreamDirectiveOnValidOperationsRule = DeferStreamDirectiveOnValidOperationsRule;\n-                var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n-                var _ast = __webpack_require__( /*! ../../language/ast.mjs */ \"../../../node_modules/graphql/language/ast.mjs\");\n-                var _kinds = __webpack_require__( /*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n-                var _directives = __webpack_require__( /*! ../../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n-\n-                function ifArgumentCanBeFalse(node) {\n-                    var _node$arguments;\n-                    const ifArgument = (_node$arguments = node.arguments) === null || _node$arguments === void 0 ? void 0 : _node$arguments.find(arg => arg.name.value === 'if');\n-                    if (!ifArgument) {\n-                        return false;\n-                    }\n-                    if (ifArgument.value.kind === _kinds.Kind.BOOLEAN) {\n-                        if (ifArgument.value.value) {\n-                            return false;\n-                        }\n-                    } else if (ifArgument.value.kind !== _kinds.Kind.VARIABLE) {\n-                        return false;\n-                    }\n-                    return true;\n-                }\n-                /**\n-                 * Defer And Stream Directives Are Used On Valid Operations\n-                 *\n-                 * A GraphQL document is only valid if defer directives are not used on root mutation or subscription types.\n-                 */\n-                function DeferStreamDirectiveOnValidOperationsRule(context) {\n-                    const fragmentsUsedOnSubscriptions = new Set();\n-                    return {\n-                        OperationDefinition(operation) {\n-                            if (operation.operation === _ast.OperationTypeNode.SUBSCRIPTION) {\n-                                for (const fragment of context.getRecursivelyReferencedFragments(operation)) {\n-                                    fragmentsUsedOnSubscriptions.add(fragment.name.value);\n-                                }\n-                            }\n-                        },\n-                        Directive(node, _key, _parent, _path, ancestors) {\n-                            const definitionNode = ancestors[2];\n-                            if ('kind' in definitionNode && (definitionNode.kind === _kinds.Kind.FRAGMENT_DEFINITION && fragmentsUsedOnSubscriptions.has(definitionNode.name.value) || definitionNode.kind === _kinds.Kind.OPERATION_DEFINITION && definitionNode.operation === _ast.OperationTypeNode.SUBSCRIPTION)) {\n-                                if (node.name.value === _directives.GraphQLDeferDirective.name) {\n-                                    if (!ifArgumentCanBeFalse(node)) {\n-                                        context.reportError(new _GraphQLError.GraphQLError('Defer directive not supported on subscription operations. Disable `@defer` by setting the `if` argument to `false`.', {\n-                                            nodes: node\n-                                        }));\n-                                    }\n-                                } else if (node.name.value === _directives.GraphQLStreamDirective.name) {\n-                                    if (!ifArgumentCanBeFalse(node)) {\n-                                        context.reportError(new _GraphQLError.GraphQLError('Stream directive not supported on subscription operations. Disable `@stream` by setting the `if` argument to `false`.', {\n-                                            nodes: node\n-                                        }));\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    };\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n         \"../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs\":\n             /*!************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs ***!\n               \\************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.ExecutableDefinitionsRule = ExecutableDefinitionsRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -41757,14 +58758,15 @@\n         \"../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs\":\n             /*!**********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs ***!\n               \\**********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.FieldsOnCorrectTypeRule = FieldsOnCorrectTypeRule;\n                 var _didYouMean = __webpack_require__( /*! ../../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n@@ -41785,99 +58787,102 @@\n                         Field(node) {\n                             const type = context.getParentType();\n                             if (type) {\n                                 const fieldDef = context.getFieldDef();\n                                 if (!fieldDef) {\n                                     // This field doesn't exist, lets look for suggestions.\n                                     const schema = context.getSchema();\n-                                    const fieldName = node.name.value;\n-                                    // First determine if there are any suggested types to condition on.\n-                                    let suggestion = (0, _didYouMean.didYouMean)('to use an inline fragment on', getSuggestedTypeNames(schema, type, fieldName));\n-                                    // If there are no suggested types, then perhaps this was a typo?\n+                                    const fieldName = node.name.value; // First determine if there are any suggested types to condition on.\n+\n+                                    let suggestion = (0, _didYouMean.didYouMean)('to use an inline fragment on', getSuggestedTypeNames(schema, type, fieldName)); // If there are no suggested types, then perhaps this was a typo?\n+\n                                     if (suggestion === '') {\n                                         suggestion = (0, _didYouMean.didYouMean)(getSuggestedFieldNames(type, fieldName));\n-                                    }\n-                                    // Report an error, including helpful suggestions.\n+                                    } // Report an error, including helpful suggestions.\n+\n                                     context.reportError(new _GraphQLError.GraphQLError(`Cannot query field \"${fieldName}\" on type \"${type.name}\".` + suggestion, {\n                                         nodes: node\n                                     }));\n                                 }\n                             }\n                         }\n                     };\n                 }\n                 /**\n                  * Go through all of the implementations of type, as well as the interfaces that\n                  * they implement. If any of those types include the provided field, suggest them,\n                  * sorted by how often the type is referenced.\n                  */\n+\n                 function getSuggestedTypeNames(schema, type, fieldName) {\n                     if (!(0, _definition.isAbstractType)(type)) {\n                         // Must be an Object type, which does not have possible fields.\n                         return [];\n                     }\n                     const suggestedTypes = new Set();\n                     const usageCount = Object.create(null);\n                     for (const possibleType of schema.getPossibleTypes(type)) {\n-                        if (possibleType.getFields()[fieldName] == null) {\n+                        if (!possibleType.getFields()[fieldName]) {\n                             continue;\n-                        }\n-                        // This object type defines this field.\n+                        } // This object type defines this field.\n+\n                         suggestedTypes.add(possibleType);\n                         usageCount[possibleType.name] = 1;\n                         for (const possibleInterface of possibleType.getInterfaces()) {\n                             var _usageCount$possibleI;\n-                            if (possibleInterface.getFields()[fieldName] == null) {\n+                            if (!possibleInterface.getFields()[fieldName]) {\n                                 continue;\n-                            }\n-                            // This interface type defines this field.\n+                            } // This interface type defines this field.\n+\n                             suggestedTypes.add(possibleInterface);\n                             usageCount[possibleInterface.name] = ((_usageCount$possibleI = usageCount[possibleInterface.name]) !== null && _usageCount$possibleI !== void 0 ? _usageCount$possibleI : 0) + 1;\n                         }\n                     }\n                     return [...suggestedTypes].sort((typeA, typeB) => {\n                         // Suggest both interface and object types based on how common they are.\n                         const usageCountDiff = usageCount[typeB.name] - usageCount[typeA.name];\n                         if (usageCountDiff !== 0) {\n                             return usageCountDiff;\n-                        }\n-                        // Suggest super types first followed by subtypes\n+                        } // Suggest super types first followed by subtypes\n+\n                         if ((0, _definition.isInterfaceType)(typeA) && schema.isSubType(typeA, typeB)) {\n                             return -1;\n                         }\n                         if ((0, _definition.isInterfaceType)(typeB) && schema.isSubType(typeB, typeA)) {\n                             return 1;\n                         }\n                         return (0, _naturalCompare.naturalCompare)(typeA.name, typeB.name);\n                     }).map(x => x.name);\n                 }\n                 /**\n                  * For the field name provided, determine if there are any similar field names\n                  * that may be the result of a typo.\n                  */\n+\n                 function getSuggestedFieldNames(type, fieldName) {\n                     if ((0, _definition.isObjectType)(type) || (0, _definition.isInterfaceType)(type)) {\n                         const possibleFieldNames = Object.keys(type.getFields());\n                         return (0, _suggestionList.suggestionList)(fieldName, possibleFieldNames);\n-                    }\n-                    // Otherwise, must be a Union type, which does not define fields.\n+                    } // Otherwise, must be a Union type, which does not define fields.\n+\n                     return [];\n                 }\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs\":\n             /*!****************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs ***!\n               \\****************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.FragmentsOnCompositeTypesRule = FragmentsOnCompositeTypesRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -41926,14 +58931,15 @@\n         \"../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs\":\n             /*!*********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs ***!\n               \\*********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.KnownArgumentNamesOnDirectivesRule = KnownArgumentNamesOnDirectivesRule;\n                 exports.KnownArgumentNamesRule = KnownArgumentNamesRule;\n@@ -41969,36 +58975,39 @@\n                             }\n                         }\n                     };\n                 }\n                 /**\n                  * @internal\n                  */\n+\n                 function KnownArgumentNamesOnDirectivesRule(context) {\n-                    const directiveArgs = new Map();\n+                    const directiveArgs = Object.create(null);\n                     const schema = context.getSchema();\n                     const definedDirectives = schema ? schema.getDirectives() : _directives.specifiedDirectives;\n                     for (const directive of definedDirectives) {\n-                        directiveArgs.set(directive.name, directive.args.map(arg => arg.name));\n+                        directiveArgs[directive.name] = directive.args.map(arg => arg.name);\n                     }\n                     const astDefinitions = context.getDocument().definitions;\n                     for (const def of astDefinitions) {\n                         if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n                             var _def$arguments;\n+\n                             // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+\n                             /* c8 ignore next */\n                             const argsNodes = (_def$arguments = def.arguments) !== null && _def$arguments !== void 0 ? _def$arguments : [];\n-                            directiveArgs.set(def.name.value, argsNodes.map(arg => arg.name.value));\n+                            directiveArgs[def.name.value] = argsNodes.map(arg => arg.name.value);\n                         }\n                     }\n                     return {\n                         Directive(directiveNode) {\n                             const directiveName = directiveNode.name.value;\n-                            const knownArgs = directiveArgs.get(directiveName);\n-                            if (directiveNode.arguments != null && knownArgs != null) {\n+                            const knownArgs = directiveArgs[directiveName];\n+                            if (directiveNode.arguments && knownArgs) {\n                                 for (const argNode of directiveNode.arguments) {\n                                     const argName = argNode.name.value;\n                                     if (!knownArgs.includes(argName)) {\n                                         const suggestions = (0, _suggestionList.suggestionList)(argName, knownArgs);\n                                         context.reportError(new _GraphQLError.GraphQLError(`Unknown argument \"${argName}\" on directive \"@${directiveName}\".` + (0, _didYouMean.didYouMean)(suggestions), {\n                                             nodes: argNode\n                                         }));\n@@ -42017,14 +59026,15 @@\n         \"../../../node_modules/graphql/validation/rules/KnownDirectivesRule.mjs\":\n             /*!******************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/KnownDirectivesRule.mjs ***!\n               \\******************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.KnownDirectivesRule = KnownDirectivesRule;\n                 var _inspect = __webpack_require__( /*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n@@ -42039,49 +59049,49 @@\n                  *\n                  * A GraphQL document is only valid if all `@directives` are known by the\n                  * schema and legally positioned.\n                  *\n                  * See https://spec.graphql.org/draft/#sec-Directives-Are-Defined\n                  */\n                 function KnownDirectivesRule(context) {\n-                    const locationsMap = new Map();\n+                    const locationsMap = Object.create(null);\n                     const schema = context.getSchema();\n                     const definedDirectives = schema ? schema.getDirectives() : _directives.specifiedDirectives;\n                     for (const directive of definedDirectives) {\n-                        locationsMap.set(directive.name, directive.locations);\n+                        locationsMap[directive.name] = directive.locations;\n                     }\n                     const astDefinitions = context.getDocument().definitions;\n                     for (const def of astDefinitions) {\n                         if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n-                            locationsMap.set(def.name.value, def.locations.map(name => name.value));\n+                            locationsMap[def.name.value] = def.locations.map(name => name.value);\n                         }\n                     }\n                     return {\n                         Directive(node, _key, _parent, _path, ancestors) {\n                             const name = node.name.value;\n-                            const locations = locationsMap.get(name);\n-                            if (locations == null) {\n+                            const locations = locationsMap[name];\n+                            if (!locations) {\n                                 context.reportError(new _GraphQLError.GraphQLError(`Unknown directive \"@${name}\".`, {\n                                     nodes: node\n                                 }));\n                                 return;\n                             }\n                             const candidateLocation = getDirectiveLocationForASTPath(ancestors);\n-                            if (candidateLocation != null && !locations.includes(candidateLocation)) {\n+                            if (candidateLocation && !locations.includes(candidateLocation)) {\n                                 context.reportError(new _GraphQLError.GraphQLError(`Directive \"@${name}\" may not be used on ${candidateLocation}.`, {\n                                     nodes: node\n                                 }));\n                             }\n                         }\n                     };\n                 }\n \n                 function getDirectiveLocationForASTPath(ancestors) {\n-                    const appliedTo = ancestors.at(-1);\n-                    appliedTo != null && 'kind' in appliedTo || (0, _invariant.invariant)(false);\n+                    const appliedTo = ancestors[ancestors.length - 1];\n+                    'kind' in appliedTo || (0, _invariant.invariant)(false);\n                     switch (appliedTo.kind) {\n                         case _kinds.Kind.OPERATION_DEFINITION:\n                             return getDirectiveLocationForOperation(appliedTo.operation);\n                         case _kinds.Kind.FIELD:\n                             return _directiveLocation.DirectiveLocation.FIELD;\n                         case _kinds.Kind.FRAGMENT_SPREAD:\n                             return _directiveLocation.DirectiveLocation.FRAGMENT_SPREAD;\n@@ -42113,20 +59123,22 @@\n                             return _directiveLocation.DirectiveLocation.ENUM;\n                         case _kinds.Kind.ENUM_VALUE_DEFINITION:\n                             return _directiveLocation.DirectiveLocation.ENUM_VALUE;\n                         case _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION:\n                         case _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION:\n                             return _directiveLocation.DirectiveLocation.INPUT_OBJECT;\n                         case _kinds.Kind.INPUT_VALUE_DEFINITION: {\n-                            const parentNode = ancestors.at(-3);\n-                            parentNode != null && 'kind' in parentNode || (0, _invariant.invariant)(false);\n+                            const parentNode = ancestors[ancestors.length - 3];\n+                            'kind' in parentNode || (0, _invariant.invariant)(false);\n                             return parentNode.kind === _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION ? _directiveLocation.DirectiveLocation.INPUT_FIELD_DEFINITION : _directiveLocation.DirectiveLocation.ARGUMENT_DEFINITION;\n                         }\n                         // Not reachable, all possible types have been considered.\n-                        /* c8 ignore next 2 */\n+\n+                        /* c8 ignore next */\n+\n                         default:\n                             false || (0, _invariant.invariant)(false, 'Unexpected kind: ' + (0, _inspect.inspect)(appliedTo.kind));\n                     }\n                 }\n \n                 function getDirectiveLocationForOperation(operation) {\n                     switch (operation) {\n@@ -42146,14 +59158,15 @@\n         \"../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs\":\n             /*!*********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs ***!\n               \\*********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.KnownFragmentNamesRule = KnownFragmentNamesRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -42186,14 +59199,15 @@\n         \"../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs\":\n             /*!*****************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs ***!\n               \\*****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.KnownTypeNamesRule = KnownTypeNamesRule;\n                 var _didYouMean = __webpack_require__( /*! ../../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n@@ -42207,39 +59221,42 @@\n                  *\n                  * A GraphQL document is only valid if referenced types (specifically\n                  * variable definitions and fragment conditions) are defined by the type schema.\n                  *\n                  * See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence\n                  */\n                 function KnownTypeNamesRule(context) {\n-                    var _context$getSchema$ge, _context$getSchema;\n-                    const {\n-                        definitions\n-                    } = context.getDocument();\n-                    const existingTypesMap = (_context$getSchema$ge = (_context$getSchema = context.getSchema()) === null || _context$getSchema === void 0 ? void 0 : _context$getSchema.getTypeMap()) !== null && _context$getSchema$ge !== void 0 ? _context$getSchema$ge : {};\n-                    const typeNames = new Set([...Object.keys(existingTypesMap), ...definitions.filter(_predicates.isTypeDefinitionNode).map(def => def.name.value)]);\n+                    const schema = context.getSchema();\n+                    const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);\n+                    const definedTypes = Object.create(null);\n+                    for (const def of context.getDocument().definitions) {\n+                        if ((0, _predicates.isTypeDefinitionNode)(def)) {\n+                            definedTypes[def.name.value] = true;\n+                        }\n+                    }\n+                    const typeNames = [...Object.keys(existingTypesMap), ...Object.keys(definedTypes)];\n                     return {\n                         NamedType(node, _1, parent, _2, ancestors) {\n                             const typeName = node.name.value;\n-                            if (!typeNames.has(typeName)) {\n+                            if (!existingTypesMap[typeName] && !definedTypes[typeName]) {\n                                 var _ancestors$;\n                                 const definitionNode = (_ancestors$ = ancestors[2]) !== null && _ancestors$ !== void 0 ? _ancestors$ : parent;\n                                 const isSDL = definitionNode != null && isSDLNode(definitionNode);\n-                                if (isSDL && standardTypeNames.has(typeName)) {\n+                                if (isSDL && standardTypeNames.includes(typeName)) {\n                                     return;\n                                 }\n-                                const suggestedTypes = (0, _suggestionList.suggestionList)(typeName, isSDL ? [...standardTypeNames, ...typeNames] : [...typeNames]);\n+                                const suggestedTypes = (0, _suggestionList.suggestionList)(typeName, isSDL ? standardTypeNames.concat(typeNames) : typeNames);\n                                 context.reportError(new _GraphQLError.GraphQLError(`Unknown type \"${typeName}\".` + (0, _didYouMean.didYouMean)(suggestedTypes), {\n                                     nodes: node\n                                 }));\n                             }\n                         }\n                     };\n                 }\n-                const standardTypeNames = new Set([..._scalars.specifiedScalarTypes, ..._introspection.introspectionTypes].map(type => type.name));\n+                const standardTypeNames = [..._scalars.specifiedScalarTypes, ..._introspection.introspectionTypes].map(type => type.name);\n \n                 function isSDLNode(value) {\n                     return 'kind' in value && ((0, _predicates.isTypeSystemDefinitionNode)(value) || (0, _predicates.isTypeSystemExtensionNode)(value));\n                 }\n \n                 /***/\n             }),\n@@ -42248,14 +59265,15 @@\n         \"../../../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs\":\n             /*!*************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs ***!\n               \\*************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.LoneAnonymousOperationRule = LoneAnonymousOperationRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -42291,14 +59309,15 @@\n         \"../../../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs\":\n             /*!***********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs ***!\n               \\***********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.LoneSchemaDefinitionRule = LoneSchemaDefinitionRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -42337,14 +59356,15 @@\n         \"../../../node_modules/graphql/validation/rules/MaxIntrospectionDepthRule.mjs\":\n             /*!************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/MaxIntrospectionDepthRule.mjs ***!\n               \\************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.MaxIntrospectionDepthRule = MaxIntrospectionDepthRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -42361,40 +59381,39 @@\n                             const fragmentName = node.name.value;\n                             if (visitedFragments[fragmentName] === true) {\n                                 // Fragment cycles are handled by `NoFragmentCyclesRule`.\n                                 return false;\n                             }\n                             const fragment = context.getFragment(fragmentName);\n                             if (!fragment) {\n-                                // Missing fragments checks are handled by the `KnownFragmentNamesRule`.\n+                                // Missing fragments checks are handled by `KnownFragmentNamesRule`.\n                                 return false;\n-                            }\n-                            // Rather than following an immutable programming pattern which has\n+                            } // Rather than following an immutable programming pattern which has\n                             // significant memory and garbage collection overhead, we've opted to\n                             // take a mutable approach for efficiency's sake. Importantly visiting a\n                             // fragment twice is fine, so long as you don't do one visit inside the\n                             // other.\n+\n                             try {\n                                 visitedFragments[fragmentName] = true;\n                                 return checkDepth(fragment, visitedFragments, depth);\n                             } finally {\n                                 visitedFragments[fragmentName] = undefined;\n                             }\n                         }\n                         if (node.kind === _kinds.Kind.FIELD && (\n                                 // check all introspection lists\n-                                // TODO: instead of relying on field names, check whether the type is a list\n                                 node.name.value === 'fields' || node.name.value === 'interfaces' || node.name.value === 'possibleTypes' || node.name.value === 'inputFields')) {\n                             // eslint-disable-next-line no-param-reassign\n                             depth++;\n                             if (depth >= MAX_LISTS_DEPTH) {\n                                 return true;\n                             }\n-                        }\n-                        // handles fields and inline fragments\n+                        } // handles fields and inline fragments\n+\n                         if ('selectionSet' in node && node.selectionSet) {\n                             for (const child of node.selectionSet.selections) {\n                                 if (checkDepth(child, visitedFragments, depth)) {\n                                     return true;\n                                 }\n                             }\n                         }\n@@ -42421,14 +59440,15 @@\n         \"../../../node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs\":\n             /*!*******************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs ***!\n               \\*******************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.NoFragmentCyclesRule = NoFragmentCyclesRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -42439,35 +59459,35 @@\n                  * Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.\n                  *\n                  * See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles\n                  */\n                 function NoFragmentCyclesRule(context) {\n                     // Tracks already visited fragments to maintain O(N) and to ensure that cycles\n                     // are not redundantly reported.\n-                    const visitedFrags = new Set();\n-                    // Array of AST nodes used to produce meaningful errors\n-                    const spreadPath = [];\n-                    // Position in the spread path\n+                    const visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors\n+\n+                    const spreadPath = []; // Position in the spread path\n+\n                     const spreadPathIndexByName = Object.create(null);\n                     return {\n                         OperationDefinition: () => false,\n                         FragmentDefinition(node) {\n                             detectCycleRecursive(node);\n                             return false;\n                         }\n-                    };\n-                    // This does a straight-forward DFS to find cycles.\n+                    }; // This does a straight-forward DFS to find cycles.\n                     // It does not terminate when a cycle was found but continues to explore\n                     // the graph to find all possible cycles.\n+\n                     function detectCycleRecursive(fragment) {\n-                        if (visitedFrags.has(fragment.name.value)) {\n+                        if (visitedFrags[fragment.name.value]) {\n                             return;\n                         }\n                         const fragmentName = fragment.name.value;\n-                        visitedFrags.add(fragmentName);\n+                        visitedFrags[fragmentName] = true;\n                         const spreadNodes = context.getFragmentSpreads(fragment.selectionSet);\n                         if (spreadNodes.length === 0) {\n                             return;\n                         }\n                         spreadPathIndexByName[fragmentName] = spreadPath.length;\n                         for (const spreadNode of spreadNodes) {\n                             const spreadName = spreadNode.name.value;\n@@ -42498,14 +59518,15 @@\n         \"../../../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs\":\n             /*!***********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs ***!\n               \\***********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.NoUndefinedVariablesRule = NoUndefinedVariablesRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -42514,30 +59535,37 @@\n                  *\n                  * A GraphQL operation is only valid if all variables encountered, both directly\n                  * and via fragment spreads, are defined by that operation.\n                  *\n                  * See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined\n                  */\n                 function NoUndefinedVariablesRule(context) {\n+                    let variableNameDefined = Object.create(null);\n                     return {\n-                        OperationDefinition(operation) {\n-                            var _operation$variableDe;\n-                            const variableNameDefined = new Set((_operation$variableDe = operation.variableDefinitions) === null || _operation$variableDe === void 0 ? void 0 : _operation$variableDe.map(node => node.variable.name.value));\n-                            const usages = context.getRecursiveVariableUsages(operation);\n-                            for (const {\n-                                    node\n-                                }\n-                                of usages) {\n-                                const varName = node.name.value;\n-                                if (!variableNameDefined.has(varName)) {\n-                                    context.reportError(new _GraphQLError.GraphQLError(operation.name ? `Variable \"$${varName}\" is not defined by operation \"${operation.name.value}\".` : `Variable \"$${varName}\" is not defined.`, {\n-                                        nodes: [node, operation]\n-                                    }));\n+                        OperationDefinition: {\n+                            enter() {\n+                                variableNameDefined = Object.create(null);\n+                            },\n+                            leave(operation) {\n+                                const usages = context.getRecursiveVariableUsages(operation);\n+                                for (const {\n+                                        node\n+                                    }\n+                                    of usages) {\n+                                    const varName = node.name.value;\n+                                    if (variableNameDefined[varName] !== true) {\n+                                        context.reportError(new _GraphQLError.GraphQLError(operation.name ? `Variable \"$${varName}\" is not defined by operation \"${operation.name.value}\".` : `Variable \"$${varName}\" is not defined.`, {\n+                                            nodes: [node, operation]\n+                                        }));\n+                                    }\n                                 }\n                             }\n+                        },\n+                        VariableDefinition(node) {\n+                            variableNameDefined[node.variable.name.value] = true;\n                         }\n                     };\n                 }\n \n                 /***/\n             }),\n \n@@ -42545,14 +59573,15 @@\n         \"../../../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs\":\n             /*!********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs ***!\n               \\********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.NoUnusedFragmentsRule = NoUnusedFragmentsRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -42561,32 +59590,36 @@\n                  *\n                  * A GraphQL document is only valid if all fragment definitions are spread\n                  * within operations, or spread within other fragments spread within operations.\n                  *\n                  * See https://spec.graphql.org/draft/#sec-Fragments-Must-Be-Used\n                  */\n                 function NoUnusedFragmentsRule(context) {\n-                    const fragmentNameUsed = new Set();\n+                    const operationDefs = [];\n                     const fragmentDefs = [];\n                     return {\n-                        OperationDefinition(operation) {\n-                            for (const fragment of context.getRecursivelyReferencedFragments(operation)) {\n-                                fragmentNameUsed.add(fragment.name.value);\n-                            }\n+                        OperationDefinition(node) {\n+                            operationDefs.push(node);\n                             return false;\n                         },\n                         FragmentDefinition(node) {\n                             fragmentDefs.push(node);\n                             return false;\n                         },\n                         Document: {\n                             leave() {\n+                                const fragmentNameUsed = Object.create(null);\n+                                for (const operation of operationDefs) {\n+                                    for (const fragment of context.getRecursivelyReferencedFragments(operation)) {\n+                                        fragmentNameUsed[fragment.name.value] = true;\n+                                    }\n+                                }\n                                 for (const fragmentDef of fragmentDefs) {\n                                     const fragName = fragmentDef.name.value;\n-                                    if (!fragmentNameUsed.has(fragName)) {\n+                                    if (fragmentNameUsed[fragName] !== true) {\n                                         context.reportError(new _GraphQLError.GraphQLError(`Fragment \"${fragName}\" is never used.`, {\n                                             nodes: fragmentDef\n                                         }));\n                                     }\n                                 }\n                             }\n                         }\n@@ -42600,14 +59633,15 @@\n         \"../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs\":\n             /*!********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs ***!\n               \\********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.NoUnusedVariablesRule = NoUnusedVariablesRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -42616,32 +59650,41 @@\n                  *\n                  * A GraphQL operation is only valid if all variables defined by an operation\n                  * are used, either directly or within a spread fragment.\n                  *\n                  * See https://spec.graphql.org/draft/#sec-All-Variables-Used\n                  */\n                 function NoUnusedVariablesRule(context) {\n+                    let variableDefs = [];\n                     return {\n-                        OperationDefinition(operation) {\n-                            var _operation$variableDe;\n-                            const usages = context.getRecursiveVariableUsages(operation);\n-                            const variableNameUsed = new Set(usages.map(({\n-                                node\n-                            }) => node.name.value));\n-                            // FIXME: https://github.com/graphql/graphql-js/issues/2203\n-                            /* c8 ignore next */\n-                            const variableDefinitions = (_operation$variableDe = operation.variableDefinitions) !== null && _operation$variableDe !== void 0 ? _operation$variableDe : [];\n-                            for (const variableDef of variableDefinitions) {\n-                                const variableName = variableDef.variable.name.value;\n-                                if (!variableNameUsed.has(variableName)) {\n-                                    context.reportError(new _GraphQLError.GraphQLError(operation.name ? `Variable \"$${variableName}\" is never used in operation \"${operation.name.value}\".` : `Variable \"$${variableName}\" is never used.`, {\n-                                        nodes: variableDef\n-                                    }));\n+                        OperationDefinition: {\n+                            enter() {\n+                                variableDefs = [];\n+                            },\n+                            leave(operation) {\n+                                const variableNameUsed = Object.create(null);\n+                                const usages = context.getRecursiveVariableUsages(operation);\n+                                for (const {\n+                                        node\n+                                    }\n+                                    of usages) {\n+                                    variableNameUsed[node.name.value] = true;\n+                                }\n+                                for (const variableDef of variableDefs) {\n+                                    const variableName = variableDef.variable.name.value;\n+                                    if (variableNameUsed[variableName] !== true) {\n+                                        context.reportError(new _GraphQLError.GraphQLError(operation.name ? `Variable \"$${variableName}\" is never used in operation \"${operation.name.value}\".` : `Variable \"$${variableName}\" is never used.`, {\n+                                            nodes: variableDef\n+                                        }));\n+                                    }\n                                 }\n                             }\n+                        },\n+                        VariableDefinition(def) {\n+                            variableDefs.push(def);\n                         }\n                     };\n                 }\n \n                 /***/\n             }),\n \n@@ -42649,30 +59692,29 @@\n         \"../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs\":\n             /*!*******************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs ***!\n               \\*******************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.OverlappingFieldsCanBeMergedRule = OverlappingFieldsCanBeMergedRule;\n                 var _inspect = __webpack_require__( /*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 var _kinds = __webpack_require__( /*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 var _printer = __webpack_require__( /*! ../../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n                 var _definition = __webpack_require__( /*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n                 var _sortValueNode = __webpack_require__( /*! ../../utilities/sortValueNode.mjs */ \"../../../node_modules/graphql/utilities/sortValueNode.mjs\");\n                 var _typeFromAST = __webpack_require__( /*! ../../utilities/typeFromAST.mjs */ \"../../../node_modules/graphql/utilities/typeFromAST.mjs\");\n-                /* eslint-disable max-params */\n-                // This file contains a lot of such errors but we plan to refactor it anyway\n-                // so just disable it for entire file.\n+\n                 function reasonMessage(reason) {\n                     if (Array.isArray(reason)) {\n                         return reason.map(([responseName, subReason]) => `subfields \"${responseName}\" conflict because ` + reasonMessage(subReason)).join(' and ');\n                     }\n                     return reason;\n                 }\n                 /**\n@@ -42680,22 +59722,23 @@\n                  *\n                  * A selection set is only valid if all fields (including spreading any\n                  * fragments) either correspond to distinct response names or can be merged\n                  * without ambiguity.\n                  *\n                  * See https://spec.graphql.org/draft/#sec-Field-Selection-Merging\n                  */\n+\n                 function OverlappingFieldsCanBeMergedRule(context) {\n                     // A memoization for when two fragments are compared \"between\" each other for\n                     // conflicts. Two fragments may be compared many times, so memoizing this can\n                     // dramatically improve the performance of this validator.\n-                    const comparedFragmentPairs = new PairSet();\n-                    // A cache for the \"field map\" and list of fragment names found in any given\n+                    const comparedFragmentPairs = new PairSet(); // A cache for the \"field map\" and list of fragment names found in any given\n                     // selection set. Selection sets may be asked for this information multiple\n                     // times, so this improves the performance of this validator.\n+\n                     const cachedFieldsAndFragmentNames = new Map();\n                     return {\n                         SelectionSet(selectionSet) {\n                             const conflicts = findConflictsWithinSelectionSet(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, context.getParentType(), selectionSet);\n                             for (const [\n                                     [responseName, reason], fields1, fields2\n                                 ] of conflicts) {\n@@ -42703,14 +59746,15 @@\n                                 context.reportError(new _GraphQLError.GraphQLError(`Fields \"${responseName}\" conflict because ${reasonMsg}. Use different aliases on the fields to fetch both if this was intentional.`, {\n                                     nodes: fields1.concat(fields2)\n                                 }));\n                             }\n                         }\n                     };\n                 }\n+\n                 /**\n                  * Algorithm:\n                  *\n                  * Conflicts occur when two fields exist in a query which will produce the same\n                  * response name, but represent differing values, thus creating a conflict.\n                  * The algorithm below finds all conflicts via making a series of comparisons\n                  * between fields. In order to compare as few fields as possible, this makes\n@@ -42762,129 +59806,129 @@\n                  *\n                  */\n                 // Find all conflicts found \"within\" a selection set, including those found\n                 // via spreading in fragments. Called when visiting each SelectionSet in the\n                 // GraphQL Document.\n                 function findConflictsWithinSelectionSet(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentType, selectionSet) {\n                     const conflicts = [];\n-                    const [fieldMap, fragmentNames] = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType, selectionSet);\n-                    // (A) Find find all conflicts \"within\" the fields of this selection set.\n+                    const [fieldMap, fragmentNames] = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType, selectionSet); // (A) Find find all conflicts \"within\" the fields of this selection set.\n                     // Note: this is the *only place* `collectConflictsWithin` is called.\n+\n                     collectConflictsWithin(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, fieldMap);\n                     if (fragmentNames.length !== 0) {\n                         // (B) Then collect conflicts between these fields and those represented by\n                         // each spread fragment name found.\n                         for (let i = 0; i < fragmentNames.length; i++) {\n-                            collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, fieldMap, fragmentNames[i]);\n-                            // (C) Then compare this fragment with all other fragments found in this\n+                            collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, fieldMap, fragmentNames[i]); // (C) Then compare this fragment with all other fragments found in this\n                             // selection set to collect conflicts between fragments spread together.\n                             // This compares each item in the list of fragment names to every other\n                             // item in that same list (except for itself).\n+\n                             for (let j = i + 1; j < fragmentNames.length; j++) {\n                                 collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, fragmentNames[i], fragmentNames[j]);\n                             }\n                         }\n                     }\n                     return conflicts;\n-                }\n-                // Collect all conflicts found between a set of fields and a fragment reference\n+                } // Collect all conflicts found between a set of fields and a fragment reference\n                 // including via spreading in any nested fragments.\n+\n                 function collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fragmentName) {\n                     const fragment = context.getFragment(fragmentName);\n                     if (!fragment) {\n                         return;\n                     }\n-                    const [fieldMap2, referencedFragmentNames] = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment);\n-                    // Do not compare a fragment's fieldMap to itself.\n+                    const [fieldMap2, referencedFragmentNames] = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment); // Do not compare a fragment's fieldMap to itself.\n+\n                     if (fieldMap === fieldMap2) {\n                         return;\n-                    }\n-                    // (D) First collect any conflicts between the provided collection of fields\n+                    } // (D) First collect any conflicts between the provided collection of fields\n                     // and the collection of fields represented by the given fragment.\n-                    collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fieldMap2);\n-                    // (E) Then collect any conflicts between the provided collection of fields\n+\n+                    collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap, fieldMap2); // (E) Then collect any conflicts between the provided collection of fields\n                     // and any fragment names found in the given fragment.\n+\n                     for (const referencedFragmentName of referencedFragmentNames) {\n                         // Memoize so two fragments are not compared for conflicts more than once.\n                         if (comparedFragmentPairs.has(referencedFragmentName, fragmentName, areMutuallyExclusive)) {\n                             continue;\n                         }\n                         comparedFragmentPairs.add(referencedFragmentName, fragmentName, areMutuallyExclusive);\n                         collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap, referencedFragmentName);\n                     }\n-                }\n-                // Collect all conflicts found between two fragments, including via spreading in\n+                } // Collect all conflicts found between two fragments, including via spreading in\n                 // any nested fragments.\n+\n                 function collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentName1, fragmentName2) {\n                     // No need to compare a fragment to itself.\n                     if (fragmentName1 === fragmentName2) {\n                         return;\n-                    }\n-                    // Memoize so two fragments are not compared for conflicts more than once.\n+                    } // Memoize so two fragments are not compared for conflicts more than once.\n+\n                     if (comparedFragmentPairs.has(fragmentName1, fragmentName2, areMutuallyExclusive)) {\n                         return;\n                     }\n                     comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive);\n                     const fragment1 = context.getFragment(fragmentName1);\n                     const fragment2 = context.getFragment(fragmentName2);\n                     if (!fragment1 || !fragment2) {\n                         return;\n                     }\n                     const [fieldMap1, referencedFragmentNames1] = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment1);\n-                    const [fieldMap2, referencedFragmentNames2] = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment2);\n-                    // (F) First, collect all conflicts between these two collections of fields\n+                    const [fieldMap2, referencedFragmentNames2] = getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment2); // (F) First, collect all conflicts between these two collections of fields\n                     // (not including any nested fragments).\n-                    collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fieldMap2);\n-                    // (G) Then collect conflicts between the first fragment and any nested\n+\n+                    collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fieldMap2); // (G) Then collect conflicts between the first fragment and any nested\n                     // fragments spread in the second fragment.\n+\n                     for (const referencedFragmentName2 of referencedFragmentNames2) {\n                         collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentName1, referencedFragmentName2);\n-                    }\n-                    // (G) Then collect conflicts between the second fragment and any nested\n+                    } // (G) Then collect conflicts between the second fragment and any nested\n                     // fragments spread in the first fragment.\n+\n                     for (const referencedFragmentName1 of referencedFragmentNames1) {\n                         collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, referencedFragmentName1, fragmentName2);\n                     }\n-                }\n-                // Find all conflicts found between two selection sets, including those found\n+                } // Find all conflicts found between two selection sets, including those found\n                 // via spreading in fragments. Called when determining if conflicts exist\n                 // between the sub-fields of two overlapping fields.\n+\n                 function findConflictsBetweenSubSelectionSets(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, parentType1, selectionSet1, parentType2, selectionSet2) {\n                     const conflicts = [];\n                     const [fieldMap1, fragmentNames1] = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType1, selectionSet1);\n-                    const [fieldMap2, fragmentNames2] = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType2, selectionSet2);\n-                    // (H) First, collect all conflicts between these two collections of field.\n-                    collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fieldMap2);\n-                    // (I) Then collect conflicts between the first collection of fields and\n+                    const [fieldMap2, fragmentNames2] = getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType2, selectionSet2); // (H) First, collect all conflicts between these two collections of field.\n+\n+                    collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fieldMap2); // (I) Then collect conflicts between the first collection of fields and\n                     // those referenced by each fragment name associated with the second.\n+\n                     for (const fragmentName2 of fragmentNames2) {\n                         collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap1, fragmentName2);\n-                    }\n-                    // (I) Then collect conflicts between the second collection of fields and\n+                    } // (I) Then collect conflicts between the second collection of fields and\n                     // those referenced by each fragment name associated with the first.\n+\n                     for (const fragmentName1 of fragmentNames1) {\n                         collectConflictsBetweenFieldsAndFragment(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fieldMap2, fragmentName1);\n-                    }\n-                    // (J) Also collect conflicts between any fragment names by the first and\n+                    } // (J) Also collect conflicts between any fragment names by the first and\n                     // fragment names by the second. This compares each item in the first set of\n                     // names to each item in the second set of names.\n+\n                     for (const fragmentName1 of fragmentNames1) {\n                         for (const fragmentName2 of fragmentNames2) {\n                             collectConflictsBetweenFragments(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, fragmentName1, fragmentName2);\n                         }\n                     }\n                     return conflicts;\n-                }\n-                // Collect all Conflicts \"within\" one collection of fields.\n+                } // Collect all Conflicts \"within\" one collection of fields.\n+\n                 function collectConflictsWithin(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, fieldMap) {\n                     // A field map is a keyed collection, where each key represents a response\n                     // name and the value at that key is a list of all fields which provide that\n                     // response name. For every response name, if there are multiple fields, they\n                     // must be compared to find a potential conflict.\n-                    for (const [responseName, fields] of fieldMap.entries()) {\n+                    for (const [responseName, fields] of Object.entries(fieldMap)) {\n                         // This compares every field in the list to every other field in this list\n                         // (except to itself). If the list only has one item, nothing needs to\n                         // be compared.\n                         if (fields.length > 1) {\n                             for (let i = 0; i < fields.length; i++) {\n                                 for (let j = i + 1; j < fields.length; j++) {\n                                     const conflict = findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, false,\n@@ -42893,98 +59937,87 @@\n                                     if (conflict) {\n                                         conflicts.push(conflict);\n                                     }\n                                 }\n                             }\n                         }\n                     }\n-                }\n-                // Collect all Conflicts between two collections of fields. This is similar to,\n+                } // Collect all Conflicts between two collections of fields. This is similar to,\n                 // but different from the `collectConflictsWithin` function above. This check\n                 // assumes that `collectConflictsWithin` has already been called on each\n                 // provided collection of fields. This is true because this validator traverses\n                 // each individual selection set.\n+\n                 function collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, fieldMap1, fieldMap2) {\n                     // A field map is a keyed collection, where each key represents a response\n                     // name and the value at that key is a list of all fields which provide that\n                     // response name. For any response name which appears in both provided field\n                     // maps, each field from the first field map must be compared to every field\n                     // in the second field map to find potential conflicts.\n-                    for (const [responseName, fields1] of fieldMap1.entries()) {\n-                        const fields2 = fieldMap2.get(responseName);\n-                        if (fields2 != null) {\n+                    for (const [responseName, fields1] of Object.entries(fieldMap1)) {\n+                        const fields2 = fieldMap2[responseName];\n+                        if (fields2) {\n                             for (const field1 of fields1) {\n                                 for (const field2 of fields2) {\n                                     const conflict = findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, responseName, field1, field2);\n                                     if (conflict) {\n                                         conflicts.push(conflict);\n                                     }\n                                 }\n                             }\n                         }\n                     }\n-                }\n-                // Determines if there is a conflict between two particular fields, including\n+                } // Determines if there is a conflict between two particular fields, including\n                 // comparing their sub-fields.\n+\n                 function findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, parentFieldsAreMutuallyExclusive, responseName, field1, field2) {\n-                    var _node1$directives, _node2$directives;\n                     const [parentType1, node1, def1] = field1;\n-                    const [parentType2, node2, def2] = field2;\n-                    // If it is known that two fields could not possibly apply at the same\n+                    const [parentType2, node2, def2] = field2; // If it is known that two fields could not possibly apply at the same\n                     // time, due to the parent types, then it is safe to permit them to diverge\n                     // in aliased field or arguments used as they will not present any ambiguity\n                     // by differing.\n                     // It is known that two parent types could never overlap if they are\n                     // different Object types. Interface or Union types might overlap - if not\n                     // in the current state of the schema, then perhaps in some future version,\n                     // thus may not safely diverge.\n+\n                     const areMutuallyExclusive = parentFieldsAreMutuallyExclusive || parentType1 !== parentType2 && (0, _definition.isObjectType)(parentType1) && (0, _definition.isObjectType)(parentType2);\n                     if (!areMutuallyExclusive) {\n                         // Two aliases must refer to the same field.\n                         const name1 = node1.name.value;\n                         const name2 = node2.name.value;\n                         if (name1 !== name2) {\n                             return [\n                                 [responseName, `\"${name1}\" and \"${name2}\" are different fields`],\n                                 [node1],\n                                 [node2]\n                             ];\n-                        }\n-                        // Two field calls must have the same arguments.\n+                        } // Two field calls must have the same arguments.\n+\n                         if (!sameArguments(node1, node2)) {\n                             return [\n                                 [responseName, 'they have differing arguments'],\n                                 [node1],\n                                 [node2]\n                             ];\n                         }\n-                    }\n-                    // FIXME https://github.com/graphql/graphql-js/issues/2203\n-                    const directives1 = /* c8 ignore next */ (_node1$directives = node1.directives) !== null && _node1$directives !== void 0 ? _node1$directives : [];\n-                    const directives2 = /* c8 ignore next */ (_node2$directives = node2.directives) !== null && _node2$directives !== void 0 ? _node2$directives : [];\n-                    if (!sameStreams(directives1, directives2)) {\n-                        return [\n-                            [responseName, 'they have differing stream directives'],\n-                            [node1],\n-                            [node2]\n-                        ];\n-                    }\n-                    // The return type for each field.\n+                    } // The return type for each field.\n+\n                     const type1 = def1 === null || def1 === void 0 ? void 0 : def1.type;\n                     const type2 = def2 === null || def2 === void 0 ? void 0 : def2.type;\n                     if (type1 && type2 && doTypesConflict(type1, type2)) {\n                         return [\n                             [responseName, `they return conflicting types \"${(0, _inspect.inspect)(type1)}\" and \"${(0, _inspect.inspect)(type2)}\"`],\n                             [node1],\n                             [node2]\n                         ];\n-                    }\n-                    // Collect and compare sub-fields. Use the same \"visited fragment names\" list\n+                    } // Collect and compare sub-fields. Use the same \"visited fragment names\" list\n                     // for both collections so fields in a fragment reference are never\n                     // compared to themselves.\n+\n                     const selectionSet1 = node1.selectionSet;\n                     const selectionSet2 = node2.selectionSet;\n                     if (selectionSet1 && selectionSet2) {\n                         const conflicts = findConflictsBetweenSubSelectionSets(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, areMutuallyExclusive, (0, _definition.getNamedType)(type1), selectionSet1, (0, _definition.getNamedType)(type2), selectionSet2);\n                         return subfieldConflicts(conflicts, responseName, node1, node2);\n                     }\n                 }\n@@ -42994,16 +60027,20 @@\n                     const args2 = node2.arguments;\n                     if (args1 === undefined || args1.length === 0) {\n                         return args2 === undefined || args2.length === 0;\n                     }\n                     if (args2 === undefined || args2.length === 0) {\n                         return false;\n                     }\n+                    /* c8 ignore next */\n+\n                     if (args1.length !== args2.length) {\n+                        /* c8 ignore next */\n                         return false;\n+                        /* c8 ignore next */\n                     }\n                     const values2 = new Map(args2.map(({\n                         name,\n                         value\n                     }) => [name.value, value]));\n                     return args1.every(arg1 => {\n                         const value1 = arg1.value;\n@@ -43013,36 +60050,18 @@\n                         }\n                         return stringifyValue(value1) === stringifyValue(value2);\n                     });\n                 }\n \n                 function stringifyValue(value) {\n                     return (0, _printer.print)((0, _sortValueNode.sortValueNode)(value));\n-                }\n-\n-                function getStreamDirective(directives) {\n-                    return directives.find(directive => directive.name.value === 'stream');\n-                }\n-\n-                function sameStreams(directives1, directives2) {\n-                    const stream1 = getStreamDirective(directives1);\n-                    const stream2 = getStreamDirective(directives2);\n-                    if (!stream1 && !stream2) {\n-                        // both fields do not have streams\n-                        return true;\n-                    } else if (stream1 && stream2) {\n-                        // check if both fields have equivalent streams\n-                        return sameArguments(stream1, stream2);\n-                    }\n-                    // fields have a mix of stream and no stream\n-                    return false;\n-                }\n-                // Two types conflict if both types could not apply to a value simultaneously.\n+                } // Two types conflict if both types could not apply to a value simultaneously.\n                 // Composite types are ignored as their individual field types will be compared\n                 // later recursively. However List and Non-Null types must match.\n+\n                 function doTypesConflict(type1, type2) {\n                     if ((0, _definition.isListType)(type1)) {\n                         return (0, _definition.isListType)(type2) ? doTypesConflict(type1.ofType, type2.ofType) : true;\n                     }\n                     if ((0, _definition.isListType)(type2)) {\n                         return true;\n                     }\n@@ -43052,32 +60071,32 @@\n                     if ((0, _definition.isNonNullType)(type2)) {\n                         return true;\n                     }\n                     if ((0, _definition.isLeafType)(type1) || (0, _definition.isLeafType)(type2)) {\n                         return type1 !== type2;\n                     }\n                     return false;\n-                }\n-                // Given a selection set, return the collection of fields (a mapping of response\n+                } // Given a selection set, return the collection of fields (a mapping of response\n                 // name to field nodes and definitions) as well as a list of fragment names\n                 // referenced via fragment spreads.\n+\n                 function getFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, parentType, selectionSet) {\n                     const cached = cachedFieldsAndFragmentNames.get(selectionSet);\n                     if (cached) {\n                         return cached;\n                     }\n-                    const nodeAndDefs = new Map();\n-                    const fragmentNames = new Set();\n+                    const nodeAndDefs = Object.create(null);\n+                    const fragmentNames = Object.create(null);\n                     _collectFieldsAndFragmentNames(context, parentType, selectionSet, nodeAndDefs, fragmentNames);\n-                    const result = [nodeAndDefs, [...fragmentNames]];\n+                    const result = [nodeAndDefs, Object.keys(fragmentNames)];\n                     cachedFieldsAndFragmentNames.set(selectionSet, result);\n                     return result;\n-                }\n-                // Given a reference to a fragment, return the represented collection of fields\n+                } // Given a reference to a fragment, return the represented collection of fields\n                 // as well as a list of nested fragment names referenced via fragment spreads.\n+\n                 function getReferencedFieldsAndFragmentNames(context, cachedFieldsAndFragmentNames, fragment) {\n                     // Short-circuit building a type from the node if possible.\n                     const cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet);\n                     if (cached) {\n                         return cached;\n                     }\n                     const fragmentType = (0, _typeFromAST.typeFromAST)(context.getSchema(), fragment.typeCondition);\n@@ -43090,62 +60109,61 @@\n                             case _kinds.Kind.FIELD: {\n                                 const fieldName = selection.name.value;\n                                 let fieldDef;\n                                 if ((0, _definition.isObjectType)(parentType) || (0, _definition.isInterfaceType)(parentType)) {\n                                     fieldDef = parentType.getFields()[fieldName];\n                                 }\n                                 const responseName = selection.alias ? selection.alias.value : fieldName;\n-                                let nodeAndDefsList = nodeAndDefs.get(responseName);\n-                                if (nodeAndDefsList == null) {\n-                                    nodeAndDefsList = [];\n-                                    nodeAndDefs.set(responseName, nodeAndDefsList);\n+                                if (!nodeAndDefs[responseName]) {\n+                                    nodeAndDefs[responseName] = [];\n                                 }\n-                                nodeAndDefsList.push([parentType, selection, fieldDef]);\n+                                nodeAndDefs[responseName].push([parentType, selection, fieldDef]);\n                                 break;\n                             }\n                             case _kinds.Kind.FRAGMENT_SPREAD:\n-                                fragmentNames.add(selection.name.value);\n+                                fragmentNames[selection.name.value] = true;\n                                 break;\n                             case _kinds.Kind.INLINE_FRAGMENT: {\n                                 const typeCondition = selection.typeCondition;\n                                 const inlineFragmentType = typeCondition ? (0, _typeFromAST.typeFromAST)(context.getSchema(), typeCondition) : parentType;\n                                 _collectFieldsAndFragmentNames(context, inlineFragmentType, selection.selectionSet, nodeAndDefs, fragmentNames);\n                                 break;\n                             }\n                         }\n                     }\n-                }\n-                // Given a series of Conflicts which occurred between two sub-fields, generate\n+                } // Given a series of Conflicts which occurred between two sub-fields, generate\n                 // a single Conflict.\n+\n                 function subfieldConflicts(conflicts, responseName, node1, node2) {\n                     if (conflicts.length > 0) {\n                         return [\n                             [responseName, conflicts.map(([reason]) => reason)],\n                             [node1, ...conflicts.map(([, fields1]) => fields1).flat()],\n                             [node2, ...conflicts.map(([, , fields2]) => fields2).flat()]\n                         ];\n                     }\n                 }\n                 /**\n                  * A way to keep track of pairs of things when the ordering of the pair does not matter.\n                  */\n+\n                 class PairSet {\n                     constructor() {\n                         this._data = new Map();\n                     }\n                     has(a, b, areMutuallyExclusive) {\n                         var _this$_data$get;\n                         const [key1, key2] = a < b ? [a, b] : [b, a];\n                         const result = (_this$_data$get = this._data.get(key1)) === null || _this$_data$get === void 0 ? void 0 : _this$_data$get.get(key2);\n                         if (result === undefined) {\n                             return false;\n-                        }\n-                        // areMutuallyExclusive being false is a superset of being true, hence if\n+                        } // areMutuallyExclusive being false is a superset of being true, hence if\n                         // we want to know if this PairSet \"has\" these two with no exclusivity,\n                         // we have to ensure it was added as such.\n+\n                         return areMutuallyExclusive ? true : areMutuallyExclusive === result;\n                     }\n                     add(a, b, areMutuallyExclusive) {\n                         const [key1, key2] = a < b ? [a, b] : [b, a];\n                         const map = this._data.get(key1);\n                         if (map === undefined) {\n                             this._data.set(key1, new Map([\n@@ -43164,14 +60182,15 @@\n         \"../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs\":\n             /*!**************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs ***!\n               \\**************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.PossibleFragmentSpreadsRule = PossibleFragmentSpreadsRule;\n                 var _inspect = __webpack_require__( /*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n@@ -43231,14 +60250,15 @@\n         \"../../../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs\":\n             /*!*************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs ***!\n               \\*************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.PossibleTypeExtensionsRule = PossibleTypeExtensionsRule;\n                 var _didYouMean = __webpack_require__( /*! ../../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n@@ -43252,49 +60272,51 @@\n                 /**\n                  * Possible type extension\n                  *\n                  * A type extension is only valid if the type is defined and has the same kind.\n                  */\n                 function PossibleTypeExtensionsRule(context) {\n                     const schema = context.getSchema();\n-                    const definedTypes = new Map();\n+                    const definedTypes = Object.create(null);\n                     for (const def of context.getDocument().definitions) {\n                         if ((0, _predicates.isTypeDefinitionNode)(def)) {\n-                            definedTypes.set(def.name.value, def);\n+                            definedTypes[def.name.value] = def;\n                         }\n                     }\n                     return {\n                         ScalarTypeExtension: checkExtension,\n                         ObjectTypeExtension: checkExtension,\n                         InterfaceTypeExtension: checkExtension,\n                         UnionTypeExtension: checkExtension,\n                         EnumTypeExtension: checkExtension,\n                         InputObjectTypeExtension: checkExtension\n                     };\n \n                     function checkExtension(node) {\n                         const typeName = node.name.value;\n-                        const defNode = definedTypes.get(typeName);\n+                        const defNode = definedTypes[typeName];\n                         const existingType = schema === null || schema === void 0 ? void 0 : schema.getType(typeName);\n                         let expectedKind;\n-                        if (defNode != null) {\n+                        if (defNode) {\n                             expectedKind = defKindToExtKind[defNode.kind];\n                         } else if (existingType) {\n                             expectedKind = typeToExtKind(existingType);\n                         }\n-                        if (expectedKind != null) {\n+                        if (expectedKind) {\n                             if (expectedKind !== node.kind) {\n                                 const kindStr = extensionKindToTypeName(node.kind);\n                                 context.reportError(new _GraphQLError.GraphQLError(`Cannot extend non-${kindStr} type \"${typeName}\".`, {\n                                     nodes: defNode ? [defNode, node] : node\n                                 }));\n                             }\n                         } else {\n-                            var _schema$getTypeMap;\n-                            const allTypeNames = [...definedTypes.keys(), ...Object.keys((_schema$getTypeMap = schema === null || schema === void 0 ? void 0 : schema.getTypeMap()) !== null && _schema$getTypeMap !== void 0 ? _schema$getTypeMap : {})];\n+                            const allTypeNames = Object.keys({\n+                                ...definedTypes,\n+                                ...(schema === null || schema === void 0 ? void 0 : schema.getTypeMap())\n+                            });\n                             const suggestedTypes = (0, _suggestionList.suggestionList)(typeName, allTypeNames);\n                             context.reportError(new _GraphQLError.GraphQLError(`Cannot extend type \"${typeName}\" because it is not defined.` + (0, _didYouMean.didYouMean)(suggestedTypes), {\n                                 nodes: node.name\n                             }));\n                         }\n                     }\n                 }\n@@ -43324,14 +60346,15 @@\n                         return _kinds.Kind.ENUM_TYPE_EXTENSION;\n                     }\n                     if ((0, _definition.isInputObjectType)(type)) {\n                         return _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION;\n                     }\n                     /* c8 ignore next 3 */\n                     // Not reachable. All possible types have been considered\n+\n                     false || (0, _invariant.invariant)(false, 'Unexpected type: ' + (0, _inspect.inspect)(type));\n                 }\n \n                 function extensionKindToTypeName(kind) {\n                     switch (kind) {\n                         case _kinds.Kind.SCALAR_TYPE_EXTENSION:\n                             return 'scalar';\n@@ -43342,15 +60365,17 @@\n                         case _kinds.Kind.UNION_TYPE_EXTENSION:\n                             return 'union';\n                         case _kinds.Kind.ENUM_TYPE_EXTENSION:\n                             return 'enum';\n                         case _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION:\n                             return 'input object';\n                             // Not reachable. All possible types have been considered\n-                            /* c8 ignore next 2 */\n+\n+                            /* c8 ignore next */\n+\n                         default:\n                             false || (0, _invariant.invariant)(false, 'Unexpected kind: ' + (0, _inspect.inspect)(kind));\n                     }\n                 }\n \n                 /***/\n             }),\n@@ -43359,22 +60384,24 @@\n         \"../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs\":\n             /*!****************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs ***!\n               \\****************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.ProvidedRequiredArgumentsOnDirectivesRule = ProvidedRequiredArgumentsOnDirectivesRule;\n                 exports.ProvidedRequiredArgumentsRule = ProvidedRequiredArgumentsRule;\n                 var _inspect = __webpack_require__( /*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n+                var _keyMap = __webpack_require__( /*! ../../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 var _kinds = __webpack_require__( /*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 var _printer = __webpack_require__( /*! ../../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n                 var _definition = __webpack_require__( /*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n                 var _directives = __webpack_require__( /*! ../../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n                 /**\n                  * Provided required arguments\n@@ -43390,15 +60417,16 @@\n                             // Validate on leave to allow for deeper errors to appear first.\n                             leave(fieldNode) {\n                                 var _fieldNode$arguments;\n                                 const fieldDef = context.getFieldDef();\n                                 if (!fieldDef) {\n                                     return false;\n                                 }\n-                                const providedArgs = new Set( // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+                                const providedArgs = new Set(\n+                                    // FIXME: https://github.com/graphql/graphql-js/issues/2203\n                                     /* c8 ignore next */\n                                     (_fieldNode$arguments = fieldNode.arguments) === null || _fieldNode$arguments === void 0 ? void 0 : _fieldNode$arguments.map(arg => arg.name.value));\n                                 for (const argDef of fieldDef.args) {\n                                     if (!providedArgs.has(argDef.name) && (0, _definition.isRequiredArgument)(argDef)) {\n                                         const argTypeStr = (0, _inspect.inspect)(argDef.type);\n                                         context.reportError(new _GraphQLError.GraphQLError(`Field \"${fieldDef.name}\" argument \"${argDef.name}\" of type \"${argTypeStr}\" is required, but it was not provided.`, {\n                                             nodes: fieldNode\n@@ -43408,45 +60436,50 @@\n                             }\n                         }\n                     };\n                 }\n                 /**\n                  * @internal\n                  */\n+\n                 function ProvidedRequiredArgumentsOnDirectivesRule(context) {\n                     var _schema$getDirectives;\n-                    const requiredArgsMap = new Map();\n+                    const requiredArgsMap = Object.create(null);\n                     const schema = context.getSchema();\n                     const definedDirectives = (_schema$getDirectives = schema === null || schema === void 0 ? void 0 : schema.getDirectives()) !== null && _schema$getDirectives !== void 0 ? _schema$getDirectives : _directives.specifiedDirectives;\n                     for (const directive of definedDirectives) {\n-                        requiredArgsMap.set(directive.name, new Map(directive.args.filter(_definition.isRequiredArgument).map(arg => [arg.name, arg])));\n+                        requiredArgsMap[directive.name] = (0, _keyMap.keyMap)(directive.args.filter(_definition.isRequiredArgument), arg => arg.name);\n                     }\n                     const astDefinitions = context.getDocument().definitions;\n                     for (const def of astDefinitions) {\n                         if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n                             var _def$arguments;\n+\n                             // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+\n                             /* c8 ignore next */\n                             const argNodes = (_def$arguments = def.arguments) !== null && _def$arguments !== void 0 ? _def$arguments : [];\n-                            requiredArgsMap.set(def.name.value, new Map(argNodes.filter(isRequiredArgumentNode).map(arg => [arg.name.value, arg])));\n+                            requiredArgsMap[def.name.value] = (0, _keyMap.keyMap)(argNodes.filter(isRequiredArgumentNode), arg => arg.name.value);\n                         }\n                     }\n                     return {\n                         Directive: {\n                             // Validate on leave to allow for deeper errors to appear first.\n                             leave(directiveNode) {\n                                 const directiveName = directiveNode.name.value;\n-                                const requiredArgs = requiredArgsMap.get(directiveName);\n-                                if (requiredArgs != null) {\n+                                const requiredArgs = requiredArgsMap[directiveName];\n+                                if (requiredArgs) {\n                                     var _directiveNode$argume;\n+\n                                     // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+\n                                     /* c8 ignore next */\n                                     const argNodes = (_directiveNode$argume = directiveNode.arguments) !== null && _directiveNode$argume !== void 0 ? _directiveNode$argume : [];\n                                     const argNodeMap = new Set(argNodes.map(arg => arg.name.value));\n-                                    for (const [argName, argDef] of requiredArgs.entries()) {\n+                                    for (const [argName, argDef] of Object.entries(requiredArgs)) {\n                                         if (!argNodeMap.has(argName)) {\n                                             const argType = (0, _definition.isType)(argDef.type) ? (0, _inspect.inspect)(argDef.type) : (0, _printer.print)(argDef.type);\n                                             context.reportError(new _GraphQLError.GraphQLError(`Directive \"@${directiveName}\" argument \"${argName}\" of type \"${argType}\" is required, but it was not provided.`, {\n                                                 nodes: directiveNode\n                                             }));\n                                         }\n                                     }\n@@ -43467,14 +60500,15 @@\n         \"../../../node_modules/graphql/validation/rules/ScalarLeafsRule.mjs\":\n             /*!**************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/ScalarLeafsRule.mjs ***!\n               \\**************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.ScalarLeafsRule = ScalarLeafsRule;\n                 var _inspect = __webpack_require__( /*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n@@ -43519,27 +60553,24 @@\n         \"../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs\":\n             /*!***************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs ***!\n               \\***************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.SingleFieldSubscriptionsRule = SingleFieldSubscriptionsRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 var _kinds = __webpack_require__( /*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 var _collectFields = __webpack_require__( /*! ../../execution/collectFields.mjs */ \"../../../node_modules/graphql/execution/collectFields.mjs\");\n-\n-                function toNodes(fieldGroup) {\n-                    return fieldGroup.map(fieldDetails => fieldDetails.node);\n-                }\n                 /**\n                  * Subscriptions must only include a non-introspection field.\n                  *\n                  * A GraphQL subscription is valid only if it contains a single root field and\n                  * that root field is not an introspection field.\n                  *\n                  * See https://spec.graphql.org/draft/#sec-Single-root-field\n@@ -43556,89 +60587,50 @@\n                                     const document = context.getDocument();\n                                     const fragments = Object.create(null);\n                                     for (const definition of document.definitions) {\n                                         if (definition.kind === _kinds.Kind.FRAGMENT_DEFINITION) {\n                                             fragments[definition.name.value] = definition;\n                                         }\n                                     }\n-                                    const {\n-                                        groupedFieldSet\n-                                    } = (0, _collectFields.collectFields)(schema, fragments, variableValues, subscriptionType, node);\n-                                    if (groupedFieldSet.size > 1) {\n-                                        const fieldGroups = [...groupedFieldSet.values()];\n-                                        const extraFieldGroups = fieldGroups.slice(1);\n-                                        const extraFieldSelections = extraFieldGroups.flatMap(fieldGroup => toNodes(fieldGroup));\n+                                    const fields = (0, _collectFields.collectFields)(schema, fragments, variableValues, subscriptionType, node.selectionSet);\n+                                    if (fields.size > 1) {\n+                                        const fieldSelectionLists = [...fields.values()];\n+                                        const extraFieldSelectionLists = fieldSelectionLists.slice(1);\n+                                        const extraFieldSelections = extraFieldSelectionLists.flat();\n                                         context.reportError(new _GraphQLError.GraphQLError(operationName != null ? `Subscription \"${operationName}\" must select only one top level field.` : 'Anonymous Subscription must select only one top level field.', {\n                                             nodes: extraFieldSelections\n                                         }));\n                                     }\n-                                    for (const fieldGroup of groupedFieldSet.values()) {\n-                                        const fieldName = toNodes(fieldGroup)[0].name.value;\n+                                    for (const fieldNodes of fields.values()) {\n+                                        const field = fieldNodes[0];\n+                                        const fieldName = field.name.value;\n                                         if (fieldName.startsWith('__')) {\n                                             context.reportError(new _GraphQLError.GraphQLError(operationName != null ? `Subscription \"${operationName}\" must not select an introspection top level field.` : 'Anonymous Subscription must not select an introspection top level field.', {\n-                                                nodes: toNodes(fieldGroup)\n+                                                nodes: fieldNodes\n                                             }));\n                                         }\n                                     }\n                                 }\n                             }\n                         }\n                     };\n                 }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../../node_modules/graphql/validation/rules/StreamDirectiveOnListFieldRule.mjs\":\n-            /*!*****************************************************************************************!*\\\n-              !*** ../../../node_modules/graphql/validation/rules/StreamDirectiveOnListFieldRule.mjs ***!\n-              \\*****************************************************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n-                exports.StreamDirectiveOnListFieldRule = StreamDirectiveOnListFieldRule;\n-                var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n-                var _definition = __webpack_require__( /*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n-                var _directives = __webpack_require__( /*! ../../type/directives.mjs */ \"../../../node_modules/graphql/type/directives.mjs\");\n-                /**\n-                 * Stream directives are used on list fields\n-                 *\n-                 * A GraphQL document is only valid if stream directives are used on list fields.\n-                 */\n-                function StreamDirectiveOnListFieldRule(context) {\n-                    return {\n-                        Directive(node) {\n-                            const fieldDef = context.getFieldDef();\n-                            const parentType = context.getParentType();\n-                            if (fieldDef && parentType && node.name.value === _directives.GraphQLStreamDirective.name && !((0, _definition.isListType)(fieldDef.type) || (0, _definition.isWrappingType)(fieldDef.type) && (0, _definition.isListType)(fieldDef.type.ofType))) {\n-                                context.reportError(new _GraphQLError.GraphQLError(`Stream directive cannot be used on non-list field \"${fieldDef.name}\" on type \"${parentType.name}\".`, {\n-                                    nodes: node\n-                                }));\n-                            }\n-                        }\n-                    };\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n         \"../../../node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.mjs\":\n             /*!********************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.mjs ***!\n               \\********************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.UniqueArgumentDefinitionNamesRule = UniqueArgumentDefinitionNamesRule;\n                 var _groupBy = __webpack_require__( /*! ../../jsutils/groupBy.mjs */ \"../../../node_modules/graphql/jsutils/groupBy.mjs\");\n@@ -43649,36 +60641,40 @@\n                  * A GraphQL Object or Interface type is only valid if all its fields have uniquely named arguments.\n                  * A GraphQL Directive is only valid if all its arguments are uniquely named.\n                  */\n                 function UniqueArgumentDefinitionNamesRule(context) {\n                     return {\n                         DirectiveDefinition(directiveNode) {\n                             var _directiveNode$argume;\n+\n                             // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+\n                             /* c8 ignore next */\n                             const argumentNodes = (_directiveNode$argume = directiveNode.arguments) !== null && _directiveNode$argume !== void 0 ? _directiveNode$argume : [];\n                             return checkArgUniqueness(`@${directiveNode.name.value}`, argumentNodes);\n                         },\n                         InterfaceTypeDefinition: checkArgUniquenessPerField,\n                         InterfaceTypeExtension: checkArgUniquenessPerField,\n                         ObjectTypeDefinition: checkArgUniquenessPerField,\n                         ObjectTypeExtension: checkArgUniquenessPerField\n                     };\n \n                     function checkArgUniquenessPerField(typeNode) {\n                         var _typeNode$fields;\n-                        const typeName = typeNode.name.value;\n-                        // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+                        const typeName = typeNode.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+\n                         /* c8 ignore next */\n+\n                         const fieldNodes = (_typeNode$fields = typeNode.fields) !== null && _typeNode$fields !== void 0 ? _typeNode$fields : [];\n                         for (const fieldDef of fieldNodes) {\n                             var _fieldDef$arguments;\n-                            const fieldName = fieldDef.name.value;\n-                            // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+                            const fieldName = fieldDef.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+\n                             /* c8 ignore next */\n+\n                             const argumentNodes = (_fieldDef$arguments = fieldDef.arguments) !== null && _fieldDef$arguments !== void 0 ? _fieldDef$arguments : [];\n                             checkArgUniqueness(`${typeName}.${fieldName}`, argumentNodes);\n                         }\n                         return false;\n                     }\n \n                     function checkArgUniqueness(parentName, argumentNodes) {\n@@ -43701,14 +60697,15 @@\n         \"../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs\":\n             /*!**********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs ***!\n               \\**********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.UniqueArgumentNamesRule = UniqueArgumentNamesRule;\n                 var _groupBy = __webpack_require__( /*! ../../jsutils/groupBy.mjs */ \"../../../node_modules/graphql/jsutils/groupBy.mjs\");\n@@ -43725,15 +60722,17 @@\n                     return {\n                         Field: checkArgUniqueness,\n                         Directive: checkArgUniqueness\n                     };\n \n                     function checkArgUniqueness(parentNode) {\n                         var _parentNode$arguments;\n+\n                         // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+\n                         /* c8 ignore next */\n                         const argumentNodes = (_parentNode$arguments = parentNode.arguments) !== null && _parentNode$arguments !== void 0 ? _parentNode$arguments : [];\n                         const seenArgs = (0, _groupBy.groupBy)(argumentNodes, arg => arg.name.value);\n                         for (const [argName, argNodes] of seenArgs) {\n                             if (argNodes.length > 1) {\n                                 context.reportError(new _GraphQLError.GraphQLError(`There can be only one argument named \"${argName}\".`, {\n                                     nodes: argNodes.map(node => node.name)\n@@ -43750,45 +60749,45 @@\n         \"../../../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs\":\n             /*!***********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs ***!\n               \\***********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.UniqueDirectiveNamesRule = UniqueDirectiveNamesRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 /**\n                  * Unique directive names\n                  *\n                  * A GraphQL document is only valid if all defined directives have unique names.\n                  */\n                 function UniqueDirectiveNamesRule(context) {\n-                    const knownDirectiveNames = new Map();\n+                    const knownDirectiveNames = Object.create(null);\n                     const schema = context.getSchema();\n                     return {\n                         DirectiveDefinition(node) {\n                             const directiveName = node.name.value;\n                             if (schema !== null && schema !== void 0 && schema.getDirective(directiveName)) {\n                                 context.reportError(new _GraphQLError.GraphQLError(`Directive \"@${directiveName}\" already exists in the schema. It cannot be redefined.`, {\n                                     nodes: node.name\n                                 }));\n                                 return;\n                             }\n-                            const knownName = knownDirectiveNames.get(directiveName);\n-                            if (knownName) {\n+                            if (knownDirectiveNames[directiveName]) {\n                                 context.reportError(new _GraphQLError.GraphQLError(`There can be only one directive named \"@${directiveName}\".`, {\n-                                    nodes: [knownName, node.name]\n+                                    nodes: [knownDirectiveNames[directiveName], node.name]\n                                 }));\n                             } else {\n-                                knownDirectiveNames.set(directiveName, node.name);\n+                                knownDirectiveNames[directiveName] = node.name;\n                             }\n                             return false;\n                         }\n                     };\n                 }\n \n                 /***/\n@@ -43798,14 +60797,15 @@\n         \"../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs\":\n             /*!******************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs ***!\n               \\******************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.UniqueDirectivesPerLocationRule = UniqueDirectivesPerLocationRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -43817,59 +60817,57 @@\n                  *\n                  * A GraphQL document is only valid if all non-repeatable directives at\n                  * a given location are uniquely named.\n                  *\n                  * See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location\n                  */\n                 function UniqueDirectivesPerLocationRule(context) {\n-                    const uniqueDirectiveMap = new Map();\n+                    const uniqueDirectiveMap = Object.create(null);\n                     const schema = context.getSchema();\n                     const definedDirectives = schema ? schema.getDirectives() : _directives.specifiedDirectives;\n                     for (const directive of definedDirectives) {\n-                        uniqueDirectiveMap.set(directive.name, !directive.isRepeatable);\n+                        uniqueDirectiveMap[directive.name] = !directive.isRepeatable;\n                     }\n                     const astDefinitions = context.getDocument().definitions;\n                     for (const def of astDefinitions) {\n                         if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n-                            uniqueDirectiveMap.set(def.name.value, !def.repeatable);\n+                            uniqueDirectiveMap[def.name.value] = !def.repeatable;\n                         }\n                     }\n-                    const schemaDirectives = new Map();\n-                    const typeDirectivesMap = new Map();\n+                    const schemaDirectives = Object.create(null);\n+                    const typeDirectivesMap = Object.create(null);\n                     return {\n                         // Many different AST nodes may contain directives. Rather than listing\n                         // them all, just listen for entering any node, and check to see if it\n                         // defines any directives.\n                         enter(node) {\n                             if (!('directives' in node) || !node.directives) {\n                                 return;\n                             }\n                             let seenDirectives;\n                             if (node.kind === _kinds.Kind.SCHEMA_DEFINITION || node.kind === _kinds.Kind.SCHEMA_EXTENSION) {\n                                 seenDirectives = schemaDirectives;\n                             } else if ((0, _predicates.isTypeDefinitionNode)(node) || (0, _predicates.isTypeExtensionNode)(node)) {\n                                 const typeName = node.name.value;\n-                                seenDirectives = typeDirectivesMap.get(typeName);\n+                                seenDirectives = typeDirectivesMap[typeName];\n                                 if (seenDirectives === undefined) {\n-                                    seenDirectives = new Map();\n-                                    typeDirectivesMap.set(typeName, seenDirectives);\n+                                    typeDirectivesMap[typeName] = seenDirectives = Object.create(null);\n                                 }\n                             } else {\n-                                seenDirectives = new Map();\n+                                seenDirectives = Object.create(null);\n                             }\n                             for (const directive of node.directives) {\n                                 const directiveName = directive.name.value;\n-                                if (uniqueDirectiveMap.get(directiveName) === true) {\n-                                    const seenDirective = seenDirectives.get(directiveName);\n-                                    if (seenDirective != null) {\n+                                if (uniqueDirectiveMap[directiveName]) {\n+                                    if (seenDirectives[directiveName]) {\n                                         context.reportError(new _GraphQLError.GraphQLError(`The directive \"@${directiveName}\" can only be used once at this location.`, {\n-                                            nodes: [seenDirective, directive]\n+                                            nodes: [seenDirectives[directiveName], directive]\n                                         }));\n                                     } else {\n-                                        seenDirectives.set(directiveName, directive);\n+                                        seenDirectives[directiveName] = directive;\n                                     }\n                                 }\n                             }\n                         }\n                     };\n                 }\n \n@@ -43880,14 +60878,15 @@\n         \"../../../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs\":\n             /*!***********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs ***!\n               \\***********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.UniqueEnumValueNamesRule = UniqueEnumValueNamesRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -43896,47 +60895,44 @@\n                  * Unique enum value names\n                  *\n                  * A GraphQL enum type is only valid if all its values are uniquely named.\n                  */\n                 function UniqueEnumValueNamesRule(context) {\n                     const schema = context.getSchema();\n                     const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n-                    const knownValueNames = new Map();\n+                    const knownValueNames = Object.create(null);\n                     return {\n                         EnumTypeDefinition: checkValueUniqueness,\n                         EnumTypeExtension: checkValueUniqueness\n                     };\n \n                     function checkValueUniqueness(node) {\n                         var _node$values;\n                         const typeName = node.name.value;\n-                        let valueNames = knownValueNames.get(typeName);\n-                        if (valueNames == null) {\n-                            valueNames = new Map();\n-                            knownValueNames.set(typeName, valueNames);\n-                        }\n-                        // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+                        if (!knownValueNames[typeName]) {\n+                            knownValueNames[typeName] = Object.create(null);\n+                        } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+\n                         /* c8 ignore next */\n+\n                         const valueNodes = (_node$values = node.values) !== null && _node$values !== void 0 ? _node$values : [];\n+                        const valueNames = knownValueNames[typeName];\n                         for (const valueDef of valueNodes) {\n                             const valueName = valueDef.name.value;\n                             const existingType = existingTypeMap[typeName];\n                             if ((0, _definition.isEnumType)(existingType) && existingType.getValue(valueName)) {\n                                 context.reportError(new _GraphQLError.GraphQLError(`Enum value \"${typeName}.${valueName}\" already exists in the schema. It cannot also be defined in this type extension.`, {\n                                     nodes: valueDef.name\n                                 }));\n-                                continue;\n-                            }\n-                            const knownValueName = valueNames.get(valueName);\n-                            if (knownValueName != null) {\n+                            } else if (valueNames[valueName]) {\n                                 context.reportError(new _GraphQLError.GraphQLError(`Enum value \"${typeName}.${valueName}\" can only be defined once.`, {\n-                                    nodes: [knownValueName, valueDef.name]\n+                                    nodes: [valueNames[valueName], valueDef.name]\n                                 }));\n                             } else {\n-                                valueNames.set(valueName, valueDef.name);\n+                                valueNames[valueName] = valueDef.name;\n                             }\n                         }\n                         return false;\n                     }\n                 }\n \n                 /***/\n@@ -43946,14 +60942,15 @@\n         \"../../../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs\":\n             /*!*****************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs ***!\n               \\*****************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.UniqueFieldDefinitionNamesRule = UniqueFieldDefinitionNamesRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -43962,50 +60959,47 @@\n                  * Unique field definition names\n                  *\n                  * A GraphQL complex type is only valid if all its fields are uniquely named.\n                  */\n                 function UniqueFieldDefinitionNamesRule(context) {\n                     const schema = context.getSchema();\n                     const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n-                    const knownFieldNames = new Map();\n+                    const knownFieldNames = Object.create(null);\n                     return {\n                         InputObjectTypeDefinition: checkFieldUniqueness,\n                         InputObjectTypeExtension: checkFieldUniqueness,\n                         InterfaceTypeDefinition: checkFieldUniqueness,\n                         InterfaceTypeExtension: checkFieldUniqueness,\n                         ObjectTypeDefinition: checkFieldUniqueness,\n                         ObjectTypeExtension: checkFieldUniqueness\n                     };\n \n                     function checkFieldUniqueness(node) {\n                         var _node$fields;\n                         const typeName = node.name.value;\n-                        let fieldNames = knownFieldNames.get(typeName);\n-                        if (fieldNames == null) {\n-                            fieldNames = new Map();\n-                            knownFieldNames.set(typeName, fieldNames);\n-                        }\n-                        // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+                        if (!knownFieldNames[typeName]) {\n+                            knownFieldNames[typeName] = Object.create(null);\n+                        } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n+\n                         /* c8 ignore next */\n+\n                         const fieldNodes = (_node$fields = node.fields) !== null && _node$fields !== void 0 ? _node$fields : [];\n+                        const fieldNames = knownFieldNames[typeName];\n                         for (const fieldDef of fieldNodes) {\n                             const fieldName = fieldDef.name.value;\n                             if (hasField(existingTypeMap[typeName], fieldName)) {\n                                 context.reportError(new _GraphQLError.GraphQLError(`Field \"${typeName}.${fieldName}\" already exists in the schema. It cannot also be defined in this type extension.`, {\n                                     nodes: fieldDef.name\n                                 }));\n-                                continue;\n-                            }\n-                            const knownFieldName = fieldNames.get(fieldName);\n-                            if (knownFieldName != null) {\n+                            } else if (fieldNames[fieldName]) {\n                                 context.reportError(new _GraphQLError.GraphQLError(`Field \"${typeName}.${fieldName}\" can only be defined once.`, {\n-                                    nodes: [knownFieldName, fieldDef.name]\n+                                    nodes: [fieldNames[fieldName], fieldDef.name]\n                                 }));\n                             } else {\n-                                fieldNames.set(fieldName, fieldDef.name);\n+                                fieldNames[fieldName] = fieldDef.name;\n                             }\n                         }\n                         return false;\n                     }\n                 }\n \n                 function hasField(type, fieldName) {\n@@ -44022,14 +61016,15 @@\n         \"../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs\":\n             /*!**********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs ***!\n               \\**********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.UniqueFragmentNamesRule = UniqueFragmentNamesRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -44037,26 +61032,25 @@\n                  * Unique fragment names\n                  *\n                  * A GraphQL document is only valid if all defined fragments have unique names.\n                  *\n                  * See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness\n                  */\n                 function UniqueFragmentNamesRule(context) {\n-                    const knownFragmentNames = new Map();\n+                    const knownFragmentNames = Object.create(null);\n                     return {\n                         OperationDefinition: () => false,\n                         FragmentDefinition(node) {\n                             const fragmentName = node.name.value;\n-                            const knownFragmentName = knownFragmentNames.get(fragmentName);\n-                            if (knownFragmentName != null) {\n+                            if (knownFragmentNames[fragmentName]) {\n                                 context.reportError(new _GraphQLError.GraphQLError(`There can be only one fragment named \"${fragmentName}\".`, {\n-                                    nodes: [knownFragmentName, node.name]\n+                                    nodes: [knownFragmentNames[fragmentName], node.name]\n                                 }));\n                             } else {\n-                                knownFragmentNames.set(fragmentName, node.name);\n+                                knownFragmentNames[fragmentName] = node.name;\n                             }\n                             return false;\n                         }\n                     };\n                 }\n \n                 /***/\n@@ -44066,14 +61060,15 @@\n         \"../../../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs\":\n             /*!************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs ***!\n               \\************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.UniqueInputFieldNamesRule = UniqueInputFieldNamesRule;\n                 var _invariant = __webpack_require__( /*! ../../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n@@ -44084,36 +61079,35 @@\n                  * A GraphQL input object value is only valid if all supplied fields are\n                  * uniquely named.\n                  *\n                  * See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness\n                  */\n                 function UniqueInputFieldNamesRule(context) {\n                     const knownNameStack = [];\n-                    let knownNames = new Map();\n+                    let knownNames = Object.create(null);\n                     return {\n                         ObjectValue: {\n                             enter() {\n                                 knownNameStack.push(knownNames);\n-                                knownNames = new Map();\n+                                knownNames = Object.create(null);\n                             },\n                             leave() {\n                                 const prevKnownNames = knownNameStack.pop();\n-                                prevKnownNames != null || (0, _invariant.invariant)(false);\n+                                prevKnownNames || (0, _invariant.invariant)(false);\n                                 knownNames = prevKnownNames;\n                             }\n                         },\n                         ObjectField(node) {\n                             const fieldName = node.name.value;\n-                            const knownName = knownNames.get(fieldName);\n-                            if (knownName != null) {\n+                            if (knownNames[fieldName]) {\n                                 context.reportError(new _GraphQLError.GraphQLError(`There can be only one input field named \"${fieldName}\".`, {\n-                                    nodes: [knownName, node.name]\n+                                    nodes: [knownNames[fieldName], node.name]\n                                 }));\n                             } else {\n-                                knownNames.set(fieldName, node.name);\n+                                knownNames[fieldName] = node.name;\n                             }\n                         }\n                     };\n                 }\n \n                 /***/\n             }),\n@@ -44122,14 +61116,15 @@\n         \"../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs\":\n             /*!***********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs ***!\n               \\***********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.UniqueOperationNamesRule = UniqueOperationNamesRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -44137,26 +61132,25 @@\n                  * Unique operation names\n                  *\n                  * A GraphQL document is only valid if all defined operations have unique names.\n                  *\n                  * See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness\n                  */\n                 function UniqueOperationNamesRule(context) {\n-                    const knownOperationNames = new Map();\n+                    const knownOperationNames = Object.create(null);\n                     return {\n                         OperationDefinition(node) {\n                             const operationName = node.name;\n-                            if (operationName != null) {\n-                                const knownOperationName = knownOperationNames.get(operationName.value);\n-                                if (knownOperationName != null) {\n+                            if (operationName) {\n+                                if (knownOperationNames[operationName.value]) {\n                                     context.reportError(new _GraphQLError.GraphQLError(`There can be only one operation named \"${operationName.value}\".`, {\n-                                        nodes: [knownOperationName, operationName]\n+                                        nodes: [knownOperationNames[operationName.value], operationName]\n                                     }));\n                                 } else {\n-                                    knownOperationNames.set(operationName.value, operationName);\n+                                    knownOperationNames[operationName.value] = operationName;\n                                 }\n                             }\n                             return false;\n                         },\n                         FragmentDefinition: () => false\n                     };\n                 }\n@@ -44168,57 +61162,60 @@\n         \"../../../node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs\":\n             /*!***********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs ***!\n               \\***********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.UniqueOperationTypesRule = UniqueOperationTypesRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 /**\n                  * Unique operation types\n                  *\n                  * A GraphQL document is only valid if it has only one type per operation.\n                  */\n                 function UniqueOperationTypesRule(context) {\n                     const schema = context.getSchema();\n-                    const definedOperationTypes = new Map();\n+                    const definedOperationTypes = Object.create(null);\n                     const existingOperationTypes = schema ? {\n                         query: schema.getQueryType(),\n                         mutation: schema.getMutationType(),\n                         subscription: schema.getSubscriptionType()\n                     } : {};\n                     return {\n                         SchemaDefinition: checkOperationTypes,\n                         SchemaExtension: checkOperationTypes\n                     };\n \n                     function checkOperationTypes(node) {\n                         var _node$operationTypes;\n+\n                         // See: https://github.com/graphql/graphql-js/issues/2203\n+\n                         /* c8 ignore next */\n                         const operationTypesNodes = (_node$operationTypes = node.operationTypes) !== null && _node$operationTypes !== void 0 ? _node$operationTypes : [];\n                         for (const operationType of operationTypesNodes) {\n                             const operation = operationType.operation;\n-                            const alreadyDefinedOperationType = definedOperationTypes.get(operation);\n+                            const alreadyDefinedOperationType = definedOperationTypes[operation];\n                             if (existingOperationTypes[operation]) {\n                                 context.reportError(new _GraphQLError.GraphQLError(`Type for ${operation} already defined in the schema. It cannot be redefined.`, {\n                                     nodes: operationType\n                                 }));\n                             } else if (alreadyDefinedOperationType) {\n                                 context.reportError(new _GraphQLError.GraphQLError(`There can be only one ${operation} type in schema.`, {\n                                     nodes: [alreadyDefinedOperationType, operationType]\n                                 }));\n                             } else {\n-                                definedOperationTypes.set(operation, operationType);\n+                                definedOperationTypes[operation] = operationType;\n                             }\n                         }\n                         return false;\n                     }\n                 }\n \n                 /***/\n@@ -44228,28 +61225,29 @@\n         \"../../../node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs\":\n             /*!******************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs ***!\n               \\******************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.UniqueTypeNamesRule = UniqueTypeNamesRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 /**\n                  * Unique type names\n                  *\n                  * A GraphQL document is only valid if all defined types have unique names.\n                  */\n                 function UniqueTypeNamesRule(context) {\n-                    const knownTypeNames = new Map();\n+                    const knownTypeNames = Object.create(null);\n                     const schema = context.getSchema();\n                     return {\n                         ScalarTypeDefinition: checkTypeName,\n                         ObjectTypeDefinition: checkTypeName,\n                         InterfaceTypeDefinition: checkTypeName,\n                         UnionTypeDefinition: checkTypeName,\n                         EnumTypeDefinition: checkTypeName,\n@@ -44260,21 +61258,20 @@\n                         const typeName = node.name.value;\n                         if (schema !== null && schema !== void 0 && schema.getType(typeName)) {\n                             context.reportError(new _GraphQLError.GraphQLError(`Type \"${typeName}\" already exists in the schema. It cannot also be defined in this type definition.`, {\n                                 nodes: node.name\n                             }));\n                             return;\n                         }\n-                        const knownNameNode = knownTypeNames.get(typeName);\n-                        if (knownNameNode != null) {\n+                        if (knownTypeNames[typeName]) {\n                             context.reportError(new _GraphQLError.GraphQLError(`There can be only one type named \"${typeName}\".`, {\n-                                nodes: [knownNameNode, node.name]\n+                                nodes: [knownTypeNames[typeName], node.name]\n                             }));\n                         } else {\n-                            knownTypeNames.set(typeName, node.name);\n+                            knownTypeNames[typeName] = node.name;\n                         }\n                         return false;\n                     }\n                 }\n \n                 /***/\n             }),\n@@ -44283,14 +61280,15 @@\n         \"../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs\":\n             /*!**********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs ***!\n               \\**********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.UniqueVariableNamesRule = UniqueVariableNamesRule;\n                 var _groupBy = __webpack_require__( /*! ../../jsutils/groupBy.mjs */ \"../../../node_modules/graphql/jsutils/groupBy.mjs\");\n@@ -44300,15 +61298,17 @@\n                  *\n                  * A GraphQL operation is only valid if all its variables are uniquely named.\n                  */\n                 function UniqueVariableNamesRule(context) {\n                     return {\n                         OperationDefinition(operationNode) {\n                             var _operationNode$variab;\n+\n                             // See: https://github.com/graphql/graphql-js/issues/2203\n+\n                             /* c8 ignore next */\n                             const variableDefinitions = (_operationNode$variab = operationNode.variableDefinitions) !== null && _operationNode$variab !== void 0 ? _operationNode$variab : [];\n                             const seenVariableDefinitions = (0, _groupBy.groupBy)(variableDefinitions, node => node.variable.name.value);\n                             for (const [variableName, variableNodes] of seenVariableDefinitions) {\n                                 if (variableNodes.length > 1) {\n                                     context.reportError(new _GraphQLError.GraphQLError(`There can be only one variable named \"$${variableName}\".`, {\n                                         nodes: variableNodes.map(node => node.variable.name)\n@@ -44326,22 +61326,24 @@\n         \"../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs\":\n             /*!**********************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs ***!\n               \\**********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.ValuesOfCorrectTypeRule = ValuesOfCorrectTypeRule;\n                 var _didYouMean = __webpack_require__( /*! ../../jsutils/didYouMean.mjs */ \"../../../node_modules/graphql/jsutils/didYouMean.mjs\");\n                 var _inspect = __webpack_require__( /*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n+                var _keyMap = __webpack_require__( /*! ../../jsutils/keyMap.mjs */ \"../../../node_modules/graphql/jsutils/keyMap.mjs\");\n                 var _suggestionList = __webpack_require__( /*! ../../jsutils/suggestionList.mjs */ \"../../../node_modules/graphql/jsutils/suggestionList.mjs\");\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 var _kinds = __webpack_require__( /*! ../../language/kinds.mjs */ \"../../../node_modules/graphql/language/kinds.mjs\");\n                 var _printer = __webpack_require__( /*! ../../language/printer.mjs */ \"../../../node_modules/graphql/language/printer.mjs\");\n                 var _definition = __webpack_require__( /*! ../../type/definition.mjs */ \"../../../node_modules/graphql/type/definition.mjs\");\n                 /**\n                  * Value literals of correct type\n@@ -44372,19 +61374,19 @@\n                             }\n                         },\n                         ObjectValue(node) {\n                             const type = (0, _definition.getNamedType)(context.getInputType());\n                             if (!(0, _definition.isInputObjectType)(type)) {\n                                 isValidValueNode(context, node);\n                                 return false; // Don't traverse further.\n-                            }\n-                            // Ensure every required field exists.\n-                            const fieldNodeMap = new Map(node.fields.map(field => [field.name.value, field]));\n+                            } // Ensure every required field exists.\n+\n+                            const fieldNodeMap = (0, _keyMap.keyMap)(node.fields, field => field.name.value);\n                             for (const fieldDef of Object.values(type.getFields())) {\n-                                const fieldNode = fieldNodeMap.get(fieldDef.name);\n+                                const fieldNode = fieldNodeMap[fieldDef.name];\n                                 if (!fieldNode && (0, _definition.isRequiredInputField)(fieldDef)) {\n                                     const typeStr = (0, _inspect.inspect)(fieldDef.type);\n                                     context.reportError(new _GraphQLError.GraphQLError(`Field \"${type.name}.${fieldDef.name}\" of required type \"${typeStr}\" was not provided.`, {\n                                         nodes: node\n                                     }));\n                                 }\n                             }\n@@ -44417,32 +61419,35 @@\n                         BooleanValue: node => isValidValueNode(context, node)\n                     };\n                 }\n                 /**\n                  * Any value literal may be a valid representation of a Scalar, depending on\n                  * that scalar type.\n                  */\n+\n                 function isValidValueNode(context, node) {\n                     // Report any error at the full type expected by the location.\n                     const locationType = context.getInputType();\n                     if (!locationType) {\n                         return;\n                     }\n                     const type = (0, _definition.getNamedType)(locationType);\n                     if (!(0, _definition.isLeafType)(type)) {\n                         const typeStr = (0, _inspect.inspect)(locationType);\n                         context.reportError(new _GraphQLError.GraphQLError(`Expected value of type \"${typeStr}\", found ${(0, _printer.print)(node)}.`, {\n                             nodes: node\n                         }));\n                         return;\n-                    }\n-                    // Scalars and Enums determine if a literal value is valid via parseLiteral(),\n+                    } // Scalars and Enums determine if a literal value is valid via parseLiteral(),\n                     // which may throw or return an invalid value to indicate failure.\n+\n                     try {\n-                        const parseResult = type.parseLiteral(node, undefined /* variables */ );\n+                        const parseResult = type.parseLiteral(node, undefined\n+                            /* variables */\n+                        );\n                         if (parseResult === undefined) {\n                             const typeStr = (0, _inspect.inspect)(locationType);\n                             context.reportError(new _GraphQLError.GraphQLError(`Expected value of type \"${typeStr}\", found ${(0, _printer.print)(node)}.`, {\n                                 nodes: node\n                             }));\n                         }\n                     } catch (error) {\n@@ -44455,24 +61460,24 @@\n                                 originalError: error\n                             }));\n                         }\n                     }\n                 }\n \n                 function validateOneOfInputObject(context, node, type, fieldNodeMap, variableDefinitions) {\n-                    var _fieldNodeMap$get;\n-                    const keys = Array.from(fieldNodeMap.keys());\n+                    var _fieldNodeMap$keys$;\n+                    const keys = Object.keys(fieldNodeMap);\n                     const isNotExactlyOneField = keys.length !== 1;\n                     if (isNotExactlyOneField) {\n                         context.reportError(new _GraphQLError.GraphQLError(`OneOf Input Object \"${type.name}\" must specify exactly one key.`, {\n                             nodes: [node]\n                         }));\n                         return;\n                     }\n-                    const value = (_fieldNodeMap$get = fieldNodeMap.get(keys[0])) === null || _fieldNodeMap$get === void 0 ? void 0 : _fieldNodeMap$get.value;\n+                    const value = (_fieldNodeMap$keys$ = fieldNodeMap[keys[0]]) === null || _fieldNodeMap$keys$ === void 0 ? void 0 : _fieldNodeMap$keys$.value;\n                     const isNullLiteral = !value || value.kind === _kinds.Kind.NULL;\n                     const isVariable = (value === null || value === void 0 ? void 0 : value.kind) === _kinds.Kind.VARIABLE;\n                     if (isNullLiteral) {\n                         context.reportError(new _GraphQLError.GraphQLError(`Field \"${type.name}.${keys[0]}\" must be non-null.`, {\n                             nodes: [node]\n                         }));\n                         return;\n@@ -44496,14 +61501,15 @@\n         \"../../../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs\":\n             /*!*************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs ***!\n               \\*************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.VariablesAreInputTypesRule = VariablesAreInputTypesRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -44540,14 +61546,15 @@\n         \"../../../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs\":\n             /*!*****************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs ***!\n               \\*****************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.VariablesInAllowedPositionRule = VariablesInAllowedPositionRule;\n                 var _inspect = __webpack_require__( /*! ../../jsutils/inspect.mjs */ \"../../../node_modules/graphql/jsutils/inspect.mjs\");\n@@ -44560,30 +61567,30 @@\n                  * Variables in allowed position\n                  *\n                  * Variable usages must be compatible with the arguments they are passed to.\n                  *\n                  * See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed\n                  */\n                 function VariablesInAllowedPositionRule(context) {\n-                    let varDefMap;\n+                    let varDefMap = Object.create(null);\n                     return {\n                         OperationDefinition: {\n                             enter() {\n-                                varDefMap = new Map();\n+                                varDefMap = Object.create(null);\n                             },\n                             leave(operation) {\n                                 const usages = context.getRecursiveVariableUsages(operation);\n                                 for (const {\n                                         node,\n                                         type,\n                                         defaultValue\n                                     }\n                                     of usages) {\n                                     const varName = node.name.value;\n-                                    const varDef = varDefMap.get(varName);\n+                                    const varDef = varDefMap[varName];\n                                     if (varDef && type) {\n                                         // A var type is allowed if it is the same or more strict (e.g. is\n                                         // a subtype of) than the expected type. It can be more strict if\n                                         // the variable type is non-null when the expected type is nullable.\n                                         // If both are list types, the variable item type can be more strict\n                                         // than the expected item type (contravariant).\n                                         const schema = context.getSchema();\n@@ -44596,23 +61603,24 @@\n                                             }));\n                                         }\n                                     }\n                                 }\n                             }\n                         },\n                         VariableDefinition(node) {\n-                            varDefMap.set(node.variable.name.value, node);\n+                            varDefMap[node.variable.name.value] = node;\n                         }\n                     };\n                 }\n                 /**\n                  * Returns true if the variable is allowed in the location it was found,\n                  * which includes considering if default values exist for either the variable\n                  * or the location at which it is located.\n                  */\n+\n                 function allowedVariableUsage(schema, varType, varDefaultValue, locationType, locationDefaultValue) {\n                     if ((0, _definition.isNonNullType)(locationType) && !(0, _definition.isNonNullType)(varType)) {\n                         const hasNonNullVariableDefaultValue = varDefaultValue != null && varDefaultValue.kind !== _kinds.Kind.NULL;\n                         const hasLocationDefaultValue = locationDefaultValue !== undefined;\n                         if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) {\n                             return false;\n                         }\n@@ -44629,14 +61637,15 @@\n         \"../../../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs\":\n             /*!****************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs ***!\n               \\****************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.NoDeprecatedCustomRule = NoDeprecatedCustomRule;\n                 var _invariant = __webpack_require__( /*! ../../../jsutils/invariant.mjs */ \"../../../node_modules/graphql/jsutils/invariant.mjs\");\n@@ -44717,14 +61726,15 @@\n         \"../../../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs\":\n             /*!*************************************************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs ***!\n               \\*************************************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.NoSchemaIntrospectionCustomRule = NoSchemaIntrospectionCustomRule;\n                 var _GraphQLError = __webpack_require__( /*! ../../../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n@@ -44760,23 +61770,21 @@\n         \"../../../node_modules/graphql/validation/specifiedRules.mjs\":\n             /*!*******************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/specifiedRules.mjs ***!\n               \\*******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.specifiedSDLRules = exports.specifiedRules = exports.recommendedRules = void 0;\n-                var _DeferStreamDirectiveLabelRule = __webpack_require__( /*! ./rules/DeferStreamDirectiveLabelRule.mjs */ \"../../../node_modules/graphql/validation/rules/DeferStreamDirectiveLabelRule.mjs\");\n-                var _DeferStreamDirectiveOnRootFieldRule = __webpack_require__( /*! ./rules/DeferStreamDirectiveOnRootFieldRule.mjs */ \"../../../node_modules/graphql/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs\");\n-                var _DeferStreamDirectiveOnValidOperationsRule = __webpack_require__( /*! ./rules/DeferStreamDirectiveOnValidOperationsRule.mjs */ \"../../../node_modules/graphql/validation/rules/DeferStreamDirectiveOnValidOperationsRule.mjs\");\n                 var _ExecutableDefinitionsRule = __webpack_require__( /*! ./rules/ExecutableDefinitionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs\");\n                 var _FieldsOnCorrectTypeRule = __webpack_require__( /*! ./rules/FieldsOnCorrectTypeRule.mjs */ \"../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs\");\n                 var _FragmentsOnCompositeTypesRule = __webpack_require__( /*! ./rules/FragmentsOnCompositeTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs\");\n                 var _KnownArgumentNamesRule = __webpack_require__( /*! ./rules/KnownArgumentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs\");\n                 var _KnownDirectivesRule = __webpack_require__( /*! ./rules/KnownDirectivesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownDirectivesRule.mjs\");\n                 var _KnownFragmentNamesRule = __webpack_require__( /*! ./rules/KnownFragmentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs\");\n                 var _KnownTypeNamesRule = __webpack_require__( /*! ./rules/KnownTypeNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs\");\n@@ -44789,15 +61797,14 @@\n                 var _NoUnusedVariablesRule = __webpack_require__( /*! ./rules/NoUnusedVariablesRule.mjs */ \"../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs\");\n                 var _OverlappingFieldsCanBeMergedRule = __webpack_require__( /*! ./rules/OverlappingFieldsCanBeMergedRule.mjs */ \"../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs\");\n                 var _PossibleFragmentSpreadsRule = __webpack_require__( /*! ./rules/PossibleFragmentSpreadsRule.mjs */ \"../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs\");\n                 var _PossibleTypeExtensionsRule = __webpack_require__( /*! ./rules/PossibleTypeExtensionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs\");\n                 var _ProvidedRequiredArgumentsRule = __webpack_require__( /*! ./rules/ProvidedRequiredArgumentsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs\");\n                 var _ScalarLeafsRule = __webpack_require__( /*! ./rules/ScalarLeafsRule.mjs */ \"../../../node_modules/graphql/validation/rules/ScalarLeafsRule.mjs\");\n                 var _SingleFieldSubscriptionsRule = __webpack_require__( /*! ./rules/SingleFieldSubscriptionsRule.mjs */ \"../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs\");\n-                var _StreamDirectiveOnListFieldRule = __webpack_require__( /*! ./rules/StreamDirectiveOnListFieldRule.mjs */ \"../../../node_modules/graphql/validation/rules/StreamDirectiveOnListFieldRule.mjs\");\n                 var _UniqueArgumentDefinitionNamesRule = __webpack_require__( /*! ./rules/UniqueArgumentDefinitionNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.mjs\");\n                 var _UniqueArgumentNamesRule = __webpack_require__( /*! ./rules/UniqueArgumentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs\");\n                 var _UniqueDirectiveNamesRule = __webpack_require__( /*! ./rules/UniqueDirectiveNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs\");\n                 var _UniqueDirectivesPerLocationRule = __webpack_require__( /*! ./rules/UniqueDirectivesPerLocationRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs\");\n                 var _UniqueEnumValueNamesRule = __webpack_require__( /*! ./rules/UniqueEnumValueNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs\");\n                 var _UniqueFieldDefinitionNamesRule = __webpack_require__( /*! ./rules/UniqueFieldDefinitionNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs\");\n                 var _UniqueFragmentNamesRule = __webpack_require__( /*! ./rules/UniqueFragmentNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs\");\n@@ -44805,22 +61812,15 @@\n                 var _UniqueOperationNamesRule = __webpack_require__( /*! ./rules/UniqueOperationNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs\");\n                 var _UniqueOperationTypesRule = __webpack_require__( /*! ./rules/UniqueOperationTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs\");\n                 var _UniqueTypeNamesRule = __webpack_require__( /*! ./rules/UniqueTypeNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs\");\n                 var _UniqueVariableNamesRule = __webpack_require__( /*! ./rules/UniqueVariableNamesRule.mjs */ \"../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs\");\n                 var _ValuesOfCorrectTypeRule = __webpack_require__( /*! ./rules/ValuesOfCorrectTypeRule.mjs */ \"../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs\");\n                 var _VariablesAreInputTypesRule = __webpack_require__( /*! ./rules/VariablesAreInputTypesRule.mjs */ \"../../../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs\");\n                 var _VariablesInAllowedPositionRule = __webpack_require__( /*! ./rules/VariablesInAllowedPositionRule.mjs */ \"../../../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs\");\n-                // Spec Section: \"Defer And Stream Directive Labels Are Unique\"\n-\n-                // Spec Section: \"Defer And Stream Directives Are Used On Valid Root Field\"\n-\n-                // Spec Section: \"Defer And Stream Directives Are Used On Valid Operations\"\n-\n                 // Spec Section: \"Executable Definitions\"\n-\n                 // Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n \n                 // Spec Section: \"Fragments on Composite Types\"\n \n                 // Spec Section: \"Argument Names\"\n \n                 // Spec Section: \"Directives Are Defined\"\n@@ -44849,16 +61849,14 @@\n \n                 // Spec Section: \"Argument Optionality\"\n \n                 // Spec Section: \"Leaf Field Selections\"\n \n                 // Spec Section: \"Subscriptions with Single Root Field\"\n \n-                // Spec Section: \"Stream Directives Are Used On List Fields\"\n-\n                 // Spec Section: \"Argument Uniqueness\"\n \n                 // Spec Section: \"Directives Are Unique Per Location\"\n \n                 // Spec Section: \"Fragment Name Uniqueness\"\n \n                 // Spec Section: \"Input Object Field Uniqueness\"\n@@ -44880,40 +61878,44 @@\n                 const recommendedRules = exports.recommendedRules = Object.freeze([_MaxIntrospectionDepthRule.MaxIntrospectionDepthRule]);\n                 /**\n                  * This set includes all validation rules defined by the GraphQL spec.\n                  *\n                  * The order of the rules in this list has been adjusted to lead to the\n                  * most clear output when encountering multiple validation errors.\n                  */\n-                const specifiedRules = exports.specifiedRules = Object.freeze([_ExecutableDefinitionsRule.ExecutableDefinitionsRule, _UniqueOperationNamesRule.UniqueOperationNamesRule, _LoneAnonymousOperationRule.LoneAnonymousOperationRule, _SingleFieldSubscriptionsRule.SingleFieldSubscriptionsRule, _KnownTypeNamesRule.KnownTypeNamesRule, _FragmentsOnCompositeTypesRule.FragmentsOnCompositeTypesRule, _VariablesAreInputTypesRule.VariablesAreInputTypesRule, _ScalarLeafsRule.ScalarLeafsRule, _FieldsOnCorrectTypeRule.FieldsOnCorrectTypeRule, _UniqueFragmentNamesRule.UniqueFragmentNamesRule, _KnownFragmentNamesRule.KnownFragmentNamesRule, _NoUnusedFragmentsRule.NoUnusedFragmentsRule, _PossibleFragmentSpreadsRule.PossibleFragmentSpreadsRule, _NoFragmentCyclesRule.NoFragmentCyclesRule, _UniqueVariableNamesRule.UniqueVariableNamesRule, _NoUndefinedVariablesRule.NoUndefinedVariablesRule, _NoUnusedVariablesRule.NoUnusedVariablesRule, _KnownDirectivesRule.KnownDirectivesRule, _UniqueDirectivesPerLocationRule.UniqueDirectivesPerLocationRule, _DeferStreamDirectiveOnRootFieldRule.DeferStreamDirectiveOnRootFieldRule, _DeferStreamDirectiveOnValidOperationsRule.DeferStreamDirectiveOnValidOperationsRule, _DeferStreamDirectiveLabelRule.DeferStreamDirectiveLabelRule, _StreamDirectiveOnListFieldRule.StreamDirectiveOnListFieldRule, _KnownArgumentNamesRule.KnownArgumentNamesRule, _UniqueArgumentNamesRule.UniqueArgumentNamesRule, _ValuesOfCorrectTypeRule.ValuesOfCorrectTypeRule, _ProvidedRequiredArgumentsRule.ProvidedRequiredArgumentsRule, _VariablesInAllowedPositionRule.VariablesInAllowedPositionRule, _OverlappingFieldsCanBeMergedRule.OverlappingFieldsCanBeMergedRule, _UniqueInputFieldNamesRule.UniqueInputFieldNamesRule, ...recommendedRules]);\n+\n+                const specifiedRules = exports.specifiedRules = Object.freeze([_ExecutableDefinitionsRule.ExecutableDefinitionsRule, _UniqueOperationNamesRule.UniqueOperationNamesRule, _LoneAnonymousOperationRule.LoneAnonymousOperationRule, _SingleFieldSubscriptionsRule.SingleFieldSubscriptionsRule, _KnownTypeNamesRule.KnownTypeNamesRule, _FragmentsOnCompositeTypesRule.FragmentsOnCompositeTypesRule, _VariablesAreInputTypesRule.VariablesAreInputTypesRule, _ScalarLeafsRule.ScalarLeafsRule, _FieldsOnCorrectTypeRule.FieldsOnCorrectTypeRule, _UniqueFragmentNamesRule.UniqueFragmentNamesRule, _KnownFragmentNamesRule.KnownFragmentNamesRule, _NoUnusedFragmentsRule.NoUnusedFragmentsRule, _PossibleFragmentSpreadsRule.PossibleFragmentSpreadsRule, _NoFragmentCyclesRule.NoFragmentCyclesRule, _UniqueVariableNamesRule.UniqueVariableNamesRule, _NoUndefinedVariablesRule.NoUndefinedVariablesRule, _NoUnusedVariablesRule.NoUnusedVariablesRule, _KnownDirectivesRule.KnownDirectivesRule, _UniqueDirectivesPerLocationRule.UniqueDirectivesPerLocationRule, _KnownArgumentNamesRule.KnownArgumentNamesRule, _UniqueArgumentNamesRule.UniqueArgumentNamesRule, _ValuesOfCorrectTypeRule.ValuesOfCorrectTypeRule, _ProvidedRequiredArgumentsRule.ProvidedRequiredArgumentsRule, _VariablesInAllowedPositionRule.VariablesInAllowedPositionRule, _OverlappingFieldsCanBeMergedRule.OverlappingFieldsCanBeMergedRule, _UniqueInputFieldNamesRule.UniqueInputFieldNamesRule, ...recommendedRules]);\n                 /**\n                  * @internal\n                  */\n+\n                 const specifiedSDLRules = exports.specifiedSDLRules = Object.freeze([_LoneSchemaDefinitionRule.LoneSchemaDefinitionRule, _UniqueOperationTypesRule.UniqueOperationTypesRule, _UniqueTypeNamesRule.UniqueTypeNamesRule, _UniqueEnumValueNamesRule.UniqueEnumValueNamesRule, _UniqueFieldDefinitionNamesRule.UniqueFieldDefinitionNamesRule, _UniqueArgumentDefinitionNamesRule.UniqueArgumentDefinitionNamesRule, _UniqueDirectiveNamesRule.UniqueDirectiveNamesRule, _KnownTypeNamesRule.KnownTypeNamesRule, _KnownDirectivesRule.KnownDirectivesRule, _UniqueDirectivesPerLocationRule.UniqueDirectivesPerLocationRule, _PossibleTypeExtensionsRule.PossibleTypeExtensionsRule, _KnownArgumentNamesRule.KnownArgumentNamesOnDirectivesRule, _UniqueArgumentNamesRule.UniqueArgumentNamesRule, _UniqueInputFieldNamesRule.UniqueInputFieldNamesRule, _ProvidedRequiredArgumentsRule.ProvidedRequiredArgumentsOnDirectivesRule]);\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/graphql/validation/validate.mjs\":\n             /*!*************************************************************!*\\\n               !*** ../../../node_modules/graphql/validation/validate.mjs ***!\n               \\*************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.assertValidSDL = assertValidSDL;\n                 exports.assertValidSDLExtension = assertValidSDLExtension;\n                 exports.validate = validate;\n                 exports.validateSDL = validateSDL;\n+                var _devAssert = __webpack_require__( /*! ../jsutils/devAssert.mjs */ \"../../../node_modules/graphql/jsutils/devAssert.mjs\");\n                 var _GraphQLError = __webpack_require__( /*! ../error/GraphQLError.mjs */ \"../../../node_modules/graphql/error/GraphQLError.mjs\");\n                 var _visitor = __webpack_require__( /*! ../language/visitor.mjs */ \"../../../node_modules/graphql/language/visitor.mjs\");\n                 var _validate = __webpack_require__( /*! ../type/validate.mjs */ \"../../../node_modules/graphql/type/validate.mjs\");\n                 var _TypeInfo = __webpack_require__( /*! ../utilities/TypeInfo.mjs */ \"../../../node_modules/graphql/utilities/TypeInfo.mjs\");\n                 var _specifiedRules = __webpack_require__( /*! ./specifiedRules.mjs */ \"../../../node_modules/graphql/validation/specifiedRules.mjs\");\n                 var _ValidationContext = __webpack_require__( /*! ./ValidationContext.mjs */ \"../../../node_modules/graphql/validation/ValidationContext.mjs\");\n                 /**\n@@ -44932,46 +61934,49 @@\n                  * Validate will stop validation after a `maxErrors` limit has been reached.\n                  * Attackers can send pathologically invalid queries to induce a DoS attack,\n                  * so by default `maxErrors` set to 100 errors.\n                  *\n                  * Optionally a custom TypeInfo instance may be provided. If not provided, one\n                  * will be created from the provided schema.\n                  */\n+\n                 function validate(schema, documentAST, rules = _specifiedRules.specifiedRules, options, /** @deprecated will be removed in 17.0.0 */\n                     typeInfo = new _TypeInfo.TypeInfo(schema)) {\n                     var _options$maxErrors;\n                     const maxErrors = (_options$maxErrors = options === null || options === void 0 ? void 0 : options.maxErrors) !== null && _options$maxErrors !== void 0 ? _options$maxErrors : 100;\n-                    // If the schema used for validation is invalid, throw an error.\n+                    documentAST || (0, _devAssert.devAssert)(false, 'Must provide document.'); // If the schema used for validation is invalid, throw an error.\n+\n                     (0, _validate.assertValidSchema)(schema);\n-                    const abortError = new _GraphQLError.GraphQLError('Too many validation errors, error limit reached. Validation aborted.');\n+                    const abortObj = Object.freeze({});\n                     const errors = [];\n                     const context = new _ValidationContext.ValidationContext(schema, documentAST, typeInfo, error => {\n                         if (errors.length >= maxErrors) {\n-                            throw abortError;\n+                            errors.push(new _GraphQLError.GraphQLError('Too many validation errors, error limit reached. Validation aborted.')); // eslint-disable-next-line @typescript-eslint/no-throw-literal\n+\n+                            throw abortObj;\n                         }\n                         errors.push(error);\n-                    });\n-                    // This uses a specialized visitor which runs multiple visitors in parallel,\n+                    }); // This uses a specialized visitor which runs multiple visitors in parallel,\n                     // while maintaining the visitor skip and break API.\n-                    const visitor = (0, _visitor.visitInParallel)(rules.map(rule => rule(context)));\n-                    // Visit the whole document with each instance of all provided rules.\n+\n+                    const visitor = (0, _visitor.visitInParallel)(rules.map(rule => rule(context))); // Visit the whole document with each instance of all provided rules.\n+\n                     try {\n                         (0, _visitor.visit)(documentAST, (0, _TypeInfo.visitWithTypeInfo)(typeInfo, visitor));\n                     } catch (e) {\n-                        if (e === abortError) {\n-                            errors.push(abortError);\n-                        } else {\n+                        if (e !== abortObj) {\n                             throw e;\n                         }\n                     }\n                     return errors;\n                 }\n                 /**\n                  * @internal\n                  */\n+\n                 function validateSDL(documentAST, schemaToExtend, rules = _specifiedRules.specifiedSDLRules) {\n                     const errors = [];\n                     const context = new _ValidationContext.SDLValidationContext(documentAST, schemaToExtend, error => {\n                         errors.push(error);\n                     });\n                     const visitors = rules.map(rule => rule(context));\n                     (0, _visitor.visit)(documentAST, (0, _visitor.visitInParallel)(visitors));\n@@ -44979,26 +61984,28 @@\n                 }\n                 /**\n                  * Utility function which asserts a SDL document is valid by throwing an error\n                  * if it is invalid.\n                  *\n                  * @internal\n                  */\n+\n                 function assertValidSDL(documentAST) {\n                     const errors = validateSDL(documentAST);\n                     if (errors.length !== 0) {\n                         throw new Error(errors.map(error => error.message).join('\\n\\n'));\n                     }\n                 }\n                 /**\n                  * Utility function which asserts a SDL document is valid by throwing an error\n                  * if it is invalid.\n                  *\n                  * @internal\n                  */\n+\n                 function assertValidSDLExtension(documentAST, schema) {\n                     const errors = validateSDL(documentAST, schema);\n                     if (errors.length !== 0) {\n                         throw new Error(errors.map(error => error.message).join('\\n\\n'));\n                     }\n                 }\n \n@@ -45009,47 +62016,51 @@\n         \"../../../node_modules/graphql/version.mjs\":\n             /*!*************************************************!*\\\n               !*** ../../../node_modules/graphql/version.mjs ***!\n               \\*************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.versionInfo = exports.version = void 0;\n                 // Note: This file is autogenerated using \"resources/gen-version.js\" script and\n                 // automatically updated by \"npm version\" command.\n+\n                 /**\n                  * A string containing the version of the GraphQL.js library\n                  */\n-                const version = exports.version = '17.0.0-alpha.7';\n+                const version = exports.version = '16.9.0';\n                 /**\n                  * An object containing the components of the GraphQL.js version string\n                  */\n+\n                 const versionInfo = exports.versionInfo = Object.freeze({\n-                    major: 17,\n-                    minor: 0,\n+                    major: 16,\n+                    minor: 9,\n                     patch: 0,\n-                    preReleaseTag: 'alpha.7'\n+                    preReleaseTag: null\n                 });\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/hey-listen/dist/hey-listen.es.js\":\n             /*!**************************************************************!*\\\n               !*** ../../../node_modules/hey-listen/dist/hey-listen.es.js ***!\n               \\**************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.warning = exports.invariant = void 0;\n                 var warning = function() {};\n@@ -45076,14 +62087,15 @@\n         \"../../../node_modules/is-plain-object/index.js\":\n             /*!******************************************************!*\\\n               !*** ../../../node_modules/is-plain-object/index.js ***!\n               \\******************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n                 /*!\n                  * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n                  *\n                  * Copyright (c) 2014-2017, Jon Schlinkert.\n                  * Released under the MIT License.\n                  */\n \n@@ -45122,14 +62134,15 @@\n         \"../../../node_modules/is-primitive/index.js\":\n             /*!***************************************************!*\\\n               !*** ../../../node_modules/is-primitive/index.js ***!\n               \\***************************************************/\n             /***/\n             (function(module) {\n \n+                \"use strict\";\n                 /*!\n                  * is-primitive <https://github.com/jonschlinkert/is-primitive>\n                  *\n                  * Copyright (c) 2014-present, Jon Schlinkert.\n                  * Released under the MIT License.\n                  */\n \n@@ -45149,14 +62162,15 @@\n         \"../../../node_modules/isarray/index.js\":\n             /*!**********************************************!*\\\n               !*** ../../../node_modules/isarray/index.js ***!\n               \\**********************************************/\n             /***/\n             (function(module) {\n \n+                \"use strict\";\n \n \n                 var toString = {}.toString;\n                 module.exports = Array.isArray || function(arr) {\n                     return toString.call(arr) == '[object Array]';\n                 };\n \n@@ -45167,14 +62181,15 @@\n         \"../../../node_modules/isobject/index.js\":\n             /*!***********************************************!*\\\n               !*** ../../../node_modules/isobject/index.js ***!\n               \\***********************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n                 /*!\n                  * isobject <https://github.com/jonschlinkert/isobject>\n                  *\n                  * Copyright (c) 2014-2015, Jon Schlinkert.\n                  * Licensed under the MIT License.\n                  */\n \n@@ -45192,14 +62207,15 @@\n         \"../../../node_modules/linkify-it/build/index.cjs.js\":\n             /*!***********************************************************!*\\\n               !*** ../../../node_modules/linkify-it/build/index.cjs.js ***!\n               \\***********************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var uc_micro = __webpack_require__( /*! uc.micro */ \"../../../node_modules/uc.micro/build/index.cjs.js\");\n \n                 function reFactory(opts) {\n                     const re = {};\n                     opts = opts || {};\n@@ -45902,14 +62918,15 @@\n         \"../../../node_modules/markdown-it/dist/index.cjs.js\":\n             /*!***********************************************************!*\\\n               !*** ../../../node_modules/markdown-it/dist/index.cjs.js ***!\n               \\***********************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 var mdurl = __webpack_require__( /*! mdurl */ \"../../../node_modules/mdurl/build/index.cjs.js\");\n                 var ucmicro = __webpack_require__( /*! uc.micro */ \"../../../node_modules/uc.micro/build/index.cjs.js\");\n                 var entities = __webpack_require__( /*! entities */ \"../../../node_modules/entities/lib/index.js\");\n                 var LinkifyIt = __webpack_require__( /*! linkify-it */ \"../../../node_modules/linkify-it/build/index.cjs.js\");\n                 var punycode = __webpack_require__( /*! punycode.js */ \"../../../node_modules/punycode.js/punycode.es6.js\");\n@@ -51554,14 +68571,15 @@\n         \"../../../node_modules/mdurl/build/index.cjs.js\":\n             /*!******************************************************!*\\\n               !*** ../../../node_modules/mdurl/build/index.cjs.js ***!\n               \\******************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 /* eslint-disable no-bitwise */\n                 const decodeCache = {};\n \n                 function getDecodeCache(exclude) {\n                     let cache = decodeCache[exclude];\n@@ -52056,14 +69074,15 @@\n         \"../../../node_modules/meros/browser/index.js\":\n             /*!****************************************************!*\\\n               !*** ../../../node_modules/meros/browser/index.js ***!\n               \\****************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 var e = new TextDecoder();\n                 async function t(t, n) {\n                     if (!t.ok || !t.body || t.bodyUsed) return t;\n                     let i = t.headers.get(\"content-type\");\n                     if (!i || !~i.indexOf(\"multipart/\")) return t;\n@@ -52128,14 +69147,15 @@\n         \"../../../node_modules/nullthrows/nullthrows.js\":\n             /*!******************************************************!*\\\n               !*** ../../../node_modules/nullthrows/nullthrows.js ***!\n               \\******************************************************/\n             /***/\n             (function(module) {\n \n+                \"use strict\";\n \n \n                 function nullthrows(x, message) {\n                     if (x != null) {\n                         return x;\n                     }\n                     var error = new Error(message !== undefined ? message : 'Got unexpected ' + x);\n@@ -52155,14 +69175,15 @@\n         \"../../../node_modules/popmotion/dist/popmotion.cjs.js\":\n             /*!*************************************************************!*\\\n               !*** ../../../node_modules/popmotion/dist/popmotion.cjs.js ***!\n               \\*************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 var tslib = __webpack_require__( /*! tslib */ \"../../../node_modules/tslib/tslib.es6.mjs\");\n                 var heyListen = __webpack_require__( /*! hey-listen */ \"../../../node_modules/hey-listen/dist/hey-listen.es.js\");\n@@ -53156,14 +70177,15 @@\n         \"../../../node_modules/punycode.js/punycode.es6.js\":\n             /*!*********************************************************!*\\\n               !*** ../../../node_modules/punycode.js/punycode.es6.js ***!\n               \\*********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 /** Highest positive signed 32-bit float value */\n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.toUnicode = exports.toASCII = exports.encode = exports[\"default\"] = exports.decode = void 0;\n@@ -53588,21 +70610,316 @@\n                 };\n                 var _default = exports[\"default\"] = punycode;\n \n                 /***/\n             }),\n \n         /***/\n+        \"../../../node_modules/react-compiler-runtime/dist/index.js\":\n+            /*!******************************************************************!*\\\n+              !*** ../../../node_modules/react-compiler-runtime/dist/index.js ***!\n+              \\******************************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n+\n+                /**\n+                 * Copyright (c) Meta Platforms, Inc. and affiliates.\n+                 *\n+                 * This source code is licensed under the MIT license found in the\n+                 * LICENSE file in the root directory of this source tree.\n+                 *\n+                 * @lightSyntaxTransform\n+                 * @noflow\n+                 * @nolint\n+                 * @preventMunge\n+                 * @preserve-invariant-messages\n+                 */\n+\n+                \"use no memo\";\n+                'use strict';\n+\n+                var React = __webpack_require__( /*! react */ \"react\");\n+\n+                function _interopNamespaceDefault(e) {\n+                    var n = Object.create(null);\n+                    if (e) {\n+                        Object.keys(e).forEach(function(k) {\n+                            if (k !== 'default') {\n+                                var d = Object.getOwnPropertyDescriptor(e, k);\n+                                Object.defineProperty(n, k, d.get ? d : {\n+                                    enumerable: true,\n+                                    get: function() {\n+                                        return e[k];\n+                                    }\n+                                });\n+                            }\n+                        });\n+                    }\n+                    n.default = e;\n+                    return Object.freeze(n);\n+                }\n+                var React__namespace = /*#__PURE__*/ _interopNamespaceDefault(React);\n+                var _a, _b;\n+                const {\n+                    useRef,\n+                    useEffect,\n+                    isValidElement\n+                } = React__namespace;\n+                const ReactSecretInternals = (_a = React__namespace.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE) !== null && _a !== void 0 ? _a : React__namespace.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n+                const $empty = Symbol.for('react.memo_cache_sentinel');\n+                const c = typeof((_b = React__namespace.__COMPILER_RUNTIME) === null || _b === void 0 ? void 0 : _b.c) === 'function' ? React__namespace.__COMPILER_RUNTIME.c : function c(size) {\n+                    return React__namespace.useMemo(() => {\n+                        const $ = new Array(size);\n+                        for (let ii = 0; ii < size; ii++) {\n+                            $[ii] = $empty;\n+                        }\n+                        $[$empty] = true;\n+                        return $;\n+                    }, []);\n+                };\n+                const LazyGuardDispatcher = {};\n+                ['readContext', 'useCallback', 'useContext', 'useEffect', 'useImperativeHandle', 'useInsertionEffect', 'useLayoutEffect', 'useMemo', 'useReducer', 'useRef', 'useState', 'useDebugValue', 'useDeferredValue', 'useTransition', 'useMutableSource', 'useSyncExternalStore', 'useId', 'unstable_isNewReconciler', 'getCacheSignal', 'getCacheForType', 'useCacheRefresh'].forEach(name => {\n+                    LazyGuardDispatcher[name] = () => {\n+                        throw new Error(`[React] Unexpected React hook call (${name}) from a React compiled function. ` + \"Check that all hooks are called directly and named according to convention ('use[A-Z]') \");\n+                    };\n+                });\n+                let originalDispatcher = null;\n+                LazyGuardDispatcher['useMemoCache'] = count => {\n+                    if (originalDispatcher == null) {\n+                        throw new Error('React Compiler internal invariant violation: unexpected null dispatcher');\n+                    } else {\n+                        return originalDispatcher.useMemoCache(count);\n+                    }\n+                };\n+                var GuardKind;\n+                (function(GuardKind) {\n+                    GuardKind[GuardKind[\"PushGuardContext\"] = 0] = \"PushGuardContext\";\n+                    GuardKind[GuardKind[\"PopGuardContext\"] = 1] = \"PopGuardContext\";\n+                    GuardKind[GuardKind[\"PushExpectHook\"] = 2] = \"PushExpectHook\";\n+                    GuardKind[GuardKind[\"PopExpectHook\"] = 3] = \"PopExpectHook\";\n+                })(GuardKind || (GuardKind = {}));\n+\n+                function setCurrent(newDispatcher) {\n+                    ReactSecretInternals.ReactCurrentDispatcher.current = newDispatcher;\n+                    return ReactSecretInternals.ReactCurrentDispatcher.current;\n+                }\n+                const guardFrames = [];\n+\n+                function $dispatcherGuard(kind) {\n+                    const curr = ReactSecretInternals.ReactCurrentDispatcher.current;\n+                    if (kind === GuardKind.PushGuardContext) {\n+                        guardFrames.push(curr);\n+                        if (guardFrames.length === 1) {\n+                            originalDispatcher = curr;\n+                        }\n+                        if (curr === LazyGuardDispatcher) {\n+                            throw new Error(`[React] Unexpected call to custom hook or component from a React compiled function. ` + \"Check that (1) all hooks are called directly and named according to convention ('use[A-Z]') \" + 'and (2) components are returned as JSX instead of being directly invoked.');\n+                        }\n+                        setCurrent(LazyGuardDispatcher);\n+                    } else if (kind === GuardKind.PopGuardContext) {\n+                        const lastFrame = guardFrames.pop();\n+                        if (lastFrame == null) {\n+                            throw new Error('React Compiler internal error: unexpected null in guard stack');\n+                        }\n+                        if (guardFrames.length === 0) {\n+                            originalDispatcher = null;\n+                        }\n+                        setCurrent(lastFrame);\n+                    } else if (kind === GuardKind.PushExpectHook) {\n+                        guardFrames.push(curr);\n+                        setCurrent(originalDispatcher);\n+                    } else if (kind === GuardKind.PopExpectHook) {\n+                        const lastFrame = guardFrames.pop();\n+                        if (lastFrame == null) {\n+                            throw new Error('React Compiler internal error: unexpected null in guard stack');\n+                        }\n+                        setCurrent(lastFrame);\n+                    } else {\n+                        throw new Error('React Compiler internal error: unreachable block' + kind);\n+                    }\n+                }\n+\n+                function $reset($) {\n+                    for (let ii = 0; ii < $.length; ii++) {\n+                        $[ii] = $empty;\n+                    }\n+                }\n+\n+                function $makeReadOnly() {\n+                    throw new Error('TODO: implement $makeReadOnly in react-compiler-runtime');\n+                }\n+                const renderCounterRegistry = new Map();\n+\n+                function clearRenderCounterRegistry() {\n+                    for (const counters of renderCounterRegistry.values()) {\n+                        counters.forEach(counter => {\n+                            counter.count = 0;\n+                        });\n+                    }\n+                }\n+\n+                function registerRenderCounter(name, val) {\n+                    let counters = renderCounterRegistry.get(name);\n+                    if (counters == null) {\n+                        counters = new Set();\n+                        renderCounterRegistry.set(name, counters);\n+                    }\n+                    counters.add(val);\n+                }\n+\n+                function removeRenderCounter(name, val) {\n+                    const counters = renderCounterRegistry.get(name);\n+                    if (counters == null) {\n+                        return;\n+                    }\n+                    counters.delete(val);\n+                }\n+\n+                function useRenderCounter(name) {\n+                    const val = useRef(null);\n+                    if (val.current != null) {\n+                        val.current.count += 1;\n+                    }\n+                    useEffect(() => {\n+                        if (val.current == null) {\n+                            const counter = {\n+                                count: 0\n+                            };\n+                            registerRenderCounter(name, counter);\n+                            val.current = counter;\n+                        }\n+                        return () => {\n+                            if (val.current !== null) {\n+                                removeRenderCounter(name, val.current);\n+                            }\n+                        };\n+                    });\n+                }\n+                const seenErrors = new Set();\n+\n+                function $structuralCheck(oldValue, newValue, variableName, fnName, kind, loc) {\n+                    function error(l, r, path, depth) {\n+                        const str = `${fnName}:${loc} [${kind}] ${variableName}${path} changed from ${l} to ${r} at depth ${depth}`;\n+                        if (seenErrors.has(str)) {\n+                            return;\n+                        }\n+                        seenErrors.add(str);\n+                        console.error(str);\n+                    }\n+                    const depthLimit = 2;\n+\n+                    function recur(oldValue, newValue, path, depth) {\n+                        if (depth > depthLimit) {\n+                            return;\n+                        } else if (oldValue === newValue) {\n+                            return;\n+                        } else if (typeof oldValue !== typeof newValue) {\n+                            error(`type ${typeof oldValue}`, `type ${typeof newValue}`, path, depth);\n+                        } else if (typeof oldValue === 'object') {\n+                            const oldArray = Array.isArray(oldValue);\n+                            const newArray = Array.isArray(newValue);\n+                            if (oldValue === null && newValue !== null) {\n+                                error('null', `type ${typeof newValue}`, path, depth);\n+                            } else if (newValue === null) {\n+                                error(`type ${typeof oldValue}`, 'null', path, depth);\n+                            } else if (oldValue instanceof Map) {\n+                                if (!(newValue instanceof Map)) {\n+                                    error(`Map instance`, `other value`, path, depth);\n+                                } else if (oldValue.size !== newValue.size) {\n+                                    error(`Map instance with size ${oldValue.size}`, `Map instance with size ${newValue.size}`, path, depth);\n+                                } else {\n+                                    for (const [k, v] of oldValue) {\n+                                        if (!newValue.has(k)) {\n+                                            error(`Map instance with key ${k}`, `Map instance without key ${k}`, path, depth);\n+                                        } else {\n+                                            recur(v, newValue.get(k), `${path}.get(${k})`, depth + 1);\n+                                        }\n+                                    }\n+                                }\n+                            } else if (newValue instanceof Map) {\n+                                error('other value', `Map instance`, path, depth);\n+                            } else if (oldValue instanceof Set) {\n+                                if (!(newValue instanceof Set)) {\n+                                    error(`Set instance`, `other value`, path, depth);\n+                                } else if (oldValue.size !== newValue.size) {\n+                                    error(`Set instance with size ${oldValue.size}`, `Set instance with size ${newValue.size}`, path, depth);\n+                                } else {\n+                                    for (const v of newValue) {\n+                                        if (!oldValue.has(v)) {\n+                                            error(`Set instance without element ${v}`, `Set instance with element ${v}`, path, depth);\n+                                        }\n+                                    }\n+                                }\n+                            } else if (newValue instanceof Set) {\n+                                error('other value', `Set instance`, path, depth);\n+                            } else if (oldArray || newArray) {\n+                                if (oldArray !== newArray) {\n+                                    error(`type ${oldArray ? 'array' : 'object'}`, `type ${newArray ? 'array' : 'object'}`, path, depth);\n+                                } else if (oldValue.length !== newValue.length) {\n+                                    error(`array with length ${oldValue.length}`, `array with length ${newValue.length}`, path, depth);\n+                                } else {\n+                                    for (let ii = 0; ii < oldValue.length; ii++) {\n+                                        recur(oldValue[ii], newValue[ii], `${path}[${ii}]`, depth + 1);\n+                                    }\n+                                }\n+                            } else if (isValidElement(oldValue) || isValidElement(newValue)) {\n+                                if (isValidElement(oldValue) !== isValidElement(newValue)) {\n+                                    error(`type ${isValidElement(oldValue) ? 'React element' : 'object'}`, `type ${isValidElement(newValue) ? 'React element' : 'object'}`, path, depth);\n+                                } else if (oldValue.type !== newValue.type) {\n+                                    error(`React element of type ${oldValue.type}`, `React element of type ${newValue.type}`, path, depth);\n+                                } else {\n+                                    recur(oldValue.props, newValue.props, `[props of ${path}]`, depth + 1);\n+                                }\n+                            } else {\n+                                for (const key in newValue) {\n+                                    if (!(key in oldValue)) {\n+                                        error(`object without key ${key}`, `object with key ${key}`, path, depth);\n+                                    }\n+                                }\n+                                for (const key in oldValue) {\n+                                    if (!(key in newValue)) {\n+                                        error(`object with key ${key}`, `object without key ${key}`, path, depth);\n+                                    } else {\n+                                        recur(oldValue[key], newValue[key], `${path}.${key}`, depth + 1);\n+                                    }\n+                                }\n+                            }\n+                        } else if (typeof oldValue === 'function') {\n+                            return;\n+                        } else if (isNaN(oldValue) || isNaN(newValue)) {\n+                            if (isNaN(oldValue) !== isNaN(newValue)) {\n+                                error(`${isNaN(oldValue) ? 'NaN' : 'non-NaN value'}`, `${isNaN(newValue) ? 'NaN' : 'non-NaN value'}`, path, depth);\n+                            }\n+                        } else if (oldValue !== newValue) {\n+                            error(oldValue, newValue, path, depth);\n+                        }\n+                    }\n+                    recur(oldValue, newValue, '', 0);\n+                }\n+                exports.$dispatcherGuard = $dispatcherGuard;\n+                exports.$makeReadOnly = $makeReadOnly;\n+                exports.$reset = $reset;\n+                exports.$structuralCheck = $structuralCheck;\n+                exports.c = c;\n+                exports.clearRenderCounterRegistry = clearRenderCounterRegistry;\n+                exports.renderCounterRegistry = renderCounterRegistry;\n+                exports.useRenderCounter = useRenderCounter;\n+\n+                /***/\n+            }),\n+\n+        /***/\n         \"../../../node_modules/react-remove-scroll-bar/dist/es2015/component.js\":\n             /*!******************************************************************************!*\\\n               !*** ../../../node_modules/react-remove-scroll-bar/dist/es2015/component.js ***!\n               \\******************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.RemoveScrollBar = void 0;\n                 var React = _interopRequireWildcard(__webpack_require__( /*! react */ \"react\"));\n@@ -53674,14 +70991,15 @@\n         \"../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js\":\n             /*!******************************************************************************!*\\\n               !*** ../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js ***!\n               \\******************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.zeroRightClassName = exports.removedBarSizeVariable = exports.noScrollbarsClassName = exports.fullWidthClassName = void 0;\n                 var zeroRightClassName = exports.zeroRightClassName = 'right-scroll-bar-position';\n@@ -53700,14 +71018,15 @@\n         \"../../../node_modules/react-remove-scroll-bar/dist/es2015/index.js\":\n             /*!**************************************************************************!*\\\n               !*** ../../../node_modules/react-remove-scroll-bar/dist/es2015/index.js ***!\n               \\**************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"RemoveScrollBar\", ({\n                     enumerable: true,\n@@ -53756,14 +71075,15 @@\n         \"../../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js\":\n             /*!**************************************************************************!*\\\n               !*** ../../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js ***!\n               \\**************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.zeroGap = exports.getGapWidth = void 0;\n                 var zeroGap = exports.zeroGap = {\n@@ -53813,14 +71133,15 @@\n         \"../../../node_modules/react-remove-scroll/dist/es2015/Combination.js\":\n             /*!****************************************************************************!*\\\n               !*** ../../../node_modules/react-remove-scroll/dist/es2015/Combination.js ***!\n               \\****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports[\"default\"] = void 0;\n                 var _tslib = __webpack_require__( /*! tslib */ \"../../../node_modules/tslib/tslib.es6.mjs\");\n@@ -53876,14 +71197,15 @@\n         \"../../../node_modules/react-remove-scroll/dist/es2015/SideEffect.js\":\n             /*!***************************************************************************!*\\\n               !*** ../../../node_modules/react-remove-scroll/dist/es2015/SideEffect.js ***!\n               \\***************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.RemoveScrollSideCar = RemoveScrollSideCar;\n                 exports.getTouchXY = exports.getDeltaXY = void 0;\n@@ -54095,14 +71417,15 @@\n         \"../../../node_modules/react-remove-scroll/dist/es2015/UI.js\":\n             /*!*******************************************************************!*\\\n               !*** ../../../node_modules/react-remove-scroll/dist/es2015/UI.js ***!\n               \\*******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.RemoveScroll = void 0;\n                 var _tslib = __webpack_require__( /*! tslib */ \"../../../node_modules/tslib/tslib.es6.mjs\");\n@@ -54201,14 +71524,15 @@\n         \"../../../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js\":\n             /*!*********************************************************************************!*\\\n               !*** ../../../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js ***!\n               \\*********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.nonPassive = void 0;\n                 var passiveSupported = false;\n@@ -54239,14 +71563,15 @@\n         \"../../../node_modules/react-remove-scroll/dist/es2015/handleScroll.js\":\n             /*!*****************************************************************************!*\\\n               !*** ../../../node_modules/react-remove-scroll/dist/es2015/handleScroll.js ***!\n               \\*****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.locationCouldBeScrolled = exports.handleScroll = void 0;\n                 var alwaysContainsScroll = function(node) {\n@@ -54359,14 +71684,15 @@\n         \"../../../node_modules/react-remove-scroll/dist/es2015/index.js\":\n             /*!**********************************************************************!*\\\n               !*** ../../../node_modules/react-remove-scroll/dist/es2015/index.js ***!\n               \\**********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"RemoveScroll\", ({\n                     enumerable: true,\n@@ -54389,14 +71715,15 @@\n         \"../../../node_modules/react-remove-scroll/dist/es2015/medium.js\":\n             /*!***********************************************************************!*\\\n               !*** ../../../node_modules/react-remove-scroll/dist/es2015/medium.js ***!\n               \\***********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.effectCar = void 0;\n                 var _useSidecar = __webpack_require__( /*! use-sidecar */ \"../../../node_modules/use-sidecar/dist/es2015/index.js\");\n@@ -54409,14 +71736,15 @@\n         \"../../../node_modules/react-remove-scroll/dist/es2015/sidecar.js\":\n             /*!************************************************************************!*\\\n               !*** ../../../node_modules/react-remove-scroll/dist/es2015/sidecar.js ***!\n               \\************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports[\"default\"] = void 0;\n                 var _useSidecar = __webpack_require__( /*! use-sidecar */ \"../../../node_modules/use-sidecar/dist/es2015/index.js\");\n@@ -54431,14 +71759,15 @@\n         \"../../../node_modules/react-style-singleton/dist/es2015/component.js\":\n             /*!****************************************************************************!*\\\n               !*** ../../../node_modules/react-style-singleton/dist/es2015/component.js ***!\n               \\****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.styleSingleton = void 0;\n                 var _hook = __webpack_require__( /*! ./hook */ \"../../../node_modules/react-style-singleton/dist/es2015/hook.js\");\n@@ -54467,14 +71796,15 @@\n         \"../../../node_modules/react-style-singleton/dist/es2015/hook.js\":\n             /*!***********************************************************************!*\\\n               !*** ../../../node_modules/react-style-singleton/dist/es2015/hook.js ***!\n               \\***********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.styleHookSingleton = void 0;\n                 var React = _interopRequireWildcard(__webpack_require__( /*! react */ \"react\"));\n@@ -54535,14 +71865,15 @@\n         \"../../../node_modules/react-style-singleton/dist/es2015/index.js\":\n             /*!************************************************************************!*\\\n               !*** ../../../node_modules/react-style-singleton/dist/es2015/index.js ***!\n               \\************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"styleHookSingleton\", ({\n                     enumerable: true,\n@@ -54573,14 +71904,15 @@\n         \"../../../node_modules/react-style-singleton/dist/es2015/singleton.js\":\n             /*!****************************************************************************!*\\\n               !*** ../../../node_modules/react-style-singleton/dist/es2015/singleton.js ***!\n               \\****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.stylesheetSingleton = void 0;\n                 var _getNonce = __webpack_require__( /*! get-nonce */ \"../../../node_modules/get-nonce/dist/es2015/index.js\");\n@@ -54641,14 +71973,15 @@\n         \"../../../node_modules/react/cjs/react-jsx-runtime.development.js\":\n             /*!************************************************************************!*\\\n               !*** ../../../node_modules/react/cjs/react-jsx-runtime.development.js ***!\n               \\************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n                 /**\n                  * @license React\n                  * react-jsx-runtime.development.js\n                  *\n                  * Copyright (c) Facebook, Inc. and its affiliates.\n                  *\n                  * This source code is licensed under the MIT license found in the\n@@ -55805,14 +73138,15 @@\n         \"../../../node_modules/react/jsx-runtime.js\":\n             /*!**************************************************!*\\\n               !*** ../../../node_modules/react/jsx-runtime.js ***!\n               \\**************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 if (false) {} else {\n                     module.exports = __webpack_require__( /*! ./cjs/react-jsx-runtime.development.js */ \"../../../node_modules/react/cjs/react-jsx-runtime.development.js\");\n                 }\n \n                 /***/\n@@ -55822,14 +73156,15 @@\n         \"../../../node_modules/set-value/index.js\":\n             /*!************************************************!*\\\n               !*** ../../../node_modules/set-value/index.js ***!\n               \\************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n                 /*!\n                  * set-value <https://github.com/jonschlinkert/set-value>\n                  *\n                  * Copyright (c) Jon Schlinkert (https://github.com/jonschlinkert).\n                  * Released under the MIT License.\n                  */\n \n@@ -55971,14 +73306,15 @@\n         \"../../../node_modules/style-value-types/dist/valueTypes.cjs.js\":\n             /*!**********************************************************************!*\\\n               !*** ../../../node_modules/style-value-types/dist/valueTypes.cjs.js ***!\n               \\**********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 const clamp = (min, max) => v => Math.max(Math.min(v, max), min);\n                 const sanitize = v => v % 1 ? Number(v.toFixed(5)) : v;\n@@ -56206,14 +73542,15 @@\n         \"../../../node_modules/toggle-selection/index.js\":\n             /*!*******************************************************!*\\\n               !*** ../../../node_modules/toggle-selection/index.js ***!\n               \\*******************************************************/\n             /***/\n             (function(module) {\n \n+                \"use strict\";\n \n \n                 module.exports = function() {\n                     var selection = document.getSelection();\n                     if (!selection.rangeCount) {\n                         return function() {};\n                     }\n@@ -56251,14 +73588,15 @@\n         \"../../../node_modules/tslib/tslib.es6.mjs\":\n             /*!*************************************************!*\\\n               !*** ../../../node_modules/tslib/tslib.es6.mjs ***!\n               \\*************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.__addDisposableResource = __addDisposableResource;\n                 exports.__assign = void 0;\n@@ -56873,14 +74211,15 @@\n         \"../../../node_modules/uc.micro/build/index.cjs.js\":\n             /*!*********************************************************!*\\\n               !*** ../../../node_modules/uc.micro/build/index.cjs.js ***!\n               \\*********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 var regex$5 = /[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n                 var regex$4 = /[\\0-\\x1F\\x7F-\\x9F]/;\n                 var regex$3 = /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD80D[\\uDC30-\\uDC3F]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/;\n                 var regex$2 = /[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDEAD\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2\\uDF00-\\uDF09]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDF43-\\uDF4F\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/;\n                 var regex$1 = /[\\$\\+<->\\^`\\|~\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u07FE\\u07FF\\u0888\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20C0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2E50\\u2E51\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFF\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u31EF\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uAB6A\\uAB6B\\uFB29\\uFBB2-\\uFBC2\\uFD40-\\uFD4F\\uFDCF\\uFDFC-\\uFDFF\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD]|\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9C\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD833[\\uDF50-\\uDFC3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDEA\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838[\\uDD4F\\uDEFF]|\\uD83B[\\uDCAC\\uDCB0\\uDD2E\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD0D-\\uDDAD\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED7\\uDEDC-\\uDEEC\\uDEF0-\\uDEFC\\uDF00-\\uDF76\\uDF7B-\\uDFD9\\uDFE0-\\uDFEB\\uDFF0]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDCB0\\uDCB1\\uDD00-\\uDE53\\uDE60-\\uDE6D\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC5\\uDECE-\\uDEDB\\uDEE0-\\uDEE8\\uDEF0-\\uDEF8\\uDF00-\\uDF92\\uDF94-\\uDFCA]/;\n@@ -56899,14 +74238,15 @@\n         \"../../../node_modules/use-callback-ref/dist/es2015/assignRef.js\":\n             /*!***********************************************************************!*\\\n               !*** ../../../node_modules/use-callback-ref/dist/es2015/assignRef.js ***!\n               \\***********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.assignRef = assignRef;\n                 /**\n@@ -56938,14 +74278,15 @@\n         \"../../../node_modules/use-callback-ref/dist/es2015/createRef.js\":\n             /*!***********************************************************************!*\\\n               !*** ../../../node_modules/use-callback-ref/dist/es2015/createRef.js ***!\n               \\***********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.createCallbackRef = createCallbackRef;\n                 /**\n@@ -56979,14 +74320,15 @@\n         \"../../../node_modules/use-callback-ref/dist/es2015/index.js\":\n             /*!*******************************************************************!*\\\n               !*** ../../../node_modules/use-callback-ref/dist/es2015/index.js ***!\n               \\*******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"assignRef\", ({\n                     enumerable: true,\n@@ -57058,14 +74400,15 @@\n         \"../../../node_modules/use-callback-ref/dist/es2015/mergeRef.js\":\n             /*!**********************************************************************!*\\\n               !*** ../../../node_modules/use-callback-ref/dist/es2015/mergeRef.js ***!\n               \\**********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.mergeRefs = mergeRefs;\n                 var _assignRef = __webpack_require__( /*! ./assignRef */ \"../../../node_modules/use-callback-ref/dist/es2015/assignRef.js\");\n@@ -57098,14 +74441,15 @@\n         \"../../../node_modules/use-callback-ref/dist/es2015/refToCallback.js\":\n             /*!***************************************************************************!*\\\n               !*** ../../../node_modules/use-callback-ref/dist/es2015/refToCallback.js ***!\n               \\***************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.refToCallback = refToCallback;\n                 exports.useRefToCallback = useRefToCallback;\n@@ -57166,14 +74510,15 @@\n         \"../../../node_modules/use-callback-ref/dist/es2015/transformRef.js\":\n             /*!**************************************************************************!*\\\n               !*** ../../../node_modules/use-callback-ref/dist/es2015/transformRef.js ***!\n               \\**************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.transformRef = transformRef;\n                 var _assignRef = __webpack_require__( /*! ./assignRef */ \"../../../node_modules/use-callback-ref/dist/es2015/assignRef.js\");\n@@ -57200,14 +74545,15 @@\n         \"../../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js\":\n             /*!*************************************************************************!*\\\n               !*** ../../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js ***!\n               \\*************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.useMergeRefs = useMergeRefs;\n                 var _assignRef = __webpack_require__( /*! ./assignRef */ \"../../../node_modules/use-callback-ref/dist/es2015/assignRef.js\");\n@@ -57241,14 +74587,15 @@\n         \"../../../node_modules/use-callback-ref/dist/es2015/useRef.js\":\n             /*!********************************************************************!*\\\n               !*** ../../../node_modules/use-callback-ref/dist/es2015/useRef.js ***!\n               \\********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.useCallbackRef = useCallbackRef;\n                 var _react = __webpack_require__( /*! react */ \"react\");\n@@ -57300,14 +74647,15 @@\n         \"../../../node_modules/use-callback-ref/dist/es2015/useTransformRef.js\":\n             /*!*****************************************************************************!*\\\n               !*** ../../../node_modules/use-callback-ref/dist/es2015/useTransformRef.js ***!\n               \\*****************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.useTransformRef = useTransformRef;\n                 var _assignRef = __webpack_require__( /*! ./assignRef */ \"../../../node_modules/use-callback-ref/dist/es2015/assignRef.js\");\n@@ -57338,14 +74686,15 @@\n         \"../../../node_modules/use-sidecar/dist/es2015/config.js\":\n             /*!***************************************************************!*\\\n               !*** ../../../node_modules/use-sidecar/dist/es2015/config.js ***!\n               \\***************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.setConfig = exports.config = void 0;\n                 var config = exports.config = {\n@@ -57365,14 +74714,15 @@\n         \"../../../node_modules/use-sidecar/dist/es2015/env.js\":\n             /*!************************************************************!*\\\n               !*** ../../../node_modules/use-sidecar/dist/es2015/env.js ***!\n               \\************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.env = void 0;\n                 var _detectNodeEs = __webpack_require__( /*! detect-node-es */ \"../../../node_modules/detect-node-es/esm/browser.js\");\n@@ -57388,14 +74738,15 @@\n         \"../../../node_modules/use-sidecar/dist/es2015/exports.js\":\n             /*!****************************************************************!*\\\n               !*** ../../../node_modules/use-sidecar/dist/es2015/exports.js ***!\n               \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.exportSidecar = exportSidecar;\n                 var _tslib = __webpack_require__( /*! tslib */ \"../../../node_modules/tslib/tslib.es6.mjs\");\n@@ -57453,14 +74804,15 @@\n         \"../../../node_modules/use-sidecar/dist/es2015/hoc.js\":\n             /*!************************************************************!*\\\n               !*** ../../../node_modules/use-sidecar/dist/es2015/hoc.js ***!\n               \\************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.sidecar = sidecar;\n                 var _tslib = __webpack_require__( /*! tslib */ \"../../../node_modules/tslib/tslib.es6.mjs\");\n@@ -57517,14 +74869,15 @@\n         \"../../../node_modules/use-sidecar/dist/es2015/hook.js\":\n             /*!*************************************************************!*\\\n               !*** ../../../node_modules/use-sidecar/dist/es2015/hook.js ***!\n               \\*************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.useSidecar = useSidecar;\n                 var _react = __webpack_require__( /*! react */ \"react\");\n@@ -57591,14 +74944,15 @@\n         \"../../../node_modules/use-sidecar/dist/es2015/index.js\":\n             /*!**************************************************************!*\\\n               !*** ../../../node_modules/use-sidecar/dist/es2015/index.js ***!\n               \\**************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"createMedium\", ({\n                     enumerable: true,\n@@ -57656,14 +75010,15 @@\n         \"../../../node_modules/use-sidecar/dist/es2015/medium.js\":\n             /*!***************************************************************!*\\\n               !*** ../../../node_modules/use-sidecar/dist/es2015/medium.js ***!\n               \\***************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.createMedium = createMedium;\n                 exports.createSidecarMedium = createSidecarMedium;\n@@ -57773,14 +75128,15 @@\n         \"../../../node_modules/use-sidecar/dist/es2015/renderProp.js\":\n             /*!*******************************************************************!*\\\n               !*** ../../../node_modules/use-sidecar/dist/es2015/renderProp.js ***!\n               \\*******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.renderCar = renderCar;\n                 var _tslib = __webpack_require__( /*! tslib */ \"../../../node_modules/tslib/tslib.es6.mjs\");\n@@ -57870,14 +75226,15 @@\n         \"../../../node_modules/vscode-languageserver-types/lib/esm/main.js\":\n             /*!*************************************************************************!*\\\n               !*** ../../../node_modules/vscode-languageserver-types/lib/esm/main.js ***!\n               \\*************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n                 /* --------------------------------------------------------------------------------------------\n                  * Copyright (c) Microsoft Corporation. All rights reserved.\n                  * Licensed under the MIT License. See License.txt in the project root for license information.\n                  * ------------------------------------------------------------------------------------------ */\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n@@ -59208,14139 +76565,1712 @@\n                  */\n                 var ParameterInformation;\n                 (function(ParameterInformation) {\n                     /**\n                      * Creates a new parameter information literal.\n                      *\n                      * @param label A label string.\n-                     * @param documentation A doc string.\n-                     */\n-                    function create(label, documentation) {\n-                        return documentation ? {\n-                            label: label,\n-                            documentation: documentation\n-                        } : {\n-                            label: label\n-                        };\n-                    }\n-                    ParameterInformation.create = create;\n-                })(ParameterInformation || (exports.ParameterInformation = ParameterInformation = {}));\n-                /**\n-                 * The SignatureInformation namespace provides helper functions to work with\n-                 * {@link SignatureInformation} literals.\n-                 */\n-                var SignatureInformation;\n-                (function(SignatureInformation) {\n-                    function create(label, documentation) {\n-                        var parameters = [];\n-                        for (var _i = 2; _i < arguments.length; _i++) {\n-                            parameters[_i - 2] = arguments[_i];\n-                        }\n-                        var result = {\n-                            label: label\n-                        };\n-                        if (Is.defined(documentation)) {\n-                            result.documentation = documentation;\n-                        }\n-                        if (Is.defined(parameters)) {\n-                            result.parameters = parameters;\n-                        } else {\n-                            result.parameters = [];\n-                        }\n-                        return result;\n-                    }\n-                    SignatureInformation.create = create;\n-                })(SignatureInformation || (exports.SignatureInformation = SignatureInformation = {}));\n-                /**\n-                 * A document highlight kind.\n-                 */\n-                var DocumentHighlightKind;\n-                (function(DocumentHighlightKind) {\n-                    /**\n-                     * A textual occurrence.\n-                     */\n-                    DocumentHighlightKind.Text = 1;\n-                    /**\n-                     * Read-access of a symbol, like reading a variable.\n-                     */\n-                    DocumentHighlightKind.Read = 2;\n-                    /**\n-                     * Write-access of a symbol, like writing to a variable.\n-                     */\n-                    DocumentHighlightKind.Write = 3;\n-                })(DocumentHighlightKind || (exports.DocumentHighlightKind = DocumentHighlightKind = {}));\n-                /**\n-                 * DocumentHighlight namespace to provide helper functions to work with\n-                 * {@link DocumentHighlight} literals.\n-                 */\n-                var DocumentHighlight;\n-                (function(DocumentHighlight) {\n-                    /**\n-                     * Create a DocumentHighlight object.\n-                     * @param range The range the highlight applies to.\n-                     * @param kind The highlight kind\n-                     */\n-                    function create(range, kind) {\n-                        var result = {\n-                            range: range\n-                        };\n-                        if (Is.number(kind)) {\n-                            result.kind = kind;\n-                        }\n-                        return result;\n-                    }\n-                    DocumentHighlight.create = create;\n-                })(DocumentHighlight || (exports.DocumentHighlight = DocumentHighlight = {}));\n-                /**\n-                 * A symbol kind.\n-                 */\n-                var SymbolKind;\n-                (function(SymbolKind) {\n-                    SymbolKind.File = 1;\n-                    SymbolKind.Module = 2;\n-                    SymbolKind.Namespace = 3;\n-                    SymbolKind.Package = 4;\n-                    SymbolKind.Class = 5;\n-                    SymbolKind.Method = 6;\n-                    SymbolKind.Property = 7;\n-                    SymbolKind.Field = 8;\n-                    SymbolKind.Constructor = 9;\n-                    SymbolKind.Enum = 10;\n-                    SymbolKind.Interface = 11;\n-                    SymbolKind.Function = 12;\n-                    SymbolKind.Variable = 13;\n-                    SymbolKind.Constant = 14;\n-                    SymbolKind.String = 15;\n-                    SymbolKind.Number = 16;\n-                    SymbolKind.Boolean = 17;\n-                    SymbolKind.Array = 18;\n-                    SymbolKind.Object = 19;\n-                    SymbolKind.Key = 20;\n-                    SymbolKind.Null = 21;\n-                    SymbolKind.EnumMember = 22;\n-                    SymbolKind.Struct = 23;\n-                    SymbolKind.Event = 24;\n-                    SymbolKind.Operator = 25;\n-                    SymbolKind.TypeParameter = 26;\n-                })(SymbolKind || (exports.SymbolKind = SymbolKind = {}));\n-                /**\n-                 * Symbol tags are extra annotations that tweak the rendering of a symbol.\n-                 *\n-                 * @since 3.16\n-                 */\n-                var SymbolTag;\n-                (function(SymbolTag) {\n-                    /**\n-                     * Render a symbol as obsolete, usually using a strike-out.\n-                     */\n-                    SymbolTag.Deprecated = 1;\n-                })(SymbolTag || (exports.SymbolTag = SymbolTag = {}));\n-                var SymbolInformation;\n-                (function(SymbolInformation) {\n-                    /**\n-                     * Creates a new symbol information literal.\n-                     *\n-                     * @param name The name of the symbol.\n-                     * @param kind The kind of the symbol.\n-                     * @param range The range of the location of the symbol.\n-                     * @param uri The resource of the location of symbol.\n-                     * @param containerName The name of the symbol containing the symbol.\n-                     */\n-                    function create(name, kind, range, uri, containerName) {\n-                        var result = {\n-                            name: name,\n-                            kind: kind,\n-                            location: {\n-                                uri: uri,\n-                                range: range\n-                            }\n-                        };\n-                        if (containerName) {\n-                            result.containerName = containerName;\n-                        }\n-                        return result;\n-                    }\n-                    SymbolInformation.create = create;\n-                })(SymbolInformation || (exports.SymbolInformation = SymbolInformation = {}));\n-                var WorkspaceSymbol;\n-                (function(WorkspaceSymbol) {\n-                    /**\n-                     * Create a new workspace symbol.\n-                     *\n-                     * @param name The name of the symbol.\n-                     * @param kind The kind of the symbol.\n-                     * @param uri The resource of the location of the symbol.\n-                     * @param range An options range of the location.\n-                     * @returns A WorkspaceSymbol.\n-                     */\n-                    function create(name, kind, uri, range) {\n-                        return range !== undefined ? {\n-                            name: name,\n-                            kind: kind,\n-                            location: {\n-                                uri: uri,\n-                                range: range\n-                            }\n-                        } : {\n-                            name: name,\n-                            kind: kind,\n-                            location: {\n-                                uri: uri\n-                            }\n-                        };\n-                    }\n-                    WorkspaceSymbol.create = create;\n-                })(WorkspaceSymbol || (exports.WorkspaceSymbol = WorkspaceSymbol = {}));\n-                var DocumentSymbol;\n-                (function(DocumentSymbol) {\n-                    /**\n-                     * Creates a new symbol information literal.\n-                     *\n-                     * @param name The name of the symbol.\n-                     * @param detail The detail of the symbol.\n-                     * @param kind The kind of the symbol.\n-                     * @param range The range of the symbol.\n-                     * @param selectionRange The selectionRange of the symbol.\n-                     * @param children Children of the symbol.\n-                     */\n-                    function create(name, detail, kind, range, selectionRange, children) {\n-                        var result = {\n-                            name: name,\n-                            detail: detail,\n-                            kind: kind,\n-                            range: range,\n-                            selectionRange: selectionRange\n-                        };\n-                        if (children !== undefined) {\n-                            result.children = children;\n-                        }\n-                        return result;\n-                    }\n-                    DocumentSymbol.create = create;\n-                    /**\n-                     * Checks whether the given literal conforms to the {@link DocumentSymbol} interface.\n-                     */\n-                    function is(value) {\n-                        var candidate = value;\n-                        return candidate && Is.string(candidate.name) && Is.number(candidate.kind) && Range.is(candidate.range) && Range.is(candidate.selectionRange) && (candidate.detail === undefined || Is.string(candidate.detail)) && (candidate.deprecated === undefined || Is.boolean(candidate.deprecated)) && (candidate.children === undefined || Array.isArray(candidate.children)) && (candidate.tags === undefined || Array.isArray(candidate.tags));\n-                    }\n-                    DocumentSymbol.is = is;\n-                })(DocumentSymbol || (exports.DocumentSymbol = DocumentSymbol = {}));\n-                /**\n-                 * A set of predefined code action kinds\n-                 */\n-                var CodeActionKind;\n-                (function(CodeActionKind) {\n-                    /**\n-                     * Empty kind.\n-                     */\n-                    CodeActionKind.Empty = '';\n-                    /**\n-                     * Base kind for quickfix actions: 'quickfix'\n-                     */\n-                    CodeActionKind.QuickFix = 'quickfix';\n-                    /**\n-                     * Base kind for refactoring actions: 'refactor'\n-                     */\n-                    CodeActionKind.Refactor = 'refactor';\n-                    /**\n-                     * Base kind for refactoring extraction actions: 'refactor.extract'\n-                     *\n-                     * Example extract actions:\n-                     *\n-                     * - Extract method\n-                     * - Extract function\n-                     * - Extract variable\n-                     * - Extract interface from class\n-                     * - ...\n-                     */\n-                    CodeActionKind.RefactorExtract = 'refactor.extract';\n-                    /**\n-                     * Base kind for refactoring inline actions: 'refactor.inline'\n-                     *\n-                     * Example inline actions:\n-                     *\n-                     * - Inline function\n-                     * - Inline variable\n-                     * - Inline constant\n-                     * - ...\n-                     */\n-                    CodeActionKind.RefactorInline = 'refactor.inline';\n-                    /**\n-                     * Base kind for refactoring rewrite actions: 'refactor.rewrite'\n-                     *\n-                     * Example rewrite actions:\n-                     *\n-                     * - Convert JavaScript function to class\n-                     * - Add or remove parameter\n-                     * - Encapsulate field\n-                     * - Make method static\n-                     * - Move method to base class\n-                     * - ...\n-                     */\n-                    CodeActionKind.RefactorRewrite = 'refactor.rewrite';\n-                    /**\n-                     * Base kind for source actions: `source`\n-                     *\n-                     * Source code actions apply to the entire file.\n-                     */\n-                    CodeActionKind.Source = 'source';\n-                    /**\n-                     * Base kind for an organize imports source action: `source.organizeImports`\n-                     */\n-                    CodeActionKind.SourceOrganizeImports = 'source.organizeImports';\n-                    /**\n-                     * Base kind for auto-fix source actions: `source.fixAll`.\n-                     *\n-                     * Fix all actions automatically fix errors that have a clear fix that do not require user input.\n-                     * They should not suppress errors or perform unsafe fixes such as generating new types or classes.\n-                     *\n-                     * @since 3.15.0\n-                     */\n-                    CodeActionKind.SourceFixAll = 'source.fixAll';\n-                })(CodeActionKind || (exports.CodeActionKind = CodeActionKind = {}));\n-                /**\n-                 * The reason why code actions were requested.\n-                 *\n-                 * @since 3.17.0\n-                 */\n-                var CodeActionTriggerKind;\n-                (function(CodeActionTriggerKind) {\n-                    /**\n-                     * Code actions were explicitly requested by the user or by an extension.\n-                     */\n-                    CodeActionTriggerKind.Invoked = 1;\n-                    /**\n-                     * Code actions were requested automatically.\n-                     *\n-                     * This typically happens when current selection in a file changes, but can\n-                     * also be triggered when file content changes.\n-                     */\n-                    CodeActionTriggerKind.Automatic = 2;\n-                })(CodeActionTriggerKind || (exports.CodeActionTriggerKind = CodeActionTriggerKind = {}));\n-                /**\n-                 * The CodeActionContext namespace provides helper functions to work with\n-                 * {@link CodeActionContext} literals.\n-                 */\n-                var CodeActionContext;\n-                (function(CodeActionContext) {\n-                    /**\n-                     * Creates a new CodeActionContext literal.\n-                     */\n-                    function create(diagnostics, only, triggerKind) {\n-                        var result = {\n-                            diagnostics: diagnostics\n-                        };\n-                        if (only !== undefined && only !== null) {\n-                            result.only = only;\n-                        }\n-                        if (triggerKind !== undefined && triggerKind !== null) {\n-                            result.triggerKind = triggerKind;\n-                        }\n-                        return result;\n-                    }\n-                    CodeActionContext.create = create;\n-                    /**\n-                     * Checks whether the given literal conforms to the {@link CodeActionContext} interface.\n-                     */\n-                    function is(value) {\n-                        var candidate = value;\n-                        return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === undefined || Is.typedArray(candidate.only, Is.string)) && (candidate.triggerKind === undefined || candidate.triggerKind === CodeActionTriggerKind.Invoked || candidate.triggerKind === CodeActionTriggerKind.Automatic);\n-                    }\n-                    CodeActionContext.is = is;\n-                })(CodeActionContext || (exports.CodeActionContext = CodeActionContext = {}));\n-                var CodeAction;\n-                (function(CodeAction) {\n-                    function create(title, kindOrCommandOrEdit, kind) {\n-                        var result = {\n-                            title: title\n-                        };\n-                        var checkKind = true;\n-                        if (typeof kindOrCommandOrEdit === 'string') {\n-                            checkKind = false;\n-                            result.kind = kindOrCommandOrEdit;\n-                        } else if (Command.is(kindOrCommandOrEdit)) {\n-                            result.command = kindOrCommandOrEdit;\n-                        } else {\n-                            result.edit = kindOrCommandOrEdit;\n-                        }\n-                        if (checkKind && kind !== undefined) {\n-                            result.kind = kind;\n-                        }\n-                        return result;\n-                    }\n-                    CodeAction.create = create;\n-\n-                    function is(value) {\n-                        var candidate = value;\n-                        return candidate && Is.string(candidate.title) && (candidate.diagnostics === undefined || Is.typedArray(candidate.diagnostics, Diagnostic.is)) && (candidate.kind === undefined || Is.string(candidate.kind)) && (candidate.edit !== undefined || candidate.command !== undefined) && (candidate.command === undefined || Command.is(candidate.command)) && (candidate.isPreferred === undefined || Is.boolean(candidate.isPreferred)) && (candidate.edit === undefined || WorkspaceEdit.is(candidate.edit));\n-                    }\n-                    CodeAction.is = is;\n-                })(CodeAction || (exports.CodeAction = CodeAction = {}));\n-                /**\n-                 * The CodeLens namespace provides helper functions to work with\n-                 * {@link CodeLens} literals.\n-                 */\n-                var CodeLens;\n-                (function(CodeLens) {\n-                    /**\n-                     * Creates a new CodeLens literal.\n-                     */\n-                    function create(range, data) {\n-                        var result = {\n-                            range: range\n-                        };\n-                        if (Is.defined(data)) {\n-                            result.data = data;\n-                        }\n-                        return result;\n-                    }\n-                    CodeLens.create = create;\n-                    /**\n-                     * Checks whether the given literal conforms to the {@link CodeLens} interface.\n-                     */\n-                    function is(value) {\n-                        var candidate = value;\n-                        return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));\n-                    }\n-                    CodeLens.is = is;\n-                })(CodeLens || (exports.CodeLens = CodeLens = {}));\n-                /**\n-                 * The FormattingOptions namespace provides helper functions to work with\n-                 * {@link FormattingOptions} literals.\n-                 */\n-                var FormattingOptions;\n-                (function(FormattingOptions) {\n-                    /**\n-                     * Creates a new FormattingOptions literal.\n-                     */\n-                    function create(tabSize, insertSpaces) {\n-                        return {\n-                            tabSize: tabSize,\n-                            insertSpaces: insertSpaces\n-                        };\n-                    }\n-                    FormattingOptions.create = create;\n-                    /**\n-                     * Checks whether the given literal conforms to the {@link FormattingOptions} interface.\n-                     */\n-                    function is(value) {\n-                        var candidate = value;\n-                        return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\n-                    }\n-                    FormattingOptions.is = is;\n-                })(FormattingOptions || (exports.FormattingOptions = FormattingOptions = {}));\n-                /**\n-                 * The DocumentLink namespace provides helper functions to work with\n-                 * {@link DocumentLink} literals.\n-                 */\n-                var DocumentLink;\n-                (function(DocumentLink) {\n-                    /**\n-                     * Creates a new DocumentLink literal.\n-                     */\n-                    function create(range, target, data) {\n-                        return {\n-                            range: range,\n-                            target: target,\n-                            data: data\n-                        };\n-                    }\n-                    DocumentLink.create = create;\n-                    /**\n-                     * Checks whether the given literal conforms to the {@link DocumentLink} interface.\n-                     */\n-                    function is(value) {\n-                        var candidate = value;\n-                        return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));\n-                    }\n-                    DocumentLink.is = is;\n-                })(DocumentLink || (exports.DocumentLink = DocumentLink = {}));\n-                /**\n-                 * The SelectionRange namespace provides helper function to work with\n-                 * SelectionRange literals.\n-                 */\n-                var SelectionRange;\n-                (function(SelectionRange) {\n-                    /**\n-                     * Creates a new SelectionRange\n-                     * @param range the range.\n-                     * @param parent an optional parent.\n-                     */\n-                    function create(range, parent) {\n-                        return {\n-                            range: range,\n-                            parent: parent\n-                        };\n-                    }\n-                    SelectionRange.create = create;\n-\n-                    function is(value) {\n-                        var candidate = value;\n-                        return Is.objectLiteral(candidate) && Range.is(candidate.range) && (candidate.parent === undefined || SelectionRange.is(candidate.parent));\n-                    }\n-                    SelectionRange.is = is;\n-                })(SelectionRange || (exports.SelectionRange = SelectionRange = {}));\n-                /**\n-                 * A set of predefined token types. This set is not fixed\n-                 * an clients can specify additional token types via the\n-                 * corresponding client capabilities.\n-                 *\n-                 * @since 3.16.0\n-                 */\n-                var SemanticTokenTypes;\n-                (function(SemanticTokenTypes) {\n-                    SemanticTokenTypes[\"namespace\"] = \"namespace\";\n-                    /**\n-                     * Represents a generic type. Acts as a fallback for types which can't be mapped to\n-                     * a specific type like class or enum.\n-                     */\n-                    SemanticTokenTypes[\"type\"] = \"type\";\n-                    SemanticTokenTypes[\"class\"] = \"class\";\n-                    SemanticTokenTypes[\"enum\"] = \"enum\";\n-                    SemanticTokenTypes[\"interface\"] = \"interface\";\n-                    SemanticTokenTypes[\"struct\"] = \"struct\";\n-                    SemanticTokenTypes[\"typeParameter\"] = \"typeParameter\";\n-                    SemanticTokenTypes[\"parameter\"] = \"parameter\";\n-                    SemanticTokenTypes[\"variable\"] = \"variable\";\n-                    SemanticTokenTypes[\"property\"] = \"property\";\n-                    SemanticTokenTypes[\"enumMember\"] = \"enumMember\";\n-                    SemanticTokenTypes[\"event\"] = \"event\";\n-                    SemanticTokenTypes[\"function\"] = \"function\";\n-                    SemanticTokenTypes[\"method\"] = \"method\";\n-                    SemanticTokenTypes[\"macro\"] = \"macro\";\n-                    SemanticTokenTypes[\"keyword\"] = \"keyword\";\n-                    SemanticTokenTypes[\"modifier\"] = \"modifier\";\n-                    SemanticTokenTypes[\"comment\"] = \"comment\";\n-                    SemanticTokenTypes[\"string\"] = \"string\";\n-                    SemanticTokenTypes[\"number\"] = \"number\";\n-                    SemanticTokenTypes[\"regexp\"] = \"regexp\";\n-                    SemanticTokenTypes[\"operator\"] = \"operator\";\n-                    /**\n-                     * @since 3.17.0\n-                     */\n-                    SemanticTokenTypes[\"decorator\"] = \"decorator\";\n-                })(SemanticTokenTypes || (exports.SemanticTokenTypes = SemanticTokenTypes = {}));\n-                /**\n-                 * A set of predefined token modifiers. This set is not fixed\n-                 * an clients can specify additional token types via the\n-                 * corresponding client capabilities.\n-                 *\n-                 * @since 3.16.0\n-                 */\n-                var SemanticTokenModifiers;\n-                (function(SemanticTokenModifiers) {\n-                    SemanticTokenModifiers[\"declaration\"] = \"declaration\";\n-                    SemanticTokenModifiers[\"definition\"] = \"definition\";\n-                    SemanticTokenModifiers[\"readonly\"] = \"readonly\";\n-                    SemanticTokenModifiers[\"static\"] = \"static\";\n-                    SemanticTokenModifiers[\"deprecated\"] = \"deprecated\";\n-                    SemanticTokenModifiers[\"abstract\"] = \"abstract\";\n-                    SemanticTokenModifiers[\"async\"] = \"async\";\n-                    SemanticTokenModifiers[\"modification\"] = \"modification\";\n-                    SemanticTokenModifiers[\"documentation\"] = \"documentation\";\n-                    SemanticTokenModifiers[\"defaultLibrary\"] = \"defaultLibrary\";\n-                })(SemanticTokenModifiers || (exports.SemanticTokenModifiers = SemanticTokenModifiers = {}));\n-                /**\n-                 * @since 3.16.0\n-                 */\n-                var SemanticTokens;\n-                (function(SemanticTokens) {\n-                    function is(value) {\n-                        var candidate = value;\n-                        return Is.objectLiteral(candidate) && (candidate.resultId === undefined || typeof candidate.resultId === 'string') && Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === 'number');\n-                    }\n-                    SemanticTokens.is = is;\n-                })(SemanticTokens || (exports.SemanticTokens = SemanticTokens = {}));\n-                /**\n-                 * The InlineValueText namespace provides functions to deal with InlineValueTexts.\n-                 *\n-                 * @since 3.17.0\n-                 */\n-                var InlineValueText;\n-                (function(InlineValueText) {\n-                    /**\n-                     * Creates a new InlineValueText literal.\n-                     */\n-                    function create(range, text) {\n-                        return {\n-                            range: range,\n-                            text: text\n-                        };\n-                    }\n-                    InlineValueText.create = create;\n-\n-                    function is(value) {\n-                        var candidate = value;\n-                        return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.string(candidate.text);\n-                    }\n-                    InlineValueText.is = is;\n-                })(InlineValueText || (exports.InlineValueText = InlineValueText = {}));\n-                /**\n-                 * The InlineValueVariableLookup namespace provides functions to deal with InlineValueVariableLookups.\n-                 *\n-                 * @since 3.17.0\n-                 */\n-                var InlineValueVariableLookup;\n-                (function(InlineValueVariableLookup) {\n-                    /**\n-                     * Creates a new InlineValueText literal.\n-                     */\n-                    function create(range, variableName, caseSensitiveLookup) {\n-                        return {\n-                            range: range,\n-                            variableName: variableName,\n-                            caseSensitiveLookup: caseSensitiveLookup\n-                        };\n-                    }\n-                    InlineValueVariableLookup.create = create;\n-\n-                    function is(value) {\n-                        var candidate = value;\n-                        return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.boolean(candidate.caseSensitiveLookup) && (Is.string(candidate.variableName) || candidate.variableName === undefined);\n-                    }\n-                    InlineValueVariableLookup.is = is;\n-                })(InlineValueVariableLookup || (exports.InlineValueVariableLookup = InlineValueVariableLookup = {}));\n-                /**\n-                 * The InlineValueEvaluatableExpression namespace provides functions to deal with InlineValueEvaluatableExpression.\n-                 *\n-                 * @since 3.17.0\n-                 */\n-                var InlineValueEvaluatableExpression;\n-                (function(InlineValueEvaluatableExpression) {\n-                    /**\n-                     * Creates a new InlineValueEvaluatableExpression literal.\n-                     */\n-                    function create(range, expression) {\n-                        return {\n-                            range: range,\n-                            expression: expression\n-                        };\n-                    }\n-                    InlineValueEvaluatableExpression.create = create;\n-\n-                    function is(value) {\n-                        var candidate = value;\n-                        return candidate !== undefined && candidate !== null && Range.is(candidate.range) && (Is.string(candidate.expression) || candidate.expression === undefined);\n-                    }\n-                    InlineValueEvaluatableExpression.is = is;\n-                })(InlineValueEvaluatableExpression || (exports.InlineValueEvaluatableExpression = InlineValueEvaluatableExpression = {}));\n-                /**\n-                 * The InlineValueContext namespace provides helper functions to work with\n-                 * {@link InlineValueContext} literals.\n-                 *\n-                 * @since 3.17.0\n-                 */\n-                var InlineValueContext;\n-                (function(InlineValueContext) {\n-                    /**\n-                     * Creates a new InlineValueContext literal.\n-                     */\n-                    function create(frameId, stoppedLocation) {\n-                        return {\n-                            frameId: frameId,\n-                            stoppedLocation: stoppedLocation\n-                        };\n-                    }\n-                    InlineValueContext.create = create;\n-                    /**\n-                     * Checks whether the given literal conforms to the {@link InlineValueContext} interface.\n-                     */\n-                    function is(value) {\n-                        var candidate = value;\n-                        return Is.defined(candidate) && Range.is(value.stoppedLocation);\n-                    }\n-                    InlineValueContext.is = is;\n-                })(InlineValueContext || (exports.InlineValueContext = InlineValueContext = {}));\n-                /**\n-                 * Inlay hint kinds.\n-                 *\n-                 * @since 3.17.0\n-                 */\n-                var InlayHintKind;\n-                (function(InlayHintKind) {\n-                    /**\n-                     * An inlay hint that for a type annotation.\n-                     */\n-                    InlayHintKind.Type = 1;\n-                    /**\n-                     * An inlay hint that is for a parameter.\n-                     */\n-                    InlayHintKind.Parameter = 2;\n-\n-                    function is(value) {\n-                        return value === 1 || value === 2;\n-                    }\n-                    InlayHintKind.is = is;\n-                })(InlayHintKind || (exports.InlayHintKind = InlayHintKind = {}));\n-                var InlayHintLabelPart;\n-                (function(InlayHintLabelPart) {\n-                    function create(value) {\n-                        return {\n-                            value: value\n-                        };\n-                    }\n-                    InlayHintLabelPart.create = create;\n-\n-                    function is(value) {\n-                        var candidate = value;\n-                        return Is.objectLiteral(candidate) && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) && (candidate.location === undefined || Location.is(candidate.location)) && (candidate.command === undefined || Command.is(candidate.command));\n-                    }\n-                    InlayHintLabelPart.is = is;\n-                })(InlayHintLabelPart || (exports.InlayHintLabelPart = InlayHintLabelPart = {}));\n-                var InlayHint;\n-                (function(InlayHint) {\n-                    function create(position, label, kind) {\n-                        var result = {\n-                            position: position,\n-                            label: label\n-                        };\n-                        if (kind !== undefined) {\n-                            result.kind = kind;\n-                        }\n-                        return result;\n-                    }\n-                    InlayHint.create = create;\n-\n-                    function is(value) {\n-                        var candidate = value;\n-                        return Is.objectLiteral(candidate) && Position.is(candidate.position) && (Is.string(candidate.label) || Is.typedArray(candidate.label, InlayHintLabelPart.is)) && (candidate.kind === undefined || InlayHintKind.is(candidate.kind)) && candidate.textEdits === undefined || Is.typedArray(candidate.textEdits, TextEdit.is) && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) && (candidate.paddingLeft === undefined || Is.boolean(candidate.paddingLeft)) && (candidate.paddingRight === undefined || Is.boolean(candidate.paddingRight));\n-                    }\n-                    InlayHint.is = is;\n-                })(InlayHint || (exports.InlayHint = InlayHint = {}));\n-                var WorkspaceFolder;\n-                (function(WorkspaceFolder) {\n-                    function is(value) {\n-                        var candidate = value;\n-                        return Is.objectLiteral(candidate) && URI.is(candidate.uri) && Is.string(candidate.name);\n-                    }\n-                    WorkspaceFolder.is = is;\n-                })(WorkspaceFolder || (exports.WorkspaceFolder = WorkspaceFolder = {}));\n-                var EOL = exports.EOL = ['\\n', '\\r\\n', '\\r'];\n-                /**\n-                 * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n-                 */\n-                var TextDocument;\n-                (function(TextDocument) {\n-                    /**\n-                     * Creates a new ITextDocument literal from the given uri and content.\n-                     * @param uri The document's uri.\n-                     * @param languageId The document's language Id.\n-                     * @param version The document's version.\n-                     * @param content The document's content.\n-                     */\n-                    function create(uri, languageId, version, content) {\n-                        return new FullTextDocument(uri, languageId, version, content);\n-                    }\n-                    TextDocument.create = create;\n-                    /**\n-                     * Checks whether the given literal conforms to the {@link ITextDocument} interface.\n-                     */\n-                    function is(value) {\n-                        var candidate = value;\n-                        return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount) && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\n-                    }\n-                    TextDocument.is = is;\n-\n-                    function applyEdits(document, edits) {\n-                        var text = document.getText();\n-                        var sortedEdits = mergeSort(edits, function(a, b) {\n-                            var diff = a.range.start.line - b.range.start.line;\n-                            if (diff === 0) {\n-                                return a.range.start.character - b.range.start.character;\n-                            }\n-                            return diff;\n-                        });\n-                        var lastModifiedOffset = text.length;\n-                        for (var i = sortedEdits.length - 1; i >= 0; i--) {\n-                            var e = sortedEdits[i];\n-                            var startOffset = document.offsetAt(e.range.start);\n-                            var endOffset = document.offsetAt(e.range.end);\n-                            if (endOffset <= lastModifiedOffset) {\n-                                text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);\n-                            } else {\n-                                throw new Error('Overlapping edit');\n-                            }\n-                            lastModifiedOffset = startOffset;\n-                        }\n-                        return text;\n-                    }\n-                    TextDocument.applyEdits = applyEdits;\n-\n-                    function mergeSort(data, compare) {\n-                        if (data.length <= 1) {\n-                            // sorted\n-                            return data;\n-                        }\n-                        var p = data.length / 2 | 0;\n-                        var left = data.slice(0, p);\n-                        var right = data.slice(p);\n-                        mergeSort(left, compare);\n-                        mergeSort(right, compare);\n-                        var leftIdx = 0;\n-                        var rightIdx = 0;\n-                        var i = 0;\n-                        while (leftIdx < left.length && rightIdx < right.length) {\n-                            var ret = compare(left[leftIdx], right[rightIdx]);\n-                            if (ret <= 0) {\n-                                // smaller_equal -> take left to preserve order\n-                                data[i++] = left[leftIdx++];\n-                            } else {\n-                                // greater -> take right\n-                                data[i++] = right[rightIdx++];\n-                            }\n-                        }\n-                        while (leftIdx < left.length) {\n-                            data[i++] = left[leftIdx++];\n-                        }\n-                        while (rightIdx < right.length) {\n-                            data[i++] = right[rightIdx++];\n-                        }\n-                        return data;\n-                    }\n-                })(TextDocument || (exports.TextDocument = TextDocument = {}));\n-                /**\n-                 * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n-                 */\n-                var FullTextDocument = /** @class */ function() {\n-                    function FullTextDocument(uri, languageId, version, content) {\n-                        this._uri = uri;\n-                        this._languageId = languageId;\n-                        this._version = version;\n-                        this._content = content;\n-                        this._lineOffsets = undefined;\n-                    }\n-                    Object.defineProperty(FullTextDocument.prototype, \"uri\", {\n-                        get: function() {\n-                            return this._uri;\n-                        },\n-                        enumerable: false,\n-                        configurable: true\n-                    });\n-                    Object.defineProperty(FullTextDocument.prototype, \"languageId\", {\n-                        get: function() {\n-                            return this._languageId;\n-                        },\n-                        enumerable: false,\n-                        configurable: true\n-                    });\n-                    Object.defineProperty(FullTextDocument.prototype, \"version\", {\n-                        get: function() {\n-                            return this._version;\n-                        },\n-                        enumerable: false,\n-                        configurable: true\n-                    });\n-                    FullTextDocument.prototype.getText = function(range) {\n-                        if (range) {\n-                            var start = this.offsetAt(range.start);\n-                            var end = this.offsetAt(range.end);\n-                            return this._content.substring(start, end);\n-                        }\n-                        return this._content;\n-                    };\n-                    FullTextDocument.prototype.update = function(event, version) {\n-                        this._content = event.text;\n-                        this._version = version;\n-                        this._lineOffsets = undefined;\n-                    };\n-                    FullTextDocument.prototype.getLineOffsets = function() {\n-                        if (this._lineOffsets === undefined) {\n-                            var lineOffsets = [];\n-                            var text = this._content;\n-                            var isLineStart = true;\n-                            for (var i = 0; i < text.length; i++) {\n-                                if (isLineStart) {\n-                                    lineOffsets.push(i);\n-                                    isLineStart = false;\n-                                }\n-                                var ch = text.charAt(i);\n-                                isLineStart = ch === '\\r' || ch === '\\n';\n-                                if (ch === '\\r' && i + 1 < text.length && text.charAt(i + 1) === '\\n') {\n-                                    i++;\n-                                }\n-                            }\n-                            if (isLineStart && text.length > 0) {\n-                                lineOffsets.push(text.length);\n-                            }\n-                            this._lineOffsets = lineOffsets;\n-                        }\n-                        return this._lineOffsets;\n-                    };\n-                    FullTextDocument.prototype.positionAt = function(offset) {\n-                        offset = Math.max(Math.min(offset, this._content.length), 0);\n-                        var lineOffsets = this.getLineOffsets();\n-                        var low = 0,\n-                            high = lineOffsets.length;\n-                        if (high === 0) {\n-                            return Position.create(0, offset);\n-                        }\n-                        while (low < high) {\n-                            var mid = Math.floor((low + high) / 2);\n-                            if (lineOffsets[mid] > offset) {\n-                                high = mid;\n-                            } else {\n-                                low = mid + 1;\n-                            }\n-                        }\n-                        // low is the least x for which the line offset is larger than the current offset\n-                        // or array.length if no line offset is larger than the current offset\n-                        var line = low - 1;\n-                        return Position.create(line, offset - lineOffsets[line]);\n-                    };\n-                    FullTextDocument.prototype.offsetAt = function(position) {\n-                        var lineOffsets = this.getLineOffsets();\n-                        if (position.line >= lineOffsets.length) {\n-                            return this._content.length;\n-                        } else if (position.line < 0) {\n-                            return 0;\n-                        }\n-                        var lineOffset = lineOffsets[position.line];\n-                        var nextLineOffset = position.line + 1 < lineOffsets.length ? lineOffsets[position.line + 1] : this._content.length;\n-                        return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\n-                    };\n-                    Object.defineProperty(FullTextDocument.prototype, \"lineCount\", {\n-                        get: function() {\n-                            return this.getLineOffsets().length;\n-                        },\n-                        enumerable: false,\n-                        configurable: true\n-                    });\n-                    return FullTextDocument;\n-                }();\n-                var Is;\n-                (function(Is) {\n-                    var toString = Object.prototype.toString;\n-\n-                    function defined(value) {\n-                        return typeof value !== 'undefined';\n-                    }\n-                    Is.defined = defined;\n-\n-                    function undefined(value) {\n-                        return typeof value === 'undefined';\n-                    }\n-                    Is.undefined = undefined;\n-\n-                    function boolean(value) {\n-                        return value === true || value === false;\n-                    }\n-                    Is.boolean = boolean;\n-\n-                    function string(value) {\n-                        return toString.call(value) === '[object String]';\n-                    }\n-                    Is.string = string;\n-\n-                    function number(value) {\n-                        return toString.call(value) === '[object Number]';\n-                    }\n-                    Is.number = number;\n-\n-                    function numberRange(value, min, max) {\n-                        return toString.call(value) === '[object Number]' && min <= value && value <= max;\n-                    }\n-                    Is.numberRange = numberRange;\n-\n-                    function integer(value) {\n-                        return toString.call(value) === '[object Number]' && -2147483648 <= value && value <= 2147483647;\n-                    }\n-                    Is.integer = integer;\n-\n-                    function uinteger(value) {\n-                        return toString.call(value) === '[object Number]' && 0 <= value && value <= 2147483647;\n-                    }\n-                    Is.uinteger = uinteger;\n-\n-                    function func(value) {\n-                        return toString.call(value) === '[object Function]';\n-                    }\n-                    Is.func = func;\n-\n-                    function objectLiteral(value) {\n-                        // Strictly speaking class instances pass this check as well. Since the LSP\n-                        // doesn't use classes we ignore this for now. If we do we need to add something\n-                        // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\n-                        return value !== null && typeof value === 'object';\n-                    }\n-                    Is.objectLiteral = objectLiteral;\n-\n-                    function typedArray(value, check) {\n-                        return Array.isArray(value) && value.every(check);\n-                    }\n-                    Is.typedArray = typedArray;\n-                })(Is || (Is = {}));\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/SchemaReference.cjs.js\":\n-            /*!********************************************************!*\\\n-              !*** ../../graphiql-react/dist/SchemaReference.cjs.js ***!\n-              \\********************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                const graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n-                const forEachState = __webpack_require__( /*! ./forEachState.cjs.js */ \"../../graphiql-react/dist/forEachState.cjs.js\");\n-\n-                function getTypeInfo(schema, tokenState) {\n-                    const info = {\n-                        schema,\n-                        type: null,\n-                        parentType: null,\n-                        inputType: null,\n-                        directiveDef: null,\n-                        fieldDef: null,\n-                        argDef: null,\n-                        argDefs: null,\n-                        objectFieldDefs: null\n-                    };\n-                    forEachState.forEachState(tokenState, state => {\n-                        var _a, _b;\n-                        switch (state.kind) {\n-                            case \"Query\":\n-                            case \"ShortQuery\":\n-                                info.type = schema.getQueryType();\n-                                break;\n-                            case \"Mutation\":\n-                                info.type = schema.getMutationType();\n-                                break;\n-                            case \"Subscription\":\n-                                info.type = schema.getSubscriptionType();\n-                                break;\n-                            case \"InlineFragment\":\n-                            case \"FragmentDefinition\":\n-                                if (state.type) {\n-                                    info.type = schema.getType(state.type);\n-                                }\n-                                break;\n-                            case \"Field\":\n-                            case \"AliasedField\":\n-                                info.fieldDef = info.type && state.name ? getFieldDef(schema, info.parentType, state.name) : null;\n-                                info.type = (_a = info.fieldDef) === null || _a === void 0 ? void 0 : _a.type;\n-                                break;\n-                            case \"SelectionSet\":\n-                                info.parentType = info.type ? graphql.getNamedType(info.type) : null;\n-                                break;\n-                            case \"Directive\":\n-                                info.directiveDef = state.name ? schema.getDirective(state.name) : null;\n-                                break;\n-                            case \"Arguments\":\n-                                const parentDef = state.prevState ? state.prevState.kind === \"Field\" ? info.fieldDef : state.prevState.kind === \"Directive\" ? info.directiveDef : state.prevState.kind === \"AliasedField\" ? state.prevState.name && getFieldDef(schema, info.parentType, state.prevState.name) : null : null;\n-                                info.argDefs = parentDef ? parentDef.args : null;\n-                                break;\n-                            case \"Argument\":\n-                                info.argDef = null;\n-                                if (info.argDefs) {\n-                                    for (let i = 0; i < info.argDefs.length; i++) {\n-                                        if (info.argDefs[i].name === state.name) {\n-                                            info.argDef = info.argDefs[i];\n-                                            break;\n-                                        }\n-                                    }\n-                                }\n-                                info.inputType = (_b = info.argDef) === null || _b === void 0 ? void 0 : _b.type;\n-                                break;\n-                            case \"EnumValue\":\n-                                const enumType = info.inputType ? graphql.getNamedType(info.inputType) : null;\n-                                info.enumValue = enumType instanceof graphql.GraphQLEnumType ? find(enumType.getValues(), val => val.value === state.name) : null;\n-                                break;\n-                            case \"ListValue\":\n-                                const nullableType = info.inputType ? graphql.getNullableType(info.inputType) : null;\n-                                info.inputType = nullableType instanceof graphql.GraphQLList ? nullableType.ofType : null;\n-                                break;\n-                            case \"ObjectValue\":\n-                                const objectType = info.inputType ? graphql.getNamedType(info.inputType) : null;\n-                                info.objectFieldDefs = objectType instanceof graphql.GraphQLInputObjectType ? objectType.getFields() : null;\n-                                break;\n-                            case \"ObjectField\":\n-                                const objectField = state.name && info.objectFieldDefs ? info.objectFieldDefs[state.name] : null;\n-                                info.inputType = objectField === null || objectField === void 0 ? void 0 : objectField.type;\n-                                info.fieldDef = objectField;\n-                                break;\n-                            case \"NamedType\":\n-                                info.type = state.name ? schema.getType(state.name) : null;\n-                                break;\n-                        }\n-                    });\n-                    return info;\n-                }\n-\n-                function getFieldDef(schema, type, fieldName) {\n-                    if (fieldName === graphql.SchemaMetaFieldDef.name && schema.getQueryType() === type) {\n-                        return graphql.SchemaMetaFieldDef;\n-                    }\n-                    if (fieldName === graphql.TypeMetaFieldDef.name && schema.getQueryType() === type) {\n-                        return graphql.TypeMetaFieldDef;\n-                    }\n-                    if (fieldName === graphql.TypeNameMetaFieldDef.name && graphql.isCompositeType(type)) {\n-                        return graphql.TypeNameMetaFieldDef;\n-                    }\n-                    if (type && type.getFields) {\n-                        return type.getFields()[fieldName];\n-                    }\n-                }\n-\n-                function find(array, predicate) {\n-                    for (let i = 0; i < array.length; i++) {\n-                        if (predicate(array[i])) {\n-                            return array[i];\n-                        }\n-                    }\n-                }\n-\n-                function getFieldReference(typeInfo) {\n-                    return {\n-                        kind: \"Field\",\n-                        schema: typeInfo.schema,\n-                        field: typeInfo.fieldDef,\n-                        type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType\n-                    };\n-                }\n-\n-                function getDirectiveReference(typeInfo) {\n-                    return {\n-                        kind: \"Directive\",\n-                        schema: typeInfo.schema,\n-                        directive: typeInfo.directiveDef\n-                    };\n-                }\n-\n-                function getArgumentReference(typeInfo) {\n-                    return typeInfo.directiveDef ? {\n-                        kind: \"Argument\",\n-                        schema: typeInfo.schema,\n-                        argument: typeInfo.argDef,\n-                        directive: typeInfo.directiveDef\n-                    } : {\n-                        kind: \"Argument\",\n-                        schema: typeInfo.schema,\n-                        argument: typeInfo.argDef,\n-                        field: typeInfo.fieldDef,\n-                        type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType\n-                    };\n-                }\n-\n-                function getEnumValueReference(typeInfo) {\n-                    return {\n-                        kind: \"EnumValue\",\n-                        value: typeInfo.enumValue || void 0,\n-                        type: typeInfo.inputType ? graphql.getNamedType(typeInfo.inputType) : void 0\n-                    };\n-                }\n-\n-                function getTypeReference(typeInfo, type) {\n-                    return {\n-                        kind: \"Type\",\n-                        schema: typeInfo.schema,\n-                        type: type || typeInfo.type\n-                    };\n-                }\n-\n-                function isMetaField(fieldDef) {\n-                    return fieldDef.name.slice(0, 2) === \"__\";\n-                }\n-                exports.getArgumentReference = getArgumentReference;\n-                exports.getDirectiveReference = getDirectiveReference;\n-                exports.getEnumValueReference = getEnumValueReference;\n-                exports.getFieldReference = getFieldReference;\n-                exports.getTypeInfo = getTypeInfo;\n-                exports.getTypeReference = getTypeReference;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/brace-fold.cjs.js\":\n-            /*!***************************************************!*\\\n-              !*** ../../graphiql-react/dist/brace-fold.cjs.js ***!\n-              \\***************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n-\n-                function _mergeNamespaces(n, m) {\n-                    for (var i = 0; i < m.length; i++) {\n-                        const e = m[i];\n-                        if (typeof e !== \"string\" && !Array.isArray(e)) {\n-                            for (const k in e) {\n-                                if (k !== \"default\" && !(k in n)) {\n-                                    const d = Object.getOwnPropertyDescriptor(e, k);\n-                                    if (d) {\n-                                        Object.defineProperty(n, k, d.get ? d : {\n-                                            enumerable: true,\n-                                            get: () => e[k]\n-                                        });\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    }\n-                    return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, {\n-                        value: \"Module\"\n-                    }));\n-                }\n-                var braceFold$2 = {\n-                    exports: {}\n-                };\n-                (function(module2, exports2) {\n-                    (function(mod) {\n-                        mod(codemirror.requireCodemirror());\n-                    })(function(CodeMirror) {\n-                        function bracketFolding(pairs) {\n-                            return function(cm, start) {\n-                                var line = start.line,\n-                                    lineText = cm.getLine(line);\n-\n-                                function findOpening(pair) {\n-                                    var tokenType;\n-                                    for (var at = start.ch, pass = 0;;) {\n-                                        var found2 = at <= 0 ? -1 : lineText.lastIndexOf(pair[0], at - 1);\n-                                        if (found2 == -1) {\n-                                            if (pass == 1) break;\n-                                            pass = 1;\n-                                            at = lineText.length;\n-                                            continue;\n-                                        }\n-                                        if (pass == 1 && found2 < start.ch) break;\n-                                        tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found2 + 1));\n-                                        if (!/^(comment|string)/.test(tokenType)) return {\n-                                            ch: found2 + 1,\n-                                            tokenType,\n-                                            pair\n-                                        };\n-                                        at = found2 - 1;\n-                                    }\n-                                }\n-\n-                                function findRange(found2) {\n-                                    var count = 1,\n-                                        lastLine = cm.lastLine(),\n-                                        end,\n-                                        startCh = found2.ch,\n-                                        endCh;\n-                                    outer: for (var i2 = line; i2 <= lastLine; ++i2) {\n-                                        var text = cm.getLine(i2),\n-                                            pos = i2 == line ? startCh : 0;\n-                                        for (;;) {\n-                                            var nextOpen = text.indexOf(found2.pair[0], pos),\n-                                                nextClose = text.indexOf(found2.pair[1], pos);\n-                                            if (nextOpen < 0) nextOpen = text.length;\n-                                            if (nextClose < 0) nextClose = text.length;\n-                                            pos = Math.min(nextOpen, nextClose);\n-                                            if (pos == text.length) break;\n-                                            if (cm.getTokenTypeAt(CodeMirror.Pos(i2, pos + 1)) == found2.tokenType) {\n-                                                if (pos == nextOpen) ++count;\n-                                                else if (!--count) {\n-                                                    end = i2;\n-                                                    endCh = pos;\n-                                                    break outer;\n-                                                }\n-                                            }\n-                                            ++pos;\n-                                        }\n-                                    }\n-                                    if (end == null || line == end) return null;\n-                                    return {\n-                                        from: CodeMirror.Pos(line, startCh),\n-                                        to: CodeMirror.Pos(end, endCh)\n-                                    };\n-                                }\n-                                var found = [];\n-                                for (var i = 0; i < pairs.length; i++) {\n-                                    var open = findOpening(pairs[i]);\n-                                    if (open) found.push(open);\n-                                }\n-                                found.sort(function(a, b) {\n-                                    return a.ch - b.ch;\n-                                });\n-                                for (var i = 0; i < found.length; i++) {\n-                                    var range = findRange(found[i]);\n-                                    if (range) return range;\n-                                }\n-                                return null;\n-                            };\n-                        }\n-                        CodeMirror.registerHelper(\"fold\", \"brace\", bracketFolding([\n-                            [\"{\", \"}\"],\n-                            [\"[\", \"]\"]\n-                        ]));\n-                        CodeMirror.registerHelper(\"fold\", \"brace-paren\", bracketFolding([\n-                            [\"{\", \"}\"],\n-                            [\"[\", \"]\"],\n-                            [\"(\", \")\"]\n-                        ]));\n-                        CodeMirror.registerHelper(\"fold\", \"import\", function(cm, start) {\n-                            function hasImport(line) {\n-                                if (line < cm.firstLine() || line > cm.lastLine()) return null;\n-                                var start2 = cm.getTokenAt(CodeMirror.Pos(line, 1));\n-                                if (!/\\S/.test(start2.string)) start2 = cm.getTokenAt(CodeMirror.Pos(line, start2.end + 1));\n-                                if (start2.type != \"keyword\" || start2.string != \"import\") return null;\n-                                for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {\n-                                    var text = cm.getLine(i),\n-                                        semi = text.indexOf(\";\");\n-                                    if (semi != -1) return {\n-                                        startCh: start2.end,\n-                                        end: CodeMirror.Pos(i, semi)\n-                                    };\n-                                }\n-                            }\n-                            var startLine = start.line,\n-                                has = hasImport(startLine),\n-                                prev;\n-                            if (!has || hasImport(startLine - 1) || (prev = hasImport(startLine - 2)) && prev.end.line == startLine - 1) return null;\n-                            for (var end = has.end;;) {\n-                                var next = hasImport(end.line + 1);\n-                                if (next == null) break;\n-                                end = next.end;\n-                            }\n-                            return {\n-                                from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)),\n-                                to: end\n-                            };\n-                        });\n-                        CodeMirror.registerHelper(\"fold\", \"include\", function(cm, start) {\n-                            function hasInclude(line) {\n-                                if (line < cm.firstLine() || line > cm.lastLine()) return null;\n-                                var start2 = cm.getTokenAt(CodeMirror.Pos(line, 1));\n-                                if (!/\\S/.test(start2.string)) start2 = cm.getTokenAt(CodeMirror.Pos(line, start2.end + 1));\n-                                if (start2.type == \"meta\" && start2.string.slice(0, 8) == \"#include\") return start2.start + 8;\n-                            }\n-                            var startLine = start.line,\n-                                has = hasInclude(startLine);\n-                            if (has == null || hasInclude(startLine - 1) != null) return null;\n-                            for (var end = startLine;;) {\n-                                var next = hasInclude(end + 1);\n-                                if (next == null) break;\n-                                ++end;\n-                            }\n-                            return {\n-                                from: CodeMirror.Pos(startLine, has + 1),\n-                                to: cm.clipPos(CodeMirror.Pos(end))\n-                            };\n-                        });\n-                    });\n-                })();\n-                var braceFoldExports = braceFold$2.exports;\n-                const braceFold = /* @__PURE__ */ codemirror.getDefaultExportFromCjs(braceFoldExports);\n-                const braceFold$1 = /* @__PURE__ */ _mergeNamespaces({\n-                    __proto__: null,\n-                    default: braceFold\n-                }, [braceFoldExports]);\n-                exports.braceFold = braceFold$1;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/closebrackets.cjs.js\":\n-            /*!******************************************************!*\\\n-              !*** ../../graphiql-react/dist/closebrackets.cjs.js ***!\n-              \\******************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n-\n-                function _mergeNamespaces(n, m) {\n-                    for (var i = 0; i < m.length; i++) {\n-                        const e = m[i];\n-                        if (typeof e !== \"string\" && !Array.isArray(e)) {\n-                            for (const k in e) {\n-                                if (k !== \"default\" && !(k in n)) {\n-                                    const d = Object.getOwnPropertyDescriptor(e, k);\n-                                    if (d) {\n-                                        Object.defineProperty(n, k, d.get ? d : {\n-                                            enumerable: true,\n-                                            get: () => e[k]\n-                                        });\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    }\n-                    return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, {\n-                        value: \"Module\"\n-                    }));\n-                }\n-                var closebrackets$2 = {\n-                    exports: {}\n-                };\n-                (function(module2, exports2) {\n-                    (function(mod) {\n-                        mod(codemirror.requireCodemirror());\n-                    })(function(CodeMirror) {\n-                        var defaults = {\n-                            pairs: `()[]{}''\"\"`,\n-                            closeBefore: `)]}'\":;>`,\n-                            triples: \"\",\n-                            explode: \"[]{}\"\n-                        };\n-                        var Pos = CodeMirror.Pos;\n-                        CodeMirror.defineOption(\"autoCloseBrackets\", false, function(cm, val, old) {\n-                            if (old && old != CodeMirror.Init) {\n-                                cm.removeKeyMap(keyMap);\n-                                cm.state.closeBrackets = null;\n-                            }\n-                            if (val) {\n-                                ensureBound(getOption(val, \"pairs\"));\n-                                cm.state.closeBrackets = val;\n-                                cm.addKeyMap(keyMap);\n-                            }\n-                        });\n-\n-                        function getOption(conf, name) {\n-                            if (name == \"pairs\" && typeof conf == \"string\") return conf;\n-                            if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n-                            return defaults[name];\n-                        }\n-                        var keyMap = {\n-                            Backspace: handleBackspace,\n-                            Enter: handleEnter\n-                        };\n-\n-                        function ensureBound(chars) {\n-                            for (var i = 0; i < chars.length; i++) {\n-                                var ch = chars.charAt(i),\n-                                    key = \"'\" + ch + \"'\";\n-                                if (!keyMap[key]) keyMap[key] = handler(ch);\n-                            }\n-                        }\n-                        ensureBound(defaults.pairs + \"`\");\n-\n-                        function handler(ch) {\n-                            return function(cm) {\n-                                return handleChar(cm, ch);\n-                            };\n-                        }\n-\n-                        function getConfig(cm) {\n-                            var deflt = cm.state.closeBrackets;\n-                            if (!deflt || deflt.override) return deflt;\n-                            var mode = cm.getModeAt(cm.getCursor());\n-                            return mode.closeBrackets || deflt;\n-                        }\n-\n-                        function handleBackspace(cm) {\n-                            var conf = getConfig(cm);\n-                            if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n-                            var pairs = getOption(conf, \"pairs\");\n-                            var ranges = cm.listSelections();\n-                            for (var i = 0; i < ranges.length; i++) {\n-                                if (!ranges[i].empty()) return CodeMirror.Pass;\n-                                var around = charsAround(cm, ranges[i].head);\n-                                if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n-                            }\n-                            for (var i = ranges.length - 1; i >= 0; i--) {\n-                                var cur = ranges[i].head;\n-                                cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), \"+delete\");\n-                            }\n-                        }\n-\n-                        function handleEnter(cm) {\n-                            var conf = getConfig(cm);\n-                            var explode = conf && getOption(conf, \"explode\");\n-                            if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n-                            var ranges = cm.listSelections();\n-                            for (var i = 0; i < ranges.length; i++) {\n-                                if (!ranges[i].empty()) return CodeMirror.Pass;\n-                                var around = charsAround(cm, ranges[i].head);\n-                                if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n-                            }\n-                            cm.operation(function() {\n-                                var linesep = cm.lineSeparator() || \"\\n\";\n-                                cm.replaceSelection(linesep + linesep, null);\n-                                moveSel(cm, -1);\n-                                ranges = cm.listSelections();\n-                                for (var i2 = 0; i2 < ranges.length; i2++) {\n-                                    var line = ranges[i2].head.line;\n-                                    cm.indentLine(line, null, true);\n-                                    cm.indentLine(line + 1, null, true);\n-                                }\n-                            });\n-                        }\n-\n-                        function moveSel(cm, dir) {\n-                            var newRanges = [],\n-                                ranges = cm.listSelections(),\n-                                primary = 0;\n-                            for (var i = 0; i < ranges.length; i++) {\n-                                var range = ranges[i];\n-                                if (range.head == cm.getCursor()) primary = i;\n-                                var pos = range.head.ch || dir > 0 ? {\n-                                    line: range.head.line,\n-                                    ch: range.head.ch + dir\n-                                } : {\n-                                    line: range.head.line - 1\n-                                };\n-                                newRanges.push({\n-                                    anchor: pos,\n-                                    head: pos\n-                                });\n-                            }\n-                            cm.setSelections(newRanges, primary);\n-                        }\n-\n-                        function contractSelection(sel) {\n-                            var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n-                            return {\n-                                anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n-                                head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))\n-                            };\n-                        }\n-\n-                        function handleChar(cm, ch) {\n-                            var conf = getConfig(cm);\n-                            if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n-                            var pairs = getOption(conf, \"pairs\");\n-                            var pos = pairs.indexOf(ch);\n-                            if (pos == -1) return CodeMirror.Pass;\n-                            var closeBefore = getOption(conf, \"closeBefore\");\n-                            var triples = getOption(conf, \"triples\");\n-                            var identical = pairs.charAt(pos + 1) == ch;\n-                            var ranges = cm.listSelections();\n-                            var opening = pos % 2 == 0;\n-                            var type;\n-                            for (var i = 0; i < ranges.length; i++) {\n-                                var range = ranges[i],\n-                                    cur = range.head,\n-                                    curType;\n-                                var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n-                                if (opening && !range.empty()) {\n-                                    curType = \"surround\";\n-                                } else if ((identical || !opening) && next == ch) {\n-                                    if (identical && stringStartsAfter(cm, cur)) curType = \"both\";\n-                                    else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch) curType = \"skipThree\";\n-                                    else curType = \"skip\";\n-                                } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 && cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {\n-                                    if (cur.ch > 2 && /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass;\n-                                    curType = \"addFour\";\n-                                } else if (identical) {\n-                                    var prev = cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur);\n-                                    if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = \"both\";\n-                                    else return CodeMirror.Pass;\n-                                } else if (opening && (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)) {\n-                                    curType = \"both\";\n-                                } else {\n-                                    return CodeMirror.Pass;\n-                                }\n-                                if (!type) type = curType;\n-                                else if (type != curType) return CodeMirror.Pass;\n-                            }\n-                            var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n-                            var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n-                            cm.operation(function() {\n-                                if (type == \"skip\") {\n-                                    moveSel(cm, 1);\n-                                } else if (type == \"skipThree\") {\n-                                    moveSel(cm, 3);\n-                                } else if (type == \"surround\") {\n-                                    var sels = cm.getSelections();\n-                                    for (var i2 = 0; i2 < sels.length; i2++) sels[i2] = left + sels[i2] + right;\n-                                    cm.replaceSelections(sels, \"around\");\n-                                    sels = cm.listSelections().slice();\n-                                    for (var i2 = 0; i2 < sels.length; i2++) sels[i2] = contractSelection(sels[i2]);\n-                                    cm.setSelections(sels);\n-                                } else if (type == \"both\") {\n-                                    cm.replaceSelection(left + right, null);\n-                                    cm.triggerElectric(left + right);\n-                                    moveSel(cm, -1);\n-                                } else if (type == \"addFour\") {\n-                                    cm.replaceSelection(left + left + left + left, \"before\");\n-                                    moveSel(cm, 1);\n-                                }\n-                            });\n-                        }\n-\n-                        function charsAround(cm, pos) {\n-                            var str = cm.getRange(Pos(pos.line, pos.ch - 1), Pos(pos.line, pos.ch + 1));\n-                            return str.length == 2 ? str : null;\n-                        }\n-\n-                        function stringStartsAfter(cm, pos) {\n-                            var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1));\n-                            return /\\bstring/.test(token.type) && token.start == pos.ch && (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)));\n-                        }\n-                    });\n-                })();\n-                var closebracketsExports = closebrackets$2.exports;\n-                const closebrackets = /* @__PURE__ */ codemirror.getDefaultExportFromCjs(closebracketsExports);\n-                const closebrackets$1 = /* @__PURE__ */ _mergeNamespaces({\n-                    __proto__: null,\n-                    default: closebrackets\n-                }, [closebracketsExports]);\n-                exports.closebrackets = closebrackets$1;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/codemirror.cjs.js\":\n-            /*!***************************************************!*\\\n-              !*** ../../graphiql-react/dist/codemirror.cjs.js ***!\n-              \\***************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror$1 = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n-\n-                function _mergeNamespaces(n, m) {\n-                    for (var i = 0; i < m.length; i++) {\n-                        const e = m[i];\n-                        if (typeof e !== \"string\" && !Array.isArray(e)) {\n-                            for (const k in e) {\n-                                if (k !== \"default\" && !(k in n)) {\n-                                    const d = Object.getOwnPropertyDescriptor(e, k);\n-                                    if (d) {\n-                                        Object.defineProperty(n, k, d.get ? d : {\n-                                            enumerable: true,\n-                                            get: () => e[k]\n-                                        });\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    }\n-                    return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, {\n-                        value: \"Module\"\n-                    }));\n-                }\n-                var codemirrorExports = codemirror$1.requireCodemirror();\n-                const CodeMirror = /* @__PURE__ */ codemirror$1.getDefaultExportFromCjs(codemirrorExports);\n-                const codemirror = /* @__PURE__ */ _mergeNamespaces({\n-                    __proto__: null,\n-                    default: CodeMirror\n-                }, [codemirrorExports]);\n-                exports.CodeMirror = CodeMirror;\n-                exports.codemirror = codemirror;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/codemirror.cjs2.js\":\n-            /*!****************************************************!*\\\n-              !*** ../../graphiql-react/dist/codemirror.cjs2.js ***!\n-              \\****************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                var commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof __webpack_require__.g !== \"undefined\" ? __webpack_require__.g : typeof self !== \"undefined\" ? self : {};\n-\n-                function getDefaultExportFromCjs(x) {\n-                    return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n-                }\n-                var codemirror = {\n-                    exports: {}\n-                };\n-                var hasRequiredCodemirror;\n-\n-                function requireCodemirror() {\n-                    if (hasRequiredCodemirror) return codemirror.exports;\n-                    hasRequiredCodemirror = 1;\n-                    (function(module2, exports2) {\n-                        (function(global2, factory) {\n-                            module2.exports = factory();\n-                        })(commonjsGlobal, function() {\n-                            var userAgent = navigator.userAgent;\n-                            var platform = navigator.platform;\n-                            var gecko = /gecko\\/\\d/i.test(userAgent);\n-                            var ie_upto10 = /MSIE \\d/.test(userAgent);\n-                            var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n-                            var edge = /Edge\\/(\\d+)/.exec(userAgent);\n-                            var ie = ie_upto10 || ie_11up || edge;\n-                            var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n-                            var webkit = !edge && /WebKit\\//.test(userAgent);\n-                            var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n-                            var chrome = !edge && /Chrome\\//.test(userAgent);\n-                            var presto = /Opera\\//.test(userAgent);\n-                            var safari = /Apple Computer/.test(navigator.vendor);\n-                            var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n-                            var phantom = /PhantomJS/.test(userAgent);\n-                            var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n-                            var android = /Android/.test(userAgent);\n-                            var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n-                            var mac = ios || /Mac/.test(platform);\n-                            var chromeOS = /\\bCrOS\\b/.test(userAgent);\n-                            var windows = /win/i.test(platform);\n-                            var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n-                            if (presto_version) {\n-                                presto_version = Number(presto_version[1]);\n-                            }\n-                            if (presto_version && presto_version >= 15) {\n-                                presto = false;\n-                                webkit = true;\n-                            }\n-                            var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n-                            var captureRightClick = gecko || ie && ie_version >= 9;\n-\n-                            function classTest(cls) {\n-                                return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\");\n-                            }\n-                            var rmClass = function(node, cls) {\n-                                var current = node.className;\n-                                var match = classTest(cls).exec(current);\n-                                if (match) {\n-                                    var after = current.slice(match.index + match[0].length);\n-                                    node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n-                                }\n-                            };\n-\n-                            function removeChildren(e) {\n-                                for (var count = e.childNodes.length; count > 0; --count) {\n-                                    e.removeChild(e.firstChild);\n-                                }\n-                                return e;\n-                            }\n-\n-                            function removeChildrenAndAdd(parent, e) {\n-                                return removeChildren(parent).appendChild(e);\n-                            }\n-\n-                            function elt(tag, content, className, style) {\n-                                var e = document.createElement(tag);\n-                                if (className) {\n-                                    e.className = className;\n-                                }\n-                                if (style) {\n-                                    e.style.cssText = style;\n-                                }\n-                                if (typeof content == \"string\") {\n-                                    e.appendChild(document.createTextNode(content));\n-                                } else if (content) {\n-                                    for (var i2 = 0; i2 < content.length; ++i2) {\n-                                        e.appendChild(content[i2]);\n-                                    }\n-                                }\n-                                return e;\n-                            }\n-\n-                            function eltP(tag, content, className, style) {\n-                                var e = elt(tag, content, className, style);\n-                                e.setAttribute(\"role\", \"presentation\");\n-                                return e;\n-                            }\n-                            var range;\n-                            if (document.createRange) {\n-                                range = function(node, start, end, endNode) {\n-                                    var r = document.createRange();\n-                                    r.setEnd(endNode || node, end);\n-                                    r.setStart(node, start);\n-                                    return r;\n-                                };\n-                            } else {\n-                                range = function(node, start, end) {\n-                                    var r = document.body.createTextRange();\n-                                    try {\n-                                        r.moveToElementText(node.parentNode);\n-                                    } catch (e) {\n-                                        return r;\n-                                    }\n-                                    r.collapse(true);\n-                                    r.moveEnd(\"character\", end);\n-                                    r.moveStart(\"character\", start);\n-                                    return r;\n-                                };\n-                            }\n-\n-                            function contains(parent, child) {\n-                                if (child.nodeType == 3) {\n-                                    child = child.parentNode;\n-                                }\n-                                if (parent.contains) {\n-                                    return parent.contains(child);\n-                                }\n-                                do {\n-                                    if (child.nodeType == 11) {\n-                                        child = child.host;\n-                                    }\n-                                    if (child == parent) {\n-                                        return true;\n-                                    }\n-                                } while (child = child.parentNode);\n-                            }\n-\n-                            function activeElt() {\n-                                var activeElement;\n-                                try {\n-                                    activeElement = document.activeElement;\n-                                } catch (e) {\n-                                    activeElement = document.body || null;\n-                                }\n-                                while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) {\n-                                    activeElement = activeElement.shadowRoot.activeElement;\n-                                }\n-                                return activeElement;\n-                            }\n-\n-                            function addClass(node, cls) {\n-                                var current = node.className;\n-                                if (!classTest(cls).test(current)) {\n-                                    node.className += (current ? \" \" : \"\") + cls;\n-                                }\n-                            }\n-\n-                            function joinClasses(a, b) {\n-                                var as = a.split(\" \");\n-                                for (var i2 = 0; i2 < as.length; i2++) {\n-                                    if (as[i2] && !classTest(as[i2]).test(b)) {\n-                                        b += \" \" + as[i2];\n-                                    }\n-                                }\n-                                return b;\n-                            }\n-                            var selectInput = function(node) {\n-                                node.select();\n-                            };\n-                            if (ios) {\n-                                selectInput = function(node) {\n-                                    node.selectionStart = 0;\n-                                    node.selectionEnd = node.value.length;\n-                                };\n-                            } else if (ie) {\n-                                selectInput = function(node) {\n-                                    try {\n-                                        node.select();\n-                                    } catch (_e) {}\n-                                };\n-                            }\n-\n-                            function bind(f) {\n-                                var args = Array.prototype.slice.call(arguments, 1);\n-                                return function() {\n-                                    return f.apply(null, args);\n-                                };\n-                            }\n-\n-                            function copyObj(obj, target, overwrite) {\n-                                if (!target) {\n-                                    target = {};\n-                                }\n-                                for (var prop2 in obj) {\n-                                    if (obj.hasOwnProperty(prop2) && (overwrite !== false || !target.hasOwnProperty(prop2))) {\n-                                        target[prop2] = obj[prop2];\n-                                    }\n-                                }\n-                                return target;\n-                            }\n-\n-                            function countColumn(string, end, tabSize, startIndex, startValue) {\n-                                if (end == null) {\n-                                    end = string.search(/[^\\s\\u00a0]/);\n-                                    if (end == -1) {\n-                                        end = string.length;\n-                                    }\n-                                }\n-                                for (var i2 = startIndex || 0, n = startValue || 0;;) {\n-                                    var nextTab = string.indexOf(\"\t\", i2);\n-                                    if (nextTab < 0 || nextTab >= end) {\n-                                        return n + (end - i2);\n-                                    }\n-                                    n += nextTab - i2;\n-                                    n += tabSize - n % tabSize;\n-                                    i2 = nextTab + 1;\n-                                }\n-                            }\n-                            var Delayed = function() {\n-                                this.id = null;\n-                                this.f = null;\n-                                this.time = 0;\n-                                this.handler = bind(this.onTimeout, this);\n-                            };\n-                            Delayed.prototype.onTimeout = function(self2) {\n-                                self2.id = 0;\n-                                if (self2.time <= + /* @__PURE__ */ new Date()) {\n-                                    self2.f();\n-                                } else {\n-                                    setTimeout(self2.handler, self2.time - + /* @__PURE__ */ new Date());\n-                                }\n-                            };\n-                            Delayed.prototype.set = function(ms, f) {\n-                                this.f = f;\n-                                var time = + /* @__PURE__ */ new Date() + ms;\n-                                if (!this.id || time < this.time) {\n-                                    clearTimeout(this.id);\n-                                    this.id = setTimeout(this.handler, ms);\n-                                    this.time = time;\n-                                }\n-                            };\n-\n-                            function indexOf(array, elt2) {\n-                                for (var i2 = 0; i2 < array.length; ++i2) {\n-                                    if (array[i2] == elt2) {\n-                                        return i2;\n-                                    }\n-                                }\n-                                return -1;\n-                            }\n-                            var scrollerGap = 50;\n-                            var Pass = {\n-                                toString: function() {\n-                                    return \"CodeMirror.Pass\";\n-                                }\n-                            };\n-                            var sel_dontScroll = {\n-                                    scroll: false\n-                                },\n-                                sel_mouse = {\n-                                    origin: \"*mouse\"\n-                                },\n-                                sel_move = {\n-                                    origin: \"+move\"\n-                                };\n-\n-                            function findColumn(string, goal, tabSize) {\n-                                for (var pos = 0, col = 0;;) {\n-                                    var nextTab = string.indexOf(\"\t\", pos);\n-                                    if (nextTab == -1) {\n-                                        nextTab = string.length;\n-                                    }\n-                                    var skipped = nextTab - pos;\n-                                    if (nextTab == string.length || col + skipped >= goal) {\n-                                        return pos + Math.min(skipped, goal - col);\n-                                    }\n-                                    col += nextTab - pos;\n-                                    col += tabSize - col % tabSize;\n-                                    pos = nextTab + 1;\n-                                    if (col >= goal) {\n-                                        return pos;\n-                                    }\n-                                }\n-                            }\n-                            var spaceStrs = [\"\"];\n-\n-                            function spaceStr(n) {\n-                                while (spaceStrs.length <= n) {\n-                                    spaceStrs.push(lst(spaceStrs) + \" \");\n-                                }\n-                                return spaceStrs[n];\n-                            }\n-\n-                            function lst(arr) {\n-                                return arr[arr.length - 1];\n-                            }\n-\n-                            function map(array, f) {\n-                                var out = [];\n-                                for (var i2 = 0; i2 < array.length; i2++) {\n-                                    out[i2] = f(array[i2], i2);\n-                                }\n-                                return out;\n-                            }\n-\n-                            function insertSorted(array, value, score) {\n-                                var pos = 0,\n-                                    priority = score(value);\n-                                while (pos < array.length && score(array[pos]) <= priority) {\n-                                    pos++;\n-                                }\n-                                array.splice(pos, 0, value);\n-                            }\n-\n-                            function nothing() {}\n-\n-                            function createObj(base, props) {\n-                                var inst;\n-                                if (Object.create) {\n-                                    inst = Object.create(base);\n-                                } else {\n-                                    nothing.prototype = base;\n-                                    inst = new nothing();\n-                                }\n-                                if (props) {\n-                                    copyObj(props, inst);\n-                                }\n-                                return inst;\n-                            }\n-                            var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n-\n-                            function isWordCharBasic(ch) {\n-                                return /\\w/.test(ch) || ch > \"\u0080\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch));\n-                            }\n-\n-                            function isWordChar(ch, helper) {\n-                                if (!helper) {\n-                                    return isWordCharBasic(ch);\n-                                }\n-                                if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) {\n-                                    return true;\n-                                }\n-                                return helper.test(ch);\n-                            }\n-\n-                            function isEmpty(obj) {\n-                                for (var n in obj) {\n-                                    if (obj.hasOwnProperty(n) && obj[n]) {\n-                                        return false;\n-                                    }\n-                                }\n-                                return true;\n-                            }\n-                            var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n-\n-                            function isExtendingChar(ch) {\n-                                return ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n-                            }\n-\n-                            function skipExtendingChars(str, pos, dir) {\n-                                while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) {\n-                                    pos += dir;\n-                                }\n-                                return pos;\n-                            }\n-\n-                            function findFirst(pred, from, to) {\n-                                var dir = from > to ? -1 : 1;\n-                                for (;;) {\n-                                    if (from == to) {\n-                                        return from;\n-                                    }\n-                                    var midF = (from + to) / 2,\n-                                        mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n-                                    if (mid == from) {\n-                                        return pred(mid) ? from : to;\n-                                    }\n-                                    if (pred(mid)) {\n-                                        to = mid;\n-                                    } else {\n-                                        from = mid + dir;\n-                                    }\n-                                }\n-                            }\n-\n-                            function iterateBidiSections(order, from, to, f) {\n-                                if (!order) {\n-                                    return f(from, to, \"ltr\", 0);\n-                                }\n-                                var found = false;\n-                                for (var i2 = 0; i2 < order.length; ++i2) {\n-                                    var part = order[i2];\n-                                    if (part.from < to && part.to > from || from == to && part.to == from) {\n-                                        f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i2);\n-                                        found = true;\n-                                    }\n-                                }\n-                                if (!found) {\n-                                    f(from, to, \"ltr\");\n-                                }\n-                            }\n-                            var bidiOther = null;\n-\n-                            function getBidiPartAt(order, ch, sticky) {\n-                                var found;\n-                                bidiOther = null;\n-                                for (var i2 = 0; i2 < order.length; ++i2) {\n-                                    var cur = order[i2];\n-                                    if (cur.from < ch && cur.to > ch) {\n-                                        return i2;\n-                                    }\n-                                    if (cur.to == ch) {\n-                                        if (cur.from != cur.to && sticky == \"before\") {\n-                                            found = i2;\n-                                        } else {\n-                                            bidiOther = i2;\n-                                        }\n-                                    }\n-                                    if (cur.from == ch) {\n-                                        if (cur.from != cur.to && sticky != \"before\") {\n-                                            found = i2;\n-                                        } else {\n-                                            bidiOther = i2;\n-                                        }\n-                                    }\n-                                }\n-                                return found != null ? found : bidiOther;\n-                            }\n-                            var bidiOrdering = /* @__PURE__ */ function() {\n-                                var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n-                                var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n-\n-                                function charType(code) {\n-                                    if (code <= 247) {\n-                                        return lowTypes.charAt(code);\n-                                    } else if (1424 <= code && code <= 1524) {\n-                                        return \"R\";\n-                                    } else if (1536 <= code && code <= 1785) {\n-                                        return arabicTypes.charAt(code - 1536);\n-                                    } else if (1774 <= code && code <= 2220) {\n-                                        return \"r\";\n-                                    } else if (8192 <= code && code <= 8203) {\n-                                        return \"w\";\n-                                    } else if (code == 8204) {\n-                                        return \"b\";\n-                                    } else {\n-                                        return \"L\";\n-                                    }\n-                                }\n-                                var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n-                                var isNeutral = /[stwN]/,\n-                                    isStrong = /[LRr]/,\n-                                    countsAsLeft = /[Lb1n]/,\n-                                    countsAsNum = /[1n]/;\n-\n-                                function BidiSpan(level, from, to) {\n-                                    this.level = level;\n-                                    this.from = from;\n-                                    this.to = to;\n-                                }\n-                                return function(str, direction) {\n-                                    var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n-                                    if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) {\n-                                        return false;\n-                                    }\n-                                    var len = str.length,\n-                                        types = [];\n-                                    for (var i2 = 0; i2 < len; ++i2) {\n-                                        types.push(charType(str.charCodeAt(i2)));\n-                                    }\n-                                    for (var i$12 = 0, prev = outerType; i$12 < len; ++i$12) {\n-                                        var type = types[i$12];\n-                                        if (type == \"m\") {\n-                                            types[i$12] = prev;\n-                                        } else {\n-                                            prev = type;\n-                                        }\n-                                    }\n-                                    for (var i$22 = 0, cur = outerType; i$22 < len; ++i$22) {\n-                                        var type$1 = types[i$22];\n-                                        if (type$1 == \"1\" && cur == \"r\") {\n-                                            types[i$22] = \"n\";\n-                                        } else if (isStrong.test(type$1)) {\n-                                            cur = type$1;\n-                                            if (type$1 == \"r\") {\n-                                                types[i$22] = \"R\";\n-                                            }\n-                                        }\n-                                    }\n-                                    for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n-                                        var type$2 = types[i$3];\n-                                        if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3 + 1] == \"1\") {\n-                                            types[i$3] = \"1\";\n-                                        } else if (type$2 == \",\" && prev$1 == types[i$3 + 1] && (prev$1 == \"1\" || prev$1 == \"n\")) {\n-                                            types[i$3] = prev$1;\n-                                        }\n-                                        prev$1 = type$2;\n-                                    }\n-                                    for (var i$4 = 0; i$4 < len; ++i$4) {\n-                                        var type$3 = types[i$4];\n-                                        if (type$3 == \",\") {\n-                                            types[i$4] = \"N\";\n-                                        } else if (type$3 == \"%\") {\n-                                            var end = void 0;\n-                                            for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n-                                            var replace = i$4 && types[i$4 - 1] == \"!\" || end < len && types[end] == \"1\" ? \"1\" : \"N\";\n-                                            for (var j = i$4; j < end; ++j) {\n-                                                types[j] = replace;\n-                                            }\n-                                            i$4 = end - 1;\n-                                        }\n-                                    }\n-                                    for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n-                                        var type$4 = types[i$5];\n-                                        if (cur$1 == \"L\" && type$4 == \"1\") {\n-                                            types[i$5] = \"L\";\n-                                        } else if (isStrong.test(type$4)) {\n-                                            cur$1 = type$4;\n-                                        }\n-                                    }\n-                                    for (var i$6 = 0; i$6 < len; ++i$6) {\n-                                        if (isNeutral.test(types[i$6])) {\n-                                            var end$1 = void 0;\n-                                            for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n-                                            var before = (i$6 ? types[i$6 - 1] : outerType) == \"L\";\n-                                            var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n-                                            var replace$1 = before == after ? before ? \"L\" : \"R\" : outerType;\n-                                            for (var j$1 = i$6; j$1 < end$1; ++j$1) {\n-                                                types[j$1] = replace$1;\n-                                            }\n-                                            i$6 = end$1 - 1;\n-                                        }\n-                                    }\n-                                    var order = [],\n-                                        m;\n-                                    for (var i$7 = 0; i$7 < len;) {\n-                                        if (countsAsLeft.test(types[i$7])) {\n-                                            var start = i$7;\n-                                            for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n-                                            order.push(new BidiSpan(0, start, i$7));\n-                                        } else {\n-                                            var pos = i$7,\n-                                                at = order.length,\n-                                                isRTL = direction == \"rtl\" ? 1 : 0;\n-                                            for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n-                                            for (var j$2 = pos; j$2 < i$7;) {\n-                                                if (countsAsNum.test(types[j$2])) {\n-                                                    if (pos < j$2) {\n-                                                        order.splice(at, 0, new BidiSpan(1, pos, j$2));\n-                                                        at += isRTL;\n-                                                    }\n-                                                    var nstart = j$2;\n-                                                    for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n-                                                    order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n-                                                    at += isRTL;\n-                                                    pos = j$2;\n-                                                } else {\n-                                                    ++j$2;\n-                                                }\n-                                            }\n-                                            if (pos < i$7) {\n-                                                order.splice(at, 0, new BidiSpan(1, pos, i$7));\n-                                            }\n-                                        }\n-                                    }\n-                                    if (direction == \"ltr\") {\n-                                        if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n-                                            order[0].from = m[0].length;\n-                                            order.unshift(new BidiSpan(0, 0, m[0].length));\n-                                        }\n-                                        if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n-                                            lst(order).to -= m[0].length;\n-                                            order.push(new BidiSpan(0, len - m[0].length, len));\n-                                        }\n-                                    }\n-                                    return direction == \"rtl\" ? order.reverse() : order;\n-                                };\n-                            }();\n-\n-                            function getOrder(line, direction) {\n-                                var order = line.order;\n-                                if (order == null) {\n-                                    order = line.order = bidiOrdering(line.text, direction);\n-                                }\n-                                return order;\n-                            }\n-                            var noHandlers = [];\n-                            var on = function(emitter, type, f) {\n-                                if (emitter.addEventListener) {\n-                                    emitter.addEventListener(type, f, false);\n-                                } else if (emitter.attachEvent) {\n-                                    emitter.attachEvent(\"on\" + type, f);\n-                                } else {\n-                                    var map2 = emitter._handlers || (emitter._handlers = {});\n-                                    map2[type] = (map2[type] || noHandlers).concat(f);\n-                                }\n-                            };\n-\n-                            function getHandlers(emitter, type) {\n-                                return emitter._handlers && emitter._handlers[type] || noHandlers;\n-                            }\n-\n-                            function off(emitter, type, f) {\n-                                if (emitter.removeEventListener) {\n-                                    emitter.removeEventListener(type, f, false);\n-                                } else if (emitter.detachEvent) {\n-                                    emitter.detachEvent(\"on\" + type, f);\n-                                } else {\n-                                    var map2 = emitter._handlers,\n-                                        arr = map2 && map2[type];\n-                                    if (arr) {\n-                                        var index = indexOf(arr, f);\n-                                        if (index > -1) {\n-                                            map2[type] = arr.slice(0, index).concat(arr.slice(index + 1));\n-                                        }\n-                                    }\n-                                }\n-                            }\n-\n-                            function signal(emitter, type) {\n-                                var handlers = getHandlers(emitter, type);\n-                                if (!handlers.length) {\n-                                    return;\n-                                }\n-                                var args = Array.prototype.slice.call(arguments, 2);\n-                                for (var i2 = 0; i2 < handlers.length; ++i2) {\n-                                    handlers[i2].apply(null, args);\n-                                }\n-                            }\n-\n-                            function signalDOMEvent(cm, e, override) {\n-                                if (typeof e == \"string\") {\n-                                    e = {\n-                                        type: e,\n-                                        preventDefault: function() {\n-                                            this.defaultPrevented = true;\n-                                        }\n-                                    };\n-                                }\n-                                signal(cm, override || e.type, cm, e);\n-                                return e_defaultPrevented(e) || e.codemirrorIgnore;\n-                            }\n-\n-                            function signalCursorActivity(cm) {\n-                                var arr = cm._handlers && cm._handlers.cursorActivity;\n-                                if (!arr) {\n-                                    return;\n-                                }\n-                                var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n-                                for (var i2 = 0; i2 < arr.length; ++i2) {\n-                                    if (indexOf(set, arr[i2]) == -1) {\n-                                        set.push(arr[i2]);\n-                                    }\n-                                }\n-                            }\n-\n-                            function hasHandler(emitter, type) {\n-                                return getHandlers(emitter, type).length > 0;\n-                            }\n-\n-                            function eventMixin(ctor) {\n-                                ctor.prototype.on = function(type, f) {\n-                                    on(this, type, f);\n-                                };\n-                                ctor.prototype.off = function(type, f) {\n-                                    off(this, type, f);\n-                                };\n-                            }\n-\n-                            function e_preventDefault(e) {\n-                                if (e.preventDefault) {\n-                                    e.preventDefault();\n-                                } else {\n-                                    e.returnValue = false;\n-                                }\n-                            }\n-\n-                            function e_stopPropagation(e) {\n-                                if (e.stopPropagation) {\n-                                    e.stopPropagation();\n-                                } else {\n-                                    e.cancelBubble = true;\n-                                }\n-                            }\n-\n-                            function e_defaultPrevented(e) {\n-                                return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false;\n-                            }\n-\n-                            function e_stop(e) {\n-                                e_preventDefault(e);\n-                                e_stopPropagation(e);\n-                            }\n-\n-                            function e_target(e) {\n-                                return e.target || e.srcElement;\n-                            }\n-\n-                            function e_button(e) {\n-                                var b = e.which;\n-                                if (b == null) {\n-                                    if (e.button & 1) {\n-                                        b = 1;\n-                                    } else if (e.button & 2) {\n-                                        b = 3;\n-                                    } else if (e.button & 4) {\n-                                        b = 2;\n-                                    }\n-                                }\n-                                if (mac && e.ctrlKey && b == 1) {\n-                                    b = 3;\n-                                }\n-                                return b;\n-                            }\n-                            var dragAndDrop = function() {\n-                                if (ie && ie_version < 9) {\n-                                    return false;\n-                                }\n-                                var div = elt(\"div\");\n-                                return \"draggable\" in div || \"dragDrop\" in div;\n-                            }();\n-                            var zwspSupported;\n-\n-                            function zeroWidthElement(measure) {\n-                                if (zwspSupported == null) {\n-                                    var test = elt(\"span\", \"\u200b\");\n-                                    removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n-                                    if (measure.firstChild.offsetHeight != 0) {\n-                                        zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);\n-                                    }\n-                                }\n-                                var node = zwspSupported ? elt(\"span\", \"\u200b\") : elt(\"span\", \"\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n-                                node.setAttribute(\"cm-text\", \"\");\n-                                return node;\n-                            }\n-                            var badBidiRects;\n-\n-                            function hasBadBidiRects(measure) {\n-                                if (badBidiRects != null) {\n-                                    return badBidiRects;\n-                                }\n-                                var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\u062eA\"));\n-                                var r0 = range(txt, 0, 1).getBoundingClientRect();\n-                                var r1 = range(txt, 1, 2).getBoundingClientRect();\n-                                removeChildren(measure);\n-                                if (!r0 || r0.left == r0.right) {\n-                                    return false;\n-                                }\n-                                return badBidiRects = r1.right - r0.right < 3;\n-                            }\n-                            var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function(string) {\n-                                var pos = 0,\n-                                    result = [],\n-                                    l = string.length;\n-                                while (pos <= l) {\n-                                    var nl = string.indexOf(\"\\n\", pos);\n-                                    if (nl == -1) {\n-                                        nl = string.length;\n-                                    }\n-                                    var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n-                                    var rt = line.indexOf(\"\\r\");\n-                                    if (rt != -1) {\n-                                        result.push(line.slice(0, rt));\n-                                        pos += rt + 1;\n-                                    } else {\n-                                        result.push(line);\n-                                        pos = nl + 1;\n-                                    }\n-                                }\n-                                return result;\n-                            } : function(string) {\n-                                return string.split(/\\r\\n?|\\n/);\n-                            };\n-                            var hasSelection = window.getSelection ? function(te) {\n-                                try {\n-                                    return te.selectionStart != te.selectionEnd;\n-                                } catch (e) {\n-                                    return false;\n-                                }\n-                            } : function(te) {\n-                                var range2;\n-                                try {\n-                                    range2 = te.ownerDocument.selection.createRange();\n-                                } catch (e) {}\n-                                if (!range2 || range2.parentElement() != te) {\n-                                    return false;\n-                                }\n-                                return range2.compareEndPoints(\"StartToEnd\", range2) != 0;\n-                            };\n-                            var hasCopyEvent = function() {\n-                                var e = elt(\"div\");\n-                                if (\"oncopy\" in e) {\n-                                    return true;\n-                                }\n-                                e.setAttribute(\"oncopy\", \"return;\");\n-                                return typeof e.oncopy == \"function\";\n-                            }();\n-                            var badZoomedRects = null;\n-\n-                            function hasBadZoomedRects(measure) {\n-                                if (badZoomedRects != null) {\n-                                    return badZoomedRects;\n-                                }\n-                                var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n-                                var normal = node.getBoundingClientRect();\n-                                var fromRange = range(node, 0, 1).getBoundingClientRect();\n-                                return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1;\n-                            }\n-                            var modes = {},\n-                                mimeModes = {};\n-\n-                            function defineMode(name, mode) {\n-                                if (arguments.length > 2) {\n-                                    mode.dependencies = Array.prototype.slice.call(arguments, 2);\n-                                }\n-                                modes[name] = mode;\n-                            }\n-\n-                            function defineMIME(mime, spec) {\n-                                mimeModes[mime] = spec;\n-                            }\n-\n-                            function resolveMode(spec) {\n-                                if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n-                                    spec = mimeModes[spec];\n-                                } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n-                                    var found = mimeModes[spec.name];\n-                                    if (typeof found == \"string\") {\n-                                        found = {\n-                                            name: found\n-                                        };\n-                                    }\n-                                    spec = createObj(found, spec);\n-                                    spec.name = found.name;\n-                                } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n-                                    return resolveMode(\"application/xml\");\n-                                } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n-                                    return resolveMode(\"application/json\");\n-                                }\n-                                if (typeof spec == \"string\") {\n-                                    return {\n-                                        name: spec\n-                                    };\n-                                } else {\n-                                    return spec || {\n-                                        name: \"null\"\n-                                    };\n-                                }\n-                            }\n-\n-                            function getMode(options, spec) {\n-                                spec = resolveMode(spec);\n-                                var mfactory = modes[spec.name];\n-                                if (!mfactory) {\n-                                    return getMode(options, \"text/plain\");\n-                                }\n-                                var modeObj = mfactory(options, spec);\n-                                if (modeExtensions.hasOwnProperty(spec.name)) {\n-                                    var exts = modeExtensions[spec.name];\n-                                    for (var prop2 in exts) {\n-                                        if (!exts.hasOwnProperty(prop2)) {\n-                                            continue;\n-                                        }\n-                                        if (modeObj.hasOwnProperty(prop2)) {\n-                                            modeObj[\"_\" + prop2] = modeObj[prop2];\n-                                        }\n-                                        modeObj[prop2] = exts[prop2];\n-                                    }\n-                                }\n-                                modeObj.name = spec.name;\n-                                if (spec.helperType) {\n-                                    modeObj.helperType = spec.helperType;\n-                                }\n-                                if (spec.modeProps) {\n-                                    for (var prop$1 in spec.modeProps) {\n-                                        modeObj[prop$1] = spec.modeProps[prop$1];\n-                                    }\n-                                }\n-                                return modeObj;\n-                            }\n-                            var modeExtensions = {};\n-\n-                            function extendMode(mode, properties) {\n-                                var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : modeExtensions[mode] = {};\n-                                copyObj(properties, exts);\n-                            }\n-\n-                            function copyState(mode, state) {\n-                                if (state === true) {\n-                                    return state;\n-                                }\n-                                if (mode.copyState) {\n-                                    return mode.copyState(state);\n-                                }\n-                                var nstate = {};\n-                                for (var n in state) {\n-                                    var val = state[n];\n-                                    if (val instanceof Array) {\n-                                        val = val.concat([]);\n-                                    }\n-                                    nstate[n] = val;\n-                                }\n-                                return nstate;\n-                            }\n-\n-                            function innerMode(mode, state) {\n-                                var info;\n-                                while (mode.innerMode) {\n-                                    info = mode.innerMode(state);\n-                                    if (!info || info.mode == mode) {\n-                                        break;\n-                                    }\n-                                    state = info.state;\n-                                    mode = info.mode;\n-                                }\n-                                return info || {\n-                                    mode,\n-                                    state\n-                                };\n-                            }\n-\n-                            function startState(mode, a1, a2) {\n-                                return mode.startState ? mode.startState(a1, a2) : true;\n-                            }\n-                            var StringStream = function(string, tabSize, lineOracle) {\n-                                this.pos = this.start = 0;\n-                                this.string = string;\n-                                this.tabSize = tabSize || 8;\n-                                this.lastColumnPos = this.lastColumnValue = 0;\n-                                this.lineStart = 0;\n-                                this.lineOracle = lineOracle;\n-                            };\n-                            StringStream.prototype.eol = function() {\n-                                return this.pos >= this.string.length;\n-                            };\n-                            StringStream.prototype.sol = function() {\n-                                return this.pos == this.lineStart;\n-                            };\n-                            StringStream.prototype.peek = function() {\n-                                return this.string.charAt(this.pos) || void 0;\n-                            };\n-                            StringStream.prototype.next = function() {\n-                                if (this.pos < this.string.length) {\n-                                    return this.string.charAt(this.pos++);\n-                                }\n-                            };\n-                            StringStream.prototype.eat = function(match) {\n-                                var ch = this.string.charAt(this.pos);\n-                                var ok;\n-                                if (typeof match == \"string\") {\n-                                    ok = ch == match;\n-                                } else {\n-                                    ok = ch && (match.test ? match.test(ch) : match(ch));\n-                                }\n-                                if (ok) {\n-                                    ++this.pos;\n-                                    return ch;\n-                                }\n-                            };\n-                            StringStream.prototype.eatWhile = function(match) {\n-                                var start = this.pos;\n-                                while (this.eat(match)) {}\n-                                return this.pos > start;\n-                            };\n-                            StringStream.prototype.eatSpace = function() {\n-                                var start = this.pos;\n-                                while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) {\n-                                    ++this.pos;\n-                                }\n-                                return this.pos > start;\n-                            };\n-                            StringStream.prototype.skipToEnd = function() {\n-                                this.pos = this.string.length;\n-                            };\n-                            StringStream.prototype.skipTo = function(ch) {\n-                                var found = this.string.indexOf(ch, this.pos);\n-                                if (found > -1) {\n-                                    this.pos = found;\n-                                    return true;\n-                                }\n-                            };\n-                            StringStream.prototype.backUp = function(n) {\n-                                this.pos -= n;\n-                            };\n-                            StringStream.prototype.column = function() {\n-                                if (this.lastColumnPos < this.start) {\n-                                    this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n-                                    this.lastColumnPos = this.start;\n-                                }\n-                                return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n-                            };\n-                            StringStream.prototype.indentation = function() {\n-                                return countColumn(this.string, null, this.tabSize) - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n-                            };\n-                            StringStream.prototype.match = function(pattern, consume, caseInsensitive) {\n-                                if (typeof pattern == \"string\") {\n-                                    var cased = function(str) {\n-                                        return caseInsensitive ? str.toLowerCase() : str;\n-                                    };\n-                                    var substr = this.string.substr(this.pos, pattern.length);\n-                                    if (cased(substr) == cased(pattern)) {\n-                                        if (consume !== false) {\n-                                            this.pos += pattern.length;\n-                                        }\n-                                        return true;\n-                                    }\n-                                } else {\n-                                    var match = this.string.slice(this.pos).match(pattern);\n-                                    if (match && match.index > 0) {\n-                                        return null;\n-                                    }\n-                                    if (match && consume !== false) {\n-                                        this.pos += match[0].length;\n-                                    }\n-                                    return match;\n-                                }\n-                            };\n-                            StringStream.prototype.current = function() {\n-                                return this.string.slice(this.start, this.pos);\n-                            };\n-                            StringStream.prototype.hideFirstChars = function(n, inner) {\n-                                this.lineStart += n;\n-                                try {\n-                                    return inner();\n-                                } finally {\n-                                    this.lineStart -= n;\n-                                }\n-                            };\n-                            StringStream.prototype.lookAhead = function(n) {\n-                                var oracle = this.lineOracle;\n-                                return oracle && oracle.lookAhead(n);\n-                            };\n-                            StringStream.prototype.baseToken = function() {\n-                                var oracle = this.lineOracle;\n-                                return oracle && oracle.baseToken(this.pos);\n-                            };\n-\n-                            function getLine(doc, n) {\n-                                n -= doc.first;\n-                                if (n < 0 || n >= doc.size) {\n-                                    throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\");\n-                                }\n-                                var chunk = doc;\n-                                while (!chunk.lines) {\n-                                    for (var i2 = 0;; ++i2) {\n-                                        var child = chunk.children[i2],\n-                                            sz = child.chunkSize();\n-                                        if (n < sz) {\n-                                            chunk = child;\n-                                            break;\n-                                        }\n-                                        n -= sz;\n-                                    }\n-                                }\n-                                return chunk.lines[n];\n-                            }\n-\n-                            function getBetween(doc, start, end) {\n-                                var out = [],\n-                                    n = start.line;\n-                                doc.iter(start.line, end.line + 1, function(line) {\n-                                    var text = line.text;\n-                                    if (n == end.line) {\n-                                        text = text.slice(0, end.ch);\n-                                    }\n-                                    if (n == start.line) {\n-                                        text = text.slice(start.ch);\n-                                    }\n-                                    out.push(text);\n-                                    ++n;\n-                                });\n-                                return out;\n-                            }\n-\n-                            function getLines(doc, from, to) {\n-                                var out = [];\n-                                doc.iter(from, to, function(line) {\n-                                    out.push(line.text);\n-                                });\n-                                return out;\n-                            }\n-\n-                            function updateLineHeight(line, height) {\n-                                var diff = height - line.height;\n-                                if (diff) {\n-                                    for (var n = line; n; n = n.parent) {\n-                                        n.height += diff;\n-                                    }\n-                                }\n-                            }\n-\n-                            function lineNo(line) {\n-                                if (line.parent == null) {\n-                                    return null;\n-                                }\n-                                var cur = line.parent,\n-                                    no = indexOf(cur.lines, line);\n-                                for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n-                                    for (var i2 = 0;; ++i2) {\n-                                        if (chunk.children[i2] == cur) {\n-                                            break;\n-                                        }\n-                                        no += chunk.children[i2].chunkSize();\n-                                    }\n-                                }\n-                                return no + cur.first;\n-                            }\n-\n-                            function lineAtHeight(chunk, h) {\n-                                var n = chunk.first;\n-                                outer: do {\n-                                    for (var i$12 = 0; i$12 < chunk.children.length; ++i$12) {\n-                                        var child = chunk.children[i$12],\n-                                            ch = child.height;\n-                                        if (h < ch) {\n-                                            chunk = child;\n-                                            continue outer;\n-                                        }\n-                                        h -= ch;\n-                                        n += child.chunkSize();\n-                                    }\n-                                    return n;\n-                                } while (!chunk.lines);\n-                                var i2 = 0;\n-                                for (; i2 < chunk.lines.length; ++i2) {\n-                                    var line = chunk.lines[i2],\n-                                        lh = line.height;\n-                                    if (h < lh) {\n-                                        break;\n-                                    }\n-                                    h -= lh;\n-                                }\n-                                return n + i2;\n-                            }\n-\n-                            function isLine(doc, l) {\n-                                return l >= doc.first && l < doc.first + doc.size;\n-                            }\n-\n-                            function lineNumberFor(options, i2) {\n-                                return String(options.lineNumberFormatter(i2 + options.firstLineNumber));\n-                            }\n-\n-                            function Pos(line, ch, sticky) {\n-                                if (sticky === void 0) sticky = null;\n-                                if (!(this instanceof Pos)) {\n-                                    return new Pos(line, ch, sticky);\n-                                }\n-                                this.line = line;\n-                                this.ch = ch;\n-                                this.sticky = sticky;\n-                            }\n-\n-                            function cmp(a, b) {\n-                                return a.line - b.line || a.ch - b.ch;\n-                            }\n-\n-                            function equalCursorPos(a, b) {\n-                                return a.sticky == b.sticky && cmp(a, b) == 0;\n-                            }\n-\n-                            function copyPos(x) {\n-                                return Pos(x.line, x.ch);\n-                            }\n-\n-                            function maxPos(a, b) {\n-                                return cmp(a, b) < 0 ? b : a;\n-                            }\n-\n-                            function minPos(a, b) {\n-                                return cmp(a, b) < 0 ? a : b;\n-                            }\n-\n-                            function clipLine(doc, n) {\n-                                return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));\n-                            }\n-\n-                            function clipPos(doc, pos) {\n-                                if (pos.line < doc.first) {\n-                                    return Pos(doc.first, 0);\n-                                }\n-                                var last = doc.first + doc.size - 1;\n-                                if (pos.line > last) {\n-                                    return Pos(last, getLine(doc, last).text.length);\n-                                }\n-                                return clipToLen(pos, getLine(doc, pos.line).text.length);\n-                            }\n-\n-                            function clipToLen(pos, linelen) {\n-                                var ch = pos.ch;\n-                                if (ch == null || ch > linelen) {\n-                                    return Pos(pos.line, linelen);\n-                                } else if (ch < 0) {\n-                                    return Pos(pos.line, 0);\n-                                } else {\n-                                    return pos;\n-                                }\n-                            }\n-\n-                            function clipPosArray(doc, array) {\n-                                var out = [];\n-                                for (var i2 = 0; i2 < array.length; i2++) {\n-                                    out[i2] = clipPos(doc, array[i2]);\n-                                }\n-                                return out;\n-                            }\n-                            var SavedContext = function(state, lookAhead) {\n-                                this.state = state;\n-                                this.lookAhead = lookAhead;\n-                            };\n-                            var Context = function(doc, state, line, lookAhead) {\n-                                this.state = state;\n-                                this.doc = doc;\n-                                this.line = line;\n-                                this.maxLookAhead = lookAhead || 0;\n-                                this.baseTokens = null;\n-                                this.baseTokenPos = 1;\n-                            };\n-                            Context.prototype.lookAhead = function(n) {\n-                                var line = this.doc.getLine(this.line + n);\n-                                if (line != null && n > this.maxLookAhead) {\n-                                    this.maxLookAhead = n;\n-                                }\n-                                return line;\n-                            };\n-                            Context.prototype.baseToken = function(n) {\n-                                if (!this.baseTokens) {\n-                                    return null;\n-                                }\n-                                while (this.baseTokens[this.baseTokenPos] <= n) {\n-                                    this.baseTokenPos += 2;\n-                                }\n-                                var type = this.baseTokens[this.baseTokenPos + 1];\n-                                return {\n-                                    type: type && type.replace(/( |^)overlay .*/, \"\"),\n-                                    size: this.baseTokens[this.baseTokenPos] - n\n-                                };\n-                            };\n-                            Context.prototype.nextLine = function() {\n-                                this.line++;\n-                                if (this.maxLookAhead > 0) {\n-                                    this.maxLookAhead--;\n-                                }\n-                            };\n-                            Context.fromSaved = function(doc, saved, line) {\n-                                if (saved instanceof SavedContext) {\n-                                    return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead);\n-                                } else {\n-                                    return new Context(doc, copyState(doc.mode, saved), line);\n-                                }\n-                            };\n-                            Context.prototype.save = function(copy) {\n-                                var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n-                                return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state;\n-                            };\n-\n-                            function highlightLine(cm, line, context, forceToEnd) {\n-                                var st = [cm.state.modeGen],\n-                                    lineClasses = {};\n-                                runMode(cm, line.text, cm.doc.mode, context, function(end, style) {\n-                                    return st.push(end, style);\n-                                }, lineClasses, forceToEnd);\n-                                var state = context.state;\n-                                var loop = function(o2) {\n-                                    context.baseTokens = st;\n-                                    var overlay = cm.state.overlays[o2],\n-                                        i2 = 1,\n-                                        at = 0;\n-                                    context.state = true;\n-                                    runMode(cm, line.text, overlay.mode, context, function(end, style) {\n-                                        var start = i2;\n-                                        while (at < end) {\n-                                            var i_end = st[i2];\n-                                            if (i_end > end) {\n-                                                st.splice(i2, 1, end, st[i2 + 1], i_end);\n-                                            }\n-                                            i2 += 2;\n-                                            at = Math.min(end, i_end);\n-                                        }\n-                                        if (!style) {\n-                                            return;\n-                                        }\n-                                        if (overlay.opaque) {\n-                                            st.splice(start, i2 - start, end, \"overlay \" + style);\n-                                            i2 = start + 2;\n-                                        } else {\n-                                            for (; start < i2; start += 2) {\n-                                                var cur = st[start + 1];\n-                                                st[start + 1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n-                                            }\n-                                        }\n-                                    }, lineClasses);\n-                                    context.state = state;\n-                                    context.baseTokens = null;\n-                                    context.baseTokenPos = 1;\n-                                };\n-                                for (var o = 0; o < cm.state.overlays.length; ++o) loop(o);\n-                                return {\n-                                    styles: st,\n-                                    classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null\n-                                };\n-                            }\n-\n-                            function getLineStyles(cm, line, updateFrontier) {\n-                                if (!line.styles || line.styles[0] != cm.state.modeGen) {\n-                                    var context = getContextBefore(cm, lineNo(line));\n-                                    var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n-                                    var result = highlightLine(cm, line, context);\n-                                    if (resetState) {\n-                                        context.state = resetState;\n-                                    }\n-                                    line.stateAfter = context.save(!resetState);\n-                                    line.styles = result.styles;\n-                                    if (result.classes) {\n-                                        line.styleClasses = result.classes;\n-                                    } else if (line.styleClasses) {\n-                                        line.styleClasses = null;\n-                                    }\n-                                    if (updateFrontier === cm.doc.highlightFrontier) {\n-                                        cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier);\n-                                    }\n-                                }\n-                                return line.styles;\n-                            }\n-\n-                            function getContextBefore(cm, n, precise) {\n-                                var doc = cm.doc,\n-                                    display = cm.display;\n-                                if (!doc.mode.startState) {\n-                                    return new Context(doc, true, n);\n-                                }\n-                                var start = findStartLine(cm, n, precise);\n-                                var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n-                                var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n-                                doc.iter(start, n, function(line) {\n-                                    processLine(cm, line.text, context);\n-                                    var pos = context.line;\n-                                    line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n-                                    context.nextLine();\n-                                });\n-                                if (precise) {\n-                                    doc.modeFrontier = context.line;\n-                                }\n-                                return context;\n-                            }\n-\n-                            function processLine(cm, text, context, startAt) {\n-                                var mode = cm.doc.mode;\n-                                var stream = new StringStream(text, cm.options.tabSize, context);\n-                                stream.start = stream.pos = startAt || 0;\n-                                if (text == \"\") {\n-                                    callBlankLine(mode, context.state);\n-                                }\n-                                while (!stream.eol()) {\n-                                    readToken(mode, stream, context.state);\n-                                    stream.start = stream.pos;\n-                                }\n-                            }\n-\n-                            function callBlankLine(mode, state) {\n-                                if (mode.blankLine) {\n-                                    return mode.blankLine(state);\n-                                }\n-                                if (!mode.innerMode) {\n-                                    return;\n-                                }\n-                                var inner = innerMode(mode, state);\n-                                if (inner.mode.blankLine) {\n-                                    return inner.mode.blankLine(inner.state);\n-                                }\n-                            }\n-\n-                            function readToken(mode, stream, state, inner) {\n-                                for (var i2 = 0; i2 < 10; i2++) {\n-                                    if (inner) {\n-                                        inner[0] = innerMode(mode, state).mode;\n-                                    }\n-                                    var style = mode.token(stream, state);\n-                                    if (stream.pos > stream.start) {\n-                                        return style;\n-                                    }\n-                                }\n-                                throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\");\n-                            }\n-                            var Token = function(stream, type, state) {\n-                                this.start = stream.start;\n-                                this.end = stream.pos;\n-                                this.string = stream.current();\n-                                this.type = type || null;\n-                                this.state = state;\n-                            };\n-\n-                            function takeToken(cm, pos, precise, asArray) {\n-                                var doc = cm.doc,\n-                                    mode = doc.mode,\n-                                    style;\n-                                pos = clipPos(doc, pos);\n-                                var line = getLine(doc, pos.line),\n-                                    context = getContextBefore(cm, pos.line, precise);\n-                                var stream = new StringStream(line.text, cm.options.tabSize, context),\n-                                    tokens;\n-                                if (asArray) {\n-                                    tokens = [];\n-                                }\n-                                while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n-                                    stream.start = stream.pos;\n-                                    style = readToken(mode, stream, context.state);\n-                                    if (asArray) {\n-                                        tokens.push(new Token(stream, style, copyState(doc.mode, context.state)));\n-                                    }\n-                                }\n-                                return asArray ? tokens : new Token(stream, style, context.state);\n-                            }\n-\n-                            function extractLineClasses(type, output) {\n-                                if (type) {\n-                                    for (;;) {\n-                                        var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n-                                        if (!lineClass) {\n-                                            break;\n-                                        }\n-                                        type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n-                                        var prop2 = lineClass[1] ? \"bgClass\" : \"textClass\";\n-                                        if (output[prop2] == null) {\n-                                            output[prop2] = lineClass[2];\n-                                        } else if (!new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\").test(output[prop2])) {\n-                                            output[prop2] += \" \" + lineClass[2];\n-                                        }\n-                                    }\n-                                }\n-                                return type;\n-                            }\n-\n-                            function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n-                                var flattenSpans = mode.flattenSpans;\n-                                if (flattenSpans == null) {\n-                                    flattenSpans = cm.options.flattenSpans;\n-                                }\n-                                var curStart = 0,\n-                                    curStyle = null;\n-                                var stream = new StringStream(text, cm.options.tabSize, context),\n-                                    style;\n-                                var inner = cm.options.addModeClass && [null];\n-                                if (text == \"\") {\n-                                    extractLineClasses(callBlankLine(mode, context.state), lineClasses);\n-                                }\n-                                while (!stream.eol()) {\n-                                    if (stream.pos > cm.options.maxHighlightLength) {\n-                                        flattenSpans = false;\n-                                        if (forceToEnd) {\n-                                            processLine(cm, text, context, stream.pos);\n-                                        }\n-                                        stream.pos = text.length;\n-                                        style = null;\n-                                    } else {\n-                                        style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n-                                    }\n-                                    if (inner) {\n-                                        var mName = inner[0].name;\n-                                        if (mName) {\n-                                            style = \"m-\" + (style ? mName + \" \" + style : mName);\n-                                        }\n-                                    }\n-                                    if (!flattenSpans || curStyle != style) {\n-                                        while (curStart < stream.start) {\n-                                            curStart = Math.min(stream.start, curStart + 5e3);\n-                                            f(curStart, curStyle);\n-                                        }\n-                                        curStyle = style;\n-                                    }\n-                                    stream.start = stream.pos;\n-                                }\n-                                while (curStart < stream.pos) {\n-                                    var pos = Math.min(stream.pos, curStart + 5e3);\n-                                    f(pos, curStyle);\n-                                    curStart = pos;\n-                                }\n-                            }\n-\n-                            function findStartLine(cm, n, precise) {\n-                                var minindent,\n-                                    minline,\n-                                    doc = cm.doc;\n-                                var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1e3 : 100);\n-                                for (var search = n; search > lim; --search) {\n-                                    if (search <= doc.first) {\n-                                        return doc.first;\n-                                    }\n-                                    var line = getLine(doc, search - 1),\n-                                        after = line.stateAfter;\n-                                    if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) {\n-                                        return search;\n-                                    }\n-                                    var indented = countColumn(line.text, null, cm.options.tabSize);\n-                                    if (minline == null || minindent > indented) {\n-                                        minline = search - 1;\n-                                        minindent = indented;\n-                                    }\n-                                }\n-                                return minline;\n-                            }\n-\n-                            function retreatFrontier(doc, n) {\n-                                doc.modeFrontier = Math.min(doc.modeFrontier, n);\n-                                if (doc.highlightFrontier < n - 10) {\n-                                    return;\n-                                }\n-                                var start = doc.first;\n-                                for (var line = n - 1; line > start; line--) {\n-                                    var saved = getLine(doc, line).stateAfter;\n-                                    if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n-                                        start = line + 1;\n-                                        break;\n-                                    }\n-                                }\n-                                doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n-                            }\n-                            var sawReadOnlySpans = false,\n-                                sawCollapsedSpans = false;\n-\n-                            function seeReadOnlySpans() {\n-                                sawReadOnlySpans = true;\n-                            }\n-\n-                            function seeCollapsedSpans() {\n-                                sawCollapsedSpans = true;\n-                            }\n-\n-                            function MarkedSpan(marker, from, to) {\n-                                this.marker = marker;\n-                                this.from = from;\n-                                this.to = to;\n-                            }\n-\n-                            function getMarkedSpanFor(spans, marker) {\n-                                if (spans) {\n-                                    for (var i2 = 0; i2 < spans.length; ++i2) {\n-                                        var span = spans[i2];\n-                                        if (span.marker == marker) {\n-                                            return span;\n-                                        }\n-                                    }\n-                                }\n-                            }\n-\n-                            function removeMarkedSpan(spans, span) {\n-                                var r;\n-                                for (var i2 = 0; i2 < spans.length; ++i2) {\n-                                    if (spans[i2] != span) {\n-                                        (r || (r = [])).push(spans[i2]);\n-                                    }\n-                                }\n-                                return r;\n-                            }\n-\n-                            function addMarkedSpan(line, span, op) {\n-                                var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = /* @__PURE__ */ new WeakSet()));\n-                                if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n-                                    line.markedSpans.push(span);\n-                                } else {\n-                                    line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n-                                    if (inThisOp) {\n-                                        inThisOp.add(line.markedSpans);\n-                                    }\n-                                }\n-                                span.marker.attachLine(line);\n-                            }\n-\n-                            function markedSpansBefore(old, startCh, isInsert) {\n-                                var nw;\n-                                if (old) {\n-                                    for (var i2 = 0; i2 < old.length; ++i2) {\n-                                        var span = old[i2],\n-                                            marker = span.marker;\n-                                        var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n-                                        if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n-                                            var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);\n-                                            (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n-                                        }\n-                                    }\n-                                }\n-                                return nw;\n-                            }\n-\n-                            function markedSpansAfter(old, endCh, isInsert) {\n-                                var nw;\n-                                if (old) {\n-                                    for (var i2 = 0; i2 < old.length; ++i2) {\n-                                        var span = old[i2],\n-                                            marker = span.marker;\n-                                        var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n-                                        if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n-                                            var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);\n-                                            (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, span.to == null ? null : span.to - endCh));\n-                                        }\n-                                    }\n-                                }\n-                                return nw;\n-                            }\n-\n-                            function stretchSpansOverChange(doc, change) {\n-                                if (change.full) {\n-                                    return null;\n-                                }\n-                                var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n-                                var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n-                                if (!oldFirst && !oldLast) {\n-                                    return null;\n-                                }\n-                                var startCh = change.from.ch,\n-                                    endCh = change.to.ch,\n-                                    isInsert = cmp(change.from, change.to) == 0;\n-                                var first = markedSpansBefore(oldFirst, startCh, isInsert);\n-                                var last = markedSpansAfter(oldLast, endCh, isInsert);\n-                                var sameLine = change.text.length == 1,\n-                                    offset = lst(change.text).length + (sameLine ? startCh : 0);\n-                                if (first) {\n-                                    for (var i2 = 0; i2 < first.length; ++i2) {\n-                                        var span = first[i2];\n-                                        if (span.to == null) {\n-                                            var found = getMarkedSpanFor(last, span.marker);\n-                                            if (!found) {\n-                                                span.to = startCh;\n-                                            } else if (sameLine) {\n-                                                span.to = found.to == null ? null : found.to + offset;\n-                                            }\n-                                        }\n-                                    }\n-                                }\n-                                if (last) {\n-                                    for (var i$12 = 0; i$12 < last.length; ++i$12) {\n-                                        var span$1 = last[i$12];\n-                                        if (span$1.to != null) {\n-                                            span$1.to += offset;\n-                                        }\n-                                        if (span$1.from == null) {\n-                                            var found$1 = getMarkedSpanFor(first, span$1.marker);\n-                                            if (!found$1) {\n-                                                span$1.from = offset;\n-                                                if (sameLine) {\n-                                                    (first || (first = [])).push(span$1);\n-                                                }\n-                                            }\n-                                        } else {\n-                                            span$1.from += offset;\n-                                            if (sameLine) {\n-                                                (first || (first = [])).push(span$1);\n-                                            }\n-                                        }\n-                                    }\n-                                }\n-                                if (first) {\n-                                    first = clearEmptySpans(first);\n-                                }\n-                                if (last && last != first) {\n-                                    last = clearEmptySpans(last);\n-                                }\n-                                var newMarkers = [first];\n-                                if (!sameLine) {\n-                                    var gap = change.text.length - 2,\n-                                        gapMarkers;\n-                                    if (gap > 0 && first) {\n-                                        for (var i$22 = 0; i$22 < first.length; ++i$22) {\n-                                            if (first[i$22].to == null) {\n-                                                (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$22].marker, null, null));\n-                                            }\n-                                        }\n-                                    }\n-                                    for (var i$3 = 0; i$3 < gap; ++i$3) {\n-                                        newMarkers.push(gapMarkers);\n-                                    }\n-                                    newMarkers.push(last);\n-                                }\n-                                return newMarkers;\n-                            }\n-\n-                            function clearEmptySpans(spans) {\n-                                for (var i2 = 0; i2 < spans.length; ++i2) {\n-                                    var span = spans[i2];\n-                                    if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) {\n-                                        spans.splice(i2--, 1);\n-                                    }\n-                                }\n-                                if (!spans.length) {\n-                                    return null;\n-                                }\n-                                return spans;\n-                            }\n-\n-                            function removeReadOnlyRanges(doc, from, to) {\n-                                var markers = null;\n-                                doc.iter(from.line, to.line + 1, function(line) {\n-                                    if (line.markedSpans) {\n-                                        for (var i3 = 0; i3 < line.markedSpans.length; ++i3) {\n-                                            var mark = line.markedSpans[i3].marker;\n-                                            if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) {\n-                                                (markers || (markers = [])).push(mark);\n-                                            }\n-                                        }\n-                                    }\n-                                });\n-                                if (!markers) {\n-                                    return null;\n-                                }\n-                                var parts = [{\n-                                    from,\n-                                    to\n-                                }];\n-                                for (var i2 = 0; i2 < markers.length; ++i2) {\n-                                    var mk = markers[i2],\n-                                        m = mk.find(0);\n-                                    for (var j = 0; j < parts.length; ++j) {\n-                                        var p = parts[j];\n-                                        if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) {\n-                                            continue;\n-                                        }\n-                                        var newParts = [j, 1],\n-                                            dfrom = cmp(p.from, m.from),\n-                                            dto = cmp(p.to, m.to);\n-                                        if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) {\n-                                            newParts.push({\n-                                                from: p.from,\n-                                                to: m.from\n-                                            });\n-                                        }\n-                                        if (dto > 0 || !mk.inclusiveRight && !dto) {\n-                                            newParts.push({\n-                                                from: m.to,\n-                                                to: p.to\n-                                            });\n-                                        }\n-                                        parts.splice.apply(parts, newParts);\n-                                        j += newParts.length - 3;\n-                                    }\n-                                }\n-                                return parts;\n-                            }\n-\n-                            function detachMarkedSpans(line) {\n-                                var spans = line.markedSpans;\n-                                if (!spans) {\n-                                    return;\n-                                }\n-                                for (var i2 = 0; i2 < spans.length; ++i2) {\n-                                    spans[i2].marker.detachLine(line);\n-                                }\n-                                line.markedSpans = null;\n-                            }\n-\n-                            function attachMarkedSpans(line, spans) {\n-                                if (!spans) {\n-                                    return;\n-                                }\n-                                for (var i2 = 0; i2 < spans.length; ++i2) {\n-                                    spans[i2].marker.attachLine(line);\n-                                }\n-                                line.markedSpans = spans;\n-                            }\n-\n-                            function extraLeft(marker) {\n-                                return marker.inclusiveLeft ? -1 : 0;\n-                            }\n-\n-                            function extraRight(marker) {\n-                                return marker.inclusiveRight ? 1 : 0;\n-                            }\n-\n-                            function compareCollapsedMarkers(a, b) {\n-                                var lenDiff = a.lines.length - b.lines.length;\n-                                if (lenDiff != 0) {\n-                                    return lenDiff;\n-                                }\n-                                var aPos = a.find(),\n-                                    bPos = b.find();\n-                                var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n-                                if (fromCmp) {\n-                                    return -fromCmp;\n-                                }\n-                                var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n-                                if (toCmp) {\n-                                    return toCmp;\n-                                }\n-                                return b.id - a.id;\n-                            }\n-\n-                            function collapsedSpanAtSide(line, start) {\n-                                var sps = sawCollapsedSpans && line.markedSpans,\n-                                    found;\n-                                if (sps) {\n-                                    for (var sp = void 0, i2 = 0; i2 < sps.length; ++i2) {\n-                                        sp = sps[i2];\n-                                        if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n-                                            found = sp.marker;\n-                                        }\n-                                    }\n-                                }\n-                                return found;\n-                            }\n-\n-                            function collapsedSpanAtStart(line) {\n-                                return collapsedSpanAtSide(line, true);\n-                            }\n-\n-                            function collapsedSpanAtEnd(line) {\n-                                return collapsedSpanAtSide(line, false);\n-                            }\n-\n-                            function collapsedSpanAround(line, ch) {\n-                                var sps = sawCollapsedSpans && line.markedSpans,\n-                                    found;\n-                                if (sps) {\n-                                    for (var i2 = 0; i2 < sps.length; ++i2) {\n-                                        var sp = sps[i2];\n-                                        if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n-                                            found = sp.marker;\n-                                        }\n-                                    }\n-                                }\n-                                return found;\n-                            }\n-\n-                            function conflictingCollapsedRange(doc, lineNo2, from, to, marker) {\n-                                var line = getLine(doc, lineNo2);\n-                                var sps = sawCollapsedSpans && line.markedSpans;\n-                                if (sps) {\n-                                    for (var i2 = 0; i2 < sps.length; ++i2) {\n-                                        var sp = sps[i2];\n-                                        if (!sp.marker.collapsed) {\n-                                            continue;\n-                                        }\n-                                        var found = sp.marker.find(0);\n-                                        var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n-                                        var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n-                                        if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) {\n-                                            continue;\n-                                        }\n-                                        if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) {\n-                                            return true;\n-                                        }\n-                                    }\n-                                }\n-                            }\n-\n-                            function visualLine(line) {\n-                                var merged;\n-                                while (merged = collapsedSpanAtStart(line)) {\n-                                    line = merged.find(-1, true).line;\n-                                }\n-                                return line;\n-                            }\n-\n-                            function visualLineEnd(line) {\n-                                var merged;\n-                                while (merged = collapsedSpanAtEnd(line)) {\n-                                    line = merged.find(1, true).line;\n-                                }\n-                                return line;\n-                            }\n-\n-                            function visualLineContinued(line) {\n-                                var merged, lines;\n-                                while (merged = collapsedSpanAtEnd(line)) {\n-                                    line = merged.find(1, true).line;\n-                                    (lines || (lines = [])).push(line);\n-                                }\n-                                return lines;\n-                            }\n-\n-                            function visualLineNo(doc, lineN) {\n-                                var line = getLine(doc, lineN),\n-                                    vis = visualLine(line);\n-                                if (line == vis) {\n-                                    return lineN;\n-                                }\n-                                return lineNo(vis);\n-                            }\n-\n-                            function visualLineEndNo(doc, lineN) {\n-                                if (lineN > doc.lastLine()) {\n-                                    return lineN;\n-                                }\n-                                var line = getLine(doc, lineN),\n-                                    merged;\n-                                if (!lineIsHidden(doc, line)) {\n-                                    return lineN;\n-                                }\n-                                while (merged = collapsedSpanAtEnd(line)) {\n-                                    line = merged.find(1, true).line;\n-                                }\n-                                return lineNo(line) + 1;\n-                            }\n-\n-                            function lineIsHidden(doc, line) {\n-                                var sps = sawCollapsedSpans && line.markedSpans;\n-                                if (sps) {\n-                                    for (var sp = void 0, i2 = 0; i2 < sps.length; ++i2) {\n-                                        sp = sps[i2];\n-                                        if (!sp.marker.collapsed) {\n-                                            continue;\n-                                        }\n-                                        if (sp.from == null) {\n-                                            return true;\n-                                        }\n-                                        if (sp.marker.widgetNode) {\n-                                            continue;\n-                                        }\n-                                        if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) {\n-                                            return true;\n-                                        }\n-                                    }\n-                                }\n-                            }\n-\n-                            function lineIsHiddenInner(doc, line, span) {\n-                                if (span.to == null) {\n-                                    var end = span.marker.find(1, true);\n-                                    return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker));\n-                                }\n-                                if (span.marker.inclusiveRight && span.to == line.text.length) {\n-                                    return true;\n-                                }\n-                                for (var sp = void 0, i2 = 0; i2 < line.markedSpans.length; ++i2) {\n-                                    sp = line.markedSpans[i2];\n-                                    if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && (sp.to == null || sp.to != span.from) && (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && lineIsHiddenInner(doc, line, sp)) {\n-                                        return true;\n-                                    }\n-                                }\n-                            }\n-\n-                            function heightAtLine(lineObj) {\n-                                lineObj = visualLine(lineObj);\n-                                var h = 0,\n-                                    chunk = lineObj.parent;\n-                                for (var i2 = 0; i2 < chunk.lines.length; ++i2) {\n-                                    var line = chunk.lines[i2];\n-                                    if (line == lineObj) {\n-                                        break;\n-                                    } else {\n-                                        h += line.height;\n-                                    }\n-                                }\n-                                for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n-                                    for (var i$12 = 0; i$12 < p.children.length; ++i$12) {\n-                                        var cur = p.children[i$12];\n-                                        if (cur == chunk) {\n-                                            break;\n-                                        } else {\n-                                            h += cur.height;\n-                                        }\n-                                    }\n-                                }\n-                                return h;\n-                            }\n-\n-                            function lineLength(line) {\n-                                if (line.height == 0) {\n-                                    return 0;\n-                                }\n-                                var len = line.text.length,\n-                                    merged,\n-                                    cur = line;\n-                                while (merged = collapsedSpanAtStart(cur)) {\n-                                    var found = merged.find(0, true);\n-                                    cur = found.from.line;\n-                                    len += found.from.ch - found.to.ch;\n-                                }\n-                                cur = line;\n-                                while (merged = collapsedSpanAtEnd(cur)) {\n-                                    var found$1 = merged.find(0, true);\n-                                    len -= cur.text.length - found$1.from.ch;\n-                                    cur = found$1.to.line;\n-                                    len += cur.text.length - found$1.to.ch;\n-                                }\n-                                return len;\n-                            }\n-\n-                            function findMaxLine(cm) {\n-                                var d = cm.display,\n-                                    doc = cm.doc;\n-                                d.maxLine = getLine(doc, doc.first);\n-                                d.maxLineLength = lineLength(d.maxLine);\n-                                d.maxLineChanged = true;\n-                                doc.iter(function(line) {\n-                                    var len = lineLength(line);\n-                                    if (len > d.maxLineLength) {\n-                                        d.maxLineLength = len;\n-                                        d.maxLine = line;\n-                                    }\n-                                });\n-                            }\n-                            var Line = function(text, markedSpans, estimateHeight2) {\n-                                this.text = text;\n-                                attachMarkedSpans(this, markedSpans);\n-                                this.height = estimateHeight2 ? estimateHeight2(this) : 1;\n-                            };\n-                            Line.prototype.lineNo = function() {\n-                                return lineNo(this);\n-                            };\n-                            eventMixin(Line);\n-\n-                            function updateLine(line, text, markedSpans, estimateHeight2) {\n-                                line.text = text;\n-                                if (line.stateAfter) {\n-                                    line.stateAfter = null;\n-                                }\n-                                if (line.styles) {\n-                                    line.styles = null;\n-                                }\n-                                if (line.order != null) {\n-                                    line.order = null;\n-                                }\n-                                detachMarkedSpans(line);\n-                                attachMarkedSpans(line, markedSpans);\n-                                var estHeight = estimateHeight2 ? estimateHeight2(line) : 1;\n-                                if (estHeight != line.height) {\n-                                    updateLineHeight(line, estHeight);\n-                                }\n-                            }\n-\n-                            function cleanUpLine(line) {\n-                                line.parent = null;\n-                                detachMarkedSpans(line);\n-                            }\n-                            var styleToClassCache = {},\n-                                styleToClassCacheWithMode = {};\n-\n-                            function interpretTokenStyle(style, options) {\n-                                if (!style || /^\\s*$/.test(style)) {\n-                                    return null;\n-                                }\n-                                var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n-                                return cache[style] || (cache[style] = style.replace(/\\S+/g, \"cm-$&\"));\n-                            }\n-\n-                            function buildLineContent(cm, lineView) {\n-                                var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n-                                var builder = {\n-                                    pre: eltP(\"pre\", [content], \"CodeMirror-line\"),\n-                                    content,\n-                                    col: 0,\n-                                    pos: 0,\n-                                    cm,\n-                                    trailingSpace: false,\n-                                    splitSpaces: cm.getOption(\"lineWrapping\")\n-                                };\n-                                lineView.measure = {};\n-                                for (var i2 = 0; i2 <= (lineView.rest ? lineView.rest.length : 0); i2++) {\n-                                    var line = i2 ? lineView.rest[i2 - 1] : lineView.line,\n-                                        order = void 0;\n-                                    builder.pos = 0;\n-                                    builder.addToken = buildToken;\n-                                    if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) {\n-                                        builder.addToken = buildTokenBadBidi(builder.addToken, order);\n-                                    }\n-                                    builder.map = [];\n-                                    var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n-                                    insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n-                                    if (line.styleClasses) {\n-                                        if (line.styleClasses.bgClass) {\n-                                            builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\");\n-                                        }\n-                                        if (line.styleClasses.textClass) {\n-                                            builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\");\n-                                        }\n-                                    }\n-                                    if (builder.map.length == 0) {\n-                                        builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));\n-                                    }\n-                                    if (i2 == 0) {\n-                                        lineView.measure.map = builder.map;\n-                                        lineView.measure.cache = {};\n-                                    } else {\n-                                        (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map);\n-                                        (lineView.measure.caches || (lineView.measure.caches = [])).push({});\n-                                    }\n-                                }\n-                                if (webkit) {\n-                                    var last = builder.content.lastChild;\n-                                    if (/\\bcm-tab\\b/.test(last.className) || last.querySelector && last.querySelector(\".cm-tab\")) {\n-                                        builder.content.className = \"cm-tab-wrap-hack\";\n-                                    }\n-                                }\n-                                signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n-                                if (builder.pre.className) {\n-                                    builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\");\n-                                }\n-                                return builder;\n-                            }\n-\n-                            function defaultSpecialCharPlaceholder(ch) {\n-                                var token = elt(\"span\", \"\u2022\", \"cm-invalidchar\");\n-                                token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n-                                token.setAttribute(\"aria-label\", token.title);\n-                                return token;\n-                            }\n-\n-                            function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n-                                if (!text) {\n-                                    return;\n-                                }\n-                                var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n-                                var special = builder.cm.state.specialChars,\n-                                    mustWrap = false;\n-                                var content;\n-                                if (!special.test(text)) {\n-                                    builder.col += text.length;\n-                                    content = document.createTextNode(displayText);\n-                                    builder.map.push(builder.pos, builder.pos + text.length, content);\n-                                    if (ie && ie_version < 9) {\n-                                        mustWrap = true;\n-                                    }\n-                                    builder.pos += text.length;\n-                                } else {\n-                                    content = document.createDocumentFragment();\n-                                    var pos = 0;\n-                                    while (true) {\n-                                        special.lastIndex = pos;\n-                                        var m = special.exec(text);\n-                                        var skipped = m ? m.index - pos : text.length - pos;\n-                                        if (skipped) {\n-                                            var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n-                                            if (ie && ie_version < 9) {\n-                                                content.appendChild(elt(\"span\", [txt]));\n-                                            } else {\n-                                                content.appendChild(txt);\n-                                            }\n-                                            builder.map.push(builder.pos, builder.pos + skipped, txt);\n-                                            builder.col += skipped;\n-                                            builder.pos += skipped;\n-                                        }\n-                                        if (!m) {\n-                                            break;\n-                                        }\n-                                        pos += skipped + 1;\n-                                        var txt$1 = void 0;\n-                                        if (m[0] == \"\t\") {\n-                                            var tabSize = builder.cm.options.tabSize,\n-                                                tabWidth = tabSize - builder.col % tabSize;\n-                                            txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n-                                            txt$1.setAttribute(\"role\", \"presentation\");\n-                                            txt$1.setAttribute(\"cm-text\", \"\t\");\n-                                            builder.col += tabWidth;\n-                                        } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n-                                            txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\u240d\" : \"\u2424\", \"cm-invalidchar\"));\n-                                            txt$1.setAttribute(\"cm-text\", m[0]);\n-                                            builder.col += 1;\n-                                        } else {\n-                                            txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n-                                            txt$1.setAttribute(\"cm-text\", m[0]);\n-                                            if (ie && ie_version < 9) {\n-                                                content.appendChild(elt(\"span\", [txt$1]));\n-                                            } else {\n-                                                content.appendChild(txt$1);\n-                                            }\n-                                            builder.col += 1;\n-                                        }\n-                                        builder.map.push(builder.pos, builder.pos + 1, txt$1);\n-                                        builder.pos++;\n-                                    }\n-                                }\n-                                builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n-                                if (style || startStyle || endStyle || mustWrap || css || attributes) {\n-                                    var fullStyle = style || \"\";\n-                                    if (startStyle) {\n-                                        fullStyle += startStyle;\n-                                    }\n-                                    if (endStyle) {\n-                                        fullStyle += endStyle;\n-                                    }\n-                                    var token = elt(\"span\", [content], fullStyle, css);\n-                                    if (attributes) {\n-                                        for (var attr in attributes) {\n-                                            if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\") {\n-                                                token.setAttribute(attr, attributes[attr]);\n-                                            }\n-                                        }\n-                                    }\n-                                    return builder.content.appendChild(token);\n-                                }\n-                                builder.content.appendChild(content);\n-                            }\n-\n-                            function splitSpaces(text, trailingBefore) {\n-                                if (text.length > 1 && !/  /.test(text)) {\n-                                    return text;\n-                                }\n-                                var spaceBefore = trailingBefore,\n-                                    result = \"\";\n-                                for (var i2 = 0; i2 < text.length; i2++) {\n-                                    var ch = text.charAt(i2);\n-                                    if (ch == \" \" && spaceBefore && (i2 == text.length - 1 || text.charCodeAt(i2 + 1) == 32)) {\n-                                        ch = \"\u00a0\";\n-                                    }\n-                                    result += ch;\n-                                    spaceBefore = ch == \" \";\n-                                }\n-                                return result;\n-                            }\n-\n-                            function buildTokenBadBidi(inner, order) {\n-                                return function(builder, text, style, startStyle, endStyle, css, attributes) {\n-                                    style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n-                                    var start = builder.pos,\n-                                        end = start + text.length;\n-                                    for (;;) {\n-                                        var part = void 0;\n-                                        for (var i2 = 0; i2 < order.length; i2++) {\n-                                            part = order[i2];\n-                                            if (part.to > start && part.from <= start) {\n-                                                break;\n-                                            }\n-                                        }\n-                                        if (part.to >= end) {\n-                                            return inner(builder, text, style, startStyle, endStyle, css, attributes);\n-                                        }\n-                                        inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n-                                        startStyle = null;\n-                                        text = text.slice(part.to - start);\n-                                        start = part.to;\n-                                    }\n-                                };\n-                            }\n-\n-                            function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n-                                var widget = !ignoreWidget && marker.widgetNode;\n-                                if (widget) {\n-                                    builder.map.push(builder.pos, builder.pos + size, widget);\n-                                }\n-                                if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n-                                    if (!widget) {\n-                                        widget = builder.content.appendChild(document.createElement(\"span\"));\n-                                    }\n-                                    widget.setAttribute(\"cm-marker\", marker.id);\n-                                }\n-                                if (widget) {\n-                                    builder.cm.display.input.setUneditable(widget);\n-                                    builder.content.appendChild(widget);\n-                                }\n-                                builder.pos += size;\n-                                builder.trailingSpace = false;\n-                            }\n-\n-                            function insertLineContent(line, builder, styles) {\n-                                var spans = line.markedSpans,\n-                                    allText = line.text,\n-                                    at = 0;\n-                                if (!spans) {\n-                                    for (var i$12 = 1; i$12 < styles.length; i$12 += 2) {\n-                                        builder.addToken(builder, allText.slice(at, at = styles[i$12]), interpretTokenStyle(styles[i$12 + 1], builder.cm.options));\n-                                    }\n-                                    return;\n-                                }\n-                                var len = allText.length,\n-                                    pos = 0,\n-                                    i2 = 1,\n-                                    text = \"\",\n-                                    style,\n-                                    css;\n-                                var nextChange = 0,\n-                                    spanStyle,\n-                                    spanEndStyle,\n-                                    spanStartStyle,\n-                                    collapsed,\n-                                    attributes;\n-                                for (;;) {\n-                                    if (nextChange == pos) {\n-                                        spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n-                                        attributes = null;\n-                                        collapsed = null;\n-                                        nextChange = Infinity;\n-                                        var foundBookmarks = [],\n-                                            endStyles = void 0;\n-                                        for (var j = 0; j < spans.length; ++j) {\n-                                            var sp = spans[j],\n-                                                m = sp.marker;\n-                                            if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n-                                                foundBookmarks.push(m);\n-                                            } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n-                                                if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n-                                                    nextChange = sp.to;\n-                                                    spanEndStyle = \"\";\n-                                                }\n-                                                if (m.className) {\n-                                                    spanStyle += \" \" + m.className;\n-                                                }\n-                                                if (m.css) {\n-                                                    css = (css ? css + \";\" : \"\") + m.css;\n-                                                }\n-                                                if (m.startStyle && sp.from == pos) {\n-                                                    spanStartStyle += \" \" + m.startStyle;\n-                                                }\n-                                                if (m.endStyle && sp.to == nextChange) {\n-                                                    (endStyles || (endStyles = [])).push(m.endStyle, sp.to);\n-                                                }\n-                                                if (m.title) {\n-                                                    (attributes || (attributes = {})).title = m.title;\n-                                                }\n-                                                if (m.attributes) {\n-                                                    for (var attr in m.attributes) {\n-                                                        (attributes || (attributes = {}))[attr] = m.attributes[attr];\n-                                                    }\n-                                                }\n-                                                if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) {\n-                                                    collapsed = sp;\n-                                                }\n-                                            } else if (sp.from > pos && nextChange > sp.from) {\n-                                                nextChange = sp.from;\n-                                            }\n-                                        }\n-                                        if (endStyles) {\n-                                            for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) {\n-                                                if (endStyles[j$1 + 1] == nextChange) {\n-                                                    spanEndStyle += \" \" + endStyles[j$1];\n-                                                }\n-                                            }\n-                                        }\n-                                        if (!collapsed || collapsed.from == pos) {\n-                                            for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) {\n-                                                buildCollapsedSpan(builder, 0, foundBookmarks[j$2]);\n-                                            }\n-                                        }\n-                                        if (collapsed && (collapsed.from || 0) == pos) {\n-                                            buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, collapsed.marker, collapsed.from == null);\n-                                            if (collapsed.to == null) {\n-                                                return;\n-                                            }\n-                                            if (collapsed.to == pos) {\n-                                                collapsed = false;\n-                                            }\n-                                        }\n-                                    }\n-                                    if (pos >= len) {\n-                                        break;\n-                                    }\n-                                    var upto = Math.min(len, nextChange);\n-                                    while (true) {\n-                                        if (text) {\n-                                            var end = pos + text.length;\n-                                            if (!collapsed) {\n-                                                var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n-                                                builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n-                                            }\n-                                            if (end >= upto) {\n-                                                text = text.slice(upto - pos);\n-                                                pos = upto;\n-                                                break;\n-                                            }\n-                                            pos = end;\n-                                            spanStartStyle = \"\";\n-                                        }\n-                                        text = allText.slice(at, at = styles[i2++]);\n-                                        style = interpretTokenStyle(styles[i2++], builder.cm.options);\n-                                    }\n-                                }\n-                            }\n-\n-                            function LineView(doc, line, lineN) {\n-                                this.line = line;\n-                                this.rest = visualLineContinued(line);\n-                                this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n-                                this.node = this.text = null;\n-                                this.hidden = lineIsHidden(doc, line);\n-                            }\n-\n-                            function buildViewArray(cm, from, to) {\n-                                var array = [],\n-                                    nextPos;\n-                                for (var pos = from; pos < to; pos = nextPos) {\n-                                    var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n-                                    nextPos = pos + view.size;\n-                                    array.push(view);\n-                                }\n-                                return array;\n-                            }\n-                            var operationGroup = null;\n-\n-                            function pushOperation(op) {\n-                                if (operationGroup) {\n-                                    operationGroup.ops.push(op);\n-                                } else {\n-                                    op.ownsGroup = operationGroup = {\n-                                        ops: [op],\n-                                        delayedCallbacks: []\n-                                    };\n-                                }\n-                            }\n-\n-                            function fireCallbacksForOps(group) {\n-                                var callbacks = group.delayedCallbacks,\n-                                    i2 = 0;\n-                                do {\n-                                    for (; i2 < callbacks.length; i2++) {\n-                                        callbacks[i2].call(null);\n-                                    }\n-                                    for (var j = 0; j < group.ops.length; j++) {\n-                                        var op = group.ops[j];\n-                                        if (op.cursorActivityHandlers) {\n-                                            while (op.cursorActivityCalled < op.cursorActivityHandlers.length) {\n-                                                op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm);\n-                                            }\n-                                        }\n-                                    }\n-                                } while (i2 < callbacks.length);\n-                            }\n-\n-                            function finishOperation(op, endCb) {\n-                                var group = op.ownsGroup;\n-                                if (!group) {\n-                                    return;\n-                                }\n-                                try {\n-                                    fireCallbacksForOps(group);\n-                                } finally {\n-                                    operationGroup = null;\n-                                    endCb(group);\n-                                }\n-                            }\n-                            var orphanDelayedCallbacks = null;\n-\n-                            function signalLater(emitter, type) {\n-                                var arr = getHandlers(emitter, type);\n-                                if (!arr.length) {\n-                                    return;\n-                                }\n-                                var args = Array.prototype.slice.call(arguments, 2),\n-                                    list;\n-                                if (operationGroup) {\n-                                    list = operationGroup.delayedCallbacks;\n-                                } else if (orphanDelayedCallbacks) {\n-                                    list = orphanDelayedCallbacks;\n-                                } else {\n-                                    list = orphanDelayedCallbacks = [];\n-                                    setTimeout(fireOrphanDelayed, 0);\n-                                }\n-                                var loop = function(i3) {\n-                                    list.push(function() {\n-                                        return arr[i3].apply(null, args);\n-                                    });\n-                                };\n-                                for (var i2 = 0; i2 < arr.length; ++i2) loop(i2);\n-                            }\n-\n-                            function fireOrphanDelayed() {\n-                                var delayed = orphanDelayedCallbacks;\n-                                orphanDelayedCallbacks = null;\n-                                for (var i2 = 0; i2 < delayed.length; ++i2) {\n-                                    delayed[i2]();\n-                                }\n-                            }\n-\n-                            function updateLineForChanges(cm, lineView, lineN, dims) {\n-                                for (var j = 0; j < lineView.changes.length; j++) {\n-                                    var type = lineView.changes[j];\n-                                    if (type == \"text\") {\n-                                        updateLineText(cm, lineView);\n-                                    } else if (type == \"gutter\") {\n-                                        updateLineGutter(cm, lineView, lineN, dims);\n-                                    } else if (type == \"class\") {\n-                                        updateLineClasses(cm, lineView);\n-                                    } else if (type == \"widget\") {\n-                                        updateLineWidgets(cm, lineView, dims);\n-                                    }\n-                                }\n-                                lineView.changes = null;\n-                            }\n-\n-                            function ensureLineWrapped(lineView) {\n-                                if (lineView.node == lineView.text) {\n-                                    lineView.node = elt(\"div\", null, null, \"position: relative\");\n-                                    if (lineView.text.parentNode) {\n-                                        lineView.text.parentNode.replaceChild(lineView.node, lineView.text);\n-                                    }\n-                                    lineView.node.appendChild(lineView.text);\n-                                    if (ie && ie_version < 8) {\n-                                        lineView.node.style.zIndex = 2;\n-                                    }\n-                                }\n-                                return lineView.node;\n-                            }\n-\n-                            function updateLineBackground(cm, lineView) {\n-                                var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n-                                if (cls) {\n-                                    cls += \" CodeMirror-linebackground\";\n-                                }\n-                                if (lineView.background) {\n-                                    if (cls) {\n-                                        lineView.background.className = cls;\n-                                    } else {\n-                                        lineView.background.parentNode.removeChild(lineView.background);\n-                                        lineView.background = null;\n-                                    }\n-                                } else if (cls) {\n-                                    var wrap = ensureLineWrapped(lineView);\n-                                    lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n-                                    cm.display.input.setUneditable(lineView.background);\n-                                }\n-                            }\n-\n-                            function getLineContent(cm, lineView) {\n-                                var ext = cm.display.externalMeasured;\n-                                if (ext && ext.line == lineView.line) {\n-                                    cm.display.externalMeasured = null;\n-                                    lineView.measure = ext.measure;\n-                                    return ext.built;\n-                                }\n-                                return buildLineContent(cm, lineView);\n-                            }\n-\n-                            function updateLineText(cm, lineView) {\n-                                var cls = lineView.text.className;\n-                                var built = getLineContent(cm, lineView);\n-                                if (lineView.text == lineView.node) {\n-                                    lineView.node = built.pre;\n-                                }\n-                                lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n-                                lineView.text = built.pre;\n-                                if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n-                                    lineView.bgClass = built.bgClass;\n-                                    lineView.textClass = built.textClass;\n-                                    updateLineClasses(cm, lineView);\n-                                } else if (cls) {\n-                                    lineView.text.className = cls;\n-                                }\n-                            }\n-\n-                            function updateLineClasses(cm, lineView) {\n-                                updateLineBackground(cm, lineView);\n-                                if (lineView.line.wrapClass) {\n-                                    ensureLineWrapped(lineView).className = lineView.line.wrapClass;\n-                                } else if (lineView.node != lineView.text) {\n-                                    lineView.node.className = \"\";\n-                                }\n-                                var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n-                                lineView.text.className = textClass || \"\";\n-                            }\n-\n-                            function updateLineGutter(cm, lineView, lineN, dims) {\n-                                if (lineView.gutter) {\n-                                    lineView.node.removeChild(lineView.gutter);\n-                                    lineView.gutter = null;\n-                                }\n-                                if (lineView.gutterBackground) {\n-                                    lineView.node.removeChild(lineView.gutterBackground);\n-                                    lineView.gutterBackground = null;\n-                                }\n-                                if (lineView.line.gutterClass) {\n-                                    var wrap = ensureLineWrapped(lineView);\n-                                    lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass, \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + dims.gutterTotalWidth + \"px\");\n-                                    cm.display.input.setUneditable(lineView.gutterBackground);\n-                                    wrap.insertBefore(lineView.gutterBackground, lineView.text);\n-                                }\n-                                var markers = lineView.line.gutterMarkers;\n-                                if (cm.options.lineNumbers || markers) {\n-                                    var wrap$1 = ensureLineWrapped(lineView);\n-                                    var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\");\n-                                    gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n-                                    cm.display.input.setUneditable(gutterWrap);\n-                                    wrap$1.insertBefore(gutterWrap, lineView.text);\n-                                    if (lineView.line.gutterClass) {\n-                                        gutterWrap.className += \" \" + lineView.line.gutterClass;\n-                                    }\n-                                    if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"])) {\n-                                        lineView.lineNumber = gutterWrap.appendChild(elt(\"div\", lineNumberFor(cm.options, lineN), \"CodeMirror-linenumber CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[\"CodeMirror-linenumbers\"] + \"px; width: \" + cm.display.lineNumInnerWidth + \"px\"));\n-                                    }\n-                                    if (markers) {\n-                                        for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n-                                            var id = cm.display.gutterSpecs[k].className,\n-                                                found = markers.hasOwnProperty(id) && markers[id];\n-                                            if (found) {\n-                                                gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[id] + \"px; width: \" + dims.gutterWidth[id] + \"px\"));\n-                                            }\n-                                        }\n-                                    }\n-                                }\n-                            }\n-\n-                            function updateLineWidgets(cm, lineView, dims) {\n-                                if (lineView.alignable) {\n-                                    lineView.alignable = null;\n-                                }\n-                                var isWidget = classTest(\"CodeMirror-linewidget\");\n-                                for (var node = lineView.node.firstChild, next = void 0; node; node = next) {\n-                                    next = node.nextSibling;\n-                                    if (isWidget.test(node.className)) {\n-                                        lineView.node.removeChild(node);\n-                                    }\n-                                }\n-                                insertLineWidgets(cm, lineView, dims);\n-                            }\n-\n-                            function buildLineElement(cm, lineView, lineN, dims) {\n-                                var built = getLineContent(cm, lineView);\n-                                lineView.text = lineView.node = built.pre;\n-                                if (built.bgClass) {\n-                                    lineView.bgClass = built.bgClass;\n-                                }\n-                                if (built.textClass) {\n-                                    lineView.textClass = built.textClass;\n-                                }\n-                                updateLineClasses(cm, lineView);\n-                                updateLineGutter(cm, lineView, lineN, dims);\n-                                insertLineWidgets(cm, lineView, dims);\n-                                return lineView.node;\n-                            }\n-\n-                            function insertLineWidgets(cm, lineView, dims) {\n-                                insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n-                                if (lineView.rest) {\n-                                    for (var i2 = 0; i2 < lineView.rest.length; i2++) {\n-                                        insertLineWidgetsFor(cm, lineView.rest[i2], lineView, dims, false);\n-                                    }\n-                                }\n-                            }\n-\n-                            function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n-                                if (!line.widgets) {\n-                                    return;\n-                                }\n-                                var wrap = ensureLineWrapped(lineView);\n-                                for (var i2 = 0, ws = line.widgets; i2 < ws.length; ++i2) {\n-                                    var widget = ws[i2],\n-                                        node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n-                                    if (!widget.handleMouseEvents) {\n-                                        node.setAttribute(\"cm-ignore-events\", \"true\");\n-                                    }\n-                                    positionLineWidget(widget, node, lineView, dims);\n-                                    cm.display.input.setUneditable(node);\n-                                    if (allowAbove && widget.above) {\n-                                        wrap.insertBefore(node, lineView.gutter || lineView.text);\n-                                    } else {\n-                                        wrap.appendChild(node);\n-                                    }\n-                                    signalLater(widget, \"redraw\");\n-                                }\n-                            }\n-\n-                            function positionLineWidget(widget, node, lineView, dims) {\n-                                if (widget.noHScroll) {\n-                                    (lineView.alignable || (lineView.alignable = [])).push(node);\n-                                    var width = dims.wrapperWidth;\n-                                    node.style.left = dims.fixedPos + \"px\";\n-                                    if (!widget.coverGutter) {\n-                                        width -= dims.gutterTotalWidth;\n-                                        node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n-                                    }\n-                                    node.style.width = width + \"px\";\n-                                }\n-                                if (widget.coverGutter) {\n-                                    node.style.zIndex = 5;\n-                                    node.style.position = \"relative\";\n-                                    if (!widget.noHScroll) {\n-                                        node.style.marginLeft = -dims.gutterTotalWidth + \"px\";\n-                                    }\n-                                }\n-                            }\n-\n-                            function widgetHeight(widget) {\n-                                if (widget.height != null) {\n-                                    return widget.height;\n-                                }\n-                                var cm = widget.doc.cm;\n-                                if (!cm) {\n-                                    return 0;\n-                                }\n-                                if (!contains(document.body, widget.node)) {\n-                                    var parentStyle = \"position: relative;\";\n-                                    if (widget.coverGutter) {\n-                                        parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\";\n-                                    }\n-                                    if (widget.noHScroll) {\n-                                        parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\";\n-                                    }\n-                                    removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n-                                }\n-                                return widget.height = widget.node.parentNode.offsetHeight;\n-                            }\n-\n-                            function eventInWidget(display, e) {\n-                                for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n-                                    if (!n || n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\" || n.parentNode == display.sizer && n != display.mover) {\n-                                        return true;\n-                                    }\n-                                }\n-                            }\n-\n-                            function paddingTop(display) {\n-                                return display.lineSpace.offsetTop;\n-                            }\n-\n-                            function paddingVert(display) {\n-                                return display.mover.offsetHeight - display.lineSpace.offsetHeight;\n-                            }\n-\n-                            function paddingH(display) {\n-                                if (display.cachedPaddingH) {\n-                                    return display.cachedPaddingH;\n-                                }\n-                                var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n-                                var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n-                                var data = {\n-                                    left: parseInt(style.paddingLeft),\n-                                    right: parseInt(style.paddingRight)\n-                                };\n-                                if (!isNaN(data.left) && !isNaN(data.right)) {\n-                                    display.cachedPaddingH = data;\n-                                }\n-                                return data;\n-                            }\n-\n-                            function scrollGap(cm) {\n-                                return scrollerGap - cm.display.nativeBarWidth;\n-                            }\n-\n-                            function displayWidth(cm) {\n-                                return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth;\n-                            }\n-\n-                            function displayHeight(cm) {\n-                                return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight;\n-                            }\n-\n-                            function ensureLineHeights(cm, lineView, rect) {\n-                                var wrapping = cm.options.lineWrapping;\n-                                var curWidth = wrapping && displayWidth(cm);\n-                                if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n-                                    var heights = lineView.measure.heights = [];\n-                                    if (wrapping) {\n-                                        lineView.measure.width = curWidth;\n-                                        var rects = lineView.text.firstChild.getClientRects();\n-                                        for (var i2 = 0; i2 < rects.length - 1; i2++) {\n-                                            var cur = rects[i2],\n-                                                next = rects[i2 + 1];\n-                                            if (Math.abs(cur.bottom - next.bottom) > 2) {\n-                                                heights.push((cur.bottom + next.top) / 2 - rect.top);\n-                                            }\n-                                        }\n-                                    }\n-                                    heights.push(rect.bottom - rect.top);\n-                                }\n-                            }\n-\n-                            function mapFromLineView(lineView, line, lineN) {\n-                                if (lineView.line == line) {\n-                                    return {\n-                                        map: lineView.measure.map,\n-                                        cache: lineView.measure.cache\n-                                    };\n-                                }\n-                                if (lineView.rest) {\n-                                    for (var i2 = 0; i2 < lineView.rest.length; i2++) {\n-                                        if (lineView.rest[i2] == line) {\n-                                            return {\n-                                                map: lineView.measure.maps[i2],\n-                                                cache: lineView.measure.caches[i2]\n-                                            };\n-                                        }\n-                                    }\n-                                    for (var i$12 = 0; i$12 < lineView.rest.length; i$12++) {\n-                                        if (lineNo(lineView.rest[i$12]) > lineN) {\n-                                            return {\n-                                                map: lineView.measure.maps[i$12],\n-                                                cache: lineView.measure.caches[i$12],\n-                                                before: true\n-                                            };\n-                                        }\n-                                    }\n-                                }\n-                            }\n-\n-                            function updateExternalMeasurement(cm, line) {\n-                                line = visualLine(line);\n-                                var lineN = lineNo(line);\n-                                var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n-                                view.lineN = lineN;\n-                                var built = view.built = buildLineContent(cm, view);\n-                                view.text = built.pre;\n-                                removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n-                                return view;\n-                            }\n-\n-                            function measureChar(cm, line, ch, bias) {\n-                                return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);\n-                            }\n-\n-                            function findViewForLine(cm, lineN) {\n-                                if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) {\n-                                    return cm.display.view[findViewIndex(cm, lineN)];\n-                                }\n-                                var ext = cm.display.externalMeasured;\n-                                if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) {\n-                                    return ext;\n-                                }\n-                            }\n-\n-                            function prepareMeasureForLine(cm, line) {\n-                                var lineN = lineNo(line);\n-                                var view = findViewForLine(cm, lineN);\n-                                if (view && !view.text) {\n-                                    view = null;\n-                                } else if (view && view.changes) {\n-                                    updateLineForChanges(cm, view, lineN, getDimensions(cm));\n-                                    cm.curOp.forceUpdate = true;\n-                                }\n-                                if (!view) {\n-                                    view = updateExternalMeasurement(cm, line);\n-                                }\n-                                var info = mapFromLineView(view, line, lineN);\n-                                return {\n-                                    line,\n-                                    view,\n-                                    rect: null,\n-                                    map: info.map,\n-                                    cache: info.cache,\n-                                    before: info.before,\n-                                    hasHeights: false\n-                                };\n-                            }\n-\n-                            function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n-                                if (prepared.before) {\n-                                    ch = -1;\n-                                }\n-                                var key = ch + (bias || \"\"),\n-                                    found;\n-                                if (prepared.cache.hasOwnProperty(key)) {\n-                                    found = prepared.cache[key];\n-                                } else {\n-                                    if (!prepared.rect) {\n-                                        prepared.rect = prepared.view.text.getBoundingClientRect();\n-                                    }\n-                                    if (!prepared.hasHeights) {\n-                                        ensureLineHeights(cm, prepared.view, prepared.rect);\n-                                        prepared.hasHeights = true;\n-                                    }\n-                                    found = measureCharInner(cm, prepared, ch, bias);\n-                                    if (!found.bogus) {\n-                                        prepared.cache[key] = found;\n-                                    }\n-                                }\n-                                return {\n-                                    left: found.left,\n-                                    right: found.right,\n-                                    top: varHeight ? found.rtop : found.top,\n-                                    bottom: varHeight ? found.rbottom : found.bottom\n-                                };\n-                            }\n-                            var nullRect = {\n-                                left: 0,\n-                                right: 0,\n-                                top: 0,\n-                                bottom: 0\n-                            };\n-\n-                            function nodeAndOffsetInLineMap(map2, ch, bias) {\n-                                var node, start, end, collapse, mStart, mEnd;\n-                                for (var i2 = 0; i2 < map2.length; i2 += 3) {\n-                                    mStart = map2[i2];\n-                                    mEnd = map2[i2 + 1];\n-                                    if (ch < mStart) {\n-                                        start = 0;\n-                                        end = 1;\n-                                        collapse = \"left\";\n-                                    } else if (ch < mEnd) {\n-                                        start = ch - mStart;\n-                                        end = start + 1;\n-                                    } else if (i2 == map2.length - 3 || ch == mEnd && map2[i2 + 3] > ch) {\n-                                        end = mEnd - mStart;\n-                                        start = end - 1;\n-                                        if (ch >= mEnd) {\n-                                            collapse = \"right\";\n-                                        }\n-                                    }\n-                                    if (start != null) {\n-                                        node = map2[i2 + 2];\n-                                        if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\")) {\n-                                            collapse = bias;\n-                                        }\n-                                        if (bias == \"left\" && start == 0) {\n-                                            while (i2 && map2[i2 - 2] == map2[i2 - 3] && map2[i2 - 1].insertLeft) {\n-                                                node = map2[(i2 -= 3) + 2];\n-                                                collapse = \"left\";\n-                                            }\n-                                        }\n-                                        if (bias == \"right\" && start == mEnd - mStart) {\n-                                            while (i2 < map2.length - 3 && map2[i2 + 3] == map2[i2 + 4] && !map2[i2 + 5].insertLeft) {\n-                                                node = map2[(i2 += 3) + 2];\n-                                                collapse = \"right\";\n-                                            }\n-                                        }\n-                                        break;\n-                                    }\n-                                }\n-                                return {\n-                                    node,\n-                                    start,\n-                                    end,\n-                                    collapse,\n-                                    coverStart: mStart,\n-                                    coverEnd: mEnd\n-                                };\n-                            }\n-\n-                            function getUsefulRect(rects, bias) {\n-                                var rect = nullRect;\n-                                if (bias == \"left\") {\n-                                    for (var i2 = 0; i2 < rects.length; i2++) {\n-                                        if ((rect = rects[i2]).left != rect.right) {\n-                                            break;\n-                                        }\n-                                    }\n-                                } else {\n-                                    for (var i$12 = rects.length - 1; i$12 >= 0; i$12--) {\n-                                        if ((rect = rects[i$12]).left != rect.right) {\n-                                            break;\n-                                        }\n-                                    }\n-                                }\n-                                return rect;\n-                            }\n-\n-                            function measureCharInner(cm, prepared, ch, bias) {\n-                                var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n-                                var node = place.node,\n-                                    start = place.start,\n-                                    end = place.end,\n-                                    collapse = place.collapse;\n-                                var rect;\n-                                if (node.nodeType == 3) {\n-                                    for (var i$12 = 0; i$12 < 4; i$12++) {\n-                                        while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) {\n-                                            --start;\n-                                        }\n-                                        while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) {\n-                                            ++end;\n-                                        }\n-                                        if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) {\n-                                            rect = node.parentNode.getBoundingClientRect();\n-                                        } else {\n-                                            rect = getUsefulRect(range(node, start, end).getClientRects(), bias);\n-                                        }\n-                                        if (rect.left || rect.right || start == 0) {\n-                                            break;\n-                                        }\n-                                        end = start;\n-                                        start = start - 1;\n-                                        collapse = \"right\";\n-                                    }\n-                                    if (ie && ie_version < 11) {\n-                                        rect = maybeUpdateRectForZooming(cm.display.measure, rect);\n-                                    }\n-                                } else {\n-                                    if (start > 0) {\n-                                        collapse = bias = \"right\";\n-                                    }\n-                                    var rects;\n-                                    if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) {\n-                                        rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n-                                    } else {\n-                                        rect = node.getBoundingClientRect();\n-                                    }\n-                                }\n-                                if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n-                                    var rSpan = node.parentNode.getClientRects()[0];\n-                                    if (rSpan) {\n-                                        rect = {\n-                                            left: rSpan.left,\n-                                            right: rSpan.left + charWidth(cm.display),\n-                                            top: rSpan.top,\n-                                            bottom: rSpan.bottom\n-                                        };\n-                                    } else {\n-                                        rect = nullRect;\n-                                    }\n-                                }\n-                                var rtop = rect.top - prepared.rect.top,\n-                                    rbot = rect.bottom - prepared.rect.top;\n-                                var mid = (rtop + rbot) / 2;\n-                                var heights = prepared.view.measure.heights;\n-                                var i2 = 0;\n-                                for (; i2 < heights.length - 1; i2++) {\n-                                    if (mid < heights[i2]) {\n-                                        break;\n-                                    }\n-                                }\n-                                var top = i2 ? heights[i2 - 1] : 0,\n-                                    bot = heights[i2];\n-                                var result = {\n-                                    left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n-                                    right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n-                                    top,\n-                                    bottom: bot\n-                                };\n-                                if (!rect.left && !rect.right) {\n-                                    result.bogus = true;\n-                                }\n-                                if (!cm.options.singleCursorHeightPerLine) {\n-                                    result.rtop = rtop;\n-                                    result.rbottom = rbot;\n-                                }\n-                                return result;\n-                            }\n-\n-                            function maybeUpdateRectForZooming(measure, rect) {\n-                                if (!window.screen || screen.logicalXDPI == null || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) {\n-                                    return rect;\n-                                }\n-                                var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n-                                var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n-                                return {\n-                                    left: rect.left * scaleX,\n-                                    right: rect.right * scaleX,\n-                                    top: rect.top * scaleY,\n-                                    bottom: rect.bottom * scaleY\n-                                };\n-                            }\n-\n-                            function clearLineMeasurementCacheFor(lineView) {\n-                                if (lineView.measure) {\n-                                    lineView.measure.cache = {};\n-                                    lineView.measure.heights = null;\n-                                    if (lineView.rest) {\n-                                        for (var i2 = 0; i2 < lineView.rest.length; i2++) {\n-                                            lineView.measure.caches[i2] = {};\n-                                        }\n-                                    }\n-                                }\n-                            }\n-\n-                            function clearLineMeasurementCache(cm) {\n-                                cm.display.externalMeasure = null;\n-                                removeChildren(cm.display.lineMeasure);\n-                                for (var i2 = 0; i2 < cm.display.view.length; i2++) {\n-                                    clearLineMeasurementCacheFor(cm.display.view[i2]);\n-                                }\n-                            }\n-\n-                            function clearCaches(cm) {\n-                                clearLineMeasurementCache(cm);\n-                                cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n-                                if (!cm.options.lineWrapping) {\n-                                    cm.display.maxLineChanged = true;\n-                                }\n-                                cm.display.lineNumChars = null;\n-                            }\n-\n-                            function pageScrollX() {\n-                                if (chrome && android) {\n-                                    return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft));\n-                                }\n-                                return window.pageXOffset || (document.documentElement || document.body).scrollLeft;\n-                            }\n-\n-                            function pageScrollY() {\n-                                if (chrome && android) {\n-                                    return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop));\n-                                }\n-                                return window.pageYOffset || (document.documentElement || document.body).scrollTop;\n-                            }\n-\n-                            function widgetTopHeight(lineObj) {\n-                                var ref = visualLine(lineObj);\n-                                var widgets = ref.widgets;\n-                                var height = 0;\n-                                if (widgets) {\n-                                    for (var i2 = 0; i2 < widgets.length; ++i2) {\n-                                        if (widgets[i2].above) {\n-                                            height += widgetHeight(widgets[i2]);\n-                                        }\n-                                    }\n-                                }\n-                                return height;\n-                            }\n-\n-                            function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n-                                if (!includeWidgets) {\n-                                    var height = widgetTopHeight(lineObj);\n-                                    rect.top += height;\n-                                    rect.bottom += height;\n-                                }\n-                                if (context == \"line\") {\n-                                    return rect;\n-                                }\n-                                if (!context) {\n-                                    context = \"local\";\n-                                }\n-                                var yOff = heightAtLine(lineObj);\n-                                if (context == \"local\") {\n-                                    yOff += paddingTop(cm.display);\n-                                } else {\n-                                    yOff -= cm.display.viewOffset;\n-                                }\n-                                if (context == \"page\" || context == \"window\") {\n-                                    var lOff = cm.display.lineSpace.getBoundingClientRect();\n-                                    yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n-                                    var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n-                                    rect.left += xOff;\n-                                    rect.right += xOff;\n-                                }\n-                                rect.top += yOff;\n-                                rect.bottom += yOff;\n-                                return rect;\n-                            }\n-\n-                            function fromCoordSystem(cm, coords, context) {\n-                                if (context == \"div\") {\n-                                    return coords;\n-                                }\n-                                var left = coords.left,\n-                                    top = coords.top;\n-                                if (context == \"page\") {\n-                                    left -= pageScrollX();\n-                                    top -= pageScrollY();\n-                                } else if (context == \"local\" || !context) {\n-                                    var localBox = cm.display.sizer.getBoundingClientRect();\n-                                    left += localBox.left;\n-                                    top += localBox.top;\n-                                }\n-                                var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n-                                return {\n-                                    left: left - lineSpaceBox.left,\n-                                    top: top - lineSpaceBox.top\n-                                };\n-                            }\n-\n-                            function charCoords(cm, pos, context, lineObj, bias) {\n-                                if (!lineObj) {\n-                                    lineObj = getLine(cm.doc, pos.line);\n-                                }\n-                                return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);\n-                            }\n-\n-                            function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n-                                lineObj = lineObj || getLine(cm.doc, pos.line);\n-                                if (!preparedMeasure) {\n-                                    preparedMeasure = prepareMeasureForLine(cm, lineObj);\n-                                }\n-\n-                                function get(ch2, right) {\n-                                    var m = measureCharPrepared(cm, preparedMeasure, ch2, right ? \"right\" : \"left\", varHeight);\n-                                    if (right) {\n-                                        m.left = m.right;\n-                                    } else {\n-                                        m.right = m.left;\n-                                    }\n-                                    return intoCoordSystem(cm, lineObj, m, context);\n-                                }\n-                                var order = getOrder(lineObj, cm.doc.direction),\n-                                    ch = pos.ch,\n-                                    sticky = pos.sticky;\n-                                if (ch >= lineObj.text.length) {\n-                                    ch = lineObj.text.length;\n-                                    sticky = \"before\";\n-                                } else if (ch <= 0) {\n-                                    ch = 0;\n-                                    sticky = \"after\";\n-                                }\n-                                if (!order) {\n-                                    return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\");\n-                                }\n-\n-                                function getBidi(ch2, partPos2, invert) {\n-                                    var part = order[partPos2],\n-                                        right = part.level == 1;\n-                                    return get(invert ? ch2 - 1 : ch2, right != invert);\n-                                }\n-                                var partPos = getBidiPartAt(order, ch, sticky);\n-                                var other = bidiOther;\n-                                var val = getBidi(ch, partPos, sticky == \"before\");\n-                                if (other != null) {\n-                                    val.other = getBidi(ch, other, sticky != \"before\");\n-                                }\n-                                return val;\n-                            }\n-\n-                            function estimateCoords(cm, pos) {\n-                                var left = 0;\n-                                pos = clipPos(cm.doc, pos);\n-                                if (!cm.options.lineWrapping) {\n-                                    left = charWidth(cm.display) * pos.ch;\n-                                }\n-                                var lineObj = getLine(cm.doc, pos.line);\n-                                var top = heightAtLine(lineObj) + paddingTop(cm.display);\n-                                return {\n-                                    left,\n-                                    right: left,\n-                                    top,\n-                                    bottom: top + lineObj.height\n-                                };\n-                            }\n-\n-                            function PosWithInfo(line, ch, sticky, outside, xRel) {\n-                                var pos = Pos(line, ch, sticky);\n-                                pos.xRel = xRel;\n-                                if (outside) {\n-                                    pos.outside = outside;\n-                                }\n-                                return pos;\n-                            }\n-\n-                            function coordsChar(cm, x, y) {\n-                                var doc = cm.doc;\n-                                y += cm.display.viewOffset;\n-                                if (y < 0) {\n-                                    return PosWithInfo(doc.first, 0, null, -1, -1);\n-                                }\n-                                var lineN = lineAtHeight(doc, y),\n-                                    last = doc.first + doc.size - 1;\n-                                if (lineN > last) {\n-                                    return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1);\n-                                }\n-                                if (x < 0) {\n-                                    x = 0;\n-                                }\n-                                var lineObj = getLine(doc, lineN);\n-                                for (;;) {\n-                                    var found = coordsCharInner(cm, lineObj, lineN, x, y);\n-                                    var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n-                                    if (!collapsed) {\n-                                        return found;\n-                                    }\n-                                    var rangeEnd = collapsed.find(1);\n-                                    if (rangeEnd.line == lineN) {\n-                                        return rangeEnd;\n-                                    }\n-                                    lineObj = getLine(doc, lineN = rangeEnd.line);\n-                                }\n-                            }\n-\n-                            function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n-                                y -= widgetTopHeight(lineObj);\n-                                var end = lineObj.text.length;\n-                                var begin = findFirst(function(ch) {\n-                                    return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y;\n-                                }, end, 0);\n-                                end = findFirst(function(ch) {\n-                                    return measureCharPrepared(cm, preparedMeasure, ch).top > y;\n-                                }, begin, end);\n-                                return {\n-                                    begin,\n-                                    end\n-                                };\n-                            }\n-\n-                            function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n-                                if (!preparedMeasure) {\n-                                    preparedMeasure = prepareMeasureForLine(cm, lineObj);\n-                                }\n-                                var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n-                                return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop);\n-                            }\n-\n-                            function boxIsAfter(box, x, y, left) {\n-                                return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x;\n-                            }\n-\n-                            function coordsCharInner(cm, lineObj, lineNo2, x, y) {\n-                                y -= heightAtLine(lineObj);\n-                                var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n-                                var widgetHeight2 = widgetTopHeight(lineObj);\n-                                var begin = 0,\n-                                    end = lineObj.text.length,\n-                                    ltr = true;\n-                                var order = getOrder(lineObj, cm.doc.direction);\n-                                if (order) {\n-                                    var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)(cm, lineObj, lineNo2, preparedMeasure, order, x, y);\n-                                    ltr = part.level != 1;\n-                                    begin = ltr ? part.from : part.to - 1;\n-                                    end = ltr ? part.to : part.from - 1;\n-                                }\n-                                var chAround = null,\n-                                    boxAround = null;\n-                                var ch = findFirst(function(ch2) {\n-                                    var box = measureCharPrepared(cm, preparedMeasure, ch2);\n-                                    box.top += widgetHeight2;\n-                                    box.bottom += widgetHeight2;\n-                                    if (!boxIsAfter(box, x, y, false)) {\n-                                        return false;\n-                                    }\n-                                    if (box.top <= y && box.left <= x) {\n-                                        chAround = ch2;\n-                                        boxAround = box;\n-                                    }\n-                                    return true;\n-                                }, begin, end);\n-                                var baseX,\n-                                    sticky,\n-                                    outside = false;\n-                                if (boxAround) {\n-                                    var atLeft = x - boxAround.left < boxAround.right - x,\n-                                        atStart = atLeft == ltr;\n-                                    ch = chAround + (atStart ? 0 : 1);\n-                                    sticky = atStart ? \"after\" : \"before\";\n-                                    baseX = atLeft ? boxAround.left : boxAround.right;\n-                                } else {\n-                                    if (!ltr && (ch == end || ch == begin)) {\n-                                        ch++;\n-                                    }\n-                                    sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" : measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight2 <= y == ltr ? \"after\" : \"before\";\n-                                    var coords = cursorCoords(cm, Pos(lineNo2, ch, sticky), \"line\", lineObj, preparedMeasure);\n-                                    baseX = coords.left;\n-                                    outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n-                                }\n-                                ch = skipExtendingChars(lineObj.text, ch, 1);\n-                                return PosWithInfo(lineNo2, ch, sticky, outside, x - baseX);\n-                            }\n-\n-                            function coordsBidiPart(cm, lineObj, lineNo2, preparedMeasure, order, x, y) {\n-                                var index = findFirst(function(i2) {\n-                                    var part2 = order[i2],\n-                                        ltr2 = part2.level != 1;\n-                                    return boxIsAfter(cursorCoords(cm, Pos(lineNo2, ltr2 ? part2.to : part2.from, ltr2 ? \"before\" : \"after\"), \"line\", lineObj, preparedMeasure), x, y, true);\n-                                }, 0, order.length - 1);\n-                                var part = order[index];\n-                                if (index > 0) {\n-                                    var ltr = part.level != 1;\n-                                    var start = cursorCoords(cm, Pos(lineNo2, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"), \"line\", lineObj, preparedMeasure);\n-                                    if (boxIsAfter(start, x, y, true) && start.top > y) {\n-                                        part = order[index - 1];\n-                                    }\n-                                }\n-                                return part;\n-                            }\n-\n-                            function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n-                                var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n-                                var begin = ref.begin;\n-                                var end = ref.end;\n-                                if (/\\s/.test(lineObj.text.charAt(end - 1))) {\n-                                    end--;\n-                                }\n-                                var part = null,\n-                                    closestDist = null;\n-                                for (var i2 = 0; i2 < order.length; i2++) {\n-                                    var p = order[i2];\n-                                    if (p.from >= end || p.to <= begin) {\n-                                        continue;\n-                                    }\n-                                    var ltr = p.level != 1;\n-                                    var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n-                                    var dist = endX < x ? x - endX + 1e9 : endX - x;\n-                                    if (!part || closestDist > dist) {\n-                                        part = p;\n-                                        closestDist = dist;\n-                                    }\n-                                }\n-                                if (!part) {\n-                                    part = order[order.length - 1];\n-                                }\n-                                if (part.from < begin) {\n-                                    part = {\n-                                        from: begin,\n-                                        to: part.to,\n-                                        level: part.level\n-                                    };\n-                                }\n-                                if (part.to > end) {\n-                                    part = {\n-                                        from: part.from,\n-                                        to: end,\n-                                        level: part.level\n-                                    };\n-                                }\n-                                return part;\n-                            }\n-                            var measureText;\n-\n-                            function textHeight(display) {\n-                                if (display.cachedTextHeight != null) {\n-                                    return display.cachedTextHeight;\n-                                }\n-                                if (measureText == null) {\n-                                    measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n-                                    for (var i2 = 0; i2 < 49; ++i2) {\n-                                        measureText.appendChild(document.createTextNode(\"x\"));\n-                                        measureText.appendChild(elt(\"br\"));\n-                                    }\n-                                    measureText.appendChild(document.createTextNode(\"x\"));\n-                                }\n-                                removeChildrenAndAdd(display.measure, measureText);\n-                                var height = measureText.offsetHeight / 50;\n-                                if (height > 3) {\n-                                    display.cachedTextHeight = height;\n-                                }\n-                                removeChildren(display.measure);\n-                                return height || 1;\n-                            }\n-\n-                            function charWidth(display) {\n-                                if (display.cachedCharWidth != null) {\n-                                    return display.cachedCharWidth;\n-                                }\n-                                var anchor = elt(\"span\", \"xxxxxxxxxx\");\n-                                var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n-                                removeChildrenAndAdd(display.measure, pre);\n-                                var rect = anchor.getBoundingClientRect(),\n-                                    width = (rect.right - rect.left) / 10;\n-                                if (width > 2) {\n-                                    display.cachedCharWidth = width;\n-                                }\n-                                return width || 10;\n-                            }\n-\n-                            function getDimensions(cm) {\n-                                var d = cm.display,\n-                                    left = {},\n-                                    width = {};\n-                                var gutterLeft = d.gutters.clientLeft;\n-                                for (var n = d.gutters.firstChild, i2 = 0; n; n = n.nextSibling, ++i2) {\n-                                    var id = cm.display.gutterSpecs[i2].className;\n-                                    left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n-                                    width[id] = n.clientWidth;\n-                                }\n-                                return {\n-                                    fixedPos: compensateForHScroll(d),\n-                                    gutterTotalWidth: d.gutters.offsetWidth,\n-                                    gutterLeft: left,\n-                                    gutterWidth: width,\n-                                    wrapperWidth: d.wrapper.clientWidth\n-                                };\n-                            }\n-\n-                            function compensateForHScroll(display) {\n-                                return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;\n-                            }\n-\n-                            function estimateHeight(cm) {\n-                                var th = textHeight(cm.display),\n-                                    wrapping = cm.options.lineWrapping;\n-                                var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n-                                return function(line) {\n-                                    if (lineIsHidden(cm.doc, line)) {\n-                                        return 0;\n-                                    }\n-                                    var widgetsHeight = 0;\n-                                    if (line.widgets) {\n-                                        for (var i2 = 0; i2 < line.widgets.length; i2++) {\n-                                            if (line.widgets[i2].height) {\n-                                                widgetsHeight += line.widgets[i2].height;\n-                                            }\n-                                        }\n-                                    }\n-                                    if (wrapping) {\n-                                        return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;\n-                                    } else {\n-                                        return widgetsHeight + th;\n-                                    }\n-                                };\n-                            }\n-\n-                            function estimateLineHeights(cm) {\n-                                var doc = cm.doc,\n-                                    est = estimateHeight(cm);\n-                                doc.iter(function(line) {\n-                                    var estHeight = est(line);\n-                                    if (estHeight != line.height) {\n-                                        updateLineHeight(line, estHeight);\n-                                    }\n-                                });\n-                            }\n-\n-                            function posFromMouse(cm, e, liberal, forRect) {\n-                                var display = cm.display;\n-                                if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") {\n-                                    return null;\n-                                }\n-                                var x,\n-                                    y,\n-                                    space = display.lineSpace.getBoundingClientRect();\n-                                try {\n-                                    x = e.clientX - space.left;\n-                                    y = e.clientY - space.top;\n-                                } catch (e$1) {\n-                                    return null;\n-                                }\n-                                var coords = coordsChar(cm, x, y),\n-                                    line;\n-                                if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n-                                    var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n-                                    coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n-                                }\n-                                return coords;\n-                            }\n-\n-                            function findViewIndex(cm, n) {\n-                                if (n >= cm.display.viewTo) {\n-                                    return null;\n-                                }\n-                                n -= cm.display.viewFrom;\n-                                if (n < 0) {\n-                                    return null;\n-                                }\n-                                var view = cm.display.view;\n-                                for (var i2 = 0; i2 < view.length; i2++) {\n-                                    n -= view[i2].size;\n-                                    if (n < 0) {\n-                                        return i2;\n-                                    }\n-                                }\n-                            }\n-\n-                            function regChange(cm, from, to, lendiff) {\n-                                if (from == null) {\n-                                    from = cm.doc.first;\n-                                }\n-                                if (to == null) {\n-                                    to = cm.doc.first + cm.doc.size;\n-                                }\n-                                if (!lendiff) {\n-                                    lendiff = 0;\n-                                }\n-                                var display = cm.display;\n-                                if (lendiff && to < display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers > from)) {\n-                                    display.updateLineNumbers = from;\n-                                }\n-                                cm.curOp.viewChanged = true;\n-                                if (from >= display.viewTo) {\n-                                    if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) {\n-                                        resetView(cm);\n-                                    }\n-                                } else if (to <= display.viewFrom) {\n-                                    if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n-                                        resetView(cm);\n-                                    } else {\n-                                        display.viewFrom += lendiff;\n-                                        display.viewTo += lendiff;\n-                                    }\n-                                } else if (from <= display.viewFrom && to >= display.viewTo) {\n-                                    resetView(cm);\n-                                } else if (from <= display.viewFrom) {\n-                                    var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n-                                    if (cut) {\n-                                        display.view = display.view.slice(cut.index);\n-                                        display.viewFrom = cut.lineN;\n-                                        display.viewTo += lendiff;\n-                                    } else {\n-                                        resetView(cm);\n-                                    }\n-                                } else if (to >= display.viewTo) {\n-                                    var cut$1 = viewCuttingPoint(cm, from, from, -1);\n-                                    if (cut$1) {\n-                                        display.view = display.view.slice(0, cut$1.index);\n-                                        display.viewTo = cut$1.lineN;\n-                                    } else {\n-                                        resetView(cm);\n-                                    }\n-                                } else {\n-                                    var cutTop = viewCuttingPoint(cm, from, from, -1);\n-                                    var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n-                                    if (cutTop && cutBot) {\n-                                        display.view = display.view.slice(0, cutTop.index).concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)).concat(display.view.slice(cutBot.index));\n-                                        display.viewTo += lendiff;\n-                                    } else {\n-                                        resetView(cm);\n-                                    }\n-                                }\n-                                var ext = display.externalMeasured;\n-                                if (ext) {\n-                                    if (to < ext.lineN) {\n-                                        ext.lineN += lendiff;\n-                                    } else if (from < ext.lineN + ext.size) {\n-                                        display.externalMeasured = null;\n-                                    }\n-                                }\n-                            }\n-\n-                            function regLineChange(cm, line, type) {\n-                                cm.curOp.viewChanged = true;\n-                                var display = cm.display,\n-                                    ext = cm.display.externalMeasured;\n-                                if (ext && line >= ext.lineN && line < ext.lineN + ext.size) {\n-                                    display.externalMeasured = null;\n-                                }\n-                                if (line < display.viewFrom || line >= display.viewTo) {\n-                                    return;\n-                                }\n-                                var lineView = display.view[findViewIndex(cm, line)];\n-                                if (lineView.node == null) {\n-                                    return;\n-                                }\n-                                var arr = lineView.changes || (lineView.changes = []);\n-                                if (indexOf(arr, type) == -1) {\n-                                    arr.push(type);\n-                                }\n-                            }\n-\n-                            function resetView(cm) {\n-                                cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n-                                cm.display.view = [];\n-                                cm.display.viewOffset = 0;\n-                            }\n-\n-                            function viewCuttingPoint(cm, oldN, newN, dir) {\n-                                var index = findViewIndex(cm, oldN),\n-                                    diff,\n-                                    view = cm.display.view;\n-                                if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) {\n-                                    return {\n-                                        index,\n-                                        lineN: newN\n-                                    };\n-                                }\n-                                var n = cm.display.viewFrom;\n-                                for (var i2 = 0; i2 < index; i2++) {\n-                                    n += view[i2].size;\n-                                }\n-                                if (n != oldN) {\n-                                    if (dir > 0) {\n-                                        if (index == view.length - 1) {\n-                                            return null;\n-                                        }\n-                                        diff = n + view[index].size - oldN;\n-                                        index++;\n-                                    } else {\n-                                        diff = n - oldN;\n-                                    }\n-                                    oldN += diff;\n-                                    newN += diff;\n-                                }\n-                                while (visualLineNo(cm.doc, newN) != newN) {\n-                                    if (index == (dir < 0 ? 0 : view.length - 1)) {\n-                                        return null;\n-                                    }\n-                                    newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n-                                    index += dir;\n-                                }\n-                                return {\n-                                    index,\n-                                    lineN: newN\n-                                };\n-                            }\n-\n-                            function adjustView(cm, from, to) {\n-                                var display = cm.display,\n-                                    view = display.view;\n-                                if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n-                                    display.view = buildViewArray(cm, from, to);\n-                                    display.viewFrom = from;\n-                                } else {\n-                                    if (display.viewFrom > from) {\n-                                        display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);\n-                                    } else if (display.viewFrom < from) {\n-                                        display.view = display.view.slice(findViewIndex(cm, from));\n-                                    }\n-                                    display.viewFrom = from;\n-                                    if (display.viewTo < to) {\n-                                        display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));\n-                                    } else if (display.viewTo > to) {\n-                                        display.view = display.view.slice(0, findViewIndex(cm, to));\n-                                    }\n-                                }\n-                                display.viewTo = to;\n-                            }\n-\n-                            function countDirtyView(cm) {\n-                                var view = cm.display.view,\n-                                    dirty = 0;\n-                                for (var i2 = 0; i2 < view.length; i2++) {\n-                                    var lineView = view[i2];\n-                                    if (!lineView.hidden && (!lineView.node || lineView.changes)) {\n-                                        ++dirty;\n-                                    }\n-                                }\n-                                return dirty;\n-                            }\n-\n-                            function updateSelection(cm) {\n-                                cm.display.input.showSelection(cm.display.input.prepareSelection());\n-                            }\n-\n-                            function prepareSelection(cm, primary) {\n-                                if (primary === void 0) primary = true;\n-                                var doc = cm.doc,\n-                                    result = {};\n-                                var curFragment = result.cursors = document.createDocumentFragment();\n-                                var selFragment = result.selection = document.createDocumentFragment();\n-                                var customCursor = cm.options.$customCursor;\n-                                if (customCursor) {\n-                                    primary = true;\n-                                }\n-                                for (var i2 = 0; i2 < doc.sel.ranges.length; i2++) {\n-                                    if (!primary && i2 == doc.sel.primIndex) {\n-                                        continue;\n-                                    }\n-                                    var range2 = doc.sel.ranges[i2];\n-                                    if (range2.from().line >= cm.display.viewTo || range2.to().line < cm.display.viewFrom) {\n-                                        continue;\n-                                    }\n-                                    var collapsed = range2.empty();\n-                                    if (customCursor) {\n-                                        var head = customCursor(cm, range2);\n-                                        if (head) {\n-                                            drawSelectionCursor(cm, head, curFragment);\n-                                        }\n-                                    } else if (collapsed || cm.options.showCursorWhenSelecting) {\n-                                        drawSelectionCursor(cm, range2.head, curFragment);\n-                                    }\n-                                    if (!collapsed) {\n-                                        drawSelectionRange(cm, range2, selFragment);\n-                                    }\n-                                }\n-                                return result;\n-                            }\n-\n-                            function drawSelectionCursor(cm, head, output) {\n-                                var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n-                                var cursor = output.appendChild(elt(\"div\", \"\u00a0\", \"CodeMirror-cursor\"));\n-                                cursor.style.left = pos.left + \"px\";\n-                                cursor.style.top = pos.top + \"px\";\n-                                cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n-                                if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n-                                    var charPos = charCoords(cm, head, \"div\", null, null);\n-                                    var width = charPos.right - charPos.left;\n-                                    cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n-                                }\n-                                if (pos.other) {\n-                                    var otherCursor = output.appendChild(elt(\"div\", \"\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n-                                    otherCursor.style.display = \"\";\n-                                    otherCursor.style.left = pos.other.left + \"px\";\n-                                    otherCursor.style.top = pos.other.top + \"px\";\n-                                    otherCursor.style.height = (pos.other.bottom - pos.other.top) * 0.85 + \"px\";\n-                                }\n-                            }\n-\n-                            function cmpCoords(a, b) {\n-                                return a.top - b.top || a.left - b.left;\n-                            }\n-\n-                            function drawSelectionRange(cm, range2, output) {\n-                                var display = cm.display,\n-                                    doc = cm.doc;\n-                                var fragment = document.createDocumentFragment();\n-                                var padding = paddingH(cm.display),\n-                                    leftSide = padding.left;\n-                                var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n-                                var docLTR = doc.direction == \"ltr\";\n-\n-                                function add(left, top, width, bottom) {\n-                                    if (top < 0) {\n-                                        top = 0;\n-                                    }\n-                                    top = Math.round(top);\n-                                    bottom = Math.round(bottom);\n-                                    fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", \"position: absolute; left: \" + left + \"px;\\n                             top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n                             height: \" + (bottom - top) + \"px\"));\n-                                }\n-\n-                                function drawForLine(line, fromArg, toArg) {\n-                                    var lineObj = getLine(doc, line);\n-                                    var lineLen = lineObj.text.length;\n-                                    var start, end;\n-\n-                                    function coords(ch, bias) {\n-                                        return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias);\n-                                    }\n-\n-                                    function wrapX(pos, dir, side) {\n-                                        var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n-                                        var prop2 = dir == \"ltr\" == (side == \"after\") ? \"left\" : \"right\";\n-                                        var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n-                                        return coords(ch, prop2)[prop2];\n-                                    }\n-                                    var order = getOrder(lineObj, doc.direction);\n-                                    iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir, i2) {\n-                                        var ltr = dir == \"ltr\";\n-                                        var fromPos = coords(from, ltr ? \"left\" : \"right\");\n-                                        var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n-                                        var openStart = fromArg == null && from == 0,\n-                                            openEnd = toArg == null && to == lineLen;\n-                                        var first = i2 == 0,\n-                                            last = !order || i2 == order.length - 1;\n-                                        if (toPos.top - fromPos.top <= 3) {\n-                                            var openLeft = (docLTR ? openStart : openEnd) && first;\n-                                            var openRight = (docLTR ? openEnd : openStart) && last;\n-                                            var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n-                                            var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n-                                            add(left, fromPos.top, right - left, fromPos.bottom);\n-                                        } else {\n-                                            var topLeft, topRight, botLeft, botRight;\n-                                            if (ltr) {\n-                                                topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n-                                                topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n-                                                botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n-                                                botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n-                                            } else {\n-                                                topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n-                                                topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n-                                                botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n-                                                botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n-                                            }\n-                                            add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n-                                            if (fromPos.bottom < toPos.top) {\n-                                                add(leftSide, fromPos.bottom, null, toPos.top);\n-                                            }\n-                                            add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n-                                        }\n-                                        if (!start || cmpCoords(fromPos, start) < 0) {\n-                                            start = fromPos;\n-                                        }\n-                                        if (cmpCoords(toPos, start) < 0) {\n-                                            start = toPos;\n-                                        }\n-                                        if (!end || cmpCoords(fromPos, end) < 0) {\n-                                            end = fromPos;\n-                                        }\n-                                        if (cmpCoords(toPos, end) < 0) {\n-                                            end = toPos;\n-                                        }\n-                                    });\n-                                    return {\n-                                        start,\n-                                        end\n-                                    };\n-                                }\n-                                var sFrom = range2.from(),\n-                                    sTo = range2.to();\n-                                if (sFrom.line == sTo.line) {\n-                                    drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n-                                } else {\n-                                    var fromLine = getLine(doc, sFrom.line),\n-                                        toLine = getLine(doc, sTo.line);\n-                                    var singleVLine = visualLine(fromLine) == visualLine(toLine);\n-                                    var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n-                                    var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n-                                    if (singleVLine) {\n-                                        if (leftEnd.top < rightStart.top - 2) {\n-                                            add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n-                                            add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n-                                        } else {\n-                                            add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n-                                        }\n-                                    }\n-                                    if (leftEnd.bottom < rightStart.top) {\n-                                        add(leftSide, leftEnd.bottom, null, rightStart.top);\n-                                    }\n-                                }\n-                                output.appendChild(fragment);\n-                            }\n-\n-                            function restartBlink(cm) {\n-                                if (!cm.state.focused) {\n-                                    return;\n-                                }\n-                                var display = cm.display;\n-                                clearInterval(display.blinker);\n-                                var on2 = true;\n-                                display.cursorDiv.style.visibility = \"\";\n-                                if (cm.options.cursorBlinkRate > 0) {\n-                                    display.blinker = setInterval(function() {\n-                                        if (!cm.hasFocus()) {\n-                                            onBlur(cm);\n-                                        }\n-                                        display.cursorDiv.style.visibility = (on2 = !on2) ? \"\" : \"hidden\";\n-                                    }, cm.options.cursorBlinkRate);\n-                                } else if (cm.options.cursorBlinkRate < 0) {\n-                                    display.cursorDiv.style.visibility = \"hidden\";\n-                                }\n-                            }\n-\n-                            function ensureFocus(cm) {\n-                                if (!cm.hasFocus()) {\n-                                    cm.display.input.focus();\n-                                    if (!cm.state.focused) {\n-                                        onFocus(cm);\n-                                    }\n-                                }\n-                            }\n-\n-                            function delayBlurEvent(cm) {\n-                                cm.state.delayingBlurEvent = true;\n-                                setTimeout(function() {\n-                                    if (cm.state.delayingBlurEvent) {\n-                                        cm.state.delayingBlurEvent = false;\n-                                        if (cm.state.focused) {\n-                                            onBlur(cm);\n-                                        }\n-                                    }\n-                                }, 100);\n-                            }\n-\n-                            function onFocus(cm, e) {\n-                                if (cm.state.delayingBlurEvent && !cm.state.draggingText) {\n-                                    cm.state.delayingBlurEvent = false;\n-                                }\n-                                if (cm.options.readOnly == \"nocursor\") {\n-                                    return;\n-                                }\n-                                if (!cm.state.focused) {\n-                                    signal(cm, \"focus\", cm, e);\n-                                    cm.state.focused = true;\n-                                    addClass(cm.display.wrapper, \"CodeMirror-focused\");\n-                                    if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n-                                        cm.display.input.reset();\n-                                        if (webkit) {\n-                                            setTimeout(function() {\n-                                                return cm.display.input.reset(true);\n-                                            }, 20);\n-                                        }\n-                                    }\n-                                    cm.display.input.receivedFocus();\n-                                }\n-                                restartBlink(cm);\n-                            }\n-\n-                            function onBlur(cm, e) {\n-                                if (cm.state.delayingBlurEvent) {\n-                                    return;\n-                                }\n-                                if (cm.state.focused) {\n-                                    signal(cm, \"blur\", cm, e);\n-                                    cm.state.focused = false;\n-                                    rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n-                                }\n-                                clearInterval(cm.display.blinker);\n-                                setTimeout(function() {\n-                                    if (!cm.state.focused) {\n-                                        cm.display.shift = false;\n-                                    }\n-                                }, 150);\n-                            }\n-\n-                            function updateHeightsInViewport(cm) {\n-                                var display = cm.display;\n-                                var prevBottom = display.lineDiv.offsetTop;\n-                                var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n-                                var oldHeight = display.lineDiv.getBoundingClientRect().top;\n-                                var mustScroll = 0;\n-                                for (var i2 = 0; i2 < display.view.length; i2++) {\n-                                    var cur = display.view[i2],\n-                                        wrapping = cm.options.lineWrapping;\n-                                    var height = void 0,\n-                                        width = 0;\n-                                    if (cur.hidden) {\n-                                        continue;\n-                                    }\n-                                    oldHeight += cur.line.height;\n-                                    if (ie && ie_version < 8) {\n-                                        var bot = cur.node.offsetTop + cur.node.offsetHeight;\n-                                        height = bot - prevBottom;\n-                                        prevBottom = bot;\n-                                    } else {\n-                                        var box = cur.node.getBoundingClientRect();\n-                                        height = box.bottom - box.top;\n-                                        if (!wrapping && cur.text.firstChild) {\n-                                            width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1;\n-                                        }\n-                                    }\n-                                    var diff = cur.line.height - height;\n-                                    if (diff > 5e-3 || diff < -5e-3) {\n-                                        if (oldHeight < viewTop) {\n-                                            mustScroll -= diff;\n-                                        }\n-                                        updateLineHeight(cur.line, height);\n-                                        updateWidgetHeight(cur.line);\n-                                        if (cur.rest) {\n-                                            for (var j = 0; j < cur.rest.length; j++) {\n-                                                updateWidgetHeight(cur.rest[j]);\n-                                            }\n-                                        }\n-                                    }\n-                                    if (width > cm.display.sizerWidth) {\n-                                        var chWidth = Math.ceil(width / charWidth(cm.display));\n-                                        if (chWidth > cm.display.maxLineLength) {\n-                                            cm.display.maxLineLength = chWidth;\n-                                            cm.display.maxLine = cur.line;\n-                                            cm.display.maxLineChanged = true;\n-                                        }\n-                                    }\n-                                }\n-                                if (Math.abs(mustScroll) > 2) {\n-                                    display.scroller.scrollTop += mustScroll;\n-                                }\n-                            }\n-\n-                            function updateWidgetHeight(line) {\n-                                if (line.widgets) {\n-                                    for (var i2 = 0; i2 < line.widgets.length; ++i2) {\n-                                        var w = line.widgets[i2],\n-                                            parent = w.node.parentNode;\n-                                        if (parent) {\n-                                            w.height = parent.offsetHeight;\n-                                        }\n-                                    }\n-                                }\n-                            }\n-\n-                            function visibleLines(display, doc, viewport) {\n-                                var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n-                                top = Math.floor(top - paddingTop(display));\n-                                var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n-                                var from = lineAtHeight(doc, top),\n-                                    to = lineAtHeight(doc, bottom);\n-                                if (viewport && viewport.ensure) {\n-                                    var ensureFrom = viewport.ensure.from.line,\n-                                        ensureTo = viewport.ensure.to.line;\n-                                    if (ensureFrom < from) {\n-                                        from = ensureFrom;\n-                                        to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n-                                    } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n-                                        from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n-                                        to = ensureTo;\n-                                    }\n-                                }\n-                                return {\n-                                    from,\n-                                    to: Math.max(to, from + 1)\n-                                };\n-                            }\n-\n-                            function maybeScrollWindow(cm, rect) {\n-                                if (signalDOMEvent(cm, \"scrollCursorIntoView\")) {\n-                                    return;\n-                                }\n-                                var display = cm.display,\n-                                    box = display.sizer.getBoundingClientRect(),\n-                                    doScroll = null;\n-                                if (rect.top + box.top < 0) {\n-                                    doScroll = true;\n-                                } else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) {\n-                                    doScroll = false;\n-                                }\n-                                if (doScroll != null && !phantom) {\n-                                    var scrollNode = elt(\"div\", \"\u200b\", null, \"position: absolute;\\n                         top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n                         height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n                         left: \" + rect.left + \"px; width: \" + Math.max(2, rect.right - rect.left) + \"px;\");\n-                                    cm.display.lineSpace.appendChild(scrollNode);\n-                                    scrollNode.scrollIntoView(doScroll);\n-                                    cm.display.lineSpace.removeChild(scrollNode);\n-                                }\n-                            }\n-\n-                            function scrollPosIntoView(cm, pos, end, margin) {\n-                                if (margin == null) {\n-                                    margin = 0;\n-                                }\n-                                var rect;\n-                                if (!cm.options.lineWrapping && pos == end) {\n-                                    end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n-                                    pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n-                                }\n-                                for (var limit = 0; limit < 5; limit++) {\n-                                    var changed = false;\n-                                    var coords = cursorCoords(cm, pos);\n-                                    var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n-                                    rect = {\n-                                        left: Math.min(coords.left, endCoords.left),\n-                                        top: Math.min(coords.top, endCoords.top) - margin,\n-                                        right: Math.max(coords.left, endCoords.left),\n-                                        bottom: Math.max(coords.bottom, endCoords.bottom) + margin\n-                                    };\n-                                    var scrollPos = calculateScrollPos(cm, rect);\n-                                    var startTop = cm.doc.scrollTop,\n-                                        startLeft = cm.doc.scrollLeft;\n-                                    if (scrollPos.scrollTop != null) {\n-                                        updateScrollTop(cm, scrollPos.scrollTop);\n-                                        if (Math.abs(cm.doc.scrollTop - startTop) > 1) {\n-                                            changed = true;\n-                                        }\n-                                    }\n-                                    if (scrollPos.scrollLeft != null) {\n-                                        setScrollLeft(cm, scrollPos.scrollLeft);\n-                                        if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) {\n-                                            changed = true;\n-                                        }\n-                                    }\n-                                    if (!changed) {\n-                                        break;\n-                                    }\n-                                }\n-                                return rect;\n-                            }\n-\n-                            function scrollIntoView(cm, rect) {\n-                                var scrollPos = calculateScrollPos(cm, rect);\n-                                if (scrollPos.scrollTop != null) {\n-                                    updateScrollTop(cm, scrollPos.scrollTop);\n-                                }\n-                                if (scrollPos.scrollLeft != null) {\n-                                    setScrollLeft(cm, scrollPos.scrollLeft);\n-                                }\n-                            }\n-\n-                            function calculateScrollPos(cm, rect) {\n-                                var display = cm.display,\n-                                    snapMargin = textHeight(cm.display);\n-                                if (rect.top < 0) {\n-                                    rect.top = 0;\n-                                }\n-                                var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n-                                var screen2 = displayHeight(cm),\n-                                    result = {};\n-                                if (rect.bottom - rect.top > screen2) {\n-                                    rect.bottom = rect.top + screen2;\n-                                }\n-                                var docBottom = cm.doc.height + paddingVert(display);\n-                                var atTop = rect.top < snapMargin,\n-                                    atBottom = rect.bottom > docBottom - snapMargin;\n-                                if (rect.top < screentop) {\n-                                    result.scrollTop = atTop ? 0 : rect.top;\n-                                } else if (rect.bottom > screentop + screen2) {\n-                                    var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen2);\n-                                    if (newTop != screentop) {\n-                                        result.scrollTop = newTop;\n-                                    }\n-                                }\n-                                var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n-                                var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n-                                var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n-                                var tooWide = rect.right - rect.left > screenw;\n-                                if (tooWide) {\n-                                    rect.right = rect.left + screenw;\n-                                }\n-                                if (rect.left < 10) {\n-                                    result.scrollLeft = 0;\n-                                } else if (rect.left < screenleft) {\n-                                    result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10));\n-                                } else if (rect.right > screenw + screenleft - 3) {\n-                                    result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw;\n-                                }\n-                                return result;\n-                            }\n-\n-                            function addToScrollTop(cm, top) {\n-                                if (top == null) {\n-                                    return;\n-                                }\n-                                resolveScrollToPos(cm);\n-                                cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n-                            }\n-\n-                            function ensureCursorVisible(cm) {\n-                                resolveScrollToPos(cm);\n-                                var cur = cm.getCursor();\n-                                cm.curOp.scrollToPos = {\n-                                    from: cur,\n-                                    to: cur,\n-                                    margin: cm.options.cursorScrollMargin\n-                                };\n-                            }\n-\n-                            function scrollToCoords(cm, x, y) {\n-                                if (x != null || y != null) {\n-                                    resolveScrollToPos(cm);\n-                                }\n-                                if (x != null) {\n-                                    cm.curOp.scrollLeft = x;\n-                                }\n-                                if (y != null) {\n-                                    cm.curOp.scrollTop = y;\n-                                }\n-                            }\n-\n-                            function scrollToRange(cm, range2) {\n-                                resolveScrollToPos(cm);\n-                                cm.curOp.scrollToPos = range2;\n-                            }\n-\n-                            function resolveScrollToPos(cm) {\n-                                var range2 = cm.curOp.scrollToPos;\n-                                if (range2) {\n-                                    cm.curOp.scrollToPos = null;\n-                                    var from = estimateCoords(cm, range2.from),\n-                                        to = estimateCoords(cm, range2.to);\n-                                    scrollToCoordsRange(cm, from, to, range2.margin);\n-                                }\n-                            }\n-\n-                            function scrollToCoordsRange(cm, from, to, margin) {\n-                                var sPos = calculateScrollPos(cm, {\n-                                    left: Math.min(from.left, to.left),\n-                                    top: Math.min(from.top, to.top) - margin,\n-                                    right: Math.max(from.right, to.right),\n-                                    bottom: Math.max(from.bottom, to.bottom) + margin\n-                                });\n-                                scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n-                            }\n-\n-                            function updateScrollTop(cm, val) {\n-                                if (Math.abs(cm.doc.scrollTop - val) < 2) {\n-                                    return;\n-                                }\n-                                if (!gecko) {\n-                                    updateDisplaySimple(cm, {\n-                                        top: val\n-                                    });\n-                                }\n-                                setScrollTop(cm, val, true);\n-                                if (gecko) {\n-                                    updateDisplaySimple(cm);\n-                                }\n-                                startWorker(cm, 100);\n-                            }\n-\n-                            function setScrollTop(cm, val, forceScroll) {\n-                                val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n-                                if (cm.display.scroller.scrollTop == val && !forceScroll) {\n-                                    return;\n-                                }\n-                                cm.doc.scrollTop = val;\n-                                cm.display.scrollbars.setScrollTop(val);\n-                                if (cm.display.scroller.scrollTop != val) {\n-                                    cm.display.scroller.scrollTop = val;\n-                                }\n-                            }\n-\n-                            function setScrollLeft(cm, val, isScroller, forceScroll) {\n-                                val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n-                                if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) {\n-                                    return;\n-                                }\n-                                cm.doc.scrollLeft = val;\n-                                alignHorizontally(cm);\n-                                if (cm.display.scroller.scrollLeft != val) {\n-                                    cm.display.scroller.scrollLeft = val;\n-                                }\n-                                cm.display.scrollbars.setScrollLeft(val);\n-                            }\n-\n-                            function measureForScrollbars(cm) {\n-                                var d = cm.display,\n-                                    gutterW = d.gutters.offsetWidth;\n-                                var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n-                                return {\n-                                    clientHeight: d.scroller.clientHeight,\n-                                    viewHeight: d.wrapper.clientHeight,\n-                                    scrollWidth: d.scroller.scrollWidth,\n-                                    clientWidth: d.scroller.clientWidth,\n-                                    viewWidth: d.wrapper.clientWidth,\n-                                    barLeft: cm.options.fixedGutter ? gutterW : 0,\n-                                    docHeight: docH,\n-                                    scrollHeight: docH + scrollGap(cm) + d.barHeight,\n-                                    nativeBarWidth: d.nativeBarWidth,\n-                                    gutterWidth: gutterW\n-                                };\n-                            }\n-                            var NativeScrollbars = function(place, scroll, cm) {\n-                                this.cm = cm;\n-                                var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n-                                var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n-                                vert.tabIndex = horiz.tabIndex = -1;\n-                                place(vert);\n-                                place(horiz);\n-                                on(vert, \"scroll\", function() {\n-                                    if (vert.clientHeight) {\n-                                        scroll(vert.scrollTop, \"vertical\");\n-                                    }\n-                                });\n-                                on(horiz, \"scroll\", function() {\n-                                    if (horiz.clientWidth) {\n-                                        scroll(horiz.scrollLeft, \"horizontal\");\n-                                    }\n-                                });\n-                                this.checkedZeroWidth = false;\n-                                if (ie && ie_version < 8) {\n-                                    this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\";\n-                                }\n-                            };\n-                            NativeScrollbars.prototype.update = function(measure) {\n-                                var needsH = measure.scrollWidth > measure.clientWidth + 1;\n-                                var needsV = measure.scrollHeight > measure.clientHeight + 1;\n-                                var sWidth = measure.nativeBarWidth;\n-                                if (needsV) {\n-                                    this.vert.style.display = \"block\";\n-                                    this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n-                                    var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n-                                    this.vert.firstChild.style.height = Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n-                                } else {\n-                                    this.vert.scrollTop = 0;\n-                                    this.vert.style.display = \"\";\n-                                    this.vert.firstChild.style.height = \"0\";\n-                                }\n-                                if (needsH) {\n-                                    this.horiz.style.display = \"block\";\n-                                    this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n-                                    this.horiz.style.left = measure.barLeft + \"px\";\n-                                    var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n-                                    this.horiz.firstChild.style.width = Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n-                                } else {\n-                                    this.horiz.style.display = \"\";\n-                                    this.horiz.firstChild.style.width = \"0\";\n-                                }\n-                                if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n-                                    if (sWidth == 0) {\n-                                        this.zeroWidthHack();\n-                                    }\n-                                    this.checkedZeroWidth = true;\n-                                }\n-                                return {\n-                                    right: needsV ? sWidth : 0,\n-                                    bottom: needsH ? sWidth : 0\n-                                };\n-                            };\n-                            NativeScrollbars.prototype.setScrollLeft = function(pos) {\n-                                if (this.horiz.scrollLeft != pos) {\n-                                    this.horiz.scrollLeft = pos;\n-                                }\n-                                if (this.disableHoriz) {\n-                                    this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\");\n-                                }\n-                            };\n-                            NativeScrollbars.prototype.setScrollTop = function(pos) {\n-                                if (this.vert.scrollTop != pos) {\n-                                    this.vert.scrollTop = pos;\n-                                }\n-                                if (this.disableVert) {\n-                                    this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\");\n-                                }\n-                            };\n-                            NativeScrollbars.prototype.zeroWidthHack = function() {\n-                                var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n-                                this.horiz.style.height = this.vert.style.width = w;\n-                                this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n-                                this.disableHoriz = new Delayed();\n-                                this.disableVert = new Delayed();\n-                            };\n-                            NativeScrollbars.prototype.enableZeroWidthBar = function(bar, delay, type) {\n-                                bar.style.pointerEvents = \"auto\";\n-\n-                                function maybeDisable() {\n-                                    var box = bar.getBoundingClientRect();\n-                                    var elt2 = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n-                                    if (elt2 != bar) {\n-                                        bar.style.pointerEvents = \"none\";\n-                                    } else {\n-                                        delay.set(1e3, maybeDisable);\n-                                    }\n-                                }\n-                                delay.set(1e3, maybeDisable);\n-                            };\n-                            NativeScrollbars.prototype.clear = function() {\n-                                var parent = this.horiz.parentNode;\n-                                parent.removeChild(this.horiz);\n-                                parent.removeChild(this.vert);\n-                            };\n-                            var NullScrollbars = function() {};\n-                            NullScrollbars.prototype.update = function() {\n-                                return {\n-                                    bottom: 0,\n-                                    right: 0\n-                                };\n-                            };\n-                            NullScrollbars.prototype.setScrollLeft = function() {};\n-                            NullScrollbars.prototype.setScrollTop = function() {};\n-                            NullScrollbars.prototype.clear = function() {};\n-\n-                            function updateScrollbars(cm, measure) {\n-                                if (!measure) {\n-                                    measure = measureForScrollbars(cm);\n-                                }\n-                                var startWidth = cm.display.barWidth,\n-                                    startHeight = cm.display.barHeight;\n-                                updateScrollbarsInner(cm, measure);\n-                                for (var i2 = 0; i2 < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i2++) {\n-                                    if (startWidth != cm.display.barWidth && cm.options.lineWrapping) {\n-                                        updateHeightsInViewport(cm);\n-                                    }\n-                                    updateScrollbarsInner(cm, measureForScrollbars(cm));\n-                                    startWidth = cm.display.barWidth;\n-                                    startHeight = cm.display.barHeight;\n-                                }\n-                            }\n-\n-                            function updateScrollbarsInner(cm, measure) {\n-                                var d = cm.display;\n-                                var sizes = d.scrollbars.update(measure);\n-                                d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n-                                d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n-                                d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n-                                if (sizes.right && sizes.bottom) {\n-                                    d.scrollbarFiller.style.display = \"block\";\n-                                    d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n-                                    d.scrollbarFiller.style.width = sizes.right + \"px\";\n-                                } else {\n-                                    d.scrollbarFiller.style.display = \"\";\n-                                }\n-                                if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n-                                    d.gutterFiller.style.display = \"block\";\n-                                    d.gutterFiller.style.height = sizes.bottom + \"px\";\n-                                    d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n-                                } else {\n-                                    d.gutterFiller.style.display = \"\";\n-                                }\n-                            }\n-                            var scrollbarModel = {\n-                                \"native\": NativeScrollbars,\n-                                \"null\": NullScrollbars\n-                            };\n-\n-                            function initScrollbars(cm) {\n-                                if (cm.display.scrollbars) {\n-                                    cm.display.scrollbars.clear();\n-                                    if (cm.display.scrollbars.addClass) {\n-                                        rmClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n-                                    }\n-                                }\n-                                cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function(node) {\n-                                    cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n-                                    on(node, \"mousedown\", function() {\n-                                        if (cm.state.focused) {\n-                                            setTimeout(function() {\n-                                                return cm.display.input.focus();\n-                                            }, 0);\n-                                        }\n-                                    });\n-                                    node.setAttribute(\"cm-not-content\", \"true\");\n-                                }, function(pos, axis) {\n-                                    if (axis == \"horizontal\") {\n-                                        setScrollLeft(cm, pos);\n-                                    } else {\n-                                        updateScrollTop(cm, pos);\n-                                    }\n-                                }, cm);\n-                                if (cm.display.scrollbars.addClass) {\n-                                    addClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n-                                }\n-                            }\n-                            var nextOpId = 0;\n-\n-                            function startOperation(cm) {\n-                                cm.curOp = {\n-                                    cm,\n-                                    viewChanged: false,\n-                                    // Flag that indicates that lines might need to be redrawn\n-                                    startHeight: cm.doc.height,\n-                                    // Used to detect need to update scrollbar\n-                                    forceUpdate: false,\n-                                    // Used to force a redraw\n-                                    updateInput: 0,\n-                                    // Whether to reset the input textarea\n-                                    typing: false,\n-                                    // Whether this reset should be careful to leave existing text (for compositing)\n-                                    changeObjs: null,\n-                                    // Accumulated changes, for firing change events\n-                                    cursorActivityHandlers: null,\n-                                    // Set of handlers to fire cursorActivity on\n-                                    cursorActivityCalled: 0,\n-                                    // Tracks which cursorActivity handlers have been called already\n-                                    selectionChanged: false,\n-                                    // Whether the selection needs to be redrawn\n-                                    updateMaxLine: false,\n-                                    // Set when the widest line needs to be determined anew\n-                                    scrollLeft: null,\n-                                    scrollTop: null,\n-                                    // Intermediate scroll position, not pushed to DOM yet\n-                                    scrollToPos: null,\n-                                    // Used to scroll to a specific position\n-                                    focus: false,\n-                                    id: ++nextOpId,\n-                                    // Unique ID\n-                                    markArrays: null\n-                                    // Used by addMarkedSpan\n-                                };\n-                                pushOperation(cm.curOp);\n-                            }\n-\n-                            function endOperation(cm) {\n-                                var op = cm.curOp;\n-                                if (op) {\n-                                    finishOperation(op, function(group) {\n-                                        for (var i2 = 0; i2 < group.ops.length; i2++) {\n-                                            group.ops[i2].cm.curOp = null;\n-                                        }\n-                                        endOperations(group);\n-                                    });\n-                                }\n-                            }\n-\n-                            function endOperations(group) {\n-                                var ops = group.ops;\n-                                for (var i2 = 0; i2 < ops.length; i2++) {\n-                                    endOperation_R1(ops[i2]);\n-                                }\n-                                for (var i$12 = 0; i$12 < ops.length; i$12++) {\n-                                    endOperation_W1(ops[i$12]);\n-                                }\n-                                for (var i$22 = 0; i$22 < ops.length; i$22++) {\n-                                    endOperation_R2(ops[i$22]);\n-                                }\n-                                for (var i$3 = 0; i$3 < ops.length; i$3++) {\n-                                    endOperation_W2(ops[i$3]);\n-                                }\n-                                for (var i$4 = 0; i$4 < ops.length; i$4++) {\n-                                    endOperation_finish(ops[i$4]);\n-                                }\n-                            }\n-\n-                            function endOperation_R1(op) {\n-                                var cm = op.cm,\n-                                    display = cm.display;\n-                                maybeClipScrollbars(cm);\n-                                if (op.updateMaxLine) {\n-                                    findMaxLine(cm);\n-                                }\n-                                op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || op.scrollToPos.to.line >= display.viewTo) || display.maxLineChanged && cm.options.lineWrapping;\n-                                op.update = op.mustUpdate && new DisplayUpdate(cm, op.mustUpdate && {\n-                                    top: op.scrollTop,\n-                                    ensure: op.scrollToPos\n-                                }, op.forceUpdate);\n-                            }\n-\n-                            function endOperation_W1(op) {\n-                                op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n-                            }\n-\n-                            function endOperation_R2(op) {\n-                                var cm = op.cm,\n-                                    display = cm.display;\n-                                if (op.updatedDisplay) {\n-                                    updateHeightsInViewport(cm);\n-                                }\n-                                op.barMeasure = measureForScrollbars(cm);\n-                                if (display.maxLineChanged && !cm.options.lineWrapping) {\n-                                    op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n-                                    cm.display.sizerWidth = op.adjustWidthTo;\n-                                    op.barMeasure.scrollWidth = Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n-                                    op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n-                                }\n-                                if (op.updatedDisplay || op.selectionChanged) {\n-                                    op.preparedSelection = display.input.prepareSelection();\n-                                }\n-                            }\n-\n-                            function endOperation_W2(op) {\n-                                var cm = op.cm;\n-                                if (op.adjustWidthTo != null) {\n-                                    cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n-                                    if (op.maxScrollLeft < cm.doc.scrollLeft) {\n-                                        setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);\n-                                    }\n-                                    cm.display.maxLineChanged = false;\n-                                }\n-                                var takeFocus = op.focus && op.focus == activeElt();\n-                                if (op.preparedSelection) {\n-                                    cm.display.input.showSelection(op.preparedSelection, takeFocus);\n-                                }\n-                                if (op.updatedDisplay || op.startHeight != cm.doc.height) {\n-                                    updateScrollbars(cm, op.barMeasure);\n-                                }\n-                                if (op.updatedDisplay) {\n-                                    setDocumentHeight(cm, op.barMeasure);\n-                                }\n-                                if (op.selectionChanged) {\n-                                    restartBlink(cm);\n-                                }\n-                                if (cm.state.focused && op.updateInput) {\n-                                    cm.display.input.reset(op.typing);\n-                                }\n-                                if (takeFocus) {\n-                                    ensureFocus(op.cm);\n-                                }\n-                            }\n-\n-                            function endOperation_finish(op) {\n-                                var cm = op.cm,\n-                                    display = cm.display,\n-                                    doc = cm.doc;\n-                                if (op.updatedDisplay) {\n-                                    postUpdateDisplay(cm, op.update);\n-                                }\n-                                if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) {\n-                                    display.wheelStartX = display.wheelStartY = null;\n-                                }\n-                                if (op.scrollTop != null) {\n-                                    setScrollTop(cm, op.scrollTop, op.forceScroll);\n-                                }\n-                                if (op.scrollLeft != null) {\n-                                    setScrollLeft(cm, op.scrollLeft, true, true);\n-                                }\n-                                if (op.scrollToPos) {\n-                                    var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n-                                    maybeScrollWindow(cm, rect);\n-                                }\n-                                var hidden = op.maybeHiddenMarkers,\n-                                    unhidden = op.maybeUnhiddenMarkers;\n-                                if (hidden) {\n-                                    for (var i2 = 0; i2 < hidden.length; ++i2) {\n-                                        if (!hidden[i2].lines.length) {\n-                                            signal(hidden[i2], \"hide\");\n-                                        }\n-                                    }\n-                                }\n-                                if (unhidden) {\n-                                    for (var i$12 = 0; i$12 < unhidden.length; ++i$12) {\n-                                        if (unhidden[i$12].lines.length) {\n-                                            signal(unhidden[i$12], \"unhide\");\n-                                        }\n-                                    }\n-                                }\n-                                if (display.wrapper.offsetHeight) {\n-                                    doc.scrollTop = cm.display.scroller.scrollTop;\n-                                }\n-                                if (op.changeObjs) {\n-                                    signal(cm, \"changes\", cm, op.changeObjs);\n-                                }\n-                                if (op.update) {\n-                                    op.update.finish();\n-                                }\n-                            }\n-\n-                            function runInOp(cm, f) {\n-                                if (cm.curOp) {\n-                                    return f();\n-                                }\n-                                startOperation(cm);\n-                                try {\n-                                    return f();\n-                                } finally {\n-                                    endOperation(cm);\n-                                }\n-                            }\n-\n-                            function operation(cm, f) {\n-                                return function() {\n-                                    if (cm.curOp) {\n-                                        return f.apply(cm, arguments);\n-                                    }\n-                                    startOperation(cm);\n-                                    try {\n-                                        return f.apply(cm, arguments);\n-                                    } finally {\n-                                        endOperation(cm);\n-                                    }\n-                                };\n-                            }\n-\n-                            function methodOp(f) {\n-                                return function() {\n-                                    if (this.curOp) {\n-                                        return f.apply(this, arguments);\n-                                    }\n-                                    startOperation(this);\n-                                    try {\n-                                        return f.apply(this, arguments);\n-                                    } finally {\n-                                        endOperation(this);\n-                                    }\n-                                };\n-                            }\n-\n-                            function docMethodOp(f) {\n-                                return function() {\n-                                    var cm = this.cm;\n-                                    if (!cm || cm.curOp) {\n-                                        return f.apply(this, arguments);\n-                                    }\n-                                    startOperation(cm);\n-                                    try {\n-                                        return f.apply(this, arguments);\n-                                    } finally {\n-                                        endOperation(cm);\n-                                    }\n-                                };\n-                            }\n-\n-                            function startWorker(cm, time) {\n-                                if (cm.doc.highlightFrontier < cm.display.viewTo) {\n-                                    cm.state.highlight.set(time, bind(highlightWorker, cm));\n-                                }\n-                            }\n-\n-                            function highlightWorker(cm) {\n-                                var doc = cm.doc;\n-                                if (doc.highlightFrontier >= cm.display.viewTo) {\n-                                    return;\n-                                }\n-                                var end = + /* @__PURE__ */ new Date() + cm.options.workTime;\n-                                var context = getContextBefore(cm, doc.highlightFrontier);\n-                                var changedLines = [];\n-                                doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) {\n-                                    if (context.line >= cm.display.viewFrom) {\n-                                        var oldStyles = line.styles;\n-                                        var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n-                                        var highlighted = highlightLine(cm, line, context, true);\n-                                        if (resetState) {\n-                                            context.state = resetState;\n-                                        }\n-                                        line.styles = highlighted.styles;\n-                                        var oldCls = line.styleClasses,\n-                                            newCls = highlighted.classes;\n-                                        if (newCls) {\n-                                            line.styleClasses = newCls;\n-                                        } else if (oldCls) {\n-                                            line.styleClasses = null;\n-                                        }\n-                                        var ischange = !oldStyles || oldStyles.length != line.styles.length || oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n-                                        for (var i2 = 0; !ischange && i2 < oldStyles.length; ++i2) {\n-                                            ischange = oldStyles[i2] != line.styles[i2];\n-                                        }\n-                                        if (ischange) {\n-                                            changedLines.push(context.line);\n-                                        }\n-                                        line.stateAfter = context.save();\n-                                        context.nextLine();\n-                                    } else {\n-                                        if (line.text.length <= cm.options.maxHighlightLength) {\n-                                            processLine(cm, line.text, context);\n-                                        }\n-                                        line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n-                                        context.nextLine();\n-                                    }\n-                                    if (+ /* @__PURE__ */ new Date() > end) {\n-                                        startWorker(cm, cm.options.workDelay);\n-                                        return true;\n-                                    }\n-                                });\n-                                doc.highlightFrontier = context.line;\n-                                doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n-                                if (changedLines.length) {\n-                                    runInOp(cm, function() {\n-                                        for (var i2 = 0; i2 < changedLines.length; i2++) {\n-                                            regLineChange(cm, changedLines[i2], \"text\");\n-                                        }\n-                                    });\n-                                }\n-                            }\n-                            var DisplayUpdate = function(cm, viewport, force) {\n-                                var display = cm.display;\n-                                this.viewport = viewport;\n-                                this.visible = visibleLines(display, cm.doc, viewport);\n-                                this.editorIsHidden = !display.wrapper.offsetWidth;\n-                                this.wrapperHeight = display.wrapper.clientHeight;\n-                                this.wrapperWidth = display.wrapper.clientWidth;\n-                                this.oldDisplayWidth = displayWidth(cm);\n-                                this.force = force;\n-                                this.dims = getDimensions(cm);\n-                                this.events = [];\n-                            };\n-                            DisplayUpdate.prototype.signal = function(emitter, type) {\n-                                if (hasHandler(emitter, type)) {\n-                                    this.events.push(arguments);\n-                                }\n-                            };\n-                            DisplayUpdate.prototype.finish = function() {\n-                                for (var i2 = 0; i2 < this.events.length; i2++) {\n-                                    signal.apply(null, this.events[i2]);\n-                                }\n-                            };\n-\n-                            function maybeClipScrollbars(cm) {\n-                                var display = cm.display;\n-                                if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n-                                    display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n-                                    display.heightForcer.style.height = scrollGap(cm) + \"px\";\n-                                    display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n-                                    display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n-                                    display.scrollbarsClipped = true;\n-                                }\n-                            }\n-\n-                            function selectionSnapshot(cm) {\n-                                if (cm.hasFocus()) {\n-                                    return null;\n-                                }\n-                                var active = activeElt();\n-                                if (!active || !contains(cm.display.lineDiv, active)) {\n-                                    return null;\n-                                }\n-                                var result = {\n-                                    activeElt: active\n-                                };\n-                                if (window.getSelection) {\n-                                    var sel = window.getSelection();\n-                                    if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n-                                        result.anchorNode = sel.anchorNode;\n-                                        result.anchorOffset = sel.anchorOffset;\n-                                        result.focusNode = sel.focusNode;\n-                                        result.focusOffset = sel.focusOffset;\n-                                    }\n-                                }\n-                                return result;\n-                            }\n-\n-                            function restoreSelection(snapshot) {\n-                                if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) {\n-                                    return;\n-                                }\n-                                snapshot.activeElt.focus();\n-                                if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) && snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n-                                    var sel = window.getSelection(),\n-                                        range2 = document.createRange();\n-                                    range2.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n-                                    range2.collapse(false);\n-                                    sel.removeAllRanges();\n-                                    sel.addRange(range2);\n-                                    sel.extend(snapshot.focusNode, snapshot.focusOffset);\n-                                }\n-                            }\n-\n-                            function updateDisplayIfNeeded(cm, update) {\n-                                var display = cm.display,\n-                                    doc = cm.doc;\n-                                if (update.editorIsHidden) {\n-                                    resetView(cm);\n-                                    return false;\n-                                }\n-                                if (!update.force && update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && display.renderedView == display.view && countDirtyView(cm) == 0) {\n-                                    return false;\n-                                }\n-                                if (maybeUpdateLineNumberWidth(cm)) {\n-                                    resetView(cm);\n-                                    update.dims = getDimensions(cm);\n-                                }\n-                                var end = doc.first + doc.size;\n-                                var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n-                                var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n-                                if (display.viewFrom < from && from - display.viewFrom < 20) {\n-                                    from = Math.max(doc.first, display.viewFrom);\n-                                }\n-                                if (display.viewTo > to && display.viewTo - to < 20) {\n-                                    to = Math.min(end, display.viewTo);\n-                                }\n-                                if (sawCollapsedSpans) {\n-                                    from = visualLineNo(cm.doc, from);\n-                                    to = visualLineEndNo(cm.doc, to);\n-                                }\n-                                var different = from != display.viewFrom || to != display.viewTo || display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n-                                adjustView(cm, from, to);\n-                                display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n-                                cm.display.mover.style.top = display.viewOffset + \"px\";\n-                                var toUpdate = countDirtyView(cm);\n-                                if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) {\n-                                    return false;\n-                                }\n-                                var selSnapshot = selectionSnapshot(cm);\n-                                if (toUpdate > 4) {\n-                                    display.lineDiv.style.display = \"none\";\n-                                }\n-                                patchDisplay(cm, display.updateLineNumbers, update.dims);\n-                                if (toUpdate > 4) {\n-                                    display.lineDiv.style.display = \"\";\n-                                }\n-                                display.renderedView = display.view;\n-                                restoreSelection(selSnapshot);\n-                                removeChildren(display.cursorDiv);\n-                                removeChildren(display.selectionDiv);\n-                                display.gutters.style.height = display.sizer.style.minHeight = 0;\n-                                if (different) {\n-                                    display.lastWrapHeight = update.wrapperHeight;\n-                                    display.lastWrapWidth = update.wrapperWidth;\n-                                    startWorker(cm, 400);\n-                                }\n-                                display.updateLineNumbers = null;\n-                                return true;\n-                            }\n-\n-                            function postUpdateDisplay(cm, update) {\n-                                var viewport = update.viewport;\n-                                for (var first = true;; first = false) {\n-                                    if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n-                                        if (viewport && viewport.top != null) {\n-                                            viewport = {\n-                                                top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)\n-                                            };\n-                                        }\n-                                        update.visible = visibleLines(cm.display, cm.doc, viewport);\n-                                        if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) {\n-                                            break;\n-                                        }\n-                                    } else if (first) {\n-                                        update.visible = visibleLines(cm.display, cm.doc, viewport);\n-                                    }\n-                                    if (!updateDisplayIfNeeded(cm, update)) {\n-                                        break;\n-                                    }\n-                                    updateHeightsInViewport(cm);\n-                                    var barMeasure = measureForScrollbars(cm);\n-                                    updateSelection(cm);\n-                                    updateScrollbars(cm, barMeasure);\n-                                    setDocumentHeight(cm, barMeasure);\n-                                    update.force = false;\n-                                }\n-                                update.signal(cm, \"update\", cm);\n-                                if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n-                                    update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n-                                    cm.display.reportedViewFrom = cm.display.viewFrom;\n-                                    cm.display.reportedViewTo = cm.display.viewTo;\n-                                }\n-                            }\n-\n-                            function updateDisplaySimple(cm, viewport) {\n-                                var update = new DisplayUpdate(cm, viewport);\n-                                if (updateDisplayIfNeeded(cm, update)) {\n-                                    updateHeightsInViewport(cm);\n-                                    postUpdateDisplay(cm, update);\n-                                    var barMeasure = measureForScrollbars(cm);\n-                                    updateSelection(cm);\n-                                    updateScrollbars(cm, barMeasure);\n-                                    setDocumentHeight(cm, barMeasure);\n-                                    update.finish();\n-                                }\n-                            }\n-\n-                            function patchDisplay(cm, updateNumbersFrom, dims) {\n-                                var display = cm.display,\n-                                    lineNumbers = cm.options.lineNumbers;\n-                                var container = display.lineDiv,\n-                                    cur = container.firstChild;\n-\n-                                function rm(node2) {\n-                                    var next = node2.nextSibling;\n-                                    if (webkit && mac && cm.display.currentWheelTarget == node2) {\n-                                        node2.style.display = \"none\";\n-                                    } else {\n-                                        node2.parentNode.removeChild(node2);\n-                                    }\n-                                    return next;\n-                                }\n-                                var view = display.view,\n-                                    lineN = display.viewFrom;\n-                                for (var i2 = 0; i2 < view.length; i2++) {\n-                                    var lineView = view[i2];\n-                                    if (lineView.hidden);\n-                                    else if (!lineView.node || lineView.node.parentNode != container) {\n-                                        var node = buildLineElement(cm, lineView, lineN, dims);\n-                                        container.insertBefore(node, cur);\n-                                    } else {\n-                                        while (cur != lineView.node) {\n-                                            cur = rm(cur);\n-                                        }\n-                                        var updateNumber = lineNumbers && updateNumbersFrom != null && updateNumbersFrom <= lineN && lineView.lineNumber;\n-                                        if (lineView.changes) {\n-                                            if (indexOf(lineView.changes, \"gutter\") > -1) {\n-                                                updateNumber = false;\n-                                            }\n-                                            updateLineForChanges(cm, lineView, lineN, dims);\n-                                        }\n-                                        if (updateNumber) {\n-                                            removeChildren(lineView.lineNumber);\n-                                            lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n-                                        }\n-                                        cur = lineView.node.nextSibling;\n-                                    }\n-                                    lineN += lineView.size;\n-                                }\n-                                while (cur) {\n-                                    cur = rm(cur);\n-                                }\n-                            }\n-\n-                            function updateGutterSpace(display) {\n-                                var width = display.gutters.offsetWidth;\n-                                display.sizer.style.marginLeft = width + \"px\";\n-                                signalLater(display, \"gutterChanged\", display);\n-                            }\n-\n-                            function setDocumentHeight(cm, measure) {\n-                                cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n-                                cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n-                                cm.display.gutters.style.height = measure.docHeight + cm.display.barHeight + scrollGap(cm) + \"px\";\n-                            }\n-\n-                            function alignHorizontally(cm) {\n-                                var display = cm.display,\n-                                    view = display.view;\n-                                if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) {\n-                                    return;\n-                                }\n-                                var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n-                                var gutterW = display.gutters.offsetWidth,\n-                                    left = comp + \"px\";\n-                                for (var i2 = 0; i2 < view.length; i2++) {\n-                                    if (!view[i2].hidden) {\n-                                        if (cm.options.fixedGutter) {\n-                                            if (view[i2].gutter) {\n-                                                view[i2].gutter.style.left = left;\n-                                            }\n-                                            if (view[i2].gutterBackground) {\n-                                                view[i2].gutterBackground.style.left = left;\n-                                            }\n-                                        }\n-                                        var align = view[i2].alignable;\n-                                        if (align) {\n-                                            for (var j = 0; j < align.length; j++) {\n-                                                align[j].style.left = left;\n-                                            }\n-                                        }\n-                                    }\n-                                }\n-                                if (cm.options.fixedGutter) {\n-                                    display.gutters.style.left = comp + gutterW + \"px\";\n-                                }\n-                            }\n-\n-                            function maybeUpdateLineNumberWidth(cm) {\n-                                if (!cm.options.lineNumbers) {\n-                                    return false;\n-                                }\n-                                var doc = cm.doc,\n-                                    last = lineNumberFor(cm.options, doc.first + doc.size - 1),\n-                                    display = cm.display;\n-                                if (last.length != display.lineNumChars) {\n-                                    var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)], \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n-                                    var innerW = test.firstChild.offsetWidth,\n-                                        padding = test.offsetWidth - innerW;\n-                                    display.lineGutter.style.width = \"\";\n-                                    display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n-                                    display.lineNumWidth = display.lineNumInnerWidth + padding;\n-                                    display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n-                                    display.lineGutter.style.width = display.lineNumWidth + \"px\";\n-                                    updateGutterSpace(cm.display);\n-                                    return true;\n-                                }\n-                                return false;\n-                            }\n-\n-                            function getGutters(gutters, lineNumbers) {\n-                                var result = [],\n-                                    sawLineNumbers = false;\n-                                for (var i2 = 0; i2 < gutters.length; i2++) {\n-                                    var name = gutters[i2],\n-                                        style = null;\n-                                    if (typeof name != \"string\") {\n-                                        style = name.style;\n-                                        name = name.className;\n-                                    }\n-                                    if (name == \"CodeMirror-linenumbers\") {\n-                                        if (!lineNumbers) {\n-                                            continue;\n-                                        } else {\n-                                            sawLineNumbers = true;\n-                                        }\n-                                    }\n-                                    result.push({\n-                                        className: name,\n-                                        style\n-                                    });\n-                                }\n-                                if (lineNumbers && !sawLineNumbers) {\n-                                    result.push({\n-                                        className: \"CodeMirror-linenumbers\",\n-                                        style: null\n-                                    });\n-                                }\n-                                return result;\n-                            }\n-\n-                            function renderGutters(display) {\n-                                var gutters = display.gutters,\n-                                    specs = display.gutterSpecs;\n-                                removeChildren(gutters);\n-                                display.lineGutter = null;\n-                                for (var i2 = 0; i2 < specs.length; ++i2) {\n-                                    var ref = specs[i2];\n-                                    var className = ref.className;\n-                                    var style = ref.style;\n-                                    var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n-                                    if (style) {\n-                                        gElt.style.cssText = style;\n-                                    }\n-                                    if (className == \"CodeMirror-linenumbers\") {\n-                                        display.lineGutter = gElt;\n-                                        gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n-                                    }\n-                                }\n-                                gutters.style.display = specs.length ? \"\" : \"none\";\n-                                updateGutterSpace(display);\n-                            }\n-\n-                            function updateGutters(cm) {\n-                                renderGutters(cm.display);\n-                                regChange(cm);\n-                                alignHorizontally(cm);\n-                            }\n-\n-                            function Display(place, doc, input, options) {\n-                                var d = this;\n-                                this.input = input;\n-                                d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n-                                d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n-                                d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n-                                d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n-                                d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n-                                d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n-                                d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n-                                d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n-                                d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n-                                d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], null, \"position: relative; outline: none\");\n-                                var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n-                                d.mover = elt(\"div\", [lines], null, \"position: relative\");\n-                                d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n-                                d.sizerWidth = null;\n-                                d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n-                                d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n-                                d.lineGutter = null;\n-                                d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n-                                d.scroller.setAttribute(\"tabIndex\", \"-1\");\n-                                d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n-                                d.wrapper.setAttribute(\"translate\", \"no\");\n-                                if (ie && ie_version < 8) {\n-                                    d.gutters.style.zIndex = -1;\n-                                    d.scroller.style.paddingRight = 0;\n-                                }\n-                                if (!webkit && !(gecko && mobile)) {\n-                                    d.scroller.draggable = true;\n-                                }\n-                                if (place) {\n-                                    if (place.appendChild) {\n-                                        place.appendChild(d.wrapper);\n-                                    } else {\n-                                        place(d.wrapper);\n-                                    }\n-                                }\n-                                d.viewFrom = d.viewTo = doc.first;\n-                                d.reportedViewFrom = d.reportedViewTo = doc.first;\n-                                d.view = [];\n-                                d.renderedView = null;\n-                                d.externalMeasured = null;\n-                                d.viewOffset = 0;\n-                                d.lastWrapHeight = d.lastWrapWidth = 0;\n-                                d.updateLineNumbers = null;\n-                                d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n-                                d.scrollbarsClipped = false;\n-                                d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n-                                d.alignWidgets = false;\n-                                d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n-                                d.maxLine = null;\n-                                d.maxLineLength = 0;\n-                                d.maxLineChanged = false;\n-                                d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n-                                d.shift = false;\n-                                d.selForContextMenu = null;\n-                                d.activeTouch = null;\n-                                d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n-                                renderGutters(d);\n-                                input.init(d);\n-                            }\n-                            var wheelSamples = 0,\n-                                wheelPixelsPerUnit = null;\n-                            if (ie) {\n-                                wheelPixelsPerUnit = -0.53;\n-                            } else if (gecko) {\n-                                wheelPixelsPerUnit = 15;\n-                            } else if (chrome) {\n-                                wheelPixelsPerUnit = -0.7;\n-                            } else if (safari) {\n-                                wheelPixelsPerUnit = -1 / 3;\n-                            }\n-\n-                            function wheelEventDelta(e) {\n-                                var dx = e.wheelDeltaX,\n-                                    dy = e.wheelDeltaY;\n-                                if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) {\n-                                    dx = e.detail;\n-                                }\n-                                if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) {\n-                                    dy = e.detail;\n-                                } else if (dy == null) {\n-                                    dy = e.wheelDelta;\n-                                }\n-                                return {\n-                                    x: dx,\n-                                    y: dy\n-                                };\n-                            }\n-\n-                            function wheelEventPixels(e) {\n-                                var delta = wheelEventDelta(e);\n-                                delta.x *= wheelPixelsPerUnit;\n-                                delta.y *= wheelPixelsPerUnit;\n-                                return delta;\n-                            }\n-\n-                            function onScrollWheel(cm, e) {\n-                                var delta = wheelEventDelta(e),\n-                                    dx = delta.x,\n-                                    dy = delta.y;\n-                                var pixelsPerUnit = wheelPixelsPerUnit;\n-                                if (e.deltaMode === 0) {\n-                                    dx = e.deltaX;\n-                                    dy = e.deltaY;\n-                                    pixelsPerUnit = 1;\n-                                }\n-                                var display = cm.display,\n-                                    scroll = display.scroller;\n-                                var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n-                                var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n-                                if (!(dx && canScrollX || dy && canScrollY)) {\n-                                    return;\n-                                }\n-                                if (dy && mac && webkit) {\n-                                    outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n-                                        for (var i2 = 0; i2 < view.length; i2++) {\n-                                            if (view[i2].node == cur) {\n-                                                cm.display.currentWheelTarget = cur;\n-                                                break outer;\n-                                            }\n-                                        }\n-                                    }\n-                                }\n-                                if (dx && !gecko && !presto && pixelsPerUnit != null) {\n-                                    if (dy && canScrollY) {\n-                                        updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit));\n-                                    }\n-                                    setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n-                                    if (!dy || dy && canScrollY) {\n-                                        e_preventDefault(e);\n-                                    }\n-                                    display.wheelStartX = null;\n-                                    return;\n-                                }\n-                                if (dy && pixelsPerUnit != null) {\n-                                    var pixels = dy * pixelsPerUnit;\n-                                    var top = cm.doc.scrollTop,\n-                                        bot = top + display.wrapper.clientHeight;\n-                                    if (pixels < 0) {\n-                                        top = Math.max(0, top + pixels - 50);\n-                                    } else {\n-                                        bot = Math.min(cm.doc.height, bot + pixels + 50);\n-                                    }\n-                                    updateDisplaySimple(cm, {\n-                                        top,\n-                                        bottom: bot\n-                                    });\n-                                }\n-                                if (wheelSamples < 20 && e.deltaMode !== 0) {\n-                                    if (display.wheelStartX == null) {\n-                                        display.wheelStartX = scroll.scrollLeft;\n-                                        display.wheelStartY = scroll.scrollTop;\n-                                        display.wheelDX = dx;\n-                                        display.wheelDY = dy;\n-                                        setTimeout(function() {\n-                                            if (display.wheelStartX == null) {\n-                                                return;\n-                                            }\n-                                            var movedX = scroll.scrollLeft - display.wheelStartX;\n-                                            var movedY = scroll.scrollTop - display.wheelStartY;\n-                                            var sample = movedY && display.wheelDY && movedY / display.wheelDY || movedX && display.wheelDX && movedX / display.wheelDX;\n-                                            display.wheelStartX = display.wheelStartY = null;\n-                                            if (!sample) {\n-                                                return;\n-                                            }\n-                                            wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n-                                            ++wheelSamples;\n-                                        }, 200);\n-                                    } else {\n-                                        display.wheelDX += dx;\n-                                        display.wheelDY += dy;\n-                                    }\n-                                }\n-                            }\n-                            var Selection = function(ranges, primIndex) {\n-                                this.ranges = ranges;\n-                                this.primIndex = primIndex;\n-                            };\n-                            Selection.prototype.primary = function() {\n-                                return this.ranges[this.primIndex];\n-                            };\n-                            Selection.prototype.equals = function(other) {\n-                                if (other == this) {\n-                                    return true;\n-                                }\n-                                if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) {\n-                                    return false;\n-                                }\n-                                for (var i2 = 0; i2 < this.ranges.length; i2++) {\n-                                    var here = this.ranges[i2],\n-                                        there = other.ranges[i2];\n-                                    if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) {\n-                                        return false;\n-                                    }\n-                                }\n-                                return true;\n-                            };\n-                            Selection.prototype.deepCopy = function() {\n-                                var out = [];\n-                                for (var i2 = 0; i2 < this.ranges.length; i2++) {\n-                                    out[i2] = new Range(copyPos(this.ranges[i2].anchor), copyPos(this.ranges[i2].head));\n-                                }\n-                                return new Selection(out, this.primIndex);\n-                            };\n-                            Selection.prototype.somethingSelected = function() {\n-                                for (var i2 = 0; i2 < this.ranges.length; i2++) {\n-                                    if (!this.ranges[i2].empty()) {\n-                                        return true;\n-                                    }\n-                                }\n-                                return false;\n-                            };\n-                            Selection.prototype.contains = function(pos, end) {\n-                                if (!end) {\n-                                    end = pos;\n-                                }\n-                                for (var i2 = 0; i2 < this.ranges.length; i2++) {\n-                                    var range2 = this.ranges[i2];\n-                                    if (cmp(end, range2.from()) >= 0 && cmp(pos, range2.to()) <= 0) {\n-                                        return i2;\n-                                    }\n-                                }\n-                                return -1;\n-                            };\n-                            var Range = function(anchor, head) {\n-                                this.anchor = anchor;\n-                                this.head = head;\n-                            };\n-                            Range.prototype.from = function() {\n-                                return minPos(this.anchor, this.head);\n-                            };\n-                            Range.prototype.to = function() {\n-                                return maxPos(this.anchor, this.head);\n-                            };\n-                            Range.prototype.empty = function() {\n-                                return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;\n-                            };\n-\n-                            function normalizeSelection(cm, ranges, primIndex) {\n-                                var mayTouch = cm && cm.options.selectionsMayTouch;\n-                                var prim = ranges[primIndex];\n-                                ranges.sort(function(a, b) {\n-                                    return cmp(a.from(), b.from());\n-                                });\n-                                primIndex = indexOf(ranges, prim);\n-                                for (var i2 = 1; i2 < ranges.length; i2++) {\n-                                    var cur = ranges[i2],\n-                                        prev = ranges[i2 - 1];\n-                                    var diff = cmp(prev.to(), cur.from());\n-                                    if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n-                                        var from = minPos(prev.from(), cur.from()),\n-                                            to = maxPos(prev.to(), cur.to());\n-                                        var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n-                                        if (i2 <= primIndex) {\n-                                            --primIndex;\n-                                        }\n-                                        ranges.splice(--i2, 2, new Range(inv ? to : from, inv ? from : to));\n-                                    }\n-                                }\n-                                return new Selection(ranges, primIndex);\n-                            }\n-\n-                            function simpleSelection(anchor, head) {\n-                                return new Selection([new Range(anchor, head || anchor)], 0);\n-                            }\n-\n-                            function changeEnd(change) {\n-                                if (!change.text) {\n-                                    return change.to;\n-                                }\n-                                return Pos(change.from.line + change.text.length - 1, lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));\n-                            }\n-\n-                            function adjustForChange(pos, change) {\n-                                if (cmp(pos, change.from) < 0) {\n-                                    return pos;\n-                                }\n-                                if (cmp(pos, change.to) <= 0) {\n-                                    return changeEnd(change);\n-                                }\n-                                var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1,\n-                                    ch = pos.ch;\n-                                if (pos.line == change.to.line) {\n-                                    ch += changeEnd(change).ch - change.to.ch;\n-                                }\n-                                return Pos(line, ch);\n-                            }\n-\n-                            function computeSelAfterChange(doc, change) {\n-                                var out = [];\n-                                for (var i2 = 0; i2 < doc.sel.ranges.length; i2++) {\n-                                    var range2 = doc.sel.ranges[i2];\n-                                    out.push(new Range(adjustForChange(range2.anchor, change), adjustForChange(range2.head, change)));\n-                                }\n-                                return normalizeSelection(doc.cm, out, doc.sel.primIndex);\n-                            }\n-\n-                            function offsetPos(pos, old, nw) {\n-                                if (pos.line == old.line) {\n-                                    return Pos(nw.line, pos.ch - old.ch + nw.ch);\n-                                } else {\n-                                    return Pos(nw.line + (pos.line - old.line), pos.ch);\n-                                }\n-                            }\n-\n-                            function computeReplacedSel(doc, changes, hint) {\n-                                var out = [];\n-                                var oldPrev = Pos(doc.first, 0),\n-                                    newPrev = oldPrev;\n-                                for (var i2 = 0; i2 < changes.length; i2++) {\n-                                    var change = changes[i2];\n-                                    var from = offsetPos(change.from, oldPrev, newPrev);\n-                                    var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n-                                    oldPrev = change.to;\n-                                    newPrev = to;\n-                                    if (hint == \"around\") {\n-                                        var range2 = doc.sel.ranges[i2],\n-                                            inv = cmp(range2.head, range2.anchor) < 0;\n-                                        out[i2] = new Range(inv ? to : from, inv ? from : to);\n-                                    } else {\n-                                        out[i2] = new Range(from, from);\n-                                    }\n-                                }\n-                                return new Selection(out, doc.sel.primIndex);\n-                            }\n-\n-                            function loadMode(cm) {\n-                                cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n-                                resetModeState(cm);\n-                            }\n-\n-                            function resetModeState(cm) {\n-                                cm.doc.iter(function(line) {\n-                                    if (line.stateAfter) {\n-                                        line.stateAfter = null;\n-                                    }\n-                                    if (line.styles) {\n-                                        line.styles = null;\n-                                    }\n-                                });\n-                                cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n-                                startWorker(cm, 100);\n-                                cm.state.modeGen++;\n-                                if (cm.curOp) {\n-                                    regChange(cm);\n-                                }\n-                            }\n-\n-                            function isWholeLineUpdate(doc, change) {\n-                                return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore);\n-                            }\n-\n-                            function updateDoc(doc, change, markedSpans, estimateHeight2) {\n-                                function spansFor(n) {\n-                                    return markedSpans ? markedSpans[n] : null;\n-                                }\n-\n-                                function update(line, text2, spans) {\n-                                    updateLine(line, text2, spans, estimateHeight2);\n-                                    signalLater(line, \"change\", line, change);\n-                                }\n-\n-                                function linesFor(start, end) {\n-                                    var result = [];\n-                                    for (var i2 = start; i2 < end; ++i2) {\n-                                        result.push(new Line(text[i2], spansFor(i2), estimateHeight2));\n-                                    }\n-                                    return result;\n-                                }\n-                                var from = change.from,\n-                                    to = change.to,\n-                                    text = change.text;\n-                                var firstLine = getLine(doc, from.line),\n-                                    lastLine = getLine(doc, to.line);\n-                                var lastText = lst(text),\n-                                    lastSpans = spansFor(text.length - 1),\n-                                    nlines = to.line - from.line;\n-                                if (change.full) {\n-                                    doc.insert(0, linesFor(0, text.length));\n-                                    doc.remove(text.length, doc.size - text.length);\n-                                } else if (isWholeLineUpdate(doc, change)) {\n-                                    var added = linesFor(0, text.length - 1);\n-                                    update(lastLine, lastLine.text, lastSpans);\n-                                    if (nlines) {\n-                                        doc.remove(from.line, nlines);\n-                                    }\n-                                    if (added.length) {\n-                                        doc.insert(from.line, added);\n-                                    }\n-                                } else if (firstLine == lastLine) {\n-                                    if (text.length == 1) {\n-                                        update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n-                                    } else {\n-                                        var added$1 = linesFor(1, text.length - 1);\n-                                        added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight2));\n-                                        update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n-                                        doc.insert(from.line + 1, added$1);\n-                                    }\n-                                } else if (text.length == 1) {\n-                                    update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n-                                    doc.remove(from.line + 1, nlines);\n-                                } else {\n-                                    update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n-                                    update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n-                                    var added$2 = linesFor(1, text.length - 1);\n-                                    if (nlines > 1) {\n-                                        doc.remove(from.line + 1, nlines - 1);\n-                                    }\n-                                    doc.insert(from.line + 1, added$2);\n-                                }\n-                                signalLater(doc, \"change\", doc, change);\n-                            }\n-\n-                            function linkedDocs(doc, f, sharedHistOnly) {\n-                                function propagate(doc2, skip, sharedHist) {\n-                                    if (doc2.linked) {\n-                                        for (var i2 = 0; i2 < doc2.linked.length; ++i2) {\n-                                            var rel = doc2.linked[i2];\n-                                            if (rel.doc == skip) {\n-                                                continue;\n-                                            }\n-                                            var shared = sharedHist && rel.sharedHist;\n-                                            if (sharedHistOnly && !shared) {\n-                                                continue;\n-                                            }\n-                                            f(rel.doc, shared);\n-                                            propagate(rel.doc, doc2, shared);\n-                                        }\n-                                    }\n-                                }\n-                                propagate(doc, null, true);\n-                            }\n-\n-                            function attachDoc(cm, doc) {\n-                                if (doc.cm) {\n-                                    throw new Error(\"This document is already in use.\");\n-                                }\n-                                cm.doc = doc;\n-                                doc.cm = cm;\n-                                estimateLineHeights(cm);\n-                                loadMode(cm);\n-                                setDirectionClass(cm);\n-                                cm.options.direction = doc.direction;\n-                                if (!cm.options.lineWrapping) {\n-                                    findMaxLine(cm);\n-                                }\n-                                cm.options.mode = doc.modeOption;\n-                                regChange(cm);\n-                            }\n-\n-                            function setDirectionClass(cm) {\n-                                (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n-                            }\n-\n-                            function directionChanged(cm) {\n-                                runInOp(cm, function() {\n-                                    setDirectionClass(cm);\n-                                    regChange(cm);\n-                                });\n-                            }\n-\n-                            function History(prev) {\n-                                this.done = [];\n-                                this.undone = [];\n-                                this.undoDepth = prev ? prev.undoDepth : Infinity;\n-                                this.lastModTime = this.lastSelTime = 0;\n-                                this.lastOp = this.lastSelOp = null;\n-                                this.lastOrigin = this.lastSelOrigin = null;\n-                                this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n-                            }\n-\n-                            function historyChangeFromChange(doc, change) {\n-                                var histChange = {\n-                                    from: copyPos(change.from),\n-                                    to: changeEnd(change),\n-                                    text: getBetween(doc, change.from, change.to)\n-                                };\n-                                attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n-                                linkedDocs(doc, function(doc2) {\n-                                    return attachLocalSpans(doc2, histChange, change.from.line, change.to.line + 1);\n-                                }, true);\n-                                return histChange;\n-                            }\n-\n-                            function clearSelectionEvents(array) {\n-                                while (array.length) {\n-                                    var last = lst(array);\n-                                    if (last.ranges) {\n-                                        array.pop();\n-                                    } else {\n-                                        break;\n-                                    }\n-                                }\n-                            }\n-\n-                            function lastChangeEvent(hist, force) {\n-                                if (force) {\n-                                    clearSelectionEvents(hist.done);\n-                                    return lst(hist.done);\n-                                } else if (hist.done.length && !lst(hist.done).ranges) {\n-                                    return lst(hist.done);\n-                                } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n-                                    hist.done.pop();\n-                                    return lst(hist.done);\n-                                }\n-                            }\n-\n-                            function addChangeToHistory(doc, change, selAfter, opId) {\n-                                var hist = doc.history;\n-                                hist.undone.length = 0;\n-                                var time = + /* @__PURE__ */ new Date(),\n-                                    cur;\n-                                var last;\n-                                if ((hist.lastOp == opId || hist.lastOrigin == change.origin && change.origin && (change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500) || change.origin.charAt(0) == \"*\")) && (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n-                                    last = lst(cur.changes);\n-                                    if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n-                                        last.to = changeEnd(change);\n-                                    } else {\n-                                        cur.changes.push(historyChangeFromChange(doc, change));\n-                                    }\n-                                } else {\n-                                    var before = lst(hist.done);\n-                                    if (!before || !before.ranges) {\n-                                        pushSelectionToHistory(doc.sel, hist.done);\n-                                    }\n-                                    cur = {\n-                                        changes: [historyChangeFromChange(doc, change)],\n-                                        generation: hist.generation\n-                                    };\n-                                    hist.done.push(cur);\n-                                    while (hist.done.length > hist.undoDepth) {\n-                                        hist.done.shift();\n-                                        if (!hist.done[0].ranges) {\n-                                            hist.done.shift();\n-                                        }\n-                                    }\n-                                }\n-                                hist.done.push(selAfter);\n-                                hist.generation = ++hist.maxGeneration;\n-                                hist.lastModTime = hist.lastSelTime = time;\n-                                hist.lastOp = hist.lastSelOp = opId;\n-                                hist.lastOrigin = hist.lastSelOrigin = change.origin;\n-                                if (!last) {\n-                                    signal(doc, \"historyAdded\");\n-                                }\n-                            }\n-\n-                            function selectionEventCanBeMerged(doc, origin, prev, sel) {\n-                                var ch = origin.charAt(0);\n-                                return ch == \"*\" || ch == \"+\" && prev.ranges.length == sel.ranges.length && prev.somethingSelected() == sel.somethingSelected() && /* @__PURE__ */ new Date() - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);\n-                            }\n-\n-                            function addSelectionToHistory(doc, sel, opId, options) {\n-                                var hist = doc.history,\n-                                    origin = options && options.origin;\n-                                if (opId == hist.lastSelOp || origin && hist.lastSelOrigin == origin && (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) {\n-                                    hist.done[hist.done.length - 1] = sel;\n-                                } else {\n-                                    pushSelectionToHistory(sel, hist.done);\n-                                }\n-                                hist.lastSelTime = + /* @__PURE__ */ new Date();\n-                                hist.lastSelOrigin = origin;\n-                                hist.lastSelOp = opId;\n-                                if (options && options.clearRedo !== false) {\n-                                    clearSelectionEvents(hist.undone);\n-                                }\n-                            }\n-\n-                            function pushSelectionToHistory(sel, dest) {\n-                                var top = lst(dest);\n-                                if (!(top && top.ranges && top.equals(sel))) {\n-                                    dest.push(sel);\n-                                }\n-                            }\n-\n-                            function attachLocalSpans(doc, change, from, to) {\n-                                var existing = change[\"spans_\" + doc.id],\n-                                    n = 0;\n-                                doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) {\n-                                    if (line.markedSpans) {\n-                                        (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans;\n-                                    }\n-                                    ++n;\n-                                });\n-                            }\n-\n-                            function removeClearedSpans(spans) {\n-                                if (!spans) {\n-                                    return null;\n-                                }\n-                                var out;\n-                                for (var i2 = 0; i2 < spans.length; ++i2) {\n-                                    if (spans[i2].marker.explicitlyCleared) {\n-                                        if (!out) {\n-                                            out = spans.slice(0, i2);\n-                                        }\n-                                    } else if (out) {\n-                                        out.push(spans[i2]);\n-                                    }\n-                                }\n-                                return !out ? spans : out.length ? out : null;\n-                            }\n-\n-                            function getOldSpans(doc, change) {\n-                                var found = change[\"spans_\" + doc.id];\n-                                if (!found) {\n-                                    return null;\n-                                }\n-                                var nw = [];\n-                                for (var i2 = 0; i2 < change.text.length; ++i2) {\n-                                    nw.push(removeClearedSpans(found[i2]));\n-                                }\n-                                return nw;\n-                            }\n-\n-                            function mergeOldSpans(doc, change) {\n-                                var old = getOldSpans(doc, change);\n-                                var stretched = stretchSpansOverChange(doc, change);\n-                                if (!old) {\n-                                    return stretched;\n-                                }\n-                                if (!stretched) {\n-                                    return old;\n-                                }\n-                                for (var i2 = 0; i2 < old.length; ++i2) {\n-                                    var oldCur = old[i2],\n-                                        stretchCur = stretched[i2];\n-                                    if (oldCur && stretchCur) {\n-                                        spans: for (var j = 0; j < stretchCur.length; ++j) {\n-                                            var span = stretchCur[j];\n-                                            for (var k = 0; k < oldCur.length; ++k) {\n-                                                if (oldCur[k].marker == span.marker) {\n-                                                    continue spans;\n-                                                }\n-                                            }\n-                                            oldCur.push(span);\n-                                        }\n-                                    }\n-                                    else if (stretchCur) {\n-                                        old[i2] = stretchCur;\n-                                    }\n-                                }\n-                                return old;\n-                            }\n-\n-                            function copyHistoryArray(events, newGroup, instantiateSel) {\n-                                var copy = [];\n-                                for (var i2 = 0; i2 < events.length; ++i2) {\n-                                    var event = events[i2];\n-                                    if (event.ranges) {\n-                                        copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n-                                        continue;\n-                                    }\n-                                    var changes = event.changes,\n-                                        newChanges = [];\n-                                    copy.push({\n-                                        changes: newChanges\n-                                    });\n-                                    for (var j = 0; j < changes.length; ++j) {\n-                                        var change = changes[j],\n-                                            m = void 0;\n-                                        newChanges.push({\n-                                            from: change.from,\n-                                            to: change.to,\n-                                            text: change.text\n-                                        });\n-                                        if (newGroup) {\n-                                            for (var prop2 in change) {\n-                                                if (m = prop2.match(/^spans_(\\d+)$/)) {\n-                                                    if (indexOf(newGroup, Number(m[1])) > -1) {\n-                                                        lst(newChanges)[prop2] = change[prop2];\n-                                                        delete change[prop2];\n-                                                    }\n-                                                }\n-                                            }\n-                                        }\n-                                    }\n-                                }\n-                                return copy;\n-                            }\n-\n-                            function extendRange(range2, head, other, extend) {\n-                                if (extend) {\n-                                    var anchor = range2.anchor;\n-                                    if (other) {\n-                                        var posBefore = cmp(head, anchor) < 0;\n-                                        if (posBefore != cmp(other, anchor) < 0) {\n-                                            anchor = head;\n-                                            head = other;\n-                                        } else if (posBefore != cmp(head, other) < 0) {\n-                                            head = other;\n-                                        }\n-                                    }\n-                                    return new Range(anchor, head);\n-                                } else {\n-                                    return new Range(other || head, head);\n-                                }\n-                            }\n-\n-                            function extendSelection(doc, head, other, options, extend) {\n-                                if (extend == null) {\n-                                    extend = doc.cm && (doc.cm.display.shift || doc.extend);\n-                                }\n-                                setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n-                            }\n-\n-                            function extendSelections(doc, heads, options) {\n-                                var out = [];\n-                                var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n-                                for (var i2 = 0; i2 < doc.sel.ranges.length; i2++) {\n-                                    out[i2] = extendRange(doc.sel.ranges[i2], heads[i2], null, extend);\n-                                }\n-                                var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n-                                setSelection(doc, newSel, options);\n-                            }\n-\n-                            function replaceOneSelection(doc, i2, range2, options) {\n-                                var ranges = doc.sel.ranges.slice(0);\n-                                ranges[i2] = range2;\n-                                setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n-                            }\n-\n-                            function setSimpleSelection(doc, anchor, head, options) {\n-                                setSelection(doc, simpleSelection(anchor, head), options);\n-                            }\n-\n-                            function filterSelectionChange(doc, sel, options) {\n-                                var obj = {\n-                                    ranges: sel.ranges,\n-                                    update: function(ranges) {\n-                                        this.ranges = [];\n-                                        for (var i2 = 0; i2 < ranges.length; i2++) {\n-                                            this.ranges[i2] = new Range(clipPos(doc, ranges[i2].anchor), clipPos(doc, ranges[i2].head));\n-                                        }\n-                                    },\n-                                    origin: options && options.origin\n-                                };\n-                                signal(doc, \"beforeSelectionChange\", doc, obj);\n-                                if (doc.cm) {\n-                                    signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj);\n-                                }\n-                                if (obj.ranges != sel.ranges) {\n-                                    return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1);\n-                                } else {\n-                                    return sel;\n-                                }\n-                            }\n-\n-                            function setSelectionReplaceHistory(doc, sel, options) {\n-                                var done = doc.history.done,\n-                                    last = lst(done);\n-                                if (last && last.ranges) {\n-                                    done[done.length - 1] = sel;\n-                                    setSelectionNoUndo(doc, sel, options);\n-                                } else {\n-                                    setSelection(doc, sel, options);\n-                                }\n-                            }\n-\n-                            function setSelection(doc, sel, options) {\n-                                setSelectionNoUndo(doc, sel, options);\n-                                addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n-                            }\n-\n-                            function setSelectionNoUndo(doc, sel, options) {\n-                                if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\")) {\n-                                    sel = filterSelectionChange(doc, sel, options);\n-                                }\n-                                var bias = options && options.bias || (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n-                                setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n-                                if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\") {\n-                                    ensureCursorVisible(doc.cm);\n-                                }\n-                            }\n-\n-                            function setSelectionInner(doc, sel) {\n-                                if (sel.equals(doc.sel)) {\n-                                    return;\n-                                }\n-                                doc.sel = sel;\n-                                if (doc.cm) {\n-                                    doc.cm.curOp.updateInput = 1;\n-                                    doc.cm.curOp.selectionChanged = true;\n-                                    signalCursorActivity(doc.cm);\n-                                }\n-                                signalLater(doc, \"cursorActivity\", doc);\n-                            }\n-\n-                            function reCheckSelection(doc) {\n-                                setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n-                            }\n-\n-                            function skipAtomicInSelection(doc, sel, bias, mayClear) {\n-                                var out;\n-                                for (var i2 = 0; i2 < sel.ranges.length; i2++) {\n-                                    var range2 = sel.ranges[i2];\n-                                    var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i2];\n-                                    var newAnchor = skipAtomic(doc, range2.anchor, old && old.anchor, bias, mayClear);\n-                                    var newHead = skipAtomic(doc, range2.head, old && old.head, bias, mayClear);\n-                                    if (out || newAnchor != range2.anchor || newHead != range2.head) {\n-                                        if (!out) {\n-                                            out = sel.ranges.slice(0, i2);\n-                                        }\n-                                        out[i2] = new Range(newAnchor, newHead);\n-                                    }\n-                                }\n-                                return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel;\n-                            }\n-\n-                            function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n-                                var line = getLine(doc, pos.line);\n-                                if (line.markedSpans) {\n-                                    for (var i2 = 0; i2 < line.markedSpans.length; ++i2) {\n-                                        var sp = line.markedSpans[i2],\n-                                            m = sp.marker;\n-                                        var preventCursorLeft = \"selectLeft\" in m ? !m.selectLeft : m.inclusiveLeft;\n-                                        var preventCursorRight = \"selectRight\" in m ? !m.selectRight : m.inclusiveRight;\n-                                        if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n-                                            if (mayClear) {\n-                                                signal(m, \"beforeCursorEnter\");\n-                                                if (m.explicitlyCleared) {\n-                                                    if (!line.markedSpans) {\n-                                                        break;\n-                                                    } else {\n-                                                        --i2;\n-                                                        continue;\n-                                                    }\n-                                                }\n-                                            }\n-                                            if (!m.atomic) {\n-                                                continue;\n-                                            }\n-                                            if (oldPos) {\n-                                                var near = m.find(dir < 0 ? 1 : -1),\n-                                                    diff = void 0;\n-                                                if (dir < 0 ? preventCursorRight : preventCursorLeft) {\n-                                                    near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null);\n-                                                }\n-                                                if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) {\n-                                                    return skipAtomicInner(doc, near, pos, dir, mayClear);\n-                                                }\n-                                            }\n-                                            var far = m.find(dir < 0 ? -1 : 1);\n-                                            if (dir < 0 ? preventCursorLeft : preventCursorRight) {\n-                                                far = movePos(doc, far, dir, far.line == pos.line ? line : null);\n-                                            }\n-                                            return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null;\n-                                        }\n-                                    }\n-                                }\n-                                return pos;\n-                            }\n-\n-                            function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n-                                var dir = bias || 1;\n-                                var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, dir, true) || skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true);\n-                                if (!found) {\n-                                    doc.cantEdit = true;\n-                                    return Pos(doc.first, 0);\n-                                }\n-                                return found;\n-                            }\n-\n-                            function movePos(doc, pos, dir, line) {\n-                                if (dir < 0 && pos.ch == 0) {\n-                                    if (pos.line > doc.first) {\n-                                        return clipPos(doc, Pos(pos.line - 1));\n-                                    } else {\n-                                        return null;\n-                                    }\n-                                } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n-                                    if (pos.line < doc.first + doc.size - 1) {\n-                                        return Pos(pos.line + 1, 0);\n-                                    } else {\n-                                        return null;\n-                                    }\n-                                } else {\n-                                    return new Pos(pos.line, pos.ch + dir);\n-                                }\n-                            }\n-\n-                            function selectAll(cm) {\n-                                cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n-                            }\n-\n-                            function filterChange(doc, change, update) {\n-                                var obj = {\n-                                    canceled: false,\n-                                    from: change.from,\n-                                    to: change.to,\n-                                    text: change.text,\n-                                    origin: change.origin,\n-                                    cancel: function() {\n-                                        return obj.canceled = true;\n-                                    }\n-                                };\n-                                if (update) {\n-                                    obj.update = function(from, to, text, origin) {\n-                                        if (from) {\n-                                            obj.from = clipPos(doc, from);\n-                                        }\n-                                        if (to) {\n-                                            obj.to = clipPos(doc, to);\n-                                        }\n-                                        if (text) {\n-                                            obj.text = text;\n-                                        }\n-                                        if (origin !== void 0) {\n-                                            obj.origin = origin;\n-                                        }\n-                                    };\n-                                }\n-                                signal(doc, \"beforeChange\", doc, obj);\n-                                if (doc.cm) {\n-                                    signal(doc.cm, \"beforeChange\", doc.cm, obj);\n-                                }\n-                                if (obj.canceled) {\n-                                    if (doc.cm) {\n-                                        doc.cm.curOp.updateInput = 2;\n-                                    }\n-                                    return null;\n-                                }\n-                                return {\n-                                    from: obj.from,\n-                                    to: obj.to,\n-                                    text: obj.text,\n-                                    origin: obj.origin\n-                                };\n-                            }\n-\n-                            function makeChange(doc, change, ignoreReadOnly) {\n-                                if (doc.cm) {\n-                                    if (!doc.cm.curOp) {\n-                                        return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);\n-                                    }\n-                                    if (doc.cm.state.suppressEdits) {\n-                                        return;\n-                                    }\n-                                }\n-                                if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n-                                    change = filterChange(doc, change, true);\n-                                    if (!change) {\n-                                        return;\n-                                    }\n-                                }\n-                                var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n-                                if (split) {\n-                                    for (var i2 = split.length - 1; i2 >= 0; --i2) {\n-                                        makeChangeInner(doc, {\n-                                            from: split[i2].from,\n-                                            to: split[i2].to,\n-                                            text: i2 ? [\"\"] : change.text,\n-                                            origin: change.origin\n-                                        });\n-                                    }\n-                                } else {\n-                                    makeChangeInner(doc, change);\n-                                }\n-                            }\n-\n-                            function makeChangeInner(doc, change) {\n-                                if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) {\n-                                    return;\n-                                }\n-                                var selAfter = computeSelAfterChange(doc, change);\n-                                addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n-                                makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n-                                var rebased = [];\n-                                linkedDocs(doc, function(doc2, sharedHist) {\n-                                    if (!sharedHist && indexOf(rebased, doc2.history) == -1) {\n-                                        rebaseHist(doc2.history, change);\n-                                        rebased.push(doc2.history);\n-                                    }\n-                                    makeChangeSingleDoc(doc2, change, null, stretchSpansOverChange(doc2, change));\n-                                });\n-                            }\n-\n-                            function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n-                                var suppress = doc.cm && doc.cm.state.suppressEdits;\n-                                if (suppress && !allowSelectionOnly) {\n-                                    return;\n-                                }\n-                                var hist = doc.history,\n-                                    event,\n-                                    selAfter = doc.sel;\n-                                var source = type == \"undo\" ? hist.done : hist.undone,\n-                                    dest = type == \"undo\" ? hist.undone : hist.done;\n-                                var i2 = 0;\n-                                for (; i2 < source.length; i2++) {\n-                                    event = source[i2];\n-                                    if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) {\n-                                        break;\n-                                    }\n-                                }\n-                                if (i2 == source.length) {\n-                                    return;\n-                                }\n-                                hist.lastOrigin = hist.lastSelOrigin = null;\n-                                for (;;) {\n-                                    event = source.pop();\n-                                    if (event.ranges) {\n-                                        pushSelectionToHistory(event, dest);\n-                                        if (allowSelectionOnly && !event.equals(doc.sel)) {\n-                                            setSelection(doc, event, {\n-                                                clearRedo: false\n-                                            });\n-                                            return;\n-                                        }\n-                                        selAfter = event;\n-                                    } else if (suppress) {\n-                                        source.push(event);\n-                                        return;\n-                                    } else {\n-                                        break;\n-                                    }\n-                                }\n-                                var antiChanges = [];\n-                                pushSelectionToHistory(selAfter, dest);\n-                                dest.push({\n-                                    changes: antiChanges,\n-                                    generation: hist.generation\n-                                });\n-                                hist.generation = event.generation || ++hist.maxGeneration;\n-                                var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n-                                var loop = function(i3) {\n-                                    var change = event.changes[i3];\n-                                    change.origin = type;\n-                                    if (filter && !filterChange(doc, change, false)) {\n-                                        source.length = 0;\n-                                        return {};\n-                                    }\n-                                    antiChanges.push(historyChangeFromChange(doc, change));\n-                                    var after = i3 ? computeSelAfterChange(doc, change) : lst(source);\n-                                    makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n-                                    if (!i3 && doc.cm) {\n-                                        doc.cm.scrollIntoView({\n-                                            from: change.from,\n-                                            to: changeEnd(change)\n-                                        });\n-                                    }\n-                                    var rebased = [];\n-                                    linkedDocs(doc, function(doc2, sharedHist) {\n-                                        if (!sharedHist && indexOf(rebased, doc2.history) == -1) {\n-                                            rebaseHist(doc2.history, change);\n-                                            rebased.push(doc2.history);\n-                                        }\n-                                        makeChangeSingleDoc(doc2, change, null, mergeOldSpans(doc2, change));\n-                                    });\n-                                };\n-                                for (var i$12 = event.changes.length - 1; i$12 >= 0; --i$12) {\n-                                    var returned = loop(i$12);\n-                                    if (returned) return returned.v;\n-                                }\n-                            }\n-\n-                            function shiftDoc(doc, distance) {\n-                                if (distance == 0) {\n-                                    return;\n-                                }\n-                                doc.first += distance;\n-                                doc.sel = new Selection(map(doc.sel.ranges, function(range2) {\n-                                    return new Range(Pos(range2.anchor.line + distance, range2.anchor.ch), Pos(range2.head.line + distance, range2.head.ch));\n-                                }), doc.sel.primIndex);\n-                                if (doc.cm) {\n-                                    regChange(doc.cm, doc.first, doc.first - distance, distance);\n-                                    for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) {\n-                                        regLineChange(doc.cm, l, \"gutter\");\n-                                    }\n-                                }\n-                            }\n-\n-                            function makeChangeSingleDoc(doc, change, selAfter, spans) {\n-                                if (doc.cm && !doc.cm.curOp) {\n-                                    return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);\n-                                }\n-                                if (change.to.line < doc.first) {\n-                                    shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n-                                    return;\n-                                }\n-                                if (change.from.line > doc.lastLine()) {\n-                                    return;\n-                                }\n-                                if (change.from.line < doc.first) {\n-                                    var shift = change.text.length - 1 - (doc.first - change.from.line);\n-                                    shiftDoc(doc, shift);\n-                                    change = {\n-                                        from: Pos(doc.first, 0),\n-                                        to: Pos(change.to.line + shift, change.to.ch),\n-                                        text: [lst(change.text)],\n-                                        origin: change.origin\n-                                    };\n-                                }\n-                                var last = doc.lastLine();\n-                                if (change.to.line > last) {\n-                                    change = {\n-                                        from: change.from,\n-                                        to: Pos(last, getLine(doc, last).text.length),\n-                                        text: [change.text[0]],\n-                                        origin: change.origin\n-                                    };\n-                                }\n-                                change.removed = getBetween(doc, change.from, change.to);\n-                                if (!selAfter) {\n-                                    selAfter = computeSelAfterChange(doc, change);\n-                                }\n-                                if (doc.cm) {\n-                                    makeChangeSingleDocInEditor(doc.cm, change, spans);\n-                                } else {\n-                                    updateDoc(doc, change, spans);\n-                                }\n-                                setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n-                                if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) {\n-                                    doc.cantEdit = false;\n-                                }\n-                            }\n-\n-                            function makeChangeSingleDocInEditor(cm, change, spans) {\n-                                var doc = cm.doc,\n-                                    display = cm.display,\n-                                    from = change.from,\n-                                    to = change.to;\n-                                var recomputeMaxLength = false,\n-                                    checkWidthStart = from.line;\n-                                if (!cm.options.lineWrapping) {\n-                                    checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n-                                    doc.iter(checkWidthStart, to.line + 1, function(line) {\n-                                        if (line == display.maxLine) {\n-                                            recomputeMaxLength = true;\n-                                            return true;\n-                                        }\n-                                    });\n-                                }\n-                                if (doc.sel.contains(change.from, change.to) > -1) {\n-                                    signalCursorActivity(cm);\n-                                }\n-                                updateDoc(doc, change, spans, estimateHeight(cm));\n-                                if (!cm.options.lineWrapping) {\n-                                    doc.iter(checkWidthStart, from.line + change.text.length, function(line) {\n-                                        var len = lineLength(line);\n-                                        if (len > display.maxLineLength) {\n-                                            display.maxLine = line;\n-                                            display.maxLineLength = len;\n-                                            display.maxLineChanged = true;\n-                                            recomputeMaxLength = false;\n-                                        }\n-                                    });\n-                                    if (recomputeMaxLength) {\n-                                        cm.curOp.updateMaxLine = true;\n-                                    }\n-                                }\n-                                retreatFrontier(doc, from.line);\n-                                startWorker(cm, 400);\n-                                var lendiff = change.text.length - (to.line - from.line) - 1;\n-                                if (change.full) {\n-                                    regChange(cm);\n-                                } else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) {\n-                                    regLineChange(cm, from.line, \"text\");\n-                                } else {\n-                                    regChange(cm, from.line, to.line + 1, lendiff);\n-                                }\n-                                var changesHandler = hasHandler(cm, \"changes\"),\n-                                    changeHandler = hasHandler(cm, \"change\");\n-                                if (changeHandler || changesHandler) {\n-                                    var obj = {\n-                                        from,\n-                                        to,\n-                                        text: change.text,\n-                                        removed: change.removed,\n-                                        origin: change.origin\n-                                    };\n-                                    if (changeHandler) {\n-                                        signalLater(cm, \"change\", cm, obj);\n-                                    }\n-                                    if (changesHandler) {\n-                                        (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);\n-                                    }\n-                                }\n-                                cm.display.selForContextMenu = null;\n-                            }\n-\n-                            function replaceRange(doc, code, from, to, origin) {\n-                                var assign;\n-                                if (!to) {\n-                                    to = from;\n-                                }\n-                                if (cmp(to, from) < 0) {\n-                                    assign = [to, from], from = assign[0], to = assign[1];\n-                                }\n-                                if (typeof code == \"string\") {\n-                                    code = doc.splitLines(code);\n-                                }\n-                                makeChange(doc, {\n-                                    from,\n-                                    to,\n-                                    text: code,\n-                                    origin\n-                                });\n-                            }\n-\n-                            function rebaseHistSelSingle(pos, from, to, diff) {\n-                                if (to < pos.line) {\n-                                    pos.line += diff;\n-                                } else if (from < pos.line) {\n-                                    pos.line = from;\n-                                    pos.ch = 0;\n-                                }\n-                            }\n-\n-                            function rebaseHistArray(array, from, to, diff) {\n-                                for (var i2 = 0; i2 < array.length; ++i2) {\n-                                    var sub = array[i2],\n-                                        ok = true;\n-                                    if (sub.ranges) {\n-                                        if (!sub.copied) {\n-                                            sub = array[i2] = sub.deepCopy();\n-                                            sub.copied = true;\n-                                        }\n-                                        for (var j = 0; j < sub.ranges.length; j++) {\n-                                            rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n-                                            rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n-                                        }\n-                                        continue;\n-                                    }\n-                                    for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n-                                        var cur = sub.changes[j$1];\n-                                        if (to < cur.from.line) {\n-                                            cur.from = Pos(cur.from.line + diff, cur.from.ch);\n-                                            cur.to = Pos(cur.to.line + diff, cur.to.ch);\n-                                        } else if (from <= cur.to.line) {\n-                                            ok = false;\n-                                            break;\n-                                        }\n-                                    }\n-                                    if (!ok) {\n-                                        array.splice(0, i2 + 1);\n-                                        i2 = 0;\n-                                    }\n-                                }\n-                            }\n-\n-                            function rebaseHist(hist, change) {\n-                                var from = change.from.line,\n-                                    to = change.to.line,\n-                                    diff = change.text.length - (to - from) - 1;\n-                                rebaseHistArray(hist.done, from, to, diff);\n-                                rebaseHistArray(hist.undone, from, to, diff);\n-                            }\n-\n-                            function changeLine(doc, handle, changeType, op) {\n-                                var no = handle,\n-                                    line = handle;\n-                                if (typeof handle == \"number\") {\n-                                    line = getLine(doc, clipLine(doc, handle));\n-                                } else {\n-                                    no = lineNo(handle);\n-                                }\n-                                if (no == null) {\n-                                    return null;\n-                                }\n-                                if (op(line, no) && doc.cm) {\n-                                    regLineChange(doc.cm, no, changeType);\n-                                }\n-                                return line;\n-                            }\n-\n-                            function LeafChunk(lines) {\n-                                this.lines = lines;\n-                                this.parent = null;\n-                                var height = 0;\n-                                for (var i2 = 0; i2 < lines.length; ++i2) {\n-                                    lines[i2].parent = this;\n-                                    height += lines[i2].height;\n-                                }\n-                                this.height = height;\n-                            }\n-                            LeafChunk.prototype = {\n-                                chunkSize: function() {\n-                                    return this.lines.length;\n-                                },\n-                                // Remove the n lines at offset 'at'.\n-                                removeInner: function(at, n) {\n-                                    for (var i2 = at, e = at + n; i2 < e; ++i2) {\n-                                        var line = this.lines[i2];\n-                                        this.height -= line.height;\n-                                        cleanUpLine(line);\n-                                        signalLater(line, \"delete\");\n-                                    }\n-                                    this.lines.splice(at, n);\n-                                },\n-                                // Helper used to collapse a small branch into a single leaf.\n-                                collapse: function(lines) {\n-                                    lines.push.apply(lines, this.lines);\n-                                },\n-                                // Insert the given array of lines at offset 'at', count them as\n-                                // having the given height.\n-                                insertInner: function(at, lines, height) {\n-                                    this.height += height;\n-                                    this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n-                                    for (var i2 = 0; i2 < lines.length; ++i2) {\n-                                        lines[i2].parent = this;\n-                                    }\n-                                },\n-                                // Used to iterate over a part of the tree.\n-                                iterN: function(at, n, op) {\n-                                    for (var e = at + n; at < e; ++at) {\n-                                        if (op(this.lines[at])) {\n-                                            return true;\n-                                        }\n-                                    }\n-                                }\n-                            };\n-\n-                            function BranchChunk(children) {\n-                                this.children = children;\n-                                var size = 0,\n-                                    height = 0;\n-                                for (var i2 = 0; i2 < children.length; ++i2) {\n-                                    var ch = children[i2];\n-                                    size += ch.chunkSize();\n-                                    height += ch.height;\n-                                    ch.parent = this;\n-                                }\n-                                this.size = size;\n-                                this.height = height;\n-                                this.parent = null;\n-                            }\n-                            BranchChunk.prototype = {\n-                                chunkSize: function() {\n-                                    return this.size;\n-                                },\n-                                removeInner: function(at, n) {\n-                                    this.size -= n;\n-                                    for (var i2 = 0; i2 < this.children.length; ++i2) {\n-                                        var child = this.children[i2],\n-                                            sz = child.chunkSize();\n-                                        if (at < sz) {\n-                                            var rm = Math.min(n, sz - at),\n-                                                oldHeight = child.height;\n-                                            child.removeInner(at, rm);\n-                                            this.height -= oldHeight - child.height;\n-                                            if (sz == rm) {\n-                                                this.children.splice(i2--, 1);\n-                                                child.parent = null;\n-                                            }\n-                                            if ((n -= rm) == 0) {\n-                                                break;\n-                                            }\n-                                            at = 0;\n-                                        } else {\n-                                            at -= sz;\n-                                        }\n-                                    }\n-                                    if (this.size - n < 25 && (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n-                                        var lines = [];\n-                                        this.collapse(lines);\n-                                        this.children = [new LeafChunk(lines)];\n-                                        this.children[0].parent = this;\n-                                    }\n-                                },\n-                                collapse: function(lines) {\n-                                    for (var i2 = 0; i2 < this.children.length; ++i2) {\n-                                        this.children[i2].collapse(lines);\n-                                    }\n-                                },\n-                                insertInner: function(at, lines, height) {\n-                                    this.size += lines.length;\n-                                    this.height += height;\n-                                    for (var i2 = 0; i2 < this.children.length; ++i2) {\n-                                        var child = this.children[i2],\n-                                            sz = child.chunkSize();\n-                                        if (at <= sz) {\n-                                            child.insertInner(at, lines, height);\n-                                            if (child.lines && child.lines.length > 50) {\n-                                                var remaining = child.lines.length % 25 + 25;\n-                                                for (var pos = remaining; pos < child.lines.length;) {\n-                                                    var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n-                                                    child.height -= leaf.height;\n-                                                    this.children.splice(++i2, 0, leaf);\n-                                                    leaf.parent = this;\n-                                                }\n-                                                child.lines = child.lines.slice(0, remaining);\n-                                                this.maybeSpill();\n-                                            }\n-                                            break;\n-                                        }\n-                                        at -= sz;\n-                                    }\n-                                },\n-                                // When a node has grown, check whether it should be split.\n-                                maybeSpill: function() {\n-                                    if (this.children.length <= 10) {\n-                                        return;\n-                                    }\n-                                    var me = this;\n-                                    do {\n-                                        var spilled = me.children.splice(me.children.length - 5, 5);\n-                                        var sibling = new BranchChunk(spilled);\n-                                        if (!me.parent) {\n-                                            var copy = new BranchChunk(me.children);\n-                                            copy.parent = me;\n-                                            me.children = [copy, sibling];\n-                                            me = copy;\n-                                        } else {\n-                                            me.size -= sibling.size;\n-                                            me.height -= sibling.height;\n-                                            var myIndex = indexOf(me.parent.children, me);\n-                                            me.parent.children.splice(myIndex + 1, 0, sibling);\n-                                        }\n-                                        sibling.parent = me.parent;\n-                                    } while (me.children.length > 10);\n-                                    me.parent.maybeSpill();\n-                                },\n-                                iterN: function(at, n, op) {\n-                                    for (var i2 = 0; i2 < this.children.length; ++i2) {\n-                                        var child = this.children[i2],\n-                                            sz = child.chunkSize();\n-                                        if (at < sz) {\n-                                            var used = Math.min(n, sz - at);\n-                                            if (child.iterN(at, used, op)) {\n-                                                return true;\n-                                            }\n-                                            if ((n -= used) == 0) {\n-                                                break;\n-                                            }\n-                                            at = 0;\n-                                        } else {\n-                                            at -= sz;\n-                                        }\n-                                    }\n-                                }\n-                            };\n-                            var LineWidget = function(doc, node, options) {\n-                                if (options) {\n-                                    for (var opt in options) {\n-                                        if (options.hasOwnProperty(opt)) {\n-                                            this[opt] = options[opt];\n-                                        }\n-                                    }\n-                                }\n-                                this.doc = doc;\n-                                this.node = node;\n-                            };\n-                            LineWidget.prototype.clear = function() {\n-                                var cm = this.doc.cm,\n-                                    ws = this.line.widgets,\n-                                    line = this.line,\n-                                    no = lineNo(line);\n-                                if (no == null || !ws) {\n-                                    return;\n-                                }\n-                                for (var i2 = 0; i2 < ws.length; ++i2) {\n-                                    if (ws[i2] == this) {\n-                                        ws.splice(i2--, 1);\n-                                    }\n-                                }\n-                                if (!ws.length) {\n-                                    line.widgets = null;\n-                                }\n-                                var height = widgetHeight(this);\n-                                updateLineHeight(line, Math.max(0, line.height - height));\n-                                if (cm) {\n-                                    runInOp(cm, function() {\n-                                        adjustScrollWhenAboveVisible(cm, line, -height);\n-                                        regLineChange(cm, no, \"widget\");\n-                                    });\n-                                    signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n-                                }\n-                            };\n-                            LineWidget.prototype.changed = function() {\n-                                var this$1$1 = this;\n-                                var oldH = this.height,\n-                                    cm = this.doc.cm,\n-                                    line = this.line;\n-                                this.height = null;\n-                                var diff = widgetHeight(this) - oldH;\n-                                if (!diff) {\n-                                    return;\n-                                }\n-                                if (!lineIsHidden(this.doc, line)) {\n-                                    updateLineHeight(line, line.height + diff);\n-                                }\n-                                if (cm) {\n-                                    runInOp(cm, function() {\n-                                        cm.curOp.forceUpdate = true;\n-                                        adjustScrollWhenAboveVisible(cm, line, diff);\n-                                        signalLater(cm, \"lineWidgetChanged\", cm, this$1$1, lineNo(line));\n-                                    });\n-                                }\n-                            };\n-                            eventMixin(LineWidget);\n-\n-                            function adjustScrollWhenAboveVisible(cm, line, diff) {\n-                                if (heightAtLine(line) < (cm.curOp && cm.curOp.scrollTop || cm.doc.scrollTop)) {\n-                                    addToScrollTop(cm, diff);\n-                                }\n-                            }\n-\n-                            function addLineWidget(doc, handle, node, options) {\n-                                var widget = new LineWidget(doc, node, options);\n-                                var cm = doc.cm;\n-                                if (cm && widget.noHScroll) {\n-                                    cm.display.alignWidgets = true;\n-                                }\n-                                changeLine(doc, handle, \"widget\", function(line) {\n-                                    var widgets = line.widgets || (line.widgets = []);\n-                                    if (widget.insertAt == null) {\n-                                        widgets.push(widget);\n-                                    } else {\n-                                        widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget);\n-                                    }\n-                                    widget.line = line;\n-                                    if (cm && !lineIsHidden(doc, line)) {\n-                                        var aboveVisible = heightAtLine(line) < doc.scrollTop;\n-                                        updateLineHeight(line, line.height + widgetHeight(widget));\n-                                        if (aboveVisible) {\n-                                            addToScrollTop(cm, widget.height);\n-                                        }\n-                                        cm.curOp.forceUpdate = true;\n-                                    }\n-                                    return true;\n-                                });\n-                                if (cm) {\n-                                    signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle));\n-                                }\n-                                return widget;\n-                            }\n-                            var nextMarkerId = 0;\n-                            var TextMarker = function(doc, type) {\n-                                this.lines = [];\n-                                this.type = type;\n-                                this.doc = doc;\n-                                this.id = ++nextMarkerId;\n-                            };\n-                            TextMarker.prototype.clear = function() {\n-                                if (this.explicitlyCleared) {\n-                                    return;\n-                                }\n-                                var cm = this.doc.cm,\n-                                    withOp = cm && !cm.curOp;\n-                                if (withOp) {\n-                                    startOperation(cm);\n-                                }\n-                                if (hasHandler(this, \"clear\")) {\n-                                    var found = this.find();\n-                                    if (found) {\n-                                        signalLater(this, \"clear\", found.from, found.to);\n-                                    }\n-                                }\n-                                var min = null,\n-                                    max = null;\n-                                for (var i2 = 0; i2 < this.lines.length; ++i2) {\n-                                    var line = this.lines[i2];\n-                                    var span = getMarkedSpanFor(line.markedSpans, this);\n-                                    if (cm && !this.collapsed) {\n-                                        regLineChange(cm, lineNo(line), \"text\");\n-                                    } else if (cm) {\n-                                        if (span.to != null) {\n-                                            max = lineNo(line);\n-                                        }\n-                                        if (span.from != null) {\n-                                            min = lineNo(line);\n-                                        }\n-                                    }\n-                                    line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n-                                    if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) {\n-                                        updateLineHeight(line, textHeight(cm.display));\n-                                    }\n-                                }\n-                                if (cm && this.collapsed && !cm.options.lineWrapping) {\n-                                    for (var i$12 = 0; i$12 < this.lines.length; ++i$12) {\n-                                        var visual = visualLine(this.lines[i$12]),\n-                                            len = lineLength(visual);\n-                                        if (len > cm.display.maxLineLength) {\n-                                            cm.display.maxLine = visual;\n-                                            cm.display.maxLineLength = len;\n-                                            cm.display.maxLineChanged = true;\n-                                        }\n-                                    }\n-                                }\n-                                if (min != null && cm && this.collapsed) {\n-                                    regChange(cm, min, max + 1);\n-                                }\n-                                this.lines.length = 0;\n-                                this.explicitlyCleared = true;\n-                                if (this.atomic && this.doc.cantEdit) {\n-                                    this.doc.cantEdit = false;\n-                                    if (cm) {\n-                                        reCheckSelection(cm.doc);\n-                                    }\n-                                }\n-                                if (cm) {\n-                                    signalLater(cm, \"markerCleared\", cm, this, min, max);\n-                                }\n-                                if (withOp) {\n-                                    endOperation(cm);\n-                                }\n-                                if (this.parent) {\n-                                    this.parent.clear();\n-                                }\n-                            };\n-                            TextMarker.prototype.find = function(side, lineObj) {\n-                                if (side == null && this.type == \"bookmark\") {\n-                                    side = 1;\n-                                }\n-                                var from, to;\n-                                for (var i2 = 0; i2 < this.lines.length; ++i2) {\n-                                    var line = this.lines[i2];\n-                                    var span = getMarkedSpanFor(line.markedSpans, this);\n-                                    if (span.from != null) {\n-                                        from = Pos(lineObj ? line : lineNo(line), span.from);\n-                                        if (side == -1) {\n-                                            return from;\n-                                        }\n-                                    }\n-                                    if (span.to != null) {\n-                                        to = Pos(lineObj ? line : lineNo(line), span.to);\n-                                        if (side == 1) {\n-                                            return to;\n-                                        }\n-                                    }\n-                                }\n-                                return from && {\n-                                    from,\n-                                    to\n-                                };\n-                            };\n-                            TextMarker.prototype.changed = function() {\n-                                var this$1$1 = this;\n-                                var pos = this.find(-1, true),\n-                                    widget = this,\n-                                    cm = this.doc.cm;\n-                                if (!pos || !cm) {\n-                                    return;\n-                                }\n-                                runInOp(cm, function() {\n-                                    var line = pos.line,\n-                                        lineN = lineNo(pos.line);\n-                                    var view = findViewForLine(cm, lineN);\n-                                    if (view) {\n-                                        clearLineMeasurementCacheFor(view);\n-                                        cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n-                                    }\n-                                    cm.curOp.updateMaxLine = true;\n-                                    if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n-                                        var oldHeight = widget.height;\n-                                        widget.height = null;\n-                                        var dHeight = widgetHeight(widget) - oldHeight;\n-                                        if (dHeight) {\n-                                            updateLineHeight(line, line.height + dHeight);\n-                                        }\n-                                    }\n-                                    signalLater(cm, \"markerChanged\", cm, this$1$1);\n-                                });\n-                            };\n-                            TextMarker.prototype.attachLine = function(line) {\n-                                if (!this.lines.length && this.doc.cm) {\n-                                    var op = this.doc.cm.curOp;\n-                                    if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) {\n-                                        (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);\n-                                    }\n-                                }\n-                                this.lines.push(line);\n-                            };\n-                            TextMarker.prototype.detachLine = function(line) {\n-                                this.lines.splice(indexOf(this.lines, line), 1);\n-                                if (!this.lines.length && this.doc.cm) {\n-                                    var op = this.doc.cm.curOp;\n-                                    (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n-                                }\n-                            };\n-                            eventMixin(TextMarker);\n-\n-                            function markText(doc, from, to, options, type) {\n-                                if (options && options.shared) {\n-                                    return markTextShared(doc, from, to, options, type);\n-                                }\n-                                if (doc.cm && !doc.cm.curOp) {\n-                                    return operation(doc.cm, markText)(doc, from, to, options, type);\n-                                }\n-                                var marker = new TextMarker(doc, type),\n-                                    diff = cmp(from, to);\n-                                if (options) {\n-                                    copyObj(options, marker, false);\n-                                }\n-                                if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) {\n-                                    return marker;\n-                                }\n-                                if (marker.replacedWith) {\n-                                    marker.collapsed = true;\n-                                    marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n-                                    if (!options.handleMouseEvents) {\n-                                        marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\");\n-                                    }\n-                                    if (options.insertLeft) {\n-                                        marker.widgetNode.insertLeft = true;\n-                                    }\n-                                }\n-                                if (marker.collapsed) {\n-                                    if (conflictingCollapsedRange(doc, from.line, from, to, marker) || from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) {\n-                                        throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");\n-                                    }\n-                                    seeCollapsedSpans();\n-                                }\n-                                if (marker.addToHistory) {\n-                                    addChangeToHistory(doc, {\n-                                        from,\n-                                        to,\n-                                        origin: \"markText\"\n-                                    }, doc.sel, NaN);\n-                                }\n-                                var curLine = from.line,\n-                                    cm = doc.cm,\n-                                    updateMaxLine;\n-                                doc.iter(curLine, to.line + 1, function(line) {\n-                                    if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) {\n-                                        updateMaxLine = true;\n-                                    }\n-                                    if (marker.collapsed && curLine != from.line) {\n-                                        updateLineHeight(line, 0);\n-                                    }\n-                                    addMarkedSpan(line, new MarkedSpan(marker, curLine == from.line ? from.ch : null, curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n-                                    ++curLine;\n-                                });\n-                                if (marker.collapsed) {\n-                                    doc.iter(from.line, to.line + 1, function(line) {\n-                                        if (lineIsHidden(doc, line)) {\n-                                            updateLineHeight(line, 0);\n-                                        }\n-                                    });\n-                                }\n-                                if (marker.clearOnEnter) {\n-                                    on(marker, \"beforeCursorEnter\", function() {\n-                                        return marker.clear();\n-                                    });\n-                                }\n-                                if (marker.readOnly) {\n-                                    seeReadOnlySpans();\n-                                    if (doc.history.done.length || doc.history.undone.length) {\n-                                        doc.clearHistory();\n-                                    }\n-                                }\n-                                if (marker.collapsed) {\n-                                    marker.id = ++nextMarkerId;\n-                                    marker.atomic = true;\n-                                }\n-                                if (cm) {\n-                                    if (updateMaxLine) {\n-                                        cm.curOp.updateMaxLine = true;\n-                                    }\n-                                    if (marker.collapsed) {\n-                                        regChange(cm, from.line, to.line + 1);\n-                                    } else if (marker.className || marker.startStyle || marker.endStyle || marker.css || marker.attributes || marker.title) {\n-                                        for (var i2 = from.line; i2 <= to.line; i2++) {\n-                                            regLineChange(cm, i2, \"text\");\n-                                        }\n-                                    }\n-                                    if (marker.atomic) {\n-                                        reCheckSelection(cm.doc);\n-                                    }\n-                                    signalLater(cm, \"markerAdded\", cm, marker);\n-                                }\n-                                return marker;\n-                            }\n-                            var SharedTextMarker = function(markers, primary) {\n-                                this.markers = markers;\n-                                this.primary = primary;\n-                                for (var i2 = 0; i2 < markers.length; ++i2) {\n-                                    markers[i2].parent = this;\n-                                }\n-                            };\n-                            SharedTextMarker.prototype.clear = function() {\n-                                if (this.explicitlyCleared) {\n-                                    return;\n-                                }\n-                                this.explicitlyCleared = true;\n-                                for (var i2 = 0; i2 < this.markers.length; ++i2) {\n-                                    this.markers[i2].clear();\n-                                }\n-                                signalLater(this, \"clear\");\n-                            };\n-                            SharedTextMarker.prototype.find = function(side, lineObj) {\n-                                return this.primary.find(side, lineObj);\n-                            };\n-                            eventMixin(SharedTextMarker);\n-\n-                            function markTextShared(doc, from, to, options, type) {\n-                                options = copyObj(options);\n-                                options.shared = false;\n-                                var markers = [markText(doc, from, to, options, type)],\n-                                    primary = markers[0];\n-                                var widget = options.widgetNode;\n-                                linkedDocs(doc, function(doc2) {\n-                                    if (widget) {\n-                                        options.widgetNode = widget.cloneNode(true);\n-                                    }\n-                                    markers.push(markText(doc2, clipPos(doc2, from), clipPos(doc2, to), options, type));\n-                                    for (var i2 = 0; i2 < doc2.linked.length; ++i2) {\n-                                        if (doc2.linked[i2].isParent) {\n-                                            return;\n-                                        }\n-                                    }\n-                                    primary = lst(markers);\n-                                });\n-                                return new SharedTextMarker(markers, primary);\n-                            }\n-\n-                            function findSharedMarkers(doc) {\n-                                return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function(m) {\n-                                    return m.parent;\n-                                });\n-                            }\n-\n-                            function copySharedMarkers(doc, markers) {\n-                                for (var i2 = 0; i2 < markers.length; i2++) {\n-                                    var marker = markers[i2],\n-                                        pos = marker.find();\n-                                    var mFrom = doc.clipPos(pos.from),\n-                                        mTo = doc.clipPos(pos.to);\n-                                    if (cmp(mFrom, mTo)) {\n-                                        var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n-                                        marker.markers.push(subMark);\n-                                        subMark.parent = marker;\n-                                    }\n-                                }\n-                            }\n-\n-                            function detachSharedMarkers(markers) {\n-                                var loop = function(i3) {\n-                                    var marker = markers[i3],\n-                                        linked = [marker.primary.doc];\n-                                    linkedDocs(marker.primary.doc, function(d) {\n-                                        return linked.push(d);\n-                                    });\n-                                    for (var j = 0; j < marker.markers.length; j++) {\n-                                        var subMarker = marker.markers[j];\n-                                        if (indexOf(linked, subMarker.doc) == -1) {\n-                                            subMarker.parent = null;\n-                                            marker.markers.splice(j--, 1);\n-                                        }\n-                                    }\n-                                };\n-                                for (var i2 = 0; i2 < markers.length; i2++) loop(i2);\n-                            }\n-                            var nextDocId = 0;\n-                            var Doc = function(text, mode, firstLine, lineSep, direction) {\n-                                if (!(this instanceof Doc)) {\n-                                    return new Doc(text, mode, firstLine, lineSep, direction);\n-                                }\n-                                if (firstLine == null) {\n-                                    firstLine = 0;\n-                                }\n-                                BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n-                                this.first = firstLine;\n-                                this.scrollTop = this.scrollLeft = 0;\n-                                this.cantEdit = false;\n-                                this.cleanGeneration = 1;\n-                                this.modeFrontier = this.highlightFrontier = firstLine;\n-                                var start = Pos(firstLine, 0);\n-                                this.sel = simpleSelection(start);\n-                                this.history = new History(null);\n-                                this.id = ++nextDocId;\n-                                this.modeOption = mode;\n-                                this.lineSep = lineSep;\n-                                this.direction = direction == \"rtl\" ? \"rtl\" : \"ltr\";\n-                                this.extend = false;\n-                                if (typeof text == \"string\") {\n-                                    text = this.splitLines(text);\n-                                }\n-                                updateDoc(this, {\n-                                    from: start,\n-                                    to: start,\n-                                    text\n-                                });\n-                                setSelection(this, simpleSelection(start), sel_dontScroll);\n-                            };\n-                            Doc.prototype = createObj(BranchChunk.prototype, {\n-                                constructor: Doc,\n-                                // Iterate over the document. Supports two forms -- with only one\n-                                // argument, it calls that for each line in the document. With\n-                                // three, it iterates over the range given by the first two (with\n-                                // the second being non-inclusive).\n-                                iter: function(from, to, op) {\n-                                    if (op) {\n-                                        this.iterN(from - this.first, to - from, op);\n-                                    } else {\n-                                        this.iterN(this.first, this.first + this.size, from);\n-                                    }\n-                                },\n-                                // Non-public interface for adding and removing lines.\n-                                insert: function(at, lines) {\n-                                    var height = 0;\n-                                    for (var i2 = 0; i2 < lines.length; ++i2) {\n-                                        height += lines[i2].height;\n-                                    }\n-                                    this.insertInner(at - this.first, lines, height);\n-                                },\n-                                remove: function(at, n) {\n-                                    this.removeInner(at - this.first, n);\n-                                },\n-                                // From here, the methods are part of the public interface. Most\n-                                // are also available from CodeMirror (editor) instances.\n-                                getValue: function(lineSep) {\n-                                    var lines = getLines(this, this.first, this.first + this.size);\n-                                    if (lineSep === false) {\n-                                        return lines;\n-                                    }\n-                                    return lines.join(lineSep || this.lineSeparator());\n-                                },\n-                                setValue: docMethodOp(function(code) {\n-                                    var top = Pos(this.first, 0),\n-                                        last = this.first + this.size - 1;\n-                                    makeChange(this, {\n-                                        from: top,\n-                                        to: Pos(last, getLine(this, last).text.length),\n-                                        text: this.splitLines(code),\n-                                        origin: \"setValue\",\n-                                        full: true\n-                                    }, true);\n-                                    if (this.cm) {\n-                                        scrollToCoords(this.cm, 0, 0);\n-                                    }\n-                                    setSelection(this, simpleSelection(top), sel_dontScroll);\n-                                }),\n-                                replaceRange: function(code, from, to, origin) {\n-                                    from = clipPos(this, from);\n-                                    to = to ? clipPos(this, to) : from;\n-                                    replaceRange(this, code, from, to, origin);\n-                                },\n-                                getRange: function(from, to, lineSep) {\n-                                    var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n-                                    if (lineSep === false) {\n-                                        return lines;\n-                                    }\n-                                    if (lineSep === \"\") {\n-                                        return lines.join(\"\");\n-                                    }\n-                                    return lines.join(lineSep || this.lineSeparator());\n-                                },\n-                                getLine: function(line) {\n-                                    var l = this.getLineHandle(line);\n-                                    return l && l.text;\n-                                },\n-                                getLineHandle: function(line) {\n-                                    if (isLine(this, line)) {\n-                                        return getLine(this, line);\n-                                    }\n-                                },\n-                                getLineNumber: function(line) {\n-                                    return lineNo(line);\n-                                },\n-                                getLineHandleVisualStart: function(line) {\n-                                    if (typeof line == \"number\") {\n-                                        line = getLine(this, line);\n-                                    }\n-                                    return visualLine(line);\n-                                },\n-                                lineCount: function() {\n-                                    return this.size;\n-                                },\n-                                firstLine: function() {\n-                                    return this.first;\n-                                },\n-                                lastLine: function() {\n-                                    return this.first + this.size - 1;\n-                                },\n-                                clipPos: function(pos) {\n-                                    return clipPos(this, pos);\n-                                },\n-                                getCursor: function(start) {\n-                                    var range2 = this.sel.primary(),\n-                                        pos;\n-                                    if (start == null || start == \"head\") {\n-                                        pos = range2.head;\n-                                    } else if (start == \"anchor\") {\n-                                        pos = range2.anchor;\n-                                    } else if (start == \"end\" || start == \"to\" || start === false) {\n-                                        pos = range2.to();\n-                                    } else {\n-                                        pos = range2.from();\n-                                    }\n-                                    return pos;\n-                                },\n-                                listSelections: function() {\n-                                    return this.sel.ranges;\n-                                },\n-                                somethingSelected: function() {\n-                                    return this.sel.somethingSelected();\n-                                },\n-                                setCursor: docMethodOp(function(line, ch, options) {\n-                                    setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n-                                }),\n-                                setSelection: docMethodOp(function(anchor, head, options) {\n-                                    setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n-                                }),\n-                                extendSelection: docMethodOp(function(head, other, options) {\n-                                    extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n-                                }),\n-                                extendSelections: docMethodOp(function(heads, options) {\n-                                    extendSelections(this, clipPosArray(this, heads), options);\n-                                }),\n-                                extendSelectionsBy: docMethodOp(function(f, options) {\n-                                    var heads = map(this.sel.ranges, f);\n-                                    extendSelections(this, clipPosArray(this, heads), options);\n-                                }),\n-                                setSelections: docMethodOp(function(ranges, primary, options) {\n-                                    if (!ranges.length) {\n-                                        return;\n-                                    }\n-                                    var out = [];\n-                                    for (var i2 = 0; i2 < ranges.length; i2++) {\n-                                        out[i2] = new Range(clipPos(this, ranges[i2].anchor), clipPos(this, ranges[i2].head || ranges[i2].anchor));\n-                                    }\n-                                    if (primary == null) {\n-                                        primary = Math.min(ranges.length - 1, this.sel.primIndex);\n-                                    }\n-                                    setSelection(this, normalizeSelection(this.cm, out, primary), options);\n-                                }),\n-                                addSelection: docMethodOp(function(anchor, head, options) {\n-                                    var ranges = this.sel.ranges.slice(0);\n-                                    ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n-                                    setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n-                                }),\n-                                getSelection: function(lineSep) {\n-                                    var ranges = this.sel.ranges,\n-                                        lines;\n-                                    for (var i2 = 0; i2 < ranges.length; i2++) {\n-                                        var sel = getBetween(this, ranges[i2].from(), ranges[i2].to());\n-                                        lines = lines ? lines.concat(sel) : sel;\n-                                    }\n-                                    if (lineSep === false) {\n-                                        return lines;\n-                                    } else {\n-                                        return lines.join(lineSep || this.lineSeparator());\n-                                    }\n-                                },\n-                                getSelections: function(lineSep) {\n-                                    var parts = [],\n-                                        ranges = this.sel.ranges;\n-                                    for (var i2 = 0; i2 < ranges.length; i2++) {\n-                                        var sel = getBetween(this, ranges[i2].from(), ranges[i2].to());\n-                                        if (lineSep !== false) {\n-                                            sel = sel.join(lineSep || this.lineSeparator());\n-                                        }\n-                                        parts[i2] = sel;\n-                                    }\n-                                    return parts;\n-                                },\n-                                replaceSelection: function(code, collapse, origin) {\n-                                    var dup = [];\n-                                    for (var i2 = 0; i2 < this.sel.ranges.length; i2++) {\n-                                        dup[i2] = code;\n-                                    }\n-                                    this.replaceSelections(dup, collapse, origin || \"+input\");\n-                                },\n-                                replaceSelections: docMethodOp(function(code, collapse, origin) {\n-                                    var changes = [],\n-                                        sel = this.sel;\n-                                    for (var i2 = 0; i2 < sel.ranges.length; i2++) {\n-                                        var range2 = sel.ranges[i2];\n-                                        changes[i2] = {\n-                                            from: range2.from(),\n-                                            to: range2.to(),\n-                                            text: this.splitLines(code[i2]),\n-                                            origin\n-                                        };\n-                                    }\n-                                    var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n-                                    for (var i$12 = changes.length - 1; i$12 >= 0; i$12--) {\n-                                        makeChange(this, changes[i$12]);\n-                                    }\n-                                    if (newSel) {\n-                                        setSelectionReplaceHistory(this, newSel);\n-                                    } else if (this.cm) {\n-                                        ensureCursorVisible(this.cm);\n-                                    }\n-                                }),\n-                                undo: docMethodOp(function() {\n-                                    makeChangeFromHistory(this, \"undo\");\n-                                }),\n-                                redo: docMethodOp(function() {\n-                                    makeChangeFromHistory(this, \"redo\");\n-                                }),\n-                                undoSelection: docMethodOp(function() {\n-                                    makeChangeFromHistory(this, \"undo\", true);\n-                                }),\n-                                redoSelection: docMethodOp(function() {\n-                                    makeChangeFromHistory(this, \"redo\", true);\n-                                }),\n-                                setExtending: function(val) {\n-                                    this.extend = val;\n-                                },\n-                                getExtending: function() {\n-                                    return this.extend;\n-                                },\n-                                historySize: function() {\n-                                    var hist = this.history,\n-                                        done = 0,\n-                                        undone = 0;\n-                                    for (var i2 = 0; i2 < hist.done.length; i2++) {\n-                                        if (!hist.done[i2].ranges) {\n-                                            ++done;\n-                                        }\n-                                    }\n-                                    for (var i$12 = 0; i$12 < hist.undone.length; i$12++) {\n-                                        if (!hist.undone[i$12].ranges) {\n-                                            ++undone;\n-                                        }\n-                                    }\n-                                    return {\n-                                        undo: done,\n-                                        redo: undone\n-                                    };\n-                                },\n-                                clearHistory: function() {\n-                                    var this$1$1 = this;\n-                                    this.history = new History(this.history);\n-                                    linkedDocs(this, function(doc) {\n-                                        return doc.history = this$1$1.history;\n-                                    }, true);\n-                                },\n-                                markClean: function() {\n-                                    this.cleanGeneration = this.changeGeneration(true);\n-                                },\n-                                changeGeneration: function(forceSplit) {\n-                                    if (forceSplit) {\n-                                        this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null;\n-                                    }\n-                                    return this.history.generation;\n-                                },\n-                                isClean: function(gen) {\n-                                    return this.history.generation == (gen || this.cleanGeneration);\n-                                },\n-                                getHistory: function() {\n-                                    return {\n-                                        done: copyHistoryArray(this.history.done),\n-                                        undone: copyHistoryArray(this.history.undone)\n-                                    };\n-                                },\n-                                setHistory: function(histData) {\n-                                    var hist = this.history = new History(this.history);\n-                                    hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n-                                    hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n-                                },\n-                                setGutterMarker: docMethodOp(function(line, gutterID, value) {\n-                                    return changeLine(this, line, \"gutter\", function(line2) {\n-                                        var markers = line2.gutterMarkers || (line2.gutterMarkers = {});\n-                                        markers[gutterID] = value;\n-                                        if (!value && isEmpty(markers)) {\n-                                            line2.gutterMarkers = null;\n-                                        }\n-                                        return true;\n-                                    });\n-                                }),\n-                                clearGutter: docMethodOp(function(gutterID) {\n-                                    var this$1$1 = this;\n-                                    this.iter(function(line) {\n-                                        if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n-                                            changeLine(this$1$1, line, \"gutter\", function() {\n-                                                line.gutterMarkers[gutterID] = null;\n-                                                if (isEmpty(line.gutterMarkers)) {\n-                                                    line.gutterMarkers = null;\n-                                                }\n-                                                return true;\n-                                            });\n-                                        }\n-                                    });\n-                                }),\n-                                lineInfo: function(line) {\n-                                    var n;\n-                                    if (typeof line == \"number\") {\n-                                        if (!isLine(this, line)) {\n-                                            return null;\n-                                        }\n-                                        n = line;\n-                                        line = getLine(this, line);\n-                                        if (!line) {\n-                                            return null;\n-                                        }\n-                                    } else {\n-                                        n = lineNo(line);\n-                                        if (n == null) {\n-                                            return null;\n-                                        }\n-                                    }\n-                                    return {\n-                                        line: n,\n-                                        handle: line,\n-                                        text: line.text,\n-                                        gutterMarkers: line.gutterMarkers,\n-                                        textClass: line.textClass,\n-                                        bgClass: line.bgClass,\n-                                        wrapClass: line.wrapClass,\n-                                        widgets: line.widgets\n-                                    };\n-                                },\n-                                addLineClass: docMethodOp(function(handle, where, cls) {\n-                                    return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function(line) {\n-                                        var prop2 = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n-                                        if (!line[prop2]) {\n-                                            line[prop2] = cls;\n-                                        } else if (classTest(cls).test(line[prop2])) {\n-                                            return false;\n-                                        } else {\n-                                            line[prop2] += \" \" + cls;\n-                                        }\n-                                        return true;\n-                                    });\n-                                }),\n-                                removeLineClass: docMethodOp(function(handle, where, cls) {\n-                                    return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function(line) {\n-                                        var prop2 = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n-                                        var cur = line[prop2];\n-                                        if (!cur) {\n-                                            return false;\n-                                        } else if (cls == null) {\n-                                            line[prop2] = null;\n-                                        } else {\n-                                            var found = cur.match(classTest(cls));\n-                                            if (!found) {\n-                                                return false;\n-                                            }\n-                                            var end = found.index + found[0].length;\n-                                            line[prop2] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n-                                        }\n-                                        return true;\n-                                    });\n-                                }),\n-                                addLineWidget: docMethodOp(function(handle, node, options) {\n-                                    return addLineWidget(this, handle, node, options);\n-                                }),\n-                                removeLineWidget: function(widget) {\n-                                    widget.clear();\n-                                },\n-                                markText: function(from, to, options) {\n-                                    return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\");\n-                                },\n-                                setBookmark: function(pos, options) {\n-                                    var realOpts = {\n-                                        replacedWith: options && (options.nodeType == null ? options.widget : options),\n-                                        insertLeft: options && options.insertLeft,\n-                                        clearWhenEmpty: false,\n-                                        shared: options && options.shared,\n-                                        handleMouseEvents: options && options.handleMouseEvents\n-                                    };\n-                                    pos = clipPos(this, pos);\n-                                    return markText(this, pos, pos, realOpts, \"bookmark\");\n-                                },\n-                                findMarksAt: function(pos) {\n-                                    pos = clipPos(this, pos);\n-                                    var markers = [],\n-                                        spans = getLine(this, pos.line).markedSpans;\n-                                    if (spans) {\n-                                        for (var i2 = 0; i2 < spans.length; ++i2) {\n-                                            var span = spans[i2];\n-                                            if ((span.from == null || span.from <= pos.ch) && (span.to == null || span.to >= pos.ch)) {\n-                                                markers.push(span.marker.parent || span.marker);\n-                                            }\n-                                        }\n-                                    }\n-                                    return markers;\n-                                },\n-                                findMarks: function(from, to, filter) {\n-                                    from = clipPos(this, from);\n-                                    to = clipPos(this, to);\n-                                    var found = [],\n-                                        lineNo2 = from.line;\n-                                    this.iter(from.line, to.line + 1, function(line) {\n-                                        var spans = line.markedSpans;\n-                                        if (spans) {\n-                                            for (var i2 = 0; i2 < spans.length; i2++) {\n-                                                var span = spans[i2];\n-                                                if (!(span.to != null && lineNo2 == from.line && from.ch >= span.to || span.from == null && lineNo2 != from.line || span.from != null && lineNo2 == to.line && span.from >= to.ch) && (!filter || filter(span.marker))) {\n-                                                    found.push(span.marker.parent || span.marker);\n-                                                }\n-                                            }\n-                                        }\n-                                        ++lineNo2;\n-                                    });\n-                                    return found;\n-                                },\n-                                getAllMarks: function() {\n-                                    var markers = [];\n-                                    this.iter(function(line) {\n-                                        var sps = line.markedSpans;\n-                                        if (sps) {\n-                                            for (var i2 = 0; i2 < sps.length; ++i2) {\n-                                                if (sps[i2].from != null) {\n-                                                    markers.push(sps[i2].marker);\n-                                                }\n-                                            }\n-                                        }\n-                                    });\n-                                    return markers;\n-                                },\n-                                posFromIndex: function(off2) {\n-                                    var ch,\n-                                        lineNo2 = this.first,\n-                                        sepSize = this.lineSeparator().length;\n-                                    this.iter(function(line) {\n-                                        var sz = line.text.length + sepSize;\n-                                        if (sz > off2) {\n-                                            ch = off2;\n-                                            return true;\n-                                        }\n-                                        off2 -= sz;\n-                                        ++lineNo2;\n-                                    });\n-                                    return clipPos(this, Pos(lineNo2, ch));\n-                                },\n-                                indexFromPos: function(coords) {\n-                                    coords = clipPos(this, coords);\n-                                    var index = coords.ch;\n-                                    if (coords.line < this.first || coords.ch < 0) {\n-                                        return 0;\n-                                    }\n-                                    var sepSize = this.lineSeparator().length;\n-                                    this.iter(this.first, coords.line, function(line) {\n-                                        index += line.text.length + sepSize;\n-                                    });\n-                                    return index;\n-                                },\n-                                copy: function(copyHistory) {\n-                                    var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction);\n-                                    doc.scrollTop = this.scrollTop;\n-                                    doc.scrollLeft = this.scrollLeft;\n-                                    doc.sel = this.sel;\n-                                    doc.extend = false;\n-                                    if (copyHistory) {\n-                                        doc.history.undoDepth = this.history.undoDepth;\n-                                        doc.setHistory(this.getHistory());\n-                                    }\n-                                    return doc;\n-                                },\n-                                linkedDoc: function(options) {\n-                                    if (!options) {\n-                                        options = {};\n-                                    }\n-                                    var from = this.first,\n-                                        to = this.first + this.size;\n-                                    if (options.from != null && options.from > from) {\n-                                        from = options.from;\n-                                    }\n-                                    if (options.to != null && options.to < to) {\n-                                        to = options.to;\n-                                    }\n-                                    var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n-                                    if (options.sharedHist) {\n-                                        copy.history = this.history;\n-                                    }\n-                                    (this.linked || (this.linked = [])).push({\n-                                        doc: copy,\n-                                        sharedHist: options.sharedHist\n-                                    });\n-                                    copy.linked = [{\n-                                        doc: this,\n-                                        isParent: true,\n-                                        sharedHist: options.sharedHist\n-                                    }];\n-                                    copySharedMarkers(copy, findSharedMarkers(this));\n-                                    return copy;\n-                                },\n-                                unlinkDoc: function(other) {\n-                                    if (other instanceof CodeMirror) {\n-                                        other = other.doc;\n-                                    }\n-                                    if (this.linked) {\n-                                        for (var i2 = 0; i2 < this.linked.length; ++i2) {\n-                                            var link = this.linked[i2];\n-                                            if (link.doc != other) {\n-                                                continue;\n-                                            }\n-                                            this.linked.splice(i2, 1);\n-                                            other.unlinkDoc(this);\n-                                            detachSharedMarkers(findSharedMarkers(this));\n-                                            break;\n-                                        }\n-                                    }\n-                                    if (other.history == this.history) {\n-                                        var splitIds = [other.id];\n-                                        linkedDocs(other, function(doc) {\n-                                            return splitIds.push(doc.id);\n-                                        }, true);\n-                                        other.history = new History(null);\n-                                        other.history.done = copyHistoryArray(this.history.done, splitIds);\n-                                        other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n-                                    }\n-                                },\n-                                iterLinkedDocs: function(f) {\n-                                    linkedDocs(this, f);\n-                                },\n-                                getMode: function() {\n-                                    return this.mode;\n-                                },\n-                                getEditor: function() {\n-                                    return this.cm;\n-                                },\n-                                splitLines: function(str) {\n-                                    if (this.lineSep) {\n-                                        return str.split(this.lineSep);\n-                                    }\n-                                    return splitLinesAuto(str);\n-                                },\n-                                lineSeparator: function() {\n-                                    return this.lineSep || \"\\n\";\n-                                },\n-                                setDirection: docMethodOp(function(dir) {\n-                                    if (dir != \"rtl\") {\n-                                        dir = \"ltr\";\n-                                    }\n-                                    if (dir == this.direction) {\n-                                        return;\n-                                    }\n-                                    this.direction = dir;\n-                                    this.iter(function(line) {\n-                                        return line.order = null;\n-                                    });\n-                                    if (this.cm) {\n-                                        directionChanged(this.cm);\n-                                    }\n-                                })\n-                            });\n-                            Doc.prototype.eachLine = Doc.prototype.iter;\n-                            var lastDrop = 0;\n-\n-                            function onDrop(e) {\n-                                var cm = this;\n-                                clearDragCursor(cm);\n-                                if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n-                                    return;\n-                                }\n-                                e_preventDefault(e);\n-                                if (ie) {\n-                                    lastDrop = + /* @__PURE__ */ new Date();\n-                                }\n-                                var pos = posFromMouse(cm, e, true),\n-                                    files = e.dataTransfer.files;\n-                                if (!pos || cm.isReadOnly()) {\n-                                    return;\n-                                }\n-                                if (files && files.length && window.FileReader && window.File) {\n-                                    var n = files.length,\n-                                        text = Array(n),\n-                                        read = 0;\n-                                    var markAsReadAndPasteIfAllFilesAreRead = function() {\n-                                        if (++read == n) {\n-                                            operation(cm, function() {\n-                                                pos = clipPos(cm.doc, pos);\n-                                                var change = {\n-                                                    from: pos,\n-                                                    to: pos,\n-                                                    text: cm.doc.splitLines(text.filter(function(t) {\n-                                                        return t != null;\n-                                                    }).join(cm.doc.lineSeparator())),\n-                                                    origin: \"paste\"\n-                                                };\n-                                                makeChange(cm.doc, change);\n-                                                setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n-                                            })();\n-                                        }\n-                                    };\n-                                    var readTextFromFile = function(file, i3) {\n-                                        if (cm.options.allowDropFileTypes && indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n-                                            markAsReadAndPasteIfAllFilesAreRead();\n-                                            return;\n-                                        }\n-                                        var reader = new FileReader();\n-                                        reader.onerror = function() {\n-                                            return markAsReadAndPasteIfAllFilesAreRead();\n-                                        };\n-                                        reader.onload = function() {\n-                                            var content = reader.result;\n-                                            if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n-                                                markAsReadAndPasteIfAllFilesAreRead();\n-                                                return;\n-                                            }\n-                                            text[i3] = content;\n-                                            markAsReadAndPasteIfAllFilesAreRead();\n-                                        };\n-                                        reader.readAsText(file);\n-                                    };\n-                                    for (var i2 = 0; i2 < files.length; i2++) {\n-                                        readTextFromFile(files[i2], i2);\n-                                    }\n-                                } else {\n-                                    if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n-                                        cm.state.draggingText(e);\n-                                        setTimeout(function() {\n-                                            return cm.display.input.focus();\n-                                        }, 20);\n-                                        return;\n-                                    }\n-                                    try {\n-                                        var text$1 = e.dataTransfer.getData(\"Text\");\n-                                        if (text$1) {\n-                                            var selected;\n-                                            if (cm.state.draggingText && !cm.state.draggingText.copy) {\n-                                                selected = cm.listSelections();\n-                                            }\n-                                            setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n-                                            if (selected) {\n-                                                for (var i$12 = 0; i$12 < selected.length; ++i$12) {\n-                                                    replaceRange(cm.doc, \"\", selected[i$12].anchor, selected[i$12].head, \"drag\");\n-                                                }\n-                                            }\n-                                            cm.replaceSelection(text$1, \"around\", \"paste\");\n-                                            cm.display.input.focus();\n-                                        }\n-                                    } catch (e$1) {}\n-                                }\n-                            }\n-\n-                            function onDragStart(cm, e) {\n-                                if (ie && (!cm.state.draggingText || + /* @__PURE__ */ new Date() - lastDrop < 100)) {\n-                                    e_stop(e);\n-                                    return;\n-                                }\n-                                if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n-                                    return;\n-                                }\n-                                e.dataTransfer.setData(\"Text\", cm.getSelection());\n-                                e.dataTransfer.effectAllowed = \"copyMove\";\n-                                if (e.dataTransfer.setDragImage && !safari) {\n-                                    var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n-                                    img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n-                                    if (presto) {\n-                                        img.width = img.height = 1;\n-                                        cm.display.wrapper.appendChild(img);\n-                                        img._top = img.offsetTop;\n-                                    }\n-                                    e.dataTransfer.setDragImage(img, 0, 0);\n-                                    if (presto) {\n-                                        img.parentNode.removeChild(img);\n-                                    }\n-                                }\n-                            }\n-\n-                            function onDragOver(cm, e) {\n-                                var pos = posFromMouse(cm, e);\n-                                if (!pos) {\n-                                    return;\n-                                }\n-                                var frag = document.createDocumentFragment();\n-                                drawSelectionCursor(cm, pos, frag);\n-                                if (!cm.display.dragCursor) {\n-                                    cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n-                                    cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n-                                }\n-                                removeChildrenAndAdd(cm.display.dragCursor, frag);\n-                            }\n-\n-                            function clearDragCursor(cm) {\n-                                if (cm.display.dragCursor) {\n-                                    cm.display.lineSpace.removeChild(cm.display.dragCursor);\n-                                    cm.display.dragCursor = null;\n-                                }\n-                            }\n-\n-                            function forEachCodeMirror(f) {\n-                                if (!document.getElementsByClassName) {\n-                                    return;\n-                                }\n-                                var byClass = document.getElementsByClassName(\"CodeMirror\"),\n-                                    editors = [];\n-                                for (var i2 = 0; i2 < byClass.length; i2++) {\n-                                    var cm = byClass[i2].CodeMirror;\n-                                    if (cm) {\n-                                        editors.push(cm);\n-                                    }\n-                                }\n-                                if (editors.length) {\n-                                    editors[0].operation(function() {\n-                                        for (var i3 = 0; i3 < editors.length; i3++) {\n-                                            f(editors[i3]);\n-                                        }\n-                                    });\n-                                }\n-                            }\n-                            var globalsRegistered = false;\n-\n-                            function ensureGlobalHandlers() {\n-                                if (globalsRegistered) {\n-                                    return;\n-                                }\n-                                registerGlobalHandlers();\n-                                globalsRegistered = true;\n-                            }\n-\n-                            function registerGlobalHandlers() {\n-                                var resizeTimer;\n-                                on(window, \"resize\", function() {\n-                                    if (resizeTimer == null) {\n-                                        resizeTimer = setTimeout(function() {\n-                                            resizeTimer = null;\n-                                            forEachCodeMirror(onResize);\n-                                        }, 100);\n-                                    }\n-                                });\n-                                on(window, \"blur\", function() {\n-                                    return forEachCodeMirror(onBlur);\n-                                });\n-                            }\n-\n-                            function onResize(cm) {\n-                                var d = cm.display;\n-                                d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n-                                d.scrollbarsClipped = false;\n-                                cm.setSize();\n-                            }\n-                            var keyNames = {\n-                                3: \"Pause\",\n-                                8: \"Backspace\",\n-                                9: \"Tab\",\n-                                13: \"Enter\",\n-                                16: \"Shift\",\n-                                17: \"Ctrl\",\n-                                18: \"Alt\",\n-                                19: \"Pause\",\n-                                20: \"CapsLock\",\n-                                27: \"Esc\",\n-                                32: \"Space\",\n-                                33: \"PageUp\",\n-                                34: \"PageDown\",\n-                                35: \"End\",\n-                                36: \"Home\",\n-                                37: \"Left\",\n-                                38: \"Up\",\n-                                39: \"Right\",\n-                                40: \"Down\",\n-                                44: \"PrintScrn\",\n-                                45: \"Insert\",\n-                                46: \"Delete\",\n-                                59: \";\",\n-                                61: \"=\",\n-                                91: \"Mod\",\n-                                92: \"Mod\",\n-                                93: \"Mod\",\n-                                106: \"*\",\n-                                107: \"=\",\n-                                109: \"-\",\n-                                110: \".\",\n-                                111: \"/\",\n-                                145: \"ScrollLock\",\n-                                173: \"-\",\n-                                186: \";\",\n-                                187: \"=\",\n-                                188: \",\",\n-                                189: \"-\",\n-                                190: \".\",\n-                                191: \"/\",\n-                                192: \"`\",\n-                                219: \"[\",\n-                                220: \"\\\\\",\n-                                221: \"]\",\n-                                222: \"'\",\n-                                224: \"Mod\",\n-                                63232: \"Up\",\n-                                63233: \"Down\",\n-                                63234: \"Left\",\n-                                63235: \"Right\",\n-                                63272: \"Delete\",\n-                                63273: \"Home\",\n-                                63275: \"End\",\n-                                63276: \"PageUp\",\n-                                63277: \"PageDown\",\n-                                63302: \"Insert\"\n-                            };\n-                            for (var i = 0; i < 10; i++) {\n-                                keyNames[i + 48] = keyNames[i + 96] = String(i);\n-                            }\n-                            for (var i$1 = 65; i$1 <= 90; i$1++) {\n-                                keyNames[i$1] = String.fromCharCode(i$1);\n-                            }\n-                            for (var i$2 = 1; i$2 <= 12; i$2++) {\n-                                keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2;\n-                            }\n-                            var keyMap = {};\n-                            keyMap.basic = {\n-                                \"Left\": \"goCharLeft\",\n-                                \"Right\": \"goCharRight\",\n-                                \"Up\": \"goLineUp\",\n-                                \"Down\": \"goLineDown\",\n-                                \"End\": \"goLineEnd\",\n-                                \"Home\": \"goLineStartSmart\",\n-                                \"PageUp\": \"goPageUp\",\n-                                \"PageDown\": \"goPageDown\",\n-                                \"Delete\": \"delCharAfter\",\n-                                \"Backspace\": \"delCharBefore\",\n-                                \"Shift-Backspace\": \"delCharBefore\",\n-                                \"Tab\": \"defaultTab\",\n-                                \"Shift-Tab\": \"indentAuto\",\n-                                \"Enter\": \"newlineAndIndent\",\n-                                \"Insert\": \"toggleOverwrite\",\n-                                \"Esc\": \"singleSelection\"\n-                            };\n-                            keyMap.pcDefault = {\n-                                \"Ctrl-A\": \"selectAll\",\n-                                \"Ctrl-D\": \"deleteLine\",\n-                                \"Ctrl-Z\": \"undo\",\n-                                \"Shift-Ctrl-Z\": \"redo\",\n-                                \"Ctrl-Y\": \"redo\",\n-                                \"Ctrl-Home\": \"goDocStart\",\n-                                \"Ctrl-End\": \"goDocEnd\",\n-                                \"Ctrl-Up\": \"goLineUp\",\n-                                \"Ctrl-Down\": \"goLineDown\",\n-                                \"Ctrl-Left\": \"goGroupLeft\",\n-                                \"Ctrl-Right\": \"goGroupRight\",\n-                                \"Alt-Left\": \"goLineStart\",\n-                                \"Alt-Right\": \"goLineEnd\",\n-                                \"Ctrl-Backspace\": \"delGroupBefore\",\n-                                \"Ctrl-Delete\": \"delGroupAfter\",\n-                                \"Ctrl-S\": \"save\",\n-                                \"Ctrl-F\": \"find\",\n-                                \"Ctrl-G\": \"findNext\",\n-                                \"Shift-Ctrl-G\": \"findPrev\",\n-                                \"Shift-Ctrl-F\": \"replace\",\n-                                \"Shift-Ctrl-R\": \"replaceAll\",\n-                                \"Ctrl-[\": \"indentLess\",\n-                                \"Ctrl-]\": \"indentMore\",\n-                                \"Ctrl-U\": \"undoSelection\",\n-                                \"Shift-Ctrl-U\": \"redoSelection\",\n-                                \"Alt-U\": \"redoSelection\",\n-                                \"fallthrough\": \"basic\"\n-                            };\n-                            keyMap.emacsy = {\n-                                \"Ctrl-F\": \"goCharRight\",\n-                                \"Ctrl-B\": \"goCharLeft\",\n-                                \"Ctrl-P\": \"goLineUp\",\n-                                \"Ctrl-N\": \"goLineDown\",\n-                                \"Ctrl-A\": \"goLineStart\",\n-                                \"Ctrl-E\": \"goLineEnd\",\n-                                \"Ctrl-V\": \"goPageDown\",\n-                                \"Shift-Ctrl-V\": \"goPageUp\",\n-                                \"Ctrl-D\": \"delCharAfter\",\n-                                \"Ctrl-H\": \"delCharBefore\",\n-                                \"Alt-Backspace\": \"delWordBefore\",\n-                                \"Ctrl-K\": \"killLine\",\n-                                \"Ctrl-T\": \"transposeChars\",\n-                                \"Ctrl-O\": \"openLine\"\n-                            };\n-                            keyMap.macDefault = {\n-                                \"Cmd-A\": \"selectAll\",\n-                                \"Cmd-D\": \"deleteLine\",\n-                                \"Cmd-Z\": \"undo\",\n-                                \"Shift-Cmd-Z\": \"redo\",\n-                                \"Cmd-Y\": \"redo\",\n-                                \"Cmd-Home\": \"goDocStart\",\n-                                \"Cmd-Up\": \"goDocStart\",\n-                                \"Cmd-End\": \"goDocEnd\",\n-                                \"Cmd-Down\": \"goDocEnd\",\n-                                \"Alt-Left\": \"goGroupLeft\",\n-                                \"Alt-Right\": \"goGroupRight\",\n-                                \"Cmd-Left\": \"goLineLeft\",\n-                                \"Cmd-Right\": \"goLineRight\",\n-                                \"Alt-Backspace\": \"delGroupBefore\",\n-                                \"Ctrl-Alt-Backspace\": \"delGroupAfter\",\n-                                \"Alt-Delete\": \"delGroupAfter\",\n-                                \"Cmd-S\": \"save\",\n-                                \"Cmd-F\": \"find\",\n-                                \"Cmd-G\": \"findNext\",\n-                                \"Shift-Cmd-G\": \"findPrev\",\n-                                \"Cmd-Alt-F\": \"replace\",\n-                                \"Shift-Cmd-Alt-F\": \"replaceAll\",\n-                                \"Cmd-[\": \"indentLess\",\n-                                \"Cmd-]\": \"indentMore\",\n-                                \"Cmd-Backspace\": \"delWrappedLineLeft\",\n-                                \"Cmd-Delete\": \"delWrappedLineRight\",\n-                                \"Cmd-U\": \"undoSelection\",\n-                                \"Shift-Cmd-U\": \"redoSelection\",\n-                                \"Ctrl-Up\": \"goDocStart\",\n-                                \"Ctrl-Down\": \"goDocEnd\",\n-                                \"fallthrough\": [\"basic\", \"emacsy\"]\n-                            };\n-                            keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n-\n-                            function normalizeKeyName(name) {\n-                                var parts = name.split(/-(?!$)/);\n-                                name = parts[parts.length - 1];\n-                                var alt, ctrl, shift, cmd;\n-                                for (var i2 = 0; i2 < parts.length - 1; i2++) {\n-                                    var mod = parts[i2];\n-                                    if (/^(cmd|meta|m)$/i.test(mod)) {\n-                                        cmd = true;\n-                                    } else if (/^a(lt)?$/i.test(mod)) {\n-                                        alt = true;\n-                                    } else if (/^(c|ctrl|control)$/i.test(mod)) {\n-                                        ctrl = true;\n-                                    } else if (/^s(hift)?$/i.test(mod)) {\n-                                        shift = true;\n-                                    } else {\n-                                        throw new Error(\"Unrecognized modifier name: \" + mod);\n-                                    }\n-                                }\n-                                if (alt) {\n-                                    name = \"Alt-\" + name;\n-                                }\n-                                if (ctrl) {\n-                                    name = \"Ctrl-\" + name;\n-                                }\n-                                if (cmd) {\n-                                    name = \"Cmd-\" + name;\n-                                }\n-                                if (shift) {\n-                                    name = \"Shift-\" + name;\n-                                }\n-                                return name;\n-                            }\n-\n-                            function normalizeKeyMap(keymap) {\n-                                var copy = {};\n-                                for (var keyname in keymap) {\n-                                    if (keymap.hasOwnProperty(keyname)) {\n-                                        var value = keymap[keyname];\n-                                        if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) {\n-                                            continue;\n-                                        }\n-                                        if (value == \"...\") {\n-                                            delete keymap[keyname];\n-                                            continue;\n-                                        }\n-                                        var keys = map(keyname.split(\" \"), normalizeKeyName);\n-                                        for (var i2 = 0; i2 < keys.length; i2++) {\n-                                            var val = void 0,\n-                                                name = void 0;\n-                                            if (i2 == keys.length - 1) {\n-                                                name = keys.join(\" \");\n-                                                val = value;\n-                                            } else {\n-                                                name = keys.slice(0, i2 + 1).join(\" \");\n-                                                val = \"...\";\n-                                            }\n-                                            var prev = copy[name];\n-                                            if (!prev) {\n-                                                copy[name] = val;\n-                                            } else if (prev != val) {\n-                                                throw new Error(\"Inconsistent bindings for \" + name);\n-                                            }\n-                                        }\n-                                        delete keymap[keyname];\n-                                    }\n-                                }\n-                                for (var prop2 in copy) {\n-                                    keymap[prop2] = copy[prop2];\n-                                }\n-                                return keymap;\n-                            }\n-\n-                            function lookupKey(key, map2, handle, context) {\n-                                map2 = getKeyMap(map2);\n-                                var found = map2.call ? map2.call(key, context) : map2[key];\n-                                if (found === false) {\n-                                    return \"nothing\";\n-                                }\n-                                if (found === \"...\") {\n-                                    return \"multi\";\n-                                }\n-                                if (found != null && handle(found)) {\n-                                    return \"handled\";\n-                                }\n-                                if (map2.fallthrough) {\n-                                    if (Object.prototype.toString.call(map2.fallthrough) != \"[object Array]\") {\n-                                        return lookupKey(key, map2.fallthrough, handle, context);\n-                                    }\n-                                    for (var i2 = 0; i2 < map2.fallthrough.length; i2++) {\n-                                        var result = lookupKey(key, map2.fallthrough[i2], handle, context);\n-                                        if (result) {\n-                                            return result;\n-                                        }\n-                                    }\n-                                }\n-                            }\n-\n-                            function isModifierKey(value) {\n-                                var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n-                                return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\";\n+                     * @param documentation A doc string.\n+                     */\n+                    function create(label, documentation) {\n+                        return documentation ? {\n+                            label: label,\n+                            documentation: documentation\n+                        } : {\n+                            label: label\n+                        };\n+                    }\n+                    ParameterInformation.create = create;\n+                })(ParameterInformation || (exports.ParameterInformation = ParameterInformation = {}));\n+                /**\n+                 * The SignatureInformation namespace provides helper functions to work with\n+                 * {@link SignatureInformation} literals.\n+                 */\n+                var SignatureInformation;\n+                (function(SignatureInformation) {\n+                    function create(label, documentation) {\n+                        var parameters = [];\n+                        for (var _i = 2; _i < arguments.length; _i++) {\n+                            parameters[_i - 2] = arguments[_i];\n+                        }\n+                        var result = {\n+                            label: label\n+                        };\n+                        if (Is.defined(documentation)) {\n+                            result.documentation = documentation;\n+                        }\n+                        if (Is.defined(parameters)) {\n+                            result.parameters = parameters;\n+                        } else {\n+                            result.parameters = [];\n+                        }\n+                        return result;\n+                    }\n+                    SignatureInformation.create = create;\n+                })(SignatureInformation || (exports.SignatureInformation = SignatureInformation = {}));\n+                /**\n+                 * A document highlight kind.\n+                 */\n+                var DocumentHighlightKind;\n+                (function(DocumentHighlightKind) {\n+                    /**\n+                     * A textual occurrence.\n+                     */\n+                    DocumentHighlightKind.Text = 1;\n+                    /**\n+                     * Read-access of a symbol, like reading a variable.\n+                     */\n+                    DocumentHighlightKind.Read = 2;\n+                    /**\n+                     * Write-access of a symbol, like writing to a variable.\n+                     */\n+                    DocumentHighlightKind.Write = 3;\n+                })(DocumentHighlightKind || (exports.DocumentHighlightKind = DocumentHighlightKind = {}));\n+                /**\n+                 * DocumentHighlight namespace to provide helper functions to work with\n+                 * {@link DocumentHighlight} literals.\n+                 */\n+                var DocumentHighlight;\n+                (function(DocumentHighlight) {\n+                    /**\n+                     * Create a DocumentHighlight object.\n+                     * @param range The range the highlight applies to.\n+                     * @param kind The highlight kind\n+                     */\n+                    function create(range, kind) {\n+                        var result = {\n+                            range: range\n+                        };\n+                        if (Is.number(kind)) {\n+                            result.kind = kind;\n+                        }\n+                        return result;\n+                    }\n+                    DocumentHighlight.create = create;\n+                })(DocumentHighlight || (exports.DocumentHighlight = DocumentHighlight = {}));\n+                /**\n+                 * A symbol kind.\n+                 */\n+                var SymbolKind;\n+                (function(SymbolKind) {\n+                    SymbolKind.File = 1;\n+                    SymbolKind.Module = 2;\n+                    SymbolKind.Namespace = 3;\n+                    SymbolKind.Package = 4;\n+                    SymbolKind.Class = 5;\n+                    SymbolKind.Method = 6;\n+                    SymbolKind.Property = 7;\n+                    SymbolKind.Field = 8;\n+                    SymbolKind.Constructor = 9;\n+                    SymbolKind.Enum = 10;\n+                    SymbolKind.Interface = 11;\n+                    SymbolKind.Function = 12;\n+                    SymbolKind.Variable = 13;\n+                    SymbolKind.Constant = 14;\n+                    SymbolKind.String = 15;\n+                    SymbolKind.Number = 16;\n+                    SymbolKind.Boolean = 17;\n+                    SymbolKind.Array = 18;\n+                    SymbolKind.Object = 19;\n+                    SymbolKind.Key = 20;\n+                    SymbolKind.Null = 21;\n+                    SymbolKind.EnumMember = 22;\n+                    SymbolKind.Struct = 23;\n+                    SymbolKind.Event = 24;\n+                    SymbolKind.Operator = 25;\n+                    SymbolKind.TypeParameter = 26;\n+                })(SymbolKind || (exports.SymbolKind = SymbolKind = {}));\n+                /**\n+                 * Symbol tags are extra annotations that tweak the rendering of a symbol.\n+                 *\n+                 * @since 3.16\n+                 */\n+                var SymbolTag;\n+                (function(SymbolTag) {\n+                    /**\n+                     * Render a symbol as obsolete, usually using a strike-out.\n+                     */\n+                    SymbolTag.Deprecated = 1;\n+                })(SymbolTag || (exports.SymbolTag = SymbolTag = {}));\n+                var SymbolInformation;\n+                (function(SymbolInformation) {\n+                    /**\n+                     * Creates a new symbol information literal.\n+                     *\n+                     * @param name The name of the symbol.\n+                     * @param kind The kind of the symbol.\n+                     * @param range The range of the location of the symbol.\n+                     * @param uri The resource of the location of symbol.\n+                     * @param containerName The name of the symbol containing the symbol.\n+                     */\n+                    function create(name, kind, range, uri, containerName) {\n+                        var result = {\n+                            name: name,\n+                            kind: kind,\n+                            location: {\n+                                uri: uri,\n+                                range: range\n                             }\n-\n-                            function addModifierNames(name, event, noShift) {\n-                                var base = name;\n-                                if (event.altKey && base != \"Alt\") {\n-                                    name = \"Alt-\" + name;\n-                                }\n-                                if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") {\n-                                    name = \"Ctrl-\" + name;\n-                                }\n-                                if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") {\n-                                    name = \"Cmd-\" + name;\n-                                }\n-                                if (!noShift && event.shiftKey && base != \"Shift\") {\n-                                    name = \"Shift-\" + name;\n-                                }\n-                                return name;\n+                        };\n+                        if (containerName) {\n+                            result.containerName = containerName;\n+                        }\n+                        return result;\n+                    }\n+                    SymbolInformation.create = create;\n+                })(SymbolInformation || (exports.SymbolInformation = SymbolInformation = {}));\n+                var WorkspaceSymbol;\n+                (function(WorkspaceSymbol) {\n+                    /**\n+                     * Create a new workspace symbol.\n+                     *\n+                     * @param name The name of the symbol.\n+                     * @param kind The kind of the symbol.\n+                     * @param uri The resource of the location of the symbol.\n+                     * @param range An options range of the location.\n+                     * @returns A WorkspaceSymbol.\n+                     */\n+                    function create(name, kind, uri, range) {\n+                        return range !== undefined ? {\n+                            name: name,\n+                            kind: kind,\n+                            location: {\n+                                uri: uri,\n+                                range: range\n                             }\n-\n-                            function keyName(event, noShift) {\n-                                if (presto && event.keyCode == 34 && event[\"char\"]) {\n-                                    return false;\n-                                }\n-                                var name = keyNames[event.keyCode];\n-                                if (name == null || event.altGraphKey) {\n-                                    return false;\n-                                }\n-                                if (event.keyCode == 3 && event.code) {\n-                                    name = event.code;\n-                                }\n-                                return addModifierNames(name, event, noShift);\n+                        } : {\n+                            name: name,\n+                            kind: kind,\n+                            location: {\n+                                uri: uri\n                             }\n+                        };\n+                    }\n+                    WorkspaceSymbol.create = create;\n+                })(WorkspaceSymbol || (exports.WorkspaceSymbol = WorkspaceSymbol = {}));\n+                var DocumentSymbol;\n+                (function(DocumentSymbol) {\n+                    /**\n+                     * Creates a new symbol information literal.\n+                     *\n+                     * @param name The name of the symbol.\n+                     * @param detail The detail of the symbol.\n+                     * @param kind The kind of the symbol.\n+                     * @param range The range of the symbol.\n+                     * @param selectionRange The selectionRange of the symbol.\n+                     * @param children Children of the symbol.\n+                     */\n+                    function create(name, detail, kind, range, selectionRange, children) {\n+                        var result = {\n+                            name: name,\n+                            detail: detail,\n+                            kind: kind,\n+                            range: range,\n+                            selectionRange: selectionRange\n+                        };\n+                        if (children !== undefined) {\n+                            result.children = children;\n+                        }\n+                        return result;\n+                    }\n+                    DocumentSymbol.create = create;\n+                    /**\n+                     * Checks whether the given literal conforms to the {@link DocumentSymbol} interface.\n+                     */\n+                    function is(value) {\n+                        var candidate = value;\n+                        return candidate && Is.string(candidate.name) && Is.number(candidate.kind) && Range.is(candidate.range) && Range.is(candidate.selectionRange) && (candidate.detail === undefined || Is.string(candidate.detail)) && (candidate.deprecated === undefined || Is.boolean(candidate.deprecated)) && (candidate.children === undefined || Array.isArray(candidate.children)) && (candidate.tags === undefined || Array.isArray(candidate.tags));\n+                    }\n+                    DocumentSymbol.is = is;\n+                })(DocumentSymbol || (exports.DocumentSymbol = DocumentSymbol = {}));\n+                /**\n+                 * A set of predefined code action kinds\n+                 */\n+                var CodeActionKind;\n+                (function(CodeActionKind) {\n+                    /**\n+                     * Empty kind.\n+                     */\n+                    CodeActionKind.Empty = '';\n+                    /**\n+                     * Base kind for quickfix actions: 'quickfix'\n+                     */\n+                    CodeActionKind.QuickFix = 'quickfix';\n+                    /**\n+                     * Base kind for refactoring actions: 'refactor'\n+                     */\n+                    CodeActionKind.Refactor = 'refactor';\n+                    /**\n+                     * Base kind for refactoring extraction actions: 'refactor.extract'\n+                     *\n+                     * Example extract actions:\n+                     *\n+                     * - Extract method\n+                     * - Extract function\n+                     * - Extract variable\n+                     * - Extract interface from class\n+                     * - ...\n+                     */\n+                    CodeActionKind.RefactorExtract = 'refactor.extract';\n+                    /**\n+                     * Base kind for refactoring inline actions: 'refactor.inline'\n+                     *\n+                     * Example inline actions:\n+                     *\n+                     * - Inline function\n+                     * - Inline variable\n+                     * - Inline constant\n+                     * - ...\n+                     */\n+                    CodeActionKind.RefactorInline = 'refactor.inline';\n+                    /**\n+                     * Base kind for refactoring rewrite actions: 'refactor.rewrite'\n+                     *\n+                     * Example rewrite actions:\n+                     *\n+                     * - Convert JavaScript function to class\n+                     * - Add or remove parameter\n+                     * - Encapsulate field\n+                     * - Make method static\n+                     * - Move method to base class\n+                     * - ...\n+                     */\n+                    CodeActionKind.RefactorRewrite = 'refactor.rewrite';\n+                    /**\n+                     * Base kind for source actions: `source`\n+                     *\n+                     * Source code actions apply to the entire file.\n+                     */\n+                    CodeActionKind.Source = 'source';\n+                    /**\n+                     * Base kind for an organize imports source action: `source.organizeImports`\n+                     */\n+                    CodeActionKind.SourceOrganizeImports = 'source.organizeImports';\n+                    /**\n+                     * Base kind for auto-fix source actions: `source.fixAll`.\n+                     *\n+                     * Fix all actions automatically fix errors that have a clear fix that do not require user input.\n+                     * They should not suppress errors or perform unsafe fixes such as generating new types or classes.\n+                     *\n+                     * @since 3.15.0\n+                     */\n+                    CodeActionKind.SourceFixAll = 'source.fixAll';\n+                })(CodeActionKind || (exports.CodeActionKind = CodeActionKind = {}));\n+                /**\n+                 * The reason why code actions were requested.\n+                 *\n+                 * @since 3.17.0\n+                 */\n+                var CodeActionTriggerKind;\n+                (function(CodeActionTriggerKind) {\n+                    /**\n+                     * Code actions were explicitly requested by the user or by an extension.\n+                     */\n+                    CodeActionTriggerKind.Invoked = 1;\n+                    /**\n+                     * Code actions were requested automatically.\n+                     *\n+                     * This typically happens when current selection in a file changes, but can\n+                     * also be triggered when file content changes.\n+                     */\n+                    CodeActionTriggerKind.Automatic = 2;\n+                })(CodeActionTriggerKind || (exports.CodeActionTriggerKind = CodeActionTriggerKind = {}));\n+                /**\n+                 * The CodeActionContext namespace provides helper functions to work with\n+                 * {@link CodeActionContext} literals.\n+                 */\n+                var CodeActionContext;\n+                (function(CodeActionContext) {\n+                    /**\n+                     * Creates a new CodeActionContext literal.\n+                     */\n+                    function create(diagnostics, only, triggerKind) {\n+                        var result = {\n+                            diagnostics: diagnostics\n+                        };\n+                        if (only !== undefined && only !== null) {\n+                            result.only = only;\n+                        }\n+                        if (triggerKind !== undefined && triggerKind !== null) {\n+                            result.triggerKind = triggerKind;\n+                        }\n+                        return result;\n+                    }\n+                    CodeActionContext.create = create;\n+                    /**\n+                     * Checks whether the given literal conforms to the {@link CodeActionContext} interface.\n+                     */\n+                    function is(value) {\n+                        var candidate = value;\n+                        return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === undefined || Is.typedArray(candidate.only, Is.string)) && (candidate.triggerKind === undefined || candidate.triggerKind === CodeActionTriggerKind.Invoked || candidate.triggerKind === CodeActionTriggerKind.Automatic);\n+                    }\n+                    CodeActionContext.is = is;\n+                })(CodeActionContext || (exports.CodeActionContext = CodeActionContext = {}));\n+                var CodeAction;\n+                (function(CodeAction) {\n+                    function create(title, kindOrCommandOrEdit, kind) {\n+                        var result = {\n+                            title: title\n+                        };\n+                        var checkKind = true;\n+                        if (typeof kindOrCommandOrEdit === 'string') {\n+                            checkKind = false;\n+                            result.kind = kindOrCommandOrEdit;\n+                        } else if (Command.is(kindOrCommandOrEdit)) {\n+                            result.command = kindOrCommandOrEdit;\n+                        } else {\n+                            result.edit = kindOrCommandOrEdit;\n+                        }\n+                        if (checkKind && kind !== undefined) {\n+                            result.kind = kind;\n+                        }\n+                        return result;\n+                    }\n+                    CodeAction.create = create;\n \n-                            function getKeyMap(val) {\n-                                return typeof val == \"string\" ? keyMap[val] : val;\n-                            }\n+                    function is(value) {\n+                        var candidate = value;\n+                        return candidate && Is.string(candidate.title) && (candidate.diagnostics === undefined || Is.typedArray(candidate.diagnostics, Diagnostic.is)) && (candidate.kind === undefined || Is.string(candidate.kind)) && (candidate.edit !== undefined || candidate.command !== undefined) && (candidate.command === undefined || Command.is(candidate.command)) && (candidate.isPreferred === undefined || Is.boolean(candidate.isPreferred)) && (candidate.edit === undefined || WorkspaceEdit.is(candidate.edit));\n+                    }\n+                    CodeAction.is = is;\n+                })(CodeAction || (exports.CodeAction = CodeAction = {}));\n+                /**\n+                 * The CodeLens namespace provides helper functions to work with\n+                 * {@link CodeLens} literals.\n+                 */\n+                var CodeLens;\n+                (function(CodeLens) {\n+                    /**\n+                     * Creates a new CodeLens literal.\n+                     */\n+                    function create(range, data) {\n+                        var result = {\n+                            range: range\n+                        };\n+                        if (Is.defined(data)) {\n+                            result.data = data;\n+                        }\n+                        return result;\n+                    }\n+                    CodeLens.create = create;\n+                    /**\n+                     * Checks whether the given literal conforms to the {@link CodeLens} interface.\n+                     */\n+                    function is(value) {\n+                        var candidate = value;\n+                        return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));\n+                    }\n+                    CodeLens.is = is;\n+                })(CodeLens || (exports.CodeLens = CodeLens = {}));\n+                /**\n+                 * The FormattingOptions namespace provides helper functions to work with\n+                 * {@link FormattingOptions} literals.\n+                 */\n+                var FormattingOptions;\n+                (function(FormattingOptions) {\n+                    /**\n+                     * Creates a new FormattingOptions literal.\n+                     */\n+                    function create(tabSize, insertSpaces) {\n+                        return {\n+                            tabSize: tabSize,\n+                            insertSpaces: insertSpaces\n+                        };\n+                    }\n+                    FormattingOptions.create = create;\n+                    /**\n+                     * Checks whether the given literal conforms to the {@link FormattingOptions} interface.\n+                     */\n+                    function is(value) {\n+                        var candidate = value;\n+                        return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\n+                    }\n+                    FormattingOptions.is = is;\n+                })(FormattingOptions || (exports.FormattingOptions = FormattingOptions = {}));\n+                /**\n+                 * The DocumentLink namespace provides helper functions to work with\n+                 * {@link DocumentLink} literals.\n+                 */\n+                var DocumentLink;\n+                (function(DocumentLink) {\n+                    /**\n+                     * Creates a new DocumentLink literal.\n+                     */\n+                    function create(range, target, data) {\n+                        return {\n+                            range: range,\n+                            target: target,\n+                            data: data\n+                        };\n+                    }\n+                    DocumentLink.create = create;\n+                    /**\n+                     * Checks whether the given literal conforms to the {@link DocumentLink} interface.\n+                     */\n+                    function is(value) {\n+                        var candidate = value;\n+                        return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));\n+                    }\n+                    DocumentLink.is = is;\n+                })(DocumentLink || (exports.DocumentLink = DocumentLink = {}));\n+                /**\n+                 * The SelectionRange namespace provides helper function to work with\n+                 * SelectionRange literals.\n+                 */\n+                var SelectionRange;\n+                (function(SelectionRange) {\n+                    /**\n+                     * Creates a new SelectionRange\n+                     * @param range the range.\n+                     * @param parent an optional parent.\n+                     */\n+                    function create(range, parent) {\n+                        return {\n+                            range: range,\n+                            parent: parent\n+                        };\n+                    }\n+                    SelectionRange.create = create;\n \n-                            function deleteNearSelection(cm, compute) {\n-                                var ranges = cm.doc.sel.ranges,\n-                                    kill = [];\n-                                for (var i2 = 0; i2 < ranges.length; i2++) {\n-                                    var toKill = compute(ranges[i2]);\n-                                    while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n-                                        var replaced = kill.pop();\n-                                        if (cmp(replaced.from, toKill.from) < 0) {\n-                                            toKill.from = replaced.from;\n-                                            break;\n-                                        }\n-                                    }\n-                                    kill.push(toKill);\n-                                }\n-                                runInOp(cm, function() {\n-                                    for (var i3 = kill.length - 1; i3 >= 0; i3--) {\n-                                        replaceRange(cm.doc, \"\", kill[i3].from, kill[i3].to, \"+delete\");\n-                                    }\n-                                    ensureCursorVisible(cm);\n-                                });\n-                            }\n+                    function is(value) {\n+                        var candidate = value;\n+                        return Is.objectLiteral(candidate) && Range.is(candidate.range) && (candidate.parent === undefined || SelectionRange.is(candidate.parent));\n+                    }\n+                    SelectionRange.is = is;\n+                })(SelectionRange || (exports.SelectionRange = SelectionRange = {}));\n+                /**\n+                 * A set of predefined token types. This set is not fixed\n+                 * an clients can specify additional token types via the\n+                 * corresponding client capabilities.\n+                 *\n+                 * @since 3.16.0\n+                 */\n+                var SemanticTokenTypes;\n+                (function(SemanticTokenTypes) {\n+                    SemanticTokenTypes[\"namespace\"] = \"namespace\";\n+                    /**\n+                     * Represents a generic type. Acts as a fallback for types which can't be mapped to\n+                     * a specific type like class or enum.\n+                     */\n+                    SemanticTokenTypes[\"type\"] = \"type\";\n+                    SemanticTokenTypes[\"class\"] = \"class\";\n+                    SemanticTokenTypes[\"enum\"] = \"enum\";\n+                    SemanticTokenTypes[\"interface\"] = \"interface\";\n+                    SemanticTokenTypes[\"struct\"] = \"struct\";\n+                    SemanticTokenTypes[\"typeParameter\"] = \"typeParameter\";\n+                    SemanticTokenTypes[\"parameter\"] = \"parameter\";\n+                    SemanticTokenTypes[\"variable\"] = \"variable\";\n+                    SemanticTokenTypes[\"property\"] = \"property\";\n+                    SemanticTokenTypes[\"enumMember\"] = \"enumMember\";\n+                    SemanticTokenTypes[\"event\"] = \"event\";\n+                    SemanticTokenTypes[\"function\"] = \"function\";\n+                    SemanticTokenTypes[\"method\"] = \"method\";\n+                    SemanticTokenTypes[\"macro\"] = \"macro\";\n+                    SemanticTokenTypes[\"keyword\"] = \"keyword\";\n+                    SemanticTokenTypes[\"modifier\"] = \"modifier\";\n+                    SemanticTokenTypes[\"comment\"] = \"comment\";\n+                    SemanticTokenTypes[\"string\"] = \"string\";\n+                    SemanticTokenTypes[\"number\"] = \"number\";\n+                    SemanticTokenTypes[\"regexp\"] = \"regexp\";\n+                    SemanticTokenTypes[\"operator\"] = \"operator\";\n+                    /**\n+                     * @since 3.17.0\n+                     */\n+                    SemanticTokenTypes[\"decorator\"] = \"decorator\";\n+                })(SemanticTokenTypes || (exports.SemanticTokenTypes = SemanticTokenTypes = {}));\n+                /**\n+                 * A set of predefined token modifiers. This set is not fixed\n+                 * an clients can specify additional token types via the\n+                 * corresponding client capabilities.\n+                 *\n+                 * @since 3.16.0\n+                 */\n+                var SemanticTokenModifiers;\n+                (function(SemanticTokenModifiers) {\n+                    SemanticTokenModifiers[\"declaration\"] = \"declaration\";\n+                    SemanticTokenModifiers[\"definition\"] = \"definition\";\n+                    SemanticTokenModifiers[\"readonly\"] = \"readonly\";\n+                    SemanticTokenModifiers[\"static\"] = \"static\";\n+                    SemanticTokenModifiers[\"deprecated\"] = \"deprecated\";\n+                    SemanticTokenModifiers[\"abstract\"] = \"abstract\";\n+                    SemanticTokenModifiers[\"async\"] = \"async\";\n+                    SemanticTokenModifiers[\"modification\"] = \"modification\";\n+                    SemanticTokenModifiers[\"documentation\"] = \"documentation\";\n+                    SemanticTokenModifiers[\"defaultLibrary\"] = \"defaultLibrary\";\n+                })(SemanticTokenModifiers || (exports.SemanticTokenModifiers = SemanticTokenModifiers = {}));\n+                /**\n+                 * @since 3.16.0\n+                 */\n+                var SemanticTokens;\n+                (function(SemanticTokens) {\n+                    function is(value) {\n+                        var candidate = value;\n+                        return Is.objectLiteral(candidate) && (candidate.resultId === undefined || typeof candidate.resultId === 'string') && Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === 'number');\n+                    }\n+                    SemanticTokens.is = is;\n+                })(SemanticTokens || (exports.SemanticTokens = SemanticTokens = {}));\n+                /**\n+                 * The InlineValueText namespace provides functions to deal with InlineValueTexts.\n+                 *\n+                 * @since 3.17.0\n+                 */\n+                var InlineValueText;\n+                (function(InlineValueText) {\n+                    /**\n+                     * Creates a new InlineValueText literal.\n+                     */\n+                    function create(range, text) {\n+                        return {\n+                            range: range,\n+                            text: text\n+                        };\n+                    }\n+                    InlineValueText.create = create;\n \n-                            function moveCharLogically(line, ch, dir) {\n-                                var target = skipExtendingChars(line.text, ch + dir, dir);\n-                                return target < 0 || target > line.text.length ? null : target;\n-                            }\n-\n-                            function moveLogically(line, start, dir) {\n-                                var ch = moveCharLogically(line, start.ch, dir);\n-                                return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\");\n-                            }\n-\n-                            function endOfLine(visually, cm, lineObj, lineNo2, dir) {\n-                                if (visually) {\n-                                    if (cm.doc.direction == \"rtl\") {\n-                                        dir = -dir;\n-                                    }\n-                                    var order = getOrder(lineObj, cm.doc.direction);\n-                                    if (order) {\n-                                        var part = dir < 0 ? lst(order) : order[0];\n-                                        var moveInStorageOrder = dir < 0 == (part.level == 1);\n-                                        var sticky = moveInStorageOrder ? \"after\" : \"before\";\n-                                        var ch;\n-                                        if (part.level > 0 || cm.doc.direction == \"rtl\") {\n-                                            var prep = prepareMeasureForLine(cm, lineObj);\n-                                            ch = dir < 0 ? lineObj.text.length - 1 : 0;\n-                                            var targetTop = measureCharPrepared(cm, prep, ch).top;\n-                                            ch = findFirst(function(ch2) {\n-                                                return measureCharPrepared(cm, prep, ch2).top == targetTop;\n-                                            }, dir < 0 == (part.level == 1) ? part.from : part.to - 1, ch);\n-                                            if (sticky == \"before\") {\n-                                                ch = moveCharLogically(lineObj, ch, 1);\n-                                            }\n-                                        } else {\n-                                            ch = dir < 0 ? part.to : part.from;\n-                                        }\n-                                        return new Pos(lineNo2, ch, sticky);\n-                                    }\n-                                }\n-                                return new Pos(lineNo2, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\");\n-                            }\n+                    function is(value) {\n+                        var candidate = value;\n+                        return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.string(candidate.text);\n+                    }\n+                    InlineValueText.is = is;\n+                })(InlineValueText || (exports.InlineValueText = InlineValueText = {}));\n+                /**\n+                 * The InlineValueVariableLookup namespace provides functions to deal with InlineValueVariableLookups.\n+                 *\n+                 * @since 3.17.0\n+                 */\n+                var InlineValueVariableLookup;\n+                (function(InlineValueVariableLookup) {\n+                    /**\n+                     * Creates a new InlineValueText literal.\n+                     */\n+                    function create(range, variableName, caseSensitiveLookup) {\n+                        return {\n+                            range: range,\n+                            variableName: variableName,\n+                            caseSensitiveLookup: caseSensitiveLookup\n+                        };\n+                    }\n+                    InlineValueVariableLookup.create = create;\n \n-                            function moveVisually(cm, line, start, dir) {\n-                                var bidi = getOrder(line, cm.doc.direction);\n-                                if (!bidi) {\n-                                    return moveLogically(line, start, dir);\n-                                }\n-                                if (start.ch >= line.text.length) {\n-                                    start.ch = line.text.length;\n-                                    start.sticky = \"before\";\n-                                } else if (start.ch <= 0) {\n-                                    start.ch = 0;\n-                                    start.sticky = \"after\";\n-                                }\n-                                var partPos = getBidiPartAt(bidi, start.ch, start.sticky),\n-                                    part = bidi[partPos];\n-                                if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n-                                    return moveLogically(line, start, dir);\n-                                }\n-                                var mv = function(pos, dir2) {\n-                                    return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir2);\n-                                };\n-                                var prep;\n-                                var getWrappedLineExtent = function(ch2) {\n-                                    if (!cm.options.lineWrapping) {\n-                                        return {\n-                                            begin: 0,\n-                                            end: line.text.length\n-                                        };\n-                                    }\n-                                    prep = prep || prepareMeasureForLine(cm, line);\n-                                    return wrappedLineExtentChar(cm, line, prep, ch2);\n-                                };\n-                                var wrappedLineExtent2 = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n-                                if (cm.doc.direction == \"rtl\" || part.level == 1) {\n-                                    var moveInStorageOrder = part.level == 1 == dir < 0;\n-                                    var ch = mv(start, moveInStorageOrder ? 1 : -1);\n-                                    if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent2.begin : ch <= part.to && ch <= wrappedLineExtent2.end)) {\n-                                        var sticky = moveInStorageOrder ? \"before\" : \"after\";\n-                                        return new Pos(start.line, ch, sticky);\n-                                    }\n-                                }\n-                                var searchInVisualLine = function(partPos2, dir2, wrappedLineExtent3) {\n-                                    var getRes = function(ch3, moveInStorageOrder3) {\n-                                        return moveInStorageOrder3 ? new Pos(start.line, mv(ch3, 1), \"before\") : new Pos(start.line, ch3, \"after\");\n-                                    };\n-                                    for (; partPos2 >= 0 && partPos2 < bidi.length; partPos2 += dir2) {\n-                                        var part2 = bidi[partPos2];\n-                                        var moveInStorageOrder2 = dir2 > 0 == (part2.level != 1);\n-                                        var ch2 = moveInStorageOrder2 ? wrappedLineExtent3.begin : mv(wrappedLineExtent3.end, -1);\n-                                        if (part2.from <= ch2 && ch2 < part2.to) {\n-                                            return getRes(ch2, moveInStorageOrder2);\n-                                        }\n-                                        ch2 = moveInStorageOrder2 ? part2.from : mv(part2.to, -1);\n-                                        if (wrappedLineExtent3.begin <= ch2 && ch2 < wrappedLineExtent3.end) {\n-                                            return getRes(ch2, moveInStorageOrder2);\n-                                        }\n-                                    }\n-                                };\n-                                var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent2);\n-                                if (res) {\n-                                    return res;\n-                                }\n-                                var nextCh = dir > 0 ? wrappedLineExtent2.end : mv(wrappedLineExtent2.begin, -1);\n-                                if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n-                                    res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n-                                    if (res) {\n-                                        return res;\n-                                    }\n-                                }\n-                                return null;\n-                            }\n-                            var commands = {\n-                                selectAll,\n-                                singleSelection: function(cm) {\n-                                    return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll);\n-                                },\n-                                killLine: function(cm) {\n-                                    return deleteNearSelection(cm, function(range2) {\n-                                        if (range2.empty()) {\n-                                            var len = getLine(cm.doc, range2.head.line).text.length;\n-                                            if (range2.head.ch == len && range2.head.line < cm.lastLine()) {\n-                                                return {\n-                                                    from: range2.head,\n-                                                    to: Pos(range2.head.line + 1, 0)\n-                                                };\n-                                            } else {\n-                                                return {\n-                                                    from: range2.head,\n-                                                    to: Pos(range2.head.line, len)\n-                                                };\n-                                            }\n-                                        } else {\n-                                            return {\n-                                                from: range2.from(),\n-                                                to: range2.to()\n-                                            };\n-                                        }\n-                                    });\n-                                },\n-                                deleteLine: function(cm) {\n-                                    return deleteNearSelection(cm, function(range2) {\n-                                        return {\n-                                            from: Pos(range2.from().line, 0),\n-                                            to: clipPos(cm.doc, Pos(range2.to().line + 1, 0))\n-                                        };\n-                                    });\n-                                },\n-                                delLineLeft: function(cm) {\n-                                    return deleteNearSelection(cm, function(range2) {\n-                                        return {\n-                                            from: Pos(range2.from().line, 0),\n-                                            to: range2.from()\n-                                        };\n-                                    });\n-                                },\n-                                delWrappedLineLeft: function(cm) {\n-                                    return deleteNearSelection(cm, function(range2) {\n-                                        var top = cm.charCoords(range2.head, \"div\").top + 5;\n-                                        var leftPos = cm.coordsChar({\n-                                            left: 0,\n-                                            top\n-                                        }, \"div\");\n-                                        return {\n-                                            from: leftPos,\n-                                            to: range2.from()\n-                                        };\n-                                    });\n-                                },\n-                                delWrappedLineRight: function(cm) {\n-                                    return deleteNearSelection(cm, function(range2) {\n-                                        var top = cm.charCoords(range2.head, \"div\").top + 5;\n-                                        var rightPos = cm.coordsChar({\n-                                            left: cm.display.lineDiv.offsetWidth + 100,\n-                                            top\n-                                        }, \"div\");\n-                                        return {\n-                                            from: range2.from(),\n-                                            to: rightPos\n-                                        };\n-                                    });\n-                                },\n-                                undo: function(cm) {\n-                                    return cm.undo();\n-                                },\n-                                redo: function(cm) {\n-                                    return cm.redo();\n-                                },\n-                                undoSelection: function(cm) {\n-                                    return cm.undoSelection();\n-                                },\n-                                redoSelection: function(cm) {\n-                                    return cm.redoSelection();\n-                                },\n-                                goDocStart: function(cm) {\n-                                    return cm.extendSelection(Pos(cm.firstLine(), 0));\n-                                },\n-                                goDocEnd: function(cm) {\n-                                    return cm.extendSelection(Pos(cm.lastLine()));\n-                                },\n-                                goLineStart: function(cm) {\n-                                    return cm.extendSelectionsBy(function(range2) {\n-                                        return lineStart(cm, range2.head.line);\n-                                    }, {\n-                                        origin: \"+move\",\n-                                        bias: 1\n-                                    });\n-                                },\n-                                goLineStartSmart: function(cm) {\n-                                    return cm.extendSelectionsBy(function(range2) {\n-                                        return lineStartSmart(cm, range2.head);\n-                                    }, {\n-                                        origin: \"+move\",\n-                                        bias: 1\n-                                    });\n-                                },\n-                                goLineEnd: function(cm) {\n-                                    return cm.extendSelectionsBy(function(range2) {\n-                                        return lineEnd(cm, range2.head.line);\n-                                    }, {\n-                                        origin: \"+move\",\n-                                        bias: -1\n-                                    });\n-                                },\n-                                goLineRight: function(cm) {\n-                                    return cm.extendSelectionsBy(function(range2) {\n-                                        var top = cm.cursorCoords(range2.head, \"div\").top + 5;\n-                                        return cm.coordsChar({\n-                                            left: cm.display.lineDiv.offsetWidth + 100,\n-                                            top\n-                                        }, \"div\");\n-                                    }, sel_move);\n-                                },\n-                                goLineLeft: function(cm) {\n-                                    return cm.extendSelectionsBy(function(range2) {\n-                                        var top = cm.cursorCoords(range2.head, \"div\").top + 5;\n-                                        return cm.coordsChar({\n-                                            left: 0,\n-                                            top\n-                                        }, \"div\");\n-                                    }, sel_move);\n-                                },\n-                                goLineLeftSmart: function(cm) {\n-                                    return cm.extendSelectionsBy(function(range2) {\n-                                        var top = cm.cursorCoords(range2.head, \"div\").top + 5;\n-                                        var pos = cm.coordsChar({\n-                                            left: 0,\n-                                            top\n-                                        }, \"div\");\n-                                        if (pos.ch < cm.getLine(pos.line).search(/\\S/)) {\n-                                            return lineStartSmart(cm, range2.head);\n-                                        }\n-                                        return pos;\n-                                    }, sel_move);\n-                                },\n-                                goLineUp: function(cm) {\n-                                    return cm.moveV(-1, \"line\");\n-                                },\n-                                goLineDown: function(cm) {\n-                                    return cm.moveV(1, \"line\");\n-                                },\n-                                goPageUp: function(cm) {\n-                                    return cm.moveV(-1, \"page\");\n-                                },\n-                                goPageDown: function(cm) {\n-                                    return cm.moveV(1, \"page\");\n-                                },\n-                                goCharLeft: function(cm) {\n-                                    return cm.moveH(-1, \"char\");\n-                                },\n-                                goCharRight: function(cm) {\n-                                    return cm.moveH(1, \"char\");\n-                                },\n-                                goColumnLeft: function(cm) {\n-                                    return cm.moveH(-1, \"column\");\n-                                },\n-                                goColumnRight: function(cm) {\n-                                    return cm.moveH(1, \"column\");\n-                                },\n-                                goWordLeft: function(cm) {\n-                                    return cm.moveH(-1, \"word\");\n-                                },\n-                                goGroupRight: function(cm) {\n-                                    return cm.moveH(1, \"group\");\n-                                },\n-                                goGroupLeft: function(cm) {\n-                                    return cm.moveH(-1, \"group\");\n-                                },\n-                                goWordRight: function(cm) {\n-                                    return cm.moveH(1, \"word\");\n-                                },\n-                                delCharBefore: function(cm) {\n-                                    return cm.deleteH(-1, \"codepoint\");\n-                                },\n-                                delCharAfter: function(cm) {\n-                                    return cm.deleteH(1, \"char\");\n-                                },\n-                                delWordBefore: function(cm) {\n-                                    return cm.deleteH(-1, \"word\");\n-                                },\n-                                delWordAfter: function(cm) {\n-                                    return cm.deleteH(1, \"word\");\n-                                },\n-                                delGroupBefore: function(cm) {\n-                                    return cm.deleteH(-1, \"group\");\n-                                },\n-                                delGroupAfter: function(cm) {\n-                                    return cm.deleteH(1, \"group\");\n-                                },\n-                                indentAuto: function(cm) {\n-                                    return cm.indentSelection(\"smart\");\n-                                },\n-                                indentMore: function(cm) {\n-                                    return cm.indentSelection(\"add\");\n-                                },\n-                                indentLess: function(cm) {\n-                                    return cm.indentSelection(\"subtract\");\n-                                },\n-                                insertTab: function(cm) {\n-                                    return cm.replaceSelection(\"\t\");\n-                                },\n-                                insertSoftTab: function(cm) {\n-                                    var spaces = [],\n-                                        ranges = cm.listSelections(),\n-                                        tabSize = cm.options.tabSize;\n-                                    for (var i2 = 0; i2 < ranges.length; i2++) {\n-                                        var pos = ranges[i2].from();\n-                                        var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n-                                        spaces.push(spaceStr(tabSize - col % tabSize));\n-                                    }\n-                                    cm.replaceSelections(spaces);\n-                                },\n-                                defaultTab: function(cm) {\n-                                    if (cm.somethingSelected()) {\n-                                        cm.indentSelection(\"add\");\n-                                    } else {\n-                                        cm.execCommand(\"insertTab\");\n-                                    }\n-                                },\n-                                // Swap the two chars left and right of each selection's head.\n-                                // Move cursor behind the two swapped characters afterwards.\n-                                //\n-                                // Doesn't consider line feeds a character.\n-                                // Doesn't scan more than one line above to find a character.\n-                                // Doesn't do anything on an empty line.\n-                                // Doesn't do anything with non-empty selections.\n-                                transposeChars: function(cm) {\n-                                    return runInOp(cm, function() {\n-                                        var ranges = cm.listSelections(),\n-                                            newSel = [];\n-                                        for (var i2 = 0; i2 < ranges.length; i2++) {\n-                                            if (!ranges[i2].empty()) {\n-                                                continue;\n-                                            }\n-                                            var cur = ranges[i2].head,\n-                                                line = getLine(cm.doc, cur.line).text;\n-                                            if (line) {\n-                                                if (cur.ch == line.length) {\n-                                                    cur = new Pos(cur.line, cur.ch - 1);\n-                                                }\n-                                                if (cur.ch > 0) {\n-                                                    cur = new Pos(cur.line, cur.ch + 1);\n-                                                    cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n-                                                } else if (cur.line > cm.doc.first) {\n-                                                    var prev = getLine(cm.doc, cur.line - 1).text;\n-                                                    if (prev) {\n-                                                        cur = new Pos(cur.line, 1);\n-                                                        cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + prev.charAt(prev.length - 1), Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n-                                                    }\n-                                                }\n-                                            }\n-                                            newSel.push(new Range(cur, cur));\n-                                        }\n-                                        cm.setSelections(newSel);\n-                                    });\n-                                },\n-                                newlineAndIndent: function(cm) {\n-                                    return runInOp(cm, function() {\n-                                        var sels = cm.listSelections();\n-                                        for (var i2 = sels.length - 1; i2 >= 0; i2--) {\n-                                            cm.replaceRange(cm.doc.lineSeparator(), sels[i2].anchor, sels[i2].head, \"+input\");\n-                                        }\n-                                        sels = cm.listSelections();\n-                                        for (var i$12 = 0; i$12 < sels.length; i$12++) {\n-                                            cm.indentLine(sels[i$12].from().line, null, true);\n-                                        }\n-                                        ensureCursorVisible(cm);\n-                                    });\n-                                },\n-                                openLine: function(cm) {\n-                                    return cm.replaceSelection(\"\\n\", \"start\");\n-                                },\n-                                toggleOverwrite: function(cm) {\n-                                    return cm.toggleOverwrite();\n-                                }\n-                            };\n+                    function is(value) {\n+                        var candidate = value;\n+                        return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.boolean(candidate.caseSensitiveLookup) && (Is.string(candidate.variableName) || candidate.variableName === undefined);\n+                    }\n+                    InlineValueVariableLookup.is = is;\n+                })(InlineValueVariableLookup || (exports.InlineValueVariableLookup = InlineValueVariableLookup = {}));\n+                /**\n+                 * The InlineValueEvaluatableExpression namespace provides functions to deal with InlineValueEvaluatableExpression.\n+                 *\n+                 * @since 3.17.0\n+                 */\n+                var InlineValueEvaluatableExpression;\n+                (function(InlineValueEvaluatableExpression) {\n+                    /**\n+                     * Creates a new InlineValueEvaluatableExpression literal.\n+                     */\n+                    function create(range, expression) {\n+                        return {\n+                            range: range,\n+                            expression: expression\n+                        };\n+                    }\n+                    InlineValueEvaluatableExpression.create = create;\n \n-                            function lineStart(cm, lineN) {\n-                                var line = getLine(cm.doc, lineN);\n-                                var visual = visualLine(line);\n-                                if (visual != line) {\n-                                    lineN = lineNo(visual);\n-                                }\n-                                return endOfLine(true, cm, visual, lineN, 1);\n-                            }\n+                    function is(value) {\n+                        var candidate = value;\n+                        return candidate !== undefined && candidate !== null && Range.is(candidate.range) && (Is.string(candidate.expression) || candidate.expression === undefined);\n+                    }\n+                    InlineValueEvaluatableExpression.is = is;\n+                })(InlineValueEvaluatableExpression || (exports.InlineValueEvaluatableExpression = InlineValueEvaluatableExpression = {}));\n+                /**\n+                 * The InlineValueContext namespace provides helper functions to work with\n+                 * {@link InlineValueContext} literals.\n+                 *\n+                 * @since 3.17.0\n+                 */\n+                var InlineValueContext;\n+                (function(InlineValueContext) {\n+                    /**\n+                     * Creates a new InlineValueContext literal.\n+                     */\n+                    function create(frameId, stoppedLocation) {\n+                        return {\n+                            frameId: frameId,\n+                            stoppedLocation: stoppedLocation\n+                        };\n+                    }\n+                    InlineValueContext.create = create;\n+                    /**\n+                     * Checks whether the given literal conforms to the {@link InlineValueContext} interface.\n+                     */\n+                    function is(value) {\n+                        var candidate = value;\n+                        return Is.defined(candidate) && Range.is(value.stoppedLocation);\n+                    }\n+                    InlineValueContext.is = is;\n+                })(InlineValueContext || (exports.InlineValueContext = InlineValueContext = {}));\n+                /**\n+                 * Inlay hint kinds.\n+                 *\n+                 * @since 3.17.0\n+                 */\n+                var InlayHintKind;\n+                (function(InlayHintKind) {\n+                    /**\n+                     * An inlay hint that for a type annotation.\n+                     */\n+                    InlayHintKind.Type = 1;\n+                    /**\n+                     * An inlay hint that is for a parameter.\n+                     */\n+                    InlayHintKind.Parameter = 2;\n \n-                            function lineEnd(cm, lineN) {\n-                                var line = getLine(cm.doc, lineN);\n-                                var visual = visualLineEnd(line);\n-                                if (visual != line) {\n-                                    lineN = lineNo(visual);\n-                                }\n-                                return endOfLine(true, cm, line, lineN, -1);\n-                            }\n+                    function is(value) {\n+                        return value === 1 || value === 2;\n+                    }\n+                    InlayHintKind.is = is;\n+                })(InlayHintKind || (exports.InlayHintKind = InlayHintKind = {}));\n+                var InlayHintLabelPart;\n+                (function(InlayHintLabelPart) {\n+                    function create(value) {\n+                        return {\n+                            value: value\n+                        };\n+                    }\n+                    InlayHintLabelPart.create = create;\n \n-                            function lineStartSmart(cm, pos) {\n-                                var start = lineStart(cm, pos.line);\n-                                var line = getLine(cm.doc, start.line);\n-                                var order = getOrder(line, cm.doc.direction);\n-                                if (!order || order[0].level == 0) {\n-                                    var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n-                                    var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n-                                    return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky);\n-                                }\n-                                return start;\n-                            }\n+                    function is(value) {\n+                        var candidate = value;\n+                        return Is.objectLiteral(candidate) && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) && (candidate.location === undefined || Location.is(candidate.location)) && (candidate.command === undefined || Command.is(candidate.command));\n+                    }\n+                    InlayHintLabelPart.is = is;\n+                })(InlayHintLabelPart || (exports.InlayHintLabelPart = InlayHintLabelPart = {}));\n+                var InlayHint;\n+                (function(InlayHint) {\n+                    function create(position, label, kind) {\n+                        var result = {\n+                            position: position,\n+                            label: label\n+                        };\n+                        if (kind !== undefined) {\n+                            result.kind = kind;\n+                        }\n+                        return result;\n+                    }\n+                    InlayHint.create = create;\n \n-                            function doHandleBinding(cm, bound, dropShift) {\n-                                if (typeof bound == \"string\") {\n-                                    bound = commands[bound];\n-                                    if (!bound) {\n-                                        return false;\n-                                    }\n-                                }\n-                                cm.display.input.ensurePolled();\n-                                var prevShift = cm.display.shift,\n-                                    done = false;\n-                                try {\n-                                    if (cm.isReadOnly()) {\n-                                        cm.state.suppressEdits = true;\n-                                    }\n-                                    if (dropShift) {\n-                                        cm.display.shift = false;\n-                                    }\n-                                    done = bound(cm) != Pass;\n-                                } finally {\n-                                    cm.display.shift = prevShift;\n-                                    cm.state.suppressEdits = false;\n-                                }\n-                                return done;\n-                            }\n+                    function is(value) {\n+                        var candidate = value;\n+                        return Is.objectLiteral(candidate) && Position.is(candidate.position) && (Is.string(candidate.label) || Is.typedArray(candidate.label, InlayHintLabelPart.is)) && (candidate.kind === undefined || InlayHintKind.is(candidate.kind)) && candidate.textEdits === undefined || Is.typedArray(candidate.textEdits, TextEdit.is) && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) && (candidate.paddingLeft === undefined || Is.boolean(candidate.paddingLeft)) && (candidate.paddingRight === undefined || Is.boolean(candidate.paddingRight));\n+                    }\n+                    InlayHint.is = is;\n+                })(InlayHint || (exports.InlayHint = InlayHint = {}));\n+                var WorkspaceFolder;\n+                (function(WorkspaceFolder) {\n+                    function is(value) {\n+                        var candidate = value;\n+                        return Is.objectLiteral(candidate) && URI.is(candidate.uri) && Is.string(candidate.name);\n+                    }\n+                    WorkspaceFolder.is = is;\n+                })(WorkspaceFolder || (exports.WorkspaceFolder = WorkspaceFolder = {}));\n+                var EOL = exports.EOL = ['\\n', '\\r\\n', '\\r'];\n+                /**\n+                 * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n+                 */\n+                var TextDocument;\n+                (function(TextDocument) {\n+                    /**\n+                     * Creates a new ITextDocument literal from the given uri and content.\n+                     * @param uri The document's uri.\n+                     * @param languageId The document's language Id.\n+                     * @param version The document's version.\n+                     * @param content The document's content.\n+                     */\n+                    function create(uri, languageId, version, content) {\n+                        return new FullTextDocument(uri, languageId, version, content);\n+                    }\n+                    TextDocument.create = create;\n+                    /**\n+                     * Checks whether the given literal conforms to the {@link ITextDocument} interface.\n+                     */\n+                    function is(value) {\n+                        var candidate = value;\n+                        return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount) && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\n+                    }\n+                    TextDocument.is = is;\n \n-                            function lookupKeyForEditor(cm, name, handle) {\n-                                for (var i2 = 0; i2 < cm.state.keyMaps.length; i2++) {\n-                                    var result = lookupKey(name, cm.state.keyMaps[i2], handle, cm);\n-                                    if (result) {\n-                                        return result;\n-                                    }\n-                                }\n-                                return cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm) || lookupKey(name, cm.options.keyMap, handle, cm);\n+                    function applyEdits(document, edits) {\n+                        var text = document.getText();\n+                        var sortedEdits = mergeSort(edits, function(a, b) {\n+                            var diff = a.range.start.line - b.range.start.line;\n+                            if (diff === 0) {\n+                                return a.range.start.character - b.range.start.character;\n                             }\n-                            var stopSeq = new Delayed();\n-\n-                            function dispatchKey(cm, name, e, handle) {\n-                                var seq = cm.state.keySeq;\n-                                if (seq) {\n-                                    if (isModifierKey(name)) {\n-                                        return \"handled\";\n-                                    }\n-                                    if (/\\'$/.test(name)) {\n-                                        cm.state.keySeq = null;\n-                                    } else {\n-                                        stopSeq.set(50, function() {\n-                                            if (cm.state.keySeq == seq) {\n-                                                cm.state.keySeq = null;\n-                                                cm.display.input.reset();\n-                                            }\n-                                        });\n-                                    }\n-                                    if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) {\n-                                        return true;\n-                                    }\n-                                }\n-                                return dispatchKeyInner(cm, name, e, handle);\n+                            return diff;\n+                        });\n+                        var lastModifiedOffset = text.length;\n+                        for (var i = sortedEdits.length - 1; i >= 0; i--) {\n+                            var e = sortedEdits[i];\n+                            var startOffset = document.offsetAt(e.range.start);\n+                            var endOffset = document.offsetAt(e.range.end);\n+                            if (endOffset <= lastModifiedOffset) {\n+                                text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);\n+                            } else {\n+                                throw new Error('Overlapping edit');\n                             }\n+                            lastModifiedOffset = startOffset;\n+                        }\n+                        return text;\n+                    }\n+                    TextDocument.applyEdits = applyEdits;\n \n-                            function dispatchKeyInner(cm, name, e, handle) {\n-                                var result = lookupKeyForEditor(cm, name, handle);\n-                                if (result == \"multi\") {\n-                                    cm.state.keySeq = name;\n-                                }\n-                                if (result == \"handled\") {\n-                                    signalLater(cm, \"keyHandled\", cm, name, e);\n-                                }\n-                                if (result == \"handled\" || result == \"multi\") {\n-                                    e_preventDefault(e);\n-                                    restartBlink(cm);\n-                                }\n-                                return !!result;\n+                    function mergeSort(data, compare) {\n+                        if (data.length <= 1) {\n+                            // sorted\n+                            return data;\n+                        }\n+                        var p = data.length / 2 | 0;\n+                        var left = data.slice(0, p);\n+                        var right = data.slice(p);\n+                        mergeSort(left, compare);\n+                        mergeSort(right, compare);\n+                        var leftIdx = 0;\n+                        var rightIdx = 0;\n+                        var i = 0;\n+                        while (leftIdx < left.length && rightIdx < right.length) {\n+                            var ret = compare(left[leftIdx], right[rightIdx]);\n+                            if (ret <= 0) {\n+                                // smaller_equal -> take left to preserve order\n+                                data[i++] = left[leftIdx++];\n+                            } else {\n+                                // greater -> take right\n+                                data[i++] = right[rightIdx++];\n                             }\n-\n-                            function handleKeyBinding(cm, e) {\n-                                var name = keyName(e, true);\n-                                if (!name) {\n-                                    return false;\n+                        }\n+                        while (leftIdx < left.length) {\n+                            data[i++] = left[leftIdx++];\n+                        }\n+                        while (rightIdx < right.length) {\n+                            data[i++] = right[rightIdx++];\n+                        }\n+                        return data;\n+                    }\n+                })(TextDocument || (exports.TextDocument = TextDocument = {}));\n+                /**\n+                 * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n+                 */\n+                var FullTextDocument = /** @class */ function() {\n+                    function FullTextDocument(uri, languageId, version, content) {\n+                        this._uri = uri;\n+                        this._languageId = languageId;\n+                        this._version = version;\n+                        this._content = content;\n+                        this._lineOffsets = undefined;\n+                    }\n+                    Object.defineProperty(FullTextDocument.prototype, \"uri\", {\n+                        get: function() {\n+                            return this._uri;\n+                        },\n+                        enumerable: false,\n+                        configurable: true\n+                    });\n+                    Object.defineProperty(FullTextDocument.prototype, \"languageId\", {\n+                        get: function() {\n+                            return this._languageId;\n+                        },\n+                        enumerable: false,\n+                        configurable: true\n+                    });\n+                    Object.defineProperty(FullTextDocument.prototype, \"version\", {\n+                        get: function() {\n+                            return this._version;\n+                        },\n+                        enumerable: false,\n+                        configurable: true\n+                    });\n+                    FullTextDocument.prototype.getText = function(range) {\n+                        if (range) {\n+                            var start = this.offsetAt(range.start);\n+                            var end = this.offsetAt(range.end);\n+                            return this._content.substring(start, end);\n+                        }\n+                        return this._content;\n+                    };\n+                    FullTextDocument.prototype.update = function(event, version) {\n+                        this._content = event.text;\n+                        this._version = version;\n+                        this._lineOffsets = undefined;\n+                    };\n+                    FullTextDocument.prototype.getLineOffsets = function() {\n+                        if (this._lineOffsets === undefined) {\n+                            var lineOffsets = [];\n+                            var text = this._content;\n+                            var isLineStart = true;\n+                            for (var i = 0; i < text.length; i++) {\n+                                if (isLineStart) {\n+                                    lineOffsets.push(i);\n+                                    isLineStart = false;\n                                 }\n-                                if (e.shiftKey && !cm.state.keySeq) {\n-                                    return dispatchKey(cm, \"Shift-\" + name, e, function(b) {\n-                                        return doHandleBinding(cm, b, true);\n-                                    }) || dispatchKey(cm, name, e, function(b) {\n-                                        if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion) {\n-                                            return doHandleBinding(cm, b);\n-                                        }\n-                                    });\n-                                } else {\n-                                    return dispatchKey(cm, name, e, function(b) {\n-                                        return doHandleBinding(cm, b);\n-                                    });\n+                                var ch = text.charAt(i);\n+                                isLineStart = ch === '\\r' || ch === '\\n';\n+                                if (ch === '\\r' && i + 1 < text.length && text.charAt(i + 1) === '\\n') {\n+                                    i++;\n                                 }\n                             }\n-\n-                            function handleCharBinding(cm, e, ch) {\n-                                return dispatchKey(cm, \"'\" + ch + \"'\", e, function(b) {\n-                                    return doHandleBinding(cm, b, true);\n-                                });\n+                            if (isLineStart && text.length > 0) {\n+                                lineOffsets.push(text.length);\n                             }\n-                            var lastStoppedKey = null;\n-\n-                            function onKeyDown(e) {\n-                                var cm = this;\n-                                if (e.target && e.target != cm.display.input.getField()) {\n-                                    return;\n-                                }\n-                                cm.curOp.focus = activeElt();\n-                                if (signalDOMEvent(cm, e)) {\n-                                    return;\n-                                }\n-                                if (ie && ie_version < 11 && e.keyCode == 27) {\n-                                    e.returnValue = false;\n-                                }\n-                                var code = e.keyCode;\n-                                cm.display.shift = code == 16 || e.shiftKey;\n-                                var handled = handleKeyBinding(cm, e);\n-                                if (presto) {\n-                                    lastStoppedKey = handled ? code : null;\n-                                    if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) {\n-                                        cm.replaceSelection(\"\", null, \"cut\");\n-                                    }\n-                                }\n-                                if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand) {\n-                                    document.execCommand(\"cut\");\n-                                }\n-                                if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className)) {\n-                                    showCrossHair(cm);\n-                                }\n+                            this._lineOffsets = lineOffsets;\n+                        }\n+                        return this._lineOffsets;\n+                    };\n+                    FullTextDocument.prototype.positionAt = function(offset) {\n+                        offset = Math.max(Math.min(offset, this._content.length), 0);\n+                        var lineOffsets = this.getLineOffsets();\n+                        var low = 0,\n+                            high = lineOffsets.length;\n+                        if (high === 0) {\n+                            return Position.create(0, offset);\n+                        }\n+                        while (low < high) {\n+                            var mid = Math.floor((low + high) / 2);\n+                            if (lineOffsets[mid] > offset) {\n+                                high = mid;\n+                            } else {\n+                                low = mid + 1;\n                             }\n+                        }\n+                        // low is the least x for which the line offset is larger than the current offset\n+                        // or array.length if no line offset is larger than the current offset\n+                        var line = low - 1;\n+                        return Position.create(line, offset - lineOffsets[line]);\n+                    };\n+                    FullTextDocument.prototype.offsetAt = function(position) {\n+                        var lineOffsets = this.getLineOffsets();\n+                        if (position.line >= lineOffsets.length) {\n+                            return this._content.length;\n+                        } else if (position.line < 0) {\n+                            return 0;\n+                        }\n+                        var lineOffset = lineOffsets[position.line];\n+                        var nextLineOffset = position.line + 1 < lineOffsets.length ? lineOffsets[position.line + 1] : this._content.length;\n+                        return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\n+                    };\n+                    Object.defineProperty(FullTextDocument.prototype, \"lineCount\", {\n+                        get: function() {\n+                            return this.getLineOffsets().length;\n+                        },\n+                        enumerable: false,\n+                        configurable: true\n+                    });\n+                    return FullTextDocument;\n+                }();\n+                var Is;\n+                (function(Is) {\n+                    var toString = Object.prototype.toString;\n \n-                            function showCrossHair(cm) {\n-                                var lineDiv = cm.display.lineDiv;\n-                                addClass(lineDiv, \"CodeMirror-crosshair\");\n-\n-                                function up(e) {\n-                                    if (e.keyCode == 18 || !e.altKey) {\n-                                        rmClass(lineDiv, \"CodeMirror-crosshair\");\n-                                        off(document, \"keyup\", up);\n-                                        off(document, \"mouseover\", up);\n-                                    }\n-                                }\n-                                on(document, \"keyup\", up);\n-                                on(document, \"mouseover\", up);\n-                            }\n+                    function defined(value) {\n+                        return typeof value !== 'undefined';\n+                    }\n+                    Is.defined = defined;\n \n-                            function onKeyUp(e) {\n-                                if (e.keyCode == 16) {\n-                                    this.doc.sel.shift = false;\n-                                }\n-                                signalDOMEvent(this, e);\n-                            }\n+                    function undefined(value) {\n+                        return typeof value === 'undefined';\n+                    }\n+                    Is.undefined = undefined;\n \n-                            function onKeyPress(e) {\n-                                var cm = this;\n-                                if (e.target && e.target != cm.display.input.getField()) {\n-                                    return;\n-                                }\n-                                if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) {\n-                                    return;\n-                                }\n-                                var keyCode = e.keyCode,\n-                                    charCode = e.charCode;\n-                                if (presto && keyCode == lastStoppedKey) {\n-                                    lastStoppedKey = null;\n-                                    e_preventDefault(e);\n-                                    return;\n-                                }\n-                                if (presto && (!e.which || e.which < 10) && handleKeyBinding(cm, e)) {\n-                                    return;\n-                                }\n-                                var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n-                                if (ch == \"\\b\") {\n-                                    return;\n-                                }\n-                                if (handleCharBinding(cm, e, ch)) {\n-                                    return;\n-                                }\n-                                cm.display.input.onKeyPress(e);\n-                            }\n-                            var DOUBLECLICK_DELAY = 400;\n-                            var PastClick = function(time, pos, button) {\n-                                this.time = time;\n-                                this.pos = pos;\n-                                this.button = button;\n-                            };\n-                            PastClick.prototype.compare = function(time, pos, button) {\n-                                return this.time + DOUBLECLICK_DELAY > time && cmp(pos, this.pos) == 0 && button == this.button;\n-                            };\n-                            var lastClick, lastDoubleClick;\n-\n-                            function clickRepeat(pos, button) {\n-                                var now = + /* @__PURE__ */ new Date();\n-                                if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n-                                    lastClick = lastDoubleClick = null;\n-                                    return \"triple\";\n-                                } else if (lastClick && lastClick.compare(now, pos, button)) {\n-                                    lastDoubleClick = new PastClick(now, pos, button);\n-                                    lastClick = null;\n-                                    return \"double\";\n-                                } else {\n-                                    lastClick = new PastClick(now, pos, button);\n-                                    lastDoubleClick = null;\n-                                    return \"single\";\n-                                }\n-                            }\n+                    function boolean(value) {\n+                        return value === true || value === false;\n+                    }\n+                    Is.boolean = boolean;\n \n-                            function onMouseDown(e) {\n-                                var cm = this,\n-                                    display = cm.display;\n-                                if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) {\n-                                    return;\n-                                }\n-                                display.input.ensurePolled();\n-                                display.shift = e.shiftKey;\n-                                if (eventInWidget(display, e)) {\n-                                    if (!webkit) {\n-                                        display.scroller.draggable = false;\n-                                        setTimeout(function() {\n-                                            return display.scroller.draggable = true;\n-                                        }, 100);\n-                                    }\n-                                    return;\n-                                }\n-                                if (clickInGutter(cm, e)) {\n-                                    return;\n-                                }\n-                                var pos = posFromMouse(cm, e),\n-                                    button = e_button(e),\n-                                    repeat = pos ? clickRepeat(pos, button) : \"single\";\n-                                window.focus();\n-                                if (button == 1 && cm.state.selectingText) {\n-                                    cm.state.selectingText(e);\n-                                }\n-                                if (pos && handleMappedButton(cm, button, pos, repeat, e)) {\n-                                    return;\n-                                }\n-                                if (button == 1) {\n-                                    if (pos) {\n-                                        leftButtonDown(cm, pos, repeat, e);\n-                                    } else if (e_target(e) == display.scroller) {\n-                                        e_preventDefault(e);\n-                                    }\n-                                } else if (button == 2) {\n-                                    if (pos) {\n-                                        extendSelection(cm.doc, pos);\n-                                    }\n-                                    setTimeout(function() {\n-                                        return display.input.focus();\n-                                    }, 20);\n-                                } else if (button == 3) {\n-                                    if (captureRightClick) {\n-                                        cm.display.input.onContextMenu(e);\n-                                    } else {\n-                                        delayBlurEvent(cm);\n-                                    }\n-                                }\n-                            }\n+                    function string(value) {\n+                        return toString.call(value) === '[object String]';\n+                    }\n+                    Is.string = string;\n \n-                            function handleMappedButton(cm, button, pos, repeat, event) {\n-                                var name = \"Click\";\n-                                if (repeat == \"double\") {\n-                                    name = \"Double\" + name;\n-                                } else if (repeat == \"triple\") {\n-                                    name = \"Triple\" + name;\n-                                }\n-                                name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n-                                return dispatchKey(cm, addModifierNames(name, event), event, function(bound) {\n-                                    if (typeof bound == \"string\") {\n-                                        bound = commands[bound];\n-                                    }\n-                                    if (!bound) {\n-                                        return false;\n-                                    }\n-                                    var done = false;\n-                                    try {\n-                                        if (cm.isReadOnly()) {\n-                                            cm.state.suppressEdits = true;\n-                                        }\n-                                        done = bound(cm, pos) != Pass;\n-                                    } finally {\n-                                        cm.state.suppressEdits = false;\n-                                    }\n-                                    return done;\n-                                });\n-                            }\n+                    function number(value) {\n+                        return toString.call(value) === '[object Number]';\n+                    }\n+                    Is.number = number;\n \n-                            function configureMouse(cm, repeat, event) {\n-                                var option = cm.getOption(\"configureMouse\");\n-                                var value = option ? option(cm, repeat, event) : {};\n-                                if (value.unit == null) {\n-                                    var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n-                                    value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n-                                }\n-                                if (value.extend == null || cm.doc.extend) {\n-                                    value.extend = cm.doc.extend || event.shiftKey;\n-                                }\n-                                if (value.addNew == null) {\n-                                    value.addNew = mac ? event.metaKey : event.ctrlKey;\n-                                }\n-                                if (value.moveOnDrag == null) {\n-                                    value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey);\n-                                }\n-                                return value;\n-                            }\n+                    function numberRange(value, min, max) {\n+                        return toString.call(value) === '[object Number]' && min <= value && value <= max;\n+                    }\n+                    Is.numberRange = numberRange;\n \n-                            function leftButtonDown(cm, pos, repeat, event) {\n-                                if (ie) {\n-                                    setTimeout(bind(ensureFocus, cm), 0);\n-                                } else {\n-                                    cm.curOp.focus = activeElt();\n-                                }\n-                                var behavior = configureMouse(cm, repeat, event);\n-                                var sel = cm.doc.sel,\n-                                    contained;\n-                                if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && repeat == \"single\" && (contained = sel.contains(pos)) > -1 && (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) {\n-                                    leftButtonStartDrag(cm, event, pos, behavior);\n-                                } else {\n-                                    leftButtonSelect(cm, event, pos, behavior);\n-                                }\n-                            }\n+                    function integer(value) {\n+                        return toString.call(value) === '[object Number]' && -2147483648 <= value && value <= 2147483647;\n+                    }\n+                    Is.integer = integer;\n \n-                            function leftButtonStartDrag(cm, event, pos, behavior) {\n-                                var display = cm.display,\n-                                    moved = false;\n-                                var dragEnd = operation(cm, function(e) {\n-                                    if (webkit) {\n-                                        display.scroller.draggable = false;\n-                                    }\n-                                    cm.state.draggingText = false;\n-                                    if (cm.state.delayingBlurEvent) {\n-                                        if (cm.hasFocus()) {\n-                                            cm.state.delayingBlurEvent = false;\n-                                        } else {\n-                                            delayBlurEvent(cm);\n-                                        }\n-                                    }\n-                                    off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n-                                    off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n-                                    off(display.scroller, \"dragstart\", dragStart);\n-                                    off(display.scroller, \"drop\", dragEnd);\n-                                    if (!moved) {\n-                                        e_preventDefault(e);\n-                                        if (!behavior.addNew) {\n-                                            extendSelection(cm.doc, pos, null, null, behavior.extend);\n-                                        }\n-                                        if (webkit && !safari || ie && ie_version == 9) {\n-                                            setTimeout(function() {\n-                                                display.wrapper.ownerDocument.body.focus({\n-                                                    preventScroll: true\n-                                                });\n-                                                display.input.focus();\n-                                            }, 20);\n-                                        } else {\n-                                            display.input.focus();\n-                                        }\n-                                    }\n-                                });\n-                                var mouseMove = function(e2) {\n-                                    moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n-                                };\n-                                var dragStart = function() {\n-                                    return moved = true;\n-                                };\n-                                if (webkit) {\n-                                    display.scroller.draggable = true;\n-                                }\n-                                cm.state.draggingText = dragEnd;\n-                                dragEnd.copy = !behavior.moveOnDrag;\n-                                on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n-                                on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n-                                on(display.scroller, \"dragstart\", dragStart);\n-                                on(display.scroller, \"drop\", dragEnd);\n-                                cm.state.delayingBlurEvent = true;\n-                                setTimeout(function() {\n-                                    return display.input.focus();\n-                                }, 20);\n-                                if (display.scroller.dragDrop) {\n-                                    display.scroller.dragDrop();\n-                                }\n-                            }\n+                    function uinteger(value) {\n+                        return toString.call(value) === '[object Number]' && 0 <= value && value <= 2147483647;\n+                    }\n+                    Is.uinteger = uinteger;\n \n-                            function rangeForUnit(cm, pos, unit) {\n-                                if (unit == \"char\") {\n-                                    return new Range(pos, pos);\n-                                }\n-                                if (unit == \"word\") {\n-                                    return cm.findWordAt(pos);\n-                                }\n-                                if (unit == \"line\") {\n-                                    return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n-                                }\n-                                var result = unit(cm, pos);\n-                                return new Range(result.from, result.to);\n-                            }\n+                    function func(value) {\n+                        return toString.call(value) === '[object Function]';\n+                    }\n+                    Is.func = func;\n \n-                            function leftButtonSelect(cm, event, start, behavior) {\n-                                if (ie) {\n-                                    delayBlurEvent(cm);\n-                                }\n-                                var display = cm.display,\n-                                    doc = cm.doc;\n-                                e_preventDefault(event);\n-                                var ourRange,\n-                                    ourIndex,\n-                                    startSel = doc.sel,\n-                                    ranges = startSel.ranges;\n-                                if (behavior.addNew && !behavior.extend) {\n-                                    ourIndex = doc.sel.contains(start);\n-                                    if (ourIndex > -1) {\n-                                        ourRange = ranges[ourIndex];\n-                                    } else {\n-                                        ourRange = new Range(start, start);\n-                                    }\n-                                } else {\n-                                    ourRange = doc.sel.primary();\n-                                    ourIndex = doc.sel.primIndex;\n-                                }\n-                                if (behavior.unit == \"rectangle\") {\n-                                    if (!behavior.addNew) {\n-                                        ourRange = new Range(start, start);\n-                                    }\n-                                    start = posFromMouse(cm, event, true, true);\n-                                    ourIndex = -1;\n-                                } else {\n-                                    var range2 = rangeForUnit(cm, start, behavior.unit);\n-                                    if (behavior.extend) {\n-                                        ourRange = extendRange(ourRange, range2.anchor, range2.head, behavior.extend);\n-                                    } else {\n-                                        ourRange = range2;\n-                                    }\n-                                }\n-                                if (!behavior.addNew) {\n-                                    ourIndex = 0;\n-                                    setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n-                                    startSel = doc.sel;\n-                                } else if (ourIndex == -1) {\n-                                    ourIndex = ranges.length;\n-                                    setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), {\n-                                        scroll: false,\n-                                        origin: \"*mouse\"\n-                                    });\n-                                } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n-                                    setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), {\n-                                        scroll: false,\n-                                        origin: \"*mouse\"\n-                                    });\n-                                    startSel = doc.sel;\n-                                } else {\n-                                    replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n-                                }\n-                                var lastPos = start;\n+                    function objectLiteral(value) {\n+                        // Strictly speaking class instances pass this check as well. Since the LSP\n+                        // doesn't use classes we ignore this for now. If we do we need to add something\n+                        // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\n+                        return value !== null && typeof value === 'object';\n+                    }\n+                    Is.objectLiteral = objectLiteral;\n \n-                                function extendTo(pos) {\n-                                    if (cmp(lastPos, pos) == 0) {\n-                                        return;\n-                                    }\n-                                    lastPos = pos;\n-                                    if (behavior.unit == \"rectangle\") {\n-                                        var ranges2 = [],\n-                                            tabSize = cm.options.tabSize;\n-                                        var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n-                                        var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n-                                        var left = Math.min(startCol, posCol),\n-                                            right = Math.max(startCol, posCol);\n-                                        for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); line <= end; line++) {\n-                                            var text = getLine(doc, line).text,\n-                                                leftPos = findColumn(text, left, tabSize);\n-                                            if (left == right) {\n-                                                ranges2.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));\n-                                            } else if (text.length > leftPos) {\n-                                                ranges2.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize))));\n-                                            }\n-                                        }\n-                                        if (!ranges2.length) {\n-                                            ranges2.push(new Range(start, start));\n-                                        }\n-                                        setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges2), ourIndex), {\n-                                            origin: \"*mouse\",\n-                                            scroll: false\n-                                        });\n-                                        cm.scrollIntoView(pos);\n-                                    } else {\n-                                        var oldRange = ourRange;\n-                                        var range3 = rangeForUnit(cm, pos, behavior.unit);\n-                                        var anchor = oldRange.anchor,\n-                                            head;\n-                                        if (cmp(range3.anchor, anchor) > 0) {\n-                                            head = range3.head;\n-                                            anchor = minPos(oldRange.from(), range3.anchor);\n-                                        } else {\n-                                            head = range3.anchor;\n-                                            anchor = maxPos(oldRange.to(), range3.head);\n-                                        }\n-                                        var ranges$1 = startSel.ranges.slice(0);\n-                                        ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n-                                        setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n-                                    }\n-                                }\n-                                var editorSize = display.wrapper.getBoundingClientRect();\n-                                var counter = 0;\n-\n-                                function extend(e) {\n-                                    var curCount = ++counter;\n-                                    var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n-                                    if (!cur) {\n-                                        return;\n-                                    }\n-                                    if (cmp(cur, lastPos) != 0) {\n-                                        cm.curOp.focus = activeElt();\n-                                        extendTo(cur);\n-                                        var visible = visibleLines(display, doc);\n-                                        if (cur.line >= visible.to || cur.line < visible.from) {\n-                                            setTimeout(operation(cm, function() {\n-                                                if (counter == curCount) {\n-                                                    extend(e);\n-                                                }\n-                                            }), 150);\n-                                        }\n-                                    } else {\n-                                        var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n-                                        if (outside) {\n-                                            setTimeout(operation(cm, function() {\n-                                                if (counter != curCount) {\n-                                                    return;\n-                                                }\n-                                                display.scroller.scrollTop += outside;\n-                                                extend(e);\n-                                            }), 50);\n-                                        }\n-                                    }\n-                                }\n+                    function typedArray(value, check) {\n+                        return Array.isArray(value) && value.every(check);\n+                    }\n+                    Is.typedArray = typedArray;\n+                })(Is || (Is = {}));\n \n-                                function done(e) {\n-                                    cm.state.selectingText = false;\n-                                    counter = Infinity;\n-                                    if (e) {\n-                                        e_preventDefault(e);\n-                                        display.input.focus();\n-                                    }\n-                                    off(display.wrapper.ownerDocument, \"mousemove\", move);\n-                                    off(display.wrapper.ownerDocument, \"mouseup\", up);\n-                                    doc.history.lastSelOrigin = null;\n-                                }\n-                                var move = operation(cm, function(e) {\n-                                    if (e.buttons === 0 || !e_button(e)) {\n-                                        done(e);\n-                                    } else {\n-                                        extend(e);\n-                                    }\n-                                });\n-                                var up = operation(cm, done);\n-                                cm.state.selectingText = up;\n-                                on(display.wrapper.ownerDocument, \"mousemove\", move);\n-                                on(display.wrapper.ownerDocument, \"mouseup\", up);\n-                            }\n-\n-                            function bidiSimplify(cm, range2) {\n-                                var anchor = range2.anchor;\n-                                var head = range2.head;\n-                                var anchorLine = getLine(cm.doc, anchor.line);\n-                                if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) {\n-                                    return range2;\n-                                }\n-                                var order = getOrder(anchorLine);\n-                                if (!order) {\n-                                    return range2;\n-                                }\n-                                var index = getBidiPartAt(order, anchor.ch, anchor.sticky),\n-                                    part = order[index];\n-                                if (part.from != anchor.ch && part.to != anchor.ch) {\n-                                    return range2;\n-                                }\n-                                var boundary = index + (part.from == anchor.ch == (part.level != 1) ? 0 : 1);\n-                                if (boundary == 0 || boundary == order.length) {\n-                                    return range2;\n-                                }\n-                                var leftSide;\n-                                if (head.line != anchor.line) {\n-                                    leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n-                                } else {\n-                                    var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n-                                    var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n-                                    if (headIndex == boundary - 1 || headIndex == boundary) {\n-                                        leftSide = dir < 0;\n-                                    } else {\n-                                        leftSide = dir > 0;\n-                                    }\n-                                }\n-                                var usePart = order[boundary + (leftSide ? -1 : 0)];\n-                                var from = leftSide == (usePart.level == 1);\n-                                var ch = from ? usePart.from : usePart.to,\n-                                    sticky = from ? \"after\" : \"before\";\n-                                return anchor.ch == ch && anchor.sticky == sticky ? range2 : new Range(new Pos(anchor.line, ch, sticky), head);\n-                            }\n+                /***/\n+            }),\n \n-                            function gutterEvent(cm, e, type, prevent) {\n-                                var mX, mY;\n-                                if (e.touches) {\n-                                    mX = e.touches[0].clientX;\n-                                    mY = e.touches[0].clientY;\n-                                } else {\n-                                    try {\n-                                        mX = e.clientX;\n-                                        mY = e.clientY;\n-                                    } catch (e$1) {\n-                                        return false;\n-                                    }\n-                                }\n-                                if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) {\n-                                    return false;\n-                                }\n-                                if (prevent) {\n-                                    e_preventDefault(e);\n-                                }\n-                                var display = cm.display;\n-                                var lineBox = display.lineDiv.getBoundingClientRect();\n-                                if (mY > lineBox.bottom || !hasHandler(cm, type)) {\n-                                    return e_defaultPrevented(e);\n-                                }\n-                                mY -= lineBox.top - display.viewOffset;\n-                                for (var i2 = 0; i2 < cm.display.gutterSpecs.length; ++i2) {\n-                                    var g = display.gutters.childNodes[i2];\n-                                    if (g && g.getBoundingClientRect().right >= mX) {\n-                                        var line = lineAtHeight(cm.doc, mY);\n-                                        var gutter = cm.display.gutterSpecs[i2];\n-                                        signal(cm, type, cm, line, gutter.className, e);\n-                                        return e_defaultPrevented(e);\n-                                    }\n-                                }\n-                            }\n+        /***/\n+        \"../../codemirror-graphql/esm/hint.js\":\n+            /*!********************************************!*\\\n+              !*** ../../codemirror-graphql/esm/hint.js ***!\n+              \\********************************************/\n+            /***/\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n-                            function clickInGutter(cm, e) {\n-                                return gutterEvent(cm, e, \"gutterClick\", true);\n-                            }\n+                \"use strict\";\n \n-                            function onContextMenu(cm, e) {\n-                                if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) {\n-                                    return;\n-                                }\n-                                if (signalDOMEvent(cm, e, \"contextmenu\")) {\n-                                    return;\n-                                }\n-                                if (!captureRightClick) {\n-                                    cm.display.input.onContextMenu(e);\n-                                }\n-                            }\n \n-                            function contextMenuInGutter(cm, e) {\n-                                if (!hasHandler(cm, \"gutterContextMenu\")) {\n-                                    return false;\n-                                }\n-                                return gutterEvent(cm, e, \"gutterContextMenu\", false);\n-                            }\n+                var _codemirror = _interopRequireDefault(__webpack_require__( /*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                __webpack_require__( /*! codemirror/addon/hint/show-hint.js */ \"../../../node_modules/codemirror/addon/hint/show-hint.js\");\n+                var _graphqlLanguageService = __webpack_require__( /*! graphql-language-service */ \"../../graphql-language-service/esm/index.js\");\n \n-                            function themeChanged(cm) {\n-                                cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") + cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n-                                clearCaches(cm);\n-                            }\n-                            var Init = {\n-                                toString: function() {\n-                                    return \"CodeMirror.Init\";\n-                                }\n+                function _interopRequireDefault(obj) {\n+                    return obj && obj.__esModule ? obj : {\n+                        default: obj\n+                    };\n+                }\n+                _codemirror.default.registerHelper('hint', 'graphql', (editor, options) => {\n+                    const {\n+                        schema,\n+                        externalFragments,\n+                        autocompleteOptions\n+                    } = options;\n+                    if (!schema) {\n+                        return;\n+                    }\n+                    const cur = editor.getCursor();\n+                    const token = editor.getTokenAt(cur);\n+                    const tokenStart = token.type !== null && /\"|\\w/.test(token.string[0]) ? token.start : token.end;\n+                    const position = new _graphqlLanguageService.Position(cur.line, tokenStart);\n+                    const rawResults = (0, _graphqlLanguageService.getAutocompleteSuggestions)(schema, editor.getValue(), position, token, externalFragments, autocompleteOptions);\n+                    const results = {\n+                        list: rawResults.map(item => {\n+                            var _a;\n+                            return {\n+                                text: (_a = item === null || item === void 0 ? void 0 : item.rawInsert) !== null && _a !== void 0 ? _a : item.label,\n+                                type: item.type,\n+                                description: item.documentation,\n+                                isDeprecated: item.isDeprecated,\n+                                deprecationReason: item.deprecationReason\n                             };\n-                            var defaults = {};\n-                            var optionHandlers = {};\n-\n-                            function defineOptions(CodeMirror2) {\n-                                var optionHandlers2 = CodeMirror2.optionHandlers;\n-\n-                                function option(name, deflt, handle, notOnInit) {\n-                                    CodeMirror2.defaults[name] = deflt;\n-                                    if (handle) {\n-                                        optionHandlers2[name] = notOnInit ? function(cm, val, old) {\n-                                            if (old != Init) {\n-                                                handle(cm, val, old);\n-                                            }\n-                                        } : handle;\n-                                    }\n-                                }\n-                                CodeMirror2.defineOption = option;\n-                                CodeMirror2.Init = Init;\n-                                option(\"value\", \"\", function(cm, val) {\n-                                    return cm.setValue(val);\n-                                }, true);\n-                                option(\"mode\", null, function(cm, val) {\n-                                    cm.doc.modeOption = val;\n-                                    loadMode(cm);\n-                                }, true);\n-                                option(\"indentUnit\", 2, loadMode, true);\n-                                option(\"indentWithTabs\", false);\n-                                option(\"smartIndent\", true);\n-                                option(\"tabSize\", 4, function(cm) {\n-                                    resetModeState(cm);\n-                                    clearCaches(cm);\n-                                    regChange(cm);\n-                                }, true);\n-                                option(\"lineSeparator\", null, function(cm, val) {\n-                                    cm.doc.lineSep = val;\n-                                    if (!val) {\n-                                        return;\n-                                    }\n-                                    var newBreaks = [],\n-                                        lineNo2 = cm.doc.first;\n-                                    cm.doc.iter(function(line) {\n-                                        for (var pos = 0;;) {\n-                                            var found = line.text.indexOf(val, pos);\n-                                            if (found == -1) {\n-                                                break;\n-                                            }\n-                                            pos = found + val.length;\n-                                            newBreaks.push(Pos(lineNo2, found));\n-                                        }\n-                                        lineNo2++;\n-                                    });\n-                                    for (var i2 = newBreaks.length - 1; i2 >= 0; i2--) {\n-                                        replaceRange(cm.doc, val, newBreaks[i2], Pos(newBreaks[i2].line, newBreaks[i2].ch + val.length));\n-                                    }\n-                                });\n-                                option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function(cm, val, old) {\n-                                    cm.state.specialChars = new RegExp(val.source + (val.test(\"\t\") ? \"\" : \"|\t\"), \"g\");\n-                                    if (old != Init) {\n-                                        cm.refresh();\n-                                    }\n-                                });\n-                                option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function(cm) {\n-                                    return cm.refresh();\n-                                }, true);\n-                                option(\"electricChars\", true);\n-                                option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function() {\n-                                    throw new Error(\"inputStyle can not (yet) be changed in a running editor\");\n-                                }, true);\n-                                option(\"spellcheck\", false, function(cm, val) {\n-                                    return cm.getInputField().spellcheck = val;\n-                                }, true);\n-                                option(\"autocorrect\", false, function(cm, val) {\n-                                    return cm.getInputField().autocorrect = val;\n-                                }, true);\n-                                option(\"autocapitalize\", false, function(cm, val) {\n-                                    return cm.getInputField().autocapitalize = val;\n-                                }, true);\n-                                option(\"rtlMoveVisually\", !windows);\n-                                option(\"wholeLineUpdateBefore\", true);\n-                                option(\"theme\", \"default\", function(cm) {\n-                                    themeChanged(cm);\n-                                    updateGutters(cm);\n-                                }, true);\n-                                option(\"keyMap\", \"default\", function(cm, val, old) {\n-                                    var next = getKeyMap(val);\n-                                    var prev = old != Init && getKeyMap(old);\n-                                    if (prev && prev.detach) {\n-                                        prev.detach(cm, next);\n-                                    }\n-                                    if (next.attach) {\n-                                        next.attach(cm, prev || null);\n-                                    }\n-                                });\n-                                option(\"extraKeys\", null);\n-                                option(\"configureMouse\", null);\n-                                option(\"lineWrapping\", false, wrappingChanged, true);\n-                                option(\"gutters\", [], function(cm, val) {\n-                                    cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n-                                    updateGutters(cm);\n-                                }, true);\n-                                option(\"fixedGutter\", true, function(cm, val) {\n-                                    cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n-                                    cm.refresh();\n-                                }, true);\n-                                option(\"coverGutterNextToScrollbar\", false, function(cm) {\n-                                    return updateScrollbars(cm);\n-                                }, true);\n-                                option(\"scrollbarStyle\", \"native\", function(cm) {\n-                                    initScrollbars(cm);\n-                                    updateScrollbars(cm);\n-                                    cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n-                                    cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n-                                }, true);\n-                                option(\"lineNumbers\", false, function(cm, val) {\n-                                    cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n-                                    updateGutters(cm);\n-                                }, true);\n-                                option(\"firstLineNumber\", 1, updateGutters, true);\n-                                option(\"lineNumberFormatter\", function(integer) {\n-                                    return integer;\n-                                }, updateGutters, true);\n-                                option(\"showCursorWhenSelecting\", false, updateSelection, true);\n-                                option(\"resetSelectionOnContextMenu\", true);\n-                                option(\"lineWiseCopyCut\", true);\n-                                option(\"pasteLinesPerSelection\", true);\n-                                option(\"selectionsMayTouch\", false);\n-                                option(\"readOnly\", false, function(cm, val) {\n-                                    if (val == \"nocursor\") {\n-                                        onBlur(cm);\n-                                        cm.display.input.blur();\n-                                    }\n-                                    cm.display.input.readOnlyChanged(val);\n-                                });\n-                                option(\"screenReaderLabel\", null, function(cm, val) {\n-                                    val = val === \"\" ? null : val;\n-                                    cm.display.input.screenReaderLabelChanged(val);\n-                                });\n-                                option(\"disableInput\", false, function(cm, val) {\n-                                    if (!val) {\n-                                        cm.display.input.reset();\n-                                    }\n-                                }, true);\n-                                option(\"dragDrop\", true, dragDropChanged);\n-                                option(\"allowDropFileTypes\", null);\n-                                option(\"cursorBlinkRate\", 530);\n-                                option(\"cursorScrollMargin\", 0);\n-                                option(\"cursorHeight\", 1, updateSelection, true);\n-                                option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n-                                option(\"workTime\", 100);\n-                                option(\"workDelay\", 100);\n-                                option(\"flattenSpans\", true, resetModeState, true);\n-                                option(\"addModeClass\", false, resetModeState, true);\n-                                option(\"pollInterval\", 100);\n-                                option(\"undoDepth\", 200, function(cm, val) {\n-                                    return cm.doc.history.undoDepth = val;\n-                                });\n-                                option(\"historyEventDelay\", 1250);\n-                                option(\"viewportMargin\", 10, function(cm) {\n-                                    return cm.refresh();\n-                                }, true);\n-                                option(\"maxHighlightLength\", 1e4, resetModeState, true);\n-                                option(\"moveInputWithCursor\", true, function(cm, val) {\n-                                    if (!val) {\n-                                        cm.display.input.resetPosition();\n-                                    }\n-                                });\n-                                option(\"tabindex\", null, function(cm, val) {\n-                                    return cm.display.input.getField().tabIndex = val || \"\";\n-                                });\n-                                option(\"autofocus\", null);\n-                                option(\"direction\", \"ltr\", function(cm, val) {\n-                                    return cm.doc.setDirection(val);\n-                                }, true);\n-                                option(\"phrases\", null);\n-                            }\n-\n-                            function dragDropChanged(cm, value, old) {\n-                                var wasOn = old && old != Init;\n-                                if (!value != !wasOn) {\n-                                    var funcs = cm.display.dragFunctions;\n-                                    var toggle = value ? on : off;\n-                                    toggle(cm.display.scroller, \"dragstart\", funcs.start);\n-                                    toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n-                                    toggle(cm.display.scroller, \"dragover\", funcs.over);\n-                                    toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n-                                    toggle(cm.display.scroller, \"drop\", funcs.drop);\n-                                }\n-                            }\n-\n-                            function wrappingChanged(cm) {\n-                                if (cm.options.lineWrapping) {\n-                                    addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n-                                    cm.display.sizer.style.minWidth = \"\";\n-                                    cm.display.sizerWidth = null;\n-                                } else {\n-                                    rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n-                                    findMaxLine(cm);\n-                                }\n-                                estimateLineHeights(cm);\n-                                regChange(cm);\n-                                clearCaches(cm);\n-                                setTimeout(function() {\n-                                    return updateScrollbars(cm);\n-                                }, 100);\n-                            }\n-\n-                            function CodeMirror(place, options) {\n-                                var this$1$1 = this;\n-                                if (!(this instanceof CodeMirror)) {\n-                                    return new CodeMirror(place, options);\n-                                }\n-                                this.options = options = options ? copyObj(options) : {};\n-                                copyObj(defaults, options, false);\n-                                var doc = options.value;\n-                                if (typeof doc == \"string\") {\n-                                    doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction);\n-                                } else if (options.mode) {\n-                                    doc.modeOption = options.mode;\n-                                }\n-                                this.doc = doc;\n-                                var input = new CodeMirror.inputStyles[options.inputStyle](this);\n-                                var display = this.display = new Display(place, doc, input, options);\n-                                display.wrapper.CodeMirror = this;\n-                                themeChanged(this);\n-                                if (options.lineWrapping) {\n-                                    this.display.wrapper.className += \" CodeMirror-wrap\";\n-                                }\n-                                initScrollbars(this);\n-                                this.state = {\n-                                    keyMaps: [],\n-                                    // stores maps added by addKeyMap\n-                                    overlays: [],\n-                                    // highlighting overlays, as added by addOverlay\n-                                    modeGen: 0,\n-                                    // bumped when mode/overlay changes, used to invalidate highlighting info\n-                                    overwrite: false,\n-                                    delayingBlurEvent: false,\n-                                    focused: false,\n-                                    suppressEdits: false,\n-                                    // used to disable editing during key handlers when in readOnly mode\n-                                    pasteIncoming: -1,\n-                                    cutIncoming: -1,\n-                                    // help recognize paste/cut edits in input.poll\n-                                    selectingText: false,\n-                                    draggingText: false,\n-                                    highlight: new Delayed(),\n-                                    // stores highlight worker timeout\n-                                    keySeq: null,\n-                                    // Unfinished key sequence\n-                                    specialChars: null\n-                                };\n-                                if (options.autofocus && !mobile) {\n-                                    display.input.focus();\n-                                }\n-                                if (ie && ie_version < 11) {\n-                                    setTimeout(function() {\n-                                        return this$1$1.display.input.reset(true);\n-                                    }, 20);\n-                                }\n-                                registerEventHandlers(this);\n-                                ensureGlobalHandlers();\n-                                startOperation(this);\n-                                this.curOp.forceUpdate = true;\n-                                attachDoc(this, doc);\n-                                if (options.autofocus && !mobile || this.hasFocus()) {\n-                                    setTimeout(function() {\n-                                        if (this$1$1.hasFocus() && !this$1$1.state.focused) {\n-                                            onFocus(this$1$1);\n-                                        }\n-                                    }, 20);\n-                                } else {\n-                                    onBlur(this);\n-                                }\n-                                for (var opt in optionHandlers) {\n-                                    if (optionHandlers.hasOwnProperty(opt)) {\n-                                        optionHandlers[opt](this, options[opt], Init);\n-                                    }\n-                                }\n-                                maybeUpdateLineNumberWidth(this);\n-                                if (options.finishInit) {\n-                                    options.finishInit(this);\n-                                }\n-                                for (var i2 = 0; i2 < initHooks.length; ++i2) {\n-                                    initHooks[i2](this);\n-                                }\n-                                endOperation(this);\n-                                if (webkit && options.lineWrapping && getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\") {\n-                                    display.lineDiv.style.textRendering = \"auto\";\n-                                }\n-                            }\n-                            CodeMirror.defaults = defaults;\n-                            CodeMirror.optionHandlers = optionHandlers;\n-\n-                            function registerEventHandlers(cm) {\n-                                var d = cm.display;\n-                                on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n-                                if (ie && ie_version < 11) {\n-                                    on(d.scroller, \"dblclick\", operation(cm, function(e) {\n-                                        if (signalDOMEvent(cm, e)) {\n-                                            return;\n-                                        }\n-                                        var pos = posFromMouse(cm, e);\n-                                        if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) {\n-                                            return;\n-                                        }\n-                                        e_preventDefault(e);\n-                                        var word = cm.findWordAt(pos);\n-                                        extendSelection(cm.doc, word.anchor, word.head);\n-                                    }));\n-                                } else {\n-                                    on(d.scroller, \"dblclick\", function(e) {\n-                                        return signalDOMEvent(cm, e) || e_preventDefault(e);\n-                                    });\n-                                }\n-                                on(d.scroller, \"contextmenu\", function(e) {\n-                                    return onContextMenu(cm, e);\n-                                });\n-                                on(d.input.getField(), \"contextmenu\", function(e) {\n-                                    if (!d.scroller.contains(e.target)) {\n-                                        onContextMenu(cm, e);\n-                                    }\n-                                });\n-                                var touchFinished,\n-                                    prevTouch = {\n-                                        end: 0\n-                                    };\n-\n-                                function finishTouch() {\n-                                    if (d.activeTouch) {\n-                                        touchFinished = setTimeout(function() {\n-                                            return d.activeTouch = null;\n-                                        }, 1e3);\n-                                        prevTouch = d.activeTouch;\n-                                        prevTouch.end = + /* @__PURE__ */ new Date();\n-                                    }\n-                                }\n+                        }),\n+                        from: {\n+                            line: cur.line,\n+                            ch: tokenStart\n+                        },\n+                        to: {\n+                            line: cur.line,\n+                            ch: token.end\n+                        }\n+                    };\n+                    if ((results === null || results === void 0 ? void 0 : results.list) && results.list.length > 0) {\n+                        results.from = _codemirror.default.Pos(results.from.line, results.from.ch);\n+                        results.to = _codemirror.default.Pos(results.to.line, results.to.ch);\n+                        _codemirror.default.signal(editor, 'hasCompletion', editor, results, token);\n+                    }\n+                    return results;\n+                });\n \n-                                function isMouseLikeTouchEvent(e) {\n-                                    if (e.touches.length != 1) {\n-                                        return false;\n-                                    }\n-                                    var touch = e.touches[0];\n-                                    return touch.radiusX <= 1 && touch.radiusY <= 1;\n-                                }\n+                /***/\n+            }),\n \n-                                function farAway(touch, other) {\n-                                    if (other.left == null) {\n-                                        return true;\n-                                    }\n-                                    var dx = other.left - touch.left,\n-                                        dy = other.top - touch.top;\n-                                    return dx * dx + dy * dy > 20 * 20;\n-                                }\n-                                on(d.scroller, \"touchstart\", function(e) {\n-                                    if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n-                                        d.input.ensurePolled();\n-                                        clearTimeout(touchFinished);\n-                                        var now = + /* @__PURE__ */ new Date();\n-                                        d.activeTouch = {\n-                                            start: now,\n-                                            moved: false,\n-                                            prev: now - prevTouch.end <= 300 ? prevTouch : null\n-                                        };\n-                                        if (e.touches.length == 1) {\n-                                            d.activeTouch.left = e.touches[0].pageX;\n-                                            d.activeTouch.top = e.touches[0].pageY;\n-                                        }\n-                                    }\n-                                });\n-                                on(d.scroller, \"touchmove\", function() {\n-                                    if (d.activeTouch) {\n-                                        d.activeTouch.moved = true;\n-                                    }\n-                                });\n-                                on(d.scroller, \"touchend\", function(e) {\n-                                    var touch = d.activeTouch;\n-                                    if (touch && !eventInWidget(d, e) && touch.left != null && !touch.moved && /* @__PURE__ */ new Date() - touch.start < 300) {\n-                                        var pos = cm.coordsChar(d.activeTouch, \"page\"),\n-                                            range2;\n-                                        if (!touch.prev || farAway(touch, touch.prev)) {\n-                                            range2 = new Range(pos, pos);\n-                                        } else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) {\n-                                            range2 = cm.findWordAt(pos);\n-                                        } else {\n-                                            range2 = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n-                                        }\n-                                        cm.setSelection(range2.anchor, range2.head);\n-                                        cm.focus();\n-                                        e_preventDefault(e);\n-                                    }\n-                                    finishTouch();\n-                                });\n-                                on(d.scroller, \"touchcancel\", finishTouch);\n-                                on(d.scroller, \"scroll\", function() {\n-                                    if (d.scroller.clientHeight) {\n-                                        updateScrollTop(cm, d.scroller.scrollTop);\n-                                        setScrollLeft(cm, d.scroller.scrollLeft, true);\n-                                        signal(cm, \"scroll\", cm);\n-                                    }\n-                                });\n-                                on(d.scroller, \"mousewheel\", function(e) {\n-                                    return onScrollWheel(cm, e);\n-                                });\n-                                on(d.scroller, \"DOMMouseScroll\", function(e) {\n-                                    return onScrollWheel(cm, e);\n-                                });\n-                                on(d.wrapper, \"scroll\", function() {\n-                                    return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0;\n-                                });\n-                                d.dragFunctions = {\n-                                    enter: function(e) {\n-                                        if (!signalDOMEvent(cm, e)) {\n-                                            e_stop(e);\n-                                        }\n-                                    },\n-                                    over: function(e) {\n-                                        if (!signalDOMEvent(cm, e)) {\n-                                            onDragOver(cm, e);\n-                                            e_stop(e);\n-                                        }\n-                                    },\n-                                    start: function(e) {\n-                                        return onDragStart(cm, e);\n-                                    },\n-                                    drop: operation(cm, onDrop),\n-                                    leave: function(e) {\n-                                        if (!signalDOMEvent(cm, e)) {\n-                                            clearDragCursor(cm);\n-                                        }\n-                                    }\n-                                };\n-                                var inp = d.input.getField();\n-                                on(inp, \"keyup\", function(e) {\n-                                    return onKeyUp.call(cm, e);\n-                                });\n-                                on(inp, \"keydown\", operation(cm, onKeyDown));\n-                                on(inp, \"keypress\", operation(cm, onKeyPress));\n-                                on(inp, \"focus\", function(e) {\n-                                    return onFocus(cm, e);\n-                                });\n-                                on(inp, \"blur\", function(e) {\n-                                    return onBlur(cm, e);\n-                                });\n-                            }\n-                            var initHooks = [];\n-                            CodeMirror.defineInitHook = function(f) {\n-                                return initHooks.push(f);\n-                            };\n+        /***/\n+        \"../../codemirror-graphql/esm/info.js\":\n+            /*!********************************************!*\\\n+              !*** ../../codemirror-graphql/esm/info.js ***!\n+              \\********************************************/\n+            /***/\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n-                            function indentLine(cm, n, how, aggressive) {\n-                                var doc = cm.doc,\n-                                    state;\n-                                if (how == null) {\n-                                    how = \"add\";\n-                                }\n-                                if (how == \"smart\") {\n-                                    if (!doc.mode.indent) {\n-                                        how = \"prev\";\n-                                    } else {\n-                                        state = getContextBefore(cm, n).state;\n-                                    }\n-                                }\n-                                var tabSize = cm.options.tabSize;\n-                                var line = getLine(doc, n),\n-                                    curSpace = countColumn(line.text, null, tabSize);\n-                                if (line.stateAfter) {\n-                                    line.stateAfter = null;\n-                                }\n-                                var curSpaceString = line.text.match(/^\\s*/)[0],\n-                                    indentation;\n-                                if (!aggressive && !/\\S/.test(line.text)) {\n-                                    indentation = 0;\n-                                    how = \"not\";\n-                                } else if (how == \"smart\") {\n-                                    indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n-                                    if (indentation == Pass || indentation > 150) {\n-                                        if (!aggressive) {\n-                                            return;\n-                                        }\n-                                        how = \"prev\";\n-                                    }\n-                                }\n-                                if (how == \"prev\") {\n-                                    if (n > doc.first) {\n-                                        indentation = countColumn(getLine(doc, n - 1).text, null, tabSize);\n-                                    } else {\n-                                        indentation = 0;\n-                                    }\n-                                } else if (how == \"add\") {\n-                                    indentation = curSpace + cm.options.indentUnit;\n-                                } else if (how == \"subtract\") {\n-                                    indentation = curSpace - cm.options.indentUnit;\n-                                } else if (typeof how == \"number\") {\n-                                    indentation = curSpace + how;\n-                                }\n-                                indentation = Math.max(0, indentation);\n-                                var indentString = \"\",\n-                                    pos = 0;\n-                                if (cm.options.indentWithTabs) {\n-                                    for (var i2 = Math.floor(indentation / tabSize); i2; --i2) {\n-                                        pos += tabSize;\n-                                        indentString += \"\t\";\n-                                    }\n-                                }\n-                                if (pos < indentation) {\n-                                    indentString += spaceStr(indentation - pos);\n-                                }\n-                                if (indentString != curSpaceString) {\n-                                    replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n-                                    line.stateAfter = null;\n-                                    return true;\n-                                } else {\n-                                    for (var i$12 = 0; i$12 < doc.sel.ranges.length; i$12++) {\n-                                        var range2 = doc.sel.ranges[i$12];\n-                                        if (range2.head.line == n && range2.head.ch < curSpaceString.length) {\n-                                            var pos$1 = Pos(n, curSpaceString.length);\n-                                            replaceOneSelection(doc, i$12, new Range(pos$1, pos$1));\n-                                            break;\n-                                        }\n-                                    }\n-                                }\n-                            }\n-                            var lastCopied = null;\n+                \"use strict\";\n \n-                            function setLastCopied(newLastCopied) {\n-                                lastCopied = newLastCopied;\n-                            }\n \n-                            function applyTextInput(cm, inserted, deleted, sel, origin) {\n-                                var doc = cm.doc;\n-                                cm.display.shift = false;\n-                                if (!sel) {\n-                                    sel = doc.sel;\n-                                }\n-                                var recent = + /* @__PURE__ */ new Date() - 200;\n-                                var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n-                                var textLines = splitLinesAuto(inserted),\n-                                    multiPaste = null;\n-                                if (paste && sel.ranges.length > 1) {\n-                                    if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n-                                        if (sel.ranges.length % lastCopied.text.length == 0) {\n-                                            multiPaste = [];\n-                                            for (var i2 = 0; i2 < lastCopied.text.length; i2++) {\n-                                                multiPaste.push(doc.splitLines(lastCopied.text[i2]));\n-                                            }\n-                                        }\n-                                    } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n-                                        multiPaste = map(textLines, function(l) {\n-                                            return [l];\n-                                        });\n-                                    }\n-                                }\n-                                var updateInput = cm.curOp.updateInput;\n-                                for (var i$12 = sel.ranges.length - 1; i$12 >= 0; i$12--) {\n-                                    var range2 = sel.ranges[i$12];\n-                                    var from = range2.from(),\n-                                        to = range2.to();\n-                                    if (range2.empty()) {\n-                                        if (deleted && deleted > 0) {\n-                                            from = Pos(from.line, from.ch - deleted);\n-                                        } else if (cm.state.overwrite && !paste) {\n-                                            to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length));\n-                                        } else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\")) {\n-                                            from = to = Pos(from.line, 0);\n-                                        }\n-                                    }\n-                                    var changeEvent = {\n-                                        from,\n-                                        to,\n-                                        text: multiPaste ? multiPaste[i$12 % multiPaste.length] : textLines,\n-                                        origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")\n-                                    };\n-                                    makeChange(cm.doc, changeEvent);\n-                                    signalLater(cm, \"inputRead\", cm, changeEvent);\n-                                }\n-                                if (inserted && !paste) {\n-                                    triggerElectric(cm, inserted);\n-                                }\n-                                ensureCursorVisible(cm);\n-                                if (cm.curOp.updateInput < 2) {\n-                                    cm.curOp.updateInput = updateInput;\n-                                }\n-                                cm.curOp.typing = true;\n-                                cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n-                            }\n+                var _graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n+                var _codemirror = _interopRequireDefault(__webpack_require__( /*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                var _getTypeInfo = _interopRequireDefault(__webpack_require__( /*! ./utils/getTypeInfo */ \"../../codemirror-graphql/esm/utils/getTypeInfo.js\"));\n+                var _SchemaReference = __webpack_require__( /*! ./utils/SchemaReference */ \"../../codemirror-graphql/esm/utils/SchemaReference.js\");\n+                __webpack_require__( /*! ./utils/info-addon */ \"../../codemirror-graphql/esm/utils/info-addon.js\");\n \n-                            function handlePaste(e, cm) {\n-                                var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n-                                if (pasted) {\n-                                    e.preventDefault();\n-                                    if (!cm.isReadOnly() && !cm.options.disableInput) {\n-                                        runInOp(cm, function() {\n-                                            return applyTextInput(cm, pasted, 0, null, \"paste\");\n-                                        });\n-                                    }\n-                                    return true;\n-                                }\n-                            }\n+                function _interopRequireDefault(obj) {\n+                    return obj && obj.__esModule ? obj : {\n+                        default: obj\n+                    };\n+                }\n+                _codemirror.default.registerHelper('info', 'graphql', (token, options) => {\n+                    var _a;\n+                    if (!options.schema || !token.state) {\n+                        return;\n+                    }\n+                    const {\n+                        kind,\n+                        step\n+                    } = token.state;\n+                    const typeInfo = (0, _getTypeInfo.default)(options.schema, token.state);\n+                    if (kind === 'Field' && step === 0 && typeInfo.fieldDef || kind === 'AliasedField' && step === 2 && typeInfo.fieldDef || kind === 'ObjectField' && step === 0 && typeInfo.fieldDef) {\n+                        const header = document.createElement('div');\n+                        header.className = 'CodeMirror-info-header';\n+                        renderField(header, typeInfo, options);\n+                        const into = document.createElement('div');\n+                        into.append(header);\n+                        renderDescription(into, options, typeInfo.fieldDef);\n+                        return into;\n+                    }\n+                    if (kind === 'Directive' && step === 1 && typeInfo.directiveDef) {\n+                        const header = document.createElement('div');\n+                        header.className = 'CodeMirror-info-header';\n+                        renderDirective(header, typeInfo, options);\n+                        const into = document.createElement('div');\n+                        into.append(header);\n+                        renderDescription(into, options, typeInfo.directiveDef);\n+                        return into;\n+                    }\n+                    if (kind === 'Argument' && step === 0 && typeInfo.argDef) {\n+                        const header = document.createElement('div');\n+                        header.className = 'CodeMirror-info-header';\n+                        renderArg(header, typeInfo, options);\n+                        const into = document.createElement('div');\n+                        into.append(header);\n+                        renderDescription(into, options, typeInfo.argDef);\n+                        return into;\n+                    }\n+                    if (kind === 'EnumValue' && ((_a = typeInfo.enumValue) === null || _a === void 0 ? void 0 : _a.description)) {\n+                        const header = document.createElement('div');\n+                        header.className = 'CodeMirror-info-header';\n+                        renderEnumValue(header, typeInfo, options);\n+                        const into = document.createElement('div');\n+                        into.append(header);\n+                        renderDescription(into, options, typeInfo.enumValue);\n+                        return into;\n+                    }\n+                    if (kind === 'NamedType' && typeInfo.type && typeInfo.type.description) {\n+                        const header = document.createElement('div');\n+                        header.className = 'CodeMirror-info-header';\n+                        renderType(header, typeInfo, options, typeInfo.type);\n+                        const into = document.createElement('div');\n+                        into.append(header);\n+                        renderDescription(into, options, typeInfo.type);\n+                        return into;\n+                    }\n+                });\n \n-                            function triggerElectric(cm, inserted) {\n-                                if (!cm.options.electricChars || !cm.options.smartIndent) {\n-                                    return;\n-                                }\n-                                var sel = cm.doc.sel;\n-                                for (var i2 = sel.ranges.length - 1; i2 >= 0; i2--) {\n-                                    var range2 = sel.ranges[i2];\n-                                    if (range2.head.ch > 100 || i2 && sel.ranges[i2 - 1].head.line == range2.head.line) {\n-                                        continue;\n-                                    }\n-                                    var mode = cm.getModeAt(range2.head);\n-                                    var indented = false;\n-                                    if (mode.electricChars) {\n-                                        for (var j = 0; j < mode.electricChars.length; j++) {\n-                                            if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n-                                                indented = indentLine(cm, range2.head.line, \"smart\");\n-                                                break;\n-                                            }\n-                                        }\n-                                    } else if (mode.electricInput) {\n-                                        if (mode.electricInput.test(getLine(cm.doc, range2.head.line).text.slice(0, range2.head.ch))) {\n-                                            indented = indentLine(cm, range2.head.line, \"smart\");\n-                                        }\n-                                    }\n-                                    if (indented) {\n-                                        signalLater(cm, \"electricInput\", cm, range2.head.line);\n-                                    }\n-                                }\n-                            }\n+                function renderField(into, typeInfo, options) {\n+                    renderQualifiedField(into, typeInfo, options);\n+                    renderTypeAnnotation(into, typeInfo, options, typeInfo.type);\n+                }\n \n-                            function copyableRanges(cm) {\n-                                var text = [],\n-                                    ranges = [];\n-                                for (var i2 = 0; i2 < cm.doc.sel.ranges.length; i2++) {\n-                                    var line = cm.doc.sel.ranges[i2].head.line;\n-                                    var lineRange = {\n-                                        anchor: Pos(line, 0),\n-                                        head: Pos(line + 1, 0)\n-                                    };\n-                                    ranges.push(lineRange);\n-                                    text.push(cm.getRange(lineRange.anchor, lineRange.head));\n-                                }\n-                                return {\n-                                    text,\n-                                    ranges\n-                                };\n-                            }\n+                function renderQualifiedField(into, typeInfo, options) {\n+                    var _a;\n+                    const fieldName = ((_a = typeInfo.fieldDef) === null || _a === void 0 ? void 0 : _a.name) || '';\n+                    text(into, fieldName, 'field-name', options, (0, _SchemaReference.getFieldReference)(typeInfo));\n+                }\n \n-                            function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n-                                field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n-                                field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n-                                field.setAttribute(\"spellcheck\", !!spellcheck);\n-                            }\n+                function renderDirective(into, typeInfo, options) {\n+                    var _a;\n+                    const name = '@' + (((_a = typeInfo.directiveDef) === null || _a === void 0 ? void 0 : _a.name) || '');\n+                    text(into, name, 'directive-name', options, (0, _SchemaReference.getDirectiveReference)(typeInfo));\n+                }\n \n-                            function hiddenTextarea() {\n-                                var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n-                                var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n-                                if (webkit) {\n-                                    te.style.width = \"1000px\";\n-                                } else {\n-                                    te.setAttribute(\"wrap\", \"off\");\n-                                }\n-                                if (ios) {\n-                                    te.style.border = \"1px solid black\";\n-                                }\n-                                disableBrowserMagic(te);\n-                                return div;\n-                            }\n+                function renderArg(into, typeInfo, options) {\n+                    var _a;\n+                    const name = ((_a = typeInfo.argDef) === null || _a === void 0 ? void 0 : _a.name) || '';\n+                    text(into, name, 'arg-name', options, (0, _SchemaReference.getArgumentReference)(typeInfo));\n+                    renderTypeAnnotation(into, typeInfo, options, typeInfo.inputType);\n+                }\n \n-                            function addEditorMethods(CodeMirror2) {\n-                                var optionHandlers2 = CodeMirror2.optionHandlers;\n-                                var helpers = CodeMirror2.helpers = {};\n-                                CodeMirror2.prototype = {\n-                                    constructor: CodeMirror2,\n-                                    focus: function() {\n-                                        window.focus();\n-                                        this.display.input.focus();\n-                                    },\n-                                    setOption: function(option, value) {\n-                                        var options = this.options,\n-                                            old = options[option];\n-                                        if (options[option] == value && option != \"mode\") {\n-                                            return;\n-                                        }\n-                                        options[option] = value;\n-                                        if (optionHandlers2.hasOwnProperty(option)) {\n-                                            operation(this, optionHandlers2[option])(this, value, old);\n-                                        }\n-                                        signal(this, \"optionChange\", this, option);\n-                                    },\n-                                    getOption: function(option) {\n-                                        return this.options[option];\n-                                    },\n-                                    getDoc: function() {\n-                                        return this.doc;\n-                                    },\n-                                    addKeyMap: function(map2, bottom) {\n-                                        this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map2));\n-                                    },\n-                                    removeKeyMap: function(map2) {\n-                                        var maps = this.state.keyMaps;\n-                                        for (var i2 = 0; i2 < maps.length; ++i2) {\n-                                            if (maps[i2] == map2 || maps[i2].name == map2) {\n-                                                maps.splice(i2, 1);\n-                                                return true;\n-                                            }\n-                                        }\n-                                    },\n-                                    addOverlay: methodOp(function(spec, options) {\n-                                        var mode = spec.token ? spec : CodeMirror2.getMode(this.options, spec);\n-                                        if (mode.startState) {\n-                                            throw new Error(\"Overlays may not be stateful.\");\n-                                        }\n-                                        insertSorted(this.state.overlays, {\n-                                            mode,\n-                                            modeSpec: spec,\n-                                            opaque: options && options.opaque,\n-                                            priority: options && options.priority || 0\n-                                        }, function(overlay) {\n-                                            return overlay.priority;\n-                                        });\n-                                        this.state.modeGen++;\n-                                        regChange(this);\n-                                    }),\n-                                    removeOverlay: methodOp(function(spec) {\n-                                        var overlays = this.state.overlays;\n-                                        for (var i2 = 0; i2 < overlays.length; ++i2) {\n-                                            var cur = overlays[i2].modeSpec;\n-                                            if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n-                                                overlays.splice(i2, 1);\n-                                                this.state.modeGen++;\n-                                                regChange(this);\n-                                                return;\n-                                            }\n-                                        }\n-                                    }),\n-                                    indentLine: methodOp(function(n, dir, aggressive) {\n-                                        if (typeof dir != \"string\" && typeof dir != \"number\") {\n-                                            if (dir == null) {\n-                                                dir = this.options.smartIndent ? \"smart\" : \"prev\";\n-                                            } else {\n-                                                dir = dir ? \"add\" : \"subtract\";\n-                                            }\n-                                        }\n-                                        if (isLine(this.doc, n)) {\n-                                            indentLine(this, n, dir, aggressive);\n-                                        }\n-                                    }),\n-                                    indentSelection: methodOp(function(how) {\n-                                        var ranges = this.doc.sel.ranges,\n-                                            end = -1;\n-                                        for (var i2 = 0; i2 < ranges.length; i2++) {\n-                                            var range2 = ranges[i2];\n-                                            if (!range2.empty()) {\n-                                                var from = range2.from(),\n-                                                    to = range2.to();\n-                                                var start = Math.max(end, from.line);\n-                                                end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n-                                                for (var j = start; j < end; ++j) {\n-                                                    indentLine(this, j, how);\n-                                                }\n-                                                var newRanges = this.doc.sel.ranges;\n-                                                if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i2].from().ch > 0) {\n-                                                    replaceOneSelection(this.doc, i2, new Range(from, newRanges[i2].to()), sel_dontScroll);\n-                                                }\n-                                            } else if (range2.head.line > end) {\n-                                                indentLine(this, range2.head.line, how, true);\n-                                                end = range2.head.line;\n-                                                if (i2 == this.doc.sel.primIndex) {\n-                                                    ensureCursorVisible(this);\n-                                                }\n-                                            }\n-                                        }\n-                                    }),\n-                                    // Fetch the parser token for a given character. Useful for hacks\n-                                    // that want to inspect the mode state (say, for completion).\n-                                    getTokenAt: function(pos, precise) {\n-                                        return takeToken(this, pos, precise);\n-                                    },\n-                                    getLineTokens: function(line, precise) {\n-                                        return takeToken(this, Pos(line), precise, true);\n-                                    },\n-                                    getTokenTypeAt: function(pos) {\n-                                        pos = clipPos(this.doc, pos);\n-                                        var styles = getLineStyles(this, getLine(this.doc, pos.line));\n-                                        var before = 0,\n-                                            after = (styles.length - 1) / 2,\n-                                            ch = pos.ch;\n-                                        var type;\n-                                        if (ch == 0) {\n-                                            type = styles[2];\n-                                        } else {\n-                                            for (;;) {\n-                                                var mid = before + after >> 1;\n-                                                if ((mid ? styles[mid * 2 - 1] : 0) >= ch) {\n-                                                    after = mid;\n-                                                } else if (styles[mid * 2 + 1] < ch) {\n-                                                    before = mid + 1;\n-                                                } else {\n-                                                    type = styles[mid * 2 + 2];\n-                                                    break;\n-                                                }\n-                                            }\n-                                        }\n-                                        var cut = type ? type.indexOf(\"overlay \") : -1;\n-                                        return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);\n-                                    },\n-                                    getModeAt: function(pos) {\n-                                        var mode = this.doc.mode;\n-                                        if (!mode.innerMode) {\n-                                            return mode;\n-                                        }\n-                                        return CodeMirror2.innerMode(mode, this.getTokenAt(pos).state).mode;\n-                                    },\n-                                    getHelper: function(pos, type) {\n-                                        return this.getHelpers(pos, type)[0];\n-                                    },\n-                                    getHelpers: function(pos, type) {\n-                                        var found = [];\n-                                        if (!helpers.hasOwnProperty(type)) {\n-                                            return found;\n-                                        }\n-                                        var help = helpers[type],\n-                                            mode = this.getModeAt(pos);\n-                                        if (typeof mode[type] == \"string\") {\n-                                            if (help[mode[type]]) {\n-                                                found.push(help[mode[type]]);\n-                                            }\n-                                        } else if (mode[type]) {\n-                                            for (var i2 = 0; i2 < mode[type].length; i2++) {\n-                                                var val = help[mode[type][i2]];\n-                                                if (val) {\n-                                                    found.push(val);\n-                                                }\n-                                            }\n-                                        } else if (mode.helperType && help[mode.helperType]) {\n-                                            found.push(help[mode.helperType]);\n-                                        } else if (help[mode.name]) {\n-                                            found.push(help[mode.name]);\n-                                        }\n-                                        for (var i$12 = 0; i$12 < help._global.length; i$12++) {\n-                                            var cur = help._global[i$12];\n-                                            if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) {\n-                                                found.push(cur.val);\n-                                            }\n-                                        }\n-                                        return found;\n-                                    },\n-                                    getStateAfter: function(line, precise) {\n-                                        var doc = this.doc;\n-                                        line = clipLine(doc, line == null ? doc.first + doc.size - 1 : line);\n-                                        return getContextBefore(this, line + 1, precise).state;\n-                                    },\n-                                    cursorCoords: function(start, mode) {\n-                                        var pos,\n-                                            range2 = this.doc.sel.primary();\n-                                        if (start == null) {\n-                                            pos = range2.head;\n-                                        } else if (typeof start == \"object\") {\n-                                            pos = clipPos(this.doc, start);\n-                                        } else {\n-                                            pos = start ? range2.from() : range2.to();\n-                                        }\n-                                        return cursorCoords(this, pos, mode || \"page\");\n-                                    },\n-                                    charCoords: function(pos, mode) {\n-                                        return charCoords(this, clipPos(this.doc, pos), mode || \"page\");\n-                                    },\n-                                    coordsChar: function(coords, mode) {\n-                                        coords = fromCoordSystem(this, coords, mode || \"page\");\n-                                        return coordsChar(this, coords.left, coords.top);\n-                                    },\n-                                    lineAtHeight: function(height, mode) {\n-                                        height = fromCoordSystem(this, {\n-                                            top: height,\n-                                            left: 0\n-                                        }, mode || \"page\").top;\n-                                        return lineAtHeight(this.doc, height + this.display.viewOffset);\n-                                    },\n-                                    heightAtLine: function(line, mode, includeWidgets) {\n-                                        var end = false,\n-                                            lineObj;\n-                                        if (typeof line == \"number\") {\n-                                            var last = this.doc.first + this.doc.size - 1;\n-                                            if (line < this.doc.first) {\n-                                                line = this.doc.first;\n-                                            } else if (line > last) {\n-                                                line = last;\n-                                                end = true;\n-                                            }\n-                                            lineObj = getLine(this.doc, line);\n-                                        } else {\n-                                            lineObj = line;\n-                                        }\n-                                        return intoCoordSystem(this, lineObj, {\n-                                            top: 0,\n-                                            left: 0\n-                                        }, mode || \"page\", includeWidgets || end).top + (end ? this.doc.height - heightAtLine(lineObj) : 0);\n-                                    },\n-                                    defaultTextHeight: function() {\n-                                        return textHeight(this.display);\n-                                    },\n-                                    defaultCharWidth: function() {\n-                                        return charWidth(this.display);\n-                                    },\n-                                    getViewport: function() {\n-                                        return {\n-                                            from: this.display.viewFrom,\n-                                            to: this.display.viewTo\n-                                        };\n-                                    },\n-                                    addWidget: function(pos, node, scroll, vert, horiz) {\n-                                        var display = this.display;\n-                                        pos = cursorCoords(this, clipPos(this.doc, pos));\n-                                        var top = pos.bottom,\n-                                            left = pos.left;\n-                                        node.style.position = \"absolute\";\n-                                        node.setAttribute(\"cm-ignore-events\", \"true\");\n-                                        this.display.input.setUneditable(node);\n-                                        display.sizer.appendChild(node);\n-                                        if (vert == \"over\") {\n-                                            top = pos.top;\n-                                        } else if (vert == \"above\" || vert == \"near\") {\n-                                            var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n-                                                hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n-                                            if ((vert == \"above\" || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) {\n-                                                top = pos.top - node.offsetHeight;\n-                                            } else if (pos.bottom + node.offsetHeight <= vspace) {\n-                                                top = pos.bottom;\n-                                            }\n-                                            if (left + node.offsetWidth > hspace) {\n-                                                left = hspace - node.offsetWidth;\n-                                            }\n-                                        }\n-                                        node.style.top = top + \"px\";\n-                                        node.style.left = node.style.right = \"\";\n-                                        if (horiz == \"right\") {\n-                                            left = display.sizer.clientWidth - node.offsetWidth;\n-                                            node.style.right = \"0px\";\n-                                        } else {\n-                                            if (horiz == \"left\") {\n-                                                left = 0;\n-                                            } else if (horiz == \"middle\") {\n-                                                left = (display.sizer.clientWidth - node.offsetWidth) / 2;\n-                                            }\n-                                            node.style.left = left + \"px\";\n-                                        }\n-                                        if (scroll) {\n-                                            scrollIntoView(this, {\n-                                                left,\n-                                                top,\n-                                                right: left + node.offsetWidth,\n-                                                bottom: top + node.offsetHeight\n-                                            });\n-                                        }\n-                                    },\n-                                    triggerOnKeyDown: methodOp(onKeyDown),\n-                                    triggerOnKeyPress: methodOp(onKeyPress),\n-                                    triggerOnKeyUp: onKeyUp,\n-                                    triggerOnMouseDown: methodOp(onMouseDown),\n-                                    execCommand: function(cmd) {\n-                                        if (commands.hasOwnProperty(cmd)) {\n-                                            return commands[cmd].call(null, this);\n-                                        }\n-                                    },\n-                                    triggerElectric: methodOp(function(text) {\n-                                        triggerElectric(this, text);\n-                                    }),\n-                                    findPosH: function(from, amount, unit, visually) {\n-                                        var dir = 1;\n-                                        if (amount < 0) {\n-                                            dir = -1;\n-                                            amount = -amount;\n-                                        }\n-                                        var cur = clipPos(this.doc, from);\n-                                        for (var i2 = 0; i2 < amount; ++i2) {\n-                                            cur = findPosH(this.doc, cur, dir, unit, visually);\n-                                            if (cur.hitSide) {\n-                                                break;\n-                                            }\n-                                        }\n-                                        return cur;\n-                                    },\n-                                    moveH: methodOp(function(dir, unit) {\n-                                        var this$1$1 = this;\n-                                        this.extendSelectionsBy(function(range2) {\n-                                            if (this$1$1.display.shift || this$1$1.doc.extend || range2.empty()) {\n-                                                return findPosH(this$1$1.doc, range2.head, dir, unit, this$1$1.options.rtlMoveVisually);\n-                                            } else {\n-                                                return dir < 0 ? range2.from() : range2.to();\n-                                            }\n-                                        }, sel_move);\n-                                    }),\n-                                    deleteH: methodOp(function(dir, unit) {\n-                                        var sel = this.doc.sel,\n-                                            doc = this.doc;\n-                                        if (sel.somethingSelected()) {\n-                                            doc.replaceSelection(\"\", null, \"+delete\");\n-                                        } else {\n-                                            deleteNearSelection(this, function(range2) {\n-                                                var other = findPosH(doc, range2.head, dir, unit, false);\n-                                                return dir < 0 ? {\n-                                                    from: other,\n-                                                    to: range2.head\n-                                                } : {\n-                                                    from: range2.head,\n-                                                    to: other\n-                                                };\n-                                            });\n-                                        }\n-                                    }),\n-                                    findPosV: function(from, amount, unit, goalColumn) {\n-                                        var dir = 1,\n-                                            x = goalColumn;\n-                                        if (amount < 0) {\n-                                            dir = -1;\n-                                            amount = -amount;\n-                                        }\n-                                        var cur = clipPos(this.doc, from);\n-                                        for (var i2 = 0; i2 < amount; ++i2) {\n-                                            var coords = cursorCoords(this, cur, \"div\");\n-                                            if (x == null) {\n-                                                x = coords.left;\n-                                            } else {\n-                                                coords.left = x;\n-                                            }\n-                                            cur = findPosV(this, coords, dir, unit);\n-                                            if (cur.hitSide) {\n-                                                break;\n-                                            }\n-                                        }\n-                                        return cur;\n-                                    },\n-                                    moveV: methodOp(function(dir, unit) {\n-                                        var this$1$1 = this;\n-                                        var doc = this.doc,\n-                                            goals = [];\n-                                        var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n-                                        doc.extendSelectionsBy(function(range2) {\n-                                            if (collapse) {\n-                                                return dir < 0 ? range2.from() : range2.to();\n-                                            }\n-                                            var headPos = cursorCoords(this$1$1, range2.head, \"div\");\n-                                            if (range2.goalColumn != null) {\n-                                                headPos.left = range2.goalColumn;\n-                                            }\n-                                            goals.push(headPos.left);\n-                                            var pos = findPosV(this$1$1, headPos, dir, unit);\n-                                            if (unit == \"page\" && range2 == doc.sel.primary()) {\n-                                                addToScrollTop(this$1$1, charCoords(this$1$1, pos, \"div\").top - headPos.top);\n-                                            }\n-                                            return pos;\n-                                        }, sel_move);\n-                                        if (goals.length) {\n-                                            for (var i2 = 0; i2 < doc.sel.ranges.length; i2++) {\n-                                                doc.sel.ranges[i2].goalColumn = goals[i2];\n-                                            }\n-                                        }\n-                                    }),\n-                                    // Find the word at the given position (as returned by coordsChar).\n-                                    findWordAt: function(pos) {\n-                                        var doc = this.doc,\n-                                            line = getLine(doc, pos.line).text;\n-                                        var start = pos.ch,\n-                                            end = pos.ch;\n-                                        if (line) {\n-                                            var helper = this.getHelper(pos, \"wordChars\");\n-                                            if ((pos.sticky == \"before\" || end == line.length) && start) {\n-                                                --start;\n-                                            } else {\n-                                                ++end;\n-                                            }\n-                                            var startChar = line.charAt(start);\n-                                            var check = isWordChar(startChar, helper) ? function(ch) {\n-                                                return isWordChar(ch, helper);\n-                                            } : /\\s/.test(startChar) ? function(ch) {\n-                                                return /\\s/.test(ch);\n-                                            } : function(ch) {\n-                                                return !/\\s/.test(ch) && !isWordChar(ch);\n-                                            };\n-                                            while (start > 0 && check(line.charAt(start - 1))) {\n-                                                --start;\n-                                            }\n-                                            while (end < line.length && check(line.charAt(end))) {\n-                                                ++end;\n-                                            }\n-                                        }\n-                                        return new Range(Pos(pos.line, start), Pos(pos.line, end));\n-                                    },\n-                                    toggleOverwrite: function(value) {\n-                                        if (value != null && value == this.state.overwrite) {\n-                                            return;\n-                                        }\n-                                        if (this.state.overwrite = !this.state.overwrite) {\n-                                            addClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n-                                        } else {\n-                                            rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n-                                        }\n-                                        signal(this, \"overwriteToggle\", this, this.state.overwrite);\n-                                    },\n-                                    hasFocus: function() {\n-                                        return this.display.input.getField() == activeElt();\n-                                    },\n-                                    isReadOnly: function() {\n-                                        return !!(this.options.readOnly || this.doc.cantEdit);\n-                                    },\n-                                    scrollTo: methodOp(function(x, y) {\n-                                        scrollToCoords(this, x, y);\n-                                    }),\n-                                    getScrollInfo: function() {\n-                                        var scroller = this.display.scroller;\n-                                        return {\n-                                            left: scroller.scrollLeft,\n-                                            top: scroller.scrollTop,\n-                                            height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n-                                            width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n-                                            clientHeight: displayHeight(this),\n-                                            clientWidth: displayWidth(this)\n-                                        };\n-                                    },\n-                                    scrollIntoView: methodOp(function(range2, margin) {\n-                                        if (range2 == null) {\n-                                            range2 = {\n-                                                from: this.doc.sel.primary().head,\n-                                                to: null\n-                                            };\n-                                            if (margin == null) {\n-                                                margin = this.options.cursorScrollMargin;\n-                                            }\n-                                        } else if (typeof range2 == \"number\") {\n-                                            range2 = {\n-                                                from: Pos(range2, 0),\n-                                                to: null\n-                                            };\n-                                        } else if (range2.from == null) {\n-                                            range2 = {\n-                                                from: range2,\n-                                                to: null\n-                                            };\n-                                        }\n-                                        if (!range2.to) {\n-                                            range2.to = range2.from;\n-                                        }\n-                                        range2.margin = margin || 0;\n-                                        if (range2.from.line != null) {\n-                                            scrollToRange(this, range2);\n-                                        } else {\n-                                            scrollToCoordsRange(this, range2.from, range2.to, range2.margin);\n-                                        }\n-                                    }),\n-                                    setSize: methodOp(function(width, height) {\n-                                        var this$1$1 = this;\n-                                        var interpret = function(val) {\n-                                            return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val;\n-                                        };\n-                                        if (width != null) {\n-                                            this.display.wrapper.style.width = interpret(width);\n-                                        }\n-                                        if (height != null) {\n-                                            this.display.wrapper.style.height = interpret(height);\n-                                        }\n-                                        if (this.options.lineWrapping) {\n-                                            clearLineMeasurementCache(this);\n-                                        }\n-                                        var lineNo2 = this.display.viewFrom;\n-                                        this.doc.iter(lineNo2, this.display.viewTo, function(line) {\n-                                            if (line.widgets) {\n-                                                for (var i2 = 0; i2 < line.widgets.length; i2++) {\n-                                                    if (line.widgets[i2].noHScroll) {\n-                                                        regLineChange(this$1$1, lineNo2, \"widget\");\n-                                                        break;\n-                                                    }\n-                                                }\n-                                            }\n-                                            ++lineNo2;\n-                                        });\n-                                        this.curOp.forceUpdate = true;\n-                                        signal(this, \"refresh\", this);\n-                                    }),\n-                                    operation: function(f) {\n-                                        return runInOp(this, f);\n-                                    },\n-                                    startOperation: function() {\n-                                        return startOperation(this);\n-                                    },\n-                                    endOperation: function() {\n-                                        return endOperation(this);\n-                                    },\n-                                    refresh: methodOp(function() {\n-                                        var oldHeight = this.display.cachedTextHeight;\n-                                        regChange(this);\n-                                        this.curOp.forceUpdate = true;\n-                                        clearCaches(this);\n-                                        scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n-                                        updateGutterSpace(this.display);\n-                                        if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > 0.5 || this.options.lineWrapping) {\n-                                            estimateLineHeights(this);\n-                                        }\n-                                        signal(this, \"refresh\", this);\n-                                    }),\n-                                    swapDoc: methodOp(function(doc) {\n-                                        var old = this.doc;\n-                                        old.cm = null;\n-                                        if (this.state.selectingText) {\n-                                            this.state.selectingText();\n-                                        }\n-                                        attachDoc(this, doc);\n-                                        clearCaches(this);\n-                                        this.display.input.reset();\n-                                        scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n-                                        this.curOp.forceScroll = true;\n-                                        signalLater(this, \"swapDoc\", this, old);\n-                                        return old;\n-                                    }),\n-                                    phrase: function(phraseText) {\n-                                        var phrases = this.options.phrases;\n-                                        return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText;\n-                                    },\n-                                    getInputField: function() {\n-                                        return this.display.input.getField();\n-                                    },\n-                                    getWrapperElement: function() {\n-                                        return this.display.wrapper;\n-                                    },\n-                                    getScrollerElement: function() {\n-                                        return this.display.scroller;\n-                                    },\n-                                    getGutterElement: function() {\n-                                        return this.display.gutters;\n-                                    }\n-                                };\n-                                eventMixin(CodeMirror2);\n-                                CodeMirror2.registerHelper = function(type, name, value) {\n-                                    if (!helpers.hasOwnProperty(type)) {\n-                                        helpers[type] = CodeMirror2[type] = {\n-                                            _global: []\n-                                        };\n-                                    }\n-                                    helpers[type][name] = value;\n-                                };\n-                                CodeMirror2.registerGlobalHelper = function(type, name, predicate, value) {\n-                                    CodeMirror2.registerHelper(type, name, value);\n-                                    helpers[type]._global.push({\n-                                        pred: predicate,\n-                                        val: value\n-                                    });\n-                                };\n-                            }\n+                function renderEnumValue(into, typeInfo, options) {\n+                    var _a;\n+                    const name = ((_a = typeInfo.enumValue) === null || _a === void 0 ? void 0 : _a.name) || '';\n+                    renderType(into, typeInfo, options, typeInfo.inputType);\n+                    text(into, '.');\n+                    text(into, name, 'enum-value', options, (0, _SchemaReference.getEnumValueReference)(typeInfo));\n+                }\n \n-                            function findPosH(doc, pos, dir, unit, visually) {\n-                                var oldPos = pos;\n-                                var origDir = dir;\n-                                var lineObj = getLine(doc, pos.line);\n-                                var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n-\n-                                function findNextLine() {\n-                                    var l = pos.line + lineDir;\n-                                    if (l < doc.first || l >= doc.first + doc.size) {\n-                                        return false;\n-                                    }\n-                                    pos = new Pos(l, pos.ch, pos.sticky);\n-                                    return lineObj = getLine(doc, l);\n-                                }\n+                function renderTypeAnnotation(into, typeInfo, options, t) {\n+                    const typeSpan = document.createElement('span');\n+                    typeSpan.className = 'type-name-pill';\n+                    if (t instanceof _graphql.GraphQLNonNull) {\n+                        renderType(typeSpan, typeInfo, options, t.ofType);\n+                        text(typeSpan, '!');\n+                    } else if (t instanceof _graphql.GraphQLList) {\n+                        text(typeSpan, '[');\n+                        renderType(typeSpan, typeInfo, options, t.ofType);\n+                        text(typeSpan, ']');\n+                    } else {\n+                        text(typeSpan, (t === null || t === void 0 ? void 0 : t.name) || '', 'type-name', options, (0, _SchemaReference.getTypeReference)(typeInfo, t));\n+                    }\n+                    into.append(typeSpan);\n+                }\n \n-                                function moveOnce(boundToLine) {\n-                                    var next;\n-                                    if (unit == \"codepoint\") {\n-                                        var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n-                                        if (isNaN(ch)) {\n-                                            next = null;\n-                                        } else {\n-                                            var astral = dir > 0 ? ch >= 55296 && ch < 56320 : ch >= 56320 && ch < 57343;\n-                                            next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n-                                        }\n-                                    } else if (visually) {\n-                                        next = moveVisually(doc.cm, lineObj, pos, dir);\n-                                    } else {\n-                                        next = moveLogically(lineObj, pos, dir);\n-                                    }\n-                                    if (next == null) {\n-                                        if (!boundToLine && findNextLine()) {\n-                                            pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir);\n-                                        } else {\n-                                            return false;\n-                                        }\n-                                    } else {\n-                                        pos = next;\n-                                    }\n-                                    return true;\n-                                }\n-                                if (unit == \"char\" || unit == \"codepoint\") {\n-                                    moveOnce();\n-                                } else if (unit == \"column\") {\n-                                    moveOnce(true);\n-                                } else if (unit == \"word\" || unit == \"group\") {\n-                                    var sawType = null,\n-                                        group = unit == \"group\";\n-                                    var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n-                                    for (var first = true;; first = false) {\n-                                        if (dir < 0 && !moveOnce(!first)) {\n-                                            break;\n-                                        }\n-                                        var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n-                                        var type = isWordChar(cur, helper) ? \"w\" : group && cur == \"\\n\" ? \"n\" : !group || /\\s/.test(cur) ? null : \"p\";\n-                                        if (group && !first && !type) {\n-                                            type = \"s\";\n-                                        }\n-                                        if (sawType && sawType != type) {\n-                                            if (dir < 0) {\n-                                                dir = 1;\n-                                                moveOnce();\n-                                                pos.sticky = \"after\";\n-                                            }\n-                                            break;\n-                                        }\n-                                        if (type) {\n-                                            sawType = type;\n-                                        }\n-                                        if (dir > 0 && !moveOnce(!first)) {\n-                                            break;\n-                                        }\n-                                    }\n-                                }\n-                                var result = skipAtomic(doc, pos, oldPos, origDir, true);\n-                                if (equalCursorPos(oldPos, result)) {\n-                                    result.hitSide = true;\n-                                }\n-                                return result;\n-                            }\n+                function renderType(into, typeInfo, options, t) {\n+                    if (t instanceof _graphql.GraphQLNonNull) {\n+                        renderType(into, typeInfo, options, t.ofType);\n+                        text(into, '!');\n+                    } else if (t instanceof _graphql.GraphQLList) {\n+                        text(into, '[');\n+                        renderType(into, typeInfo, options, t.ofType);\n+                        text(into, ']');\n+                    } else {\n+                        text(into, (t === null || t === void 0 ? void 0 : t.name) || '', 'type-name', options, (0, _SchemaReference.getTypeReference)(typeInfo, t));\n+                    }\n+                }\n \n-                            function findPosV(cm, pos, dir, unit) {\n-                                var doc = cm.doc,\n-                                    x = pos.left,\n-                                    y;\n-                                if (unit == \"page\") {\n-                                    var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n-                                    var moveAmount = Math.max(pageSize - 0.5 * textHeight(cm.display), 3);\n-                                    y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n-                                } else if (unit == \"line\") {\n-                                    y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n-                                }\n-                                var target;\n-                                for (;;) {\n-                                    target = coordsChar(cm, x, y);\n-                                    if (!target.outside) {\n-                                        break;\n-                                    }\n-                                    if (dir < 0 ? y <= 0 : y >= doc.height) {\n-                                        target.hitSide = true;\n-                                        break;\n-                                    }\n-                                    y += dir * 5;\n-                                }\n-                                return target;\n-                            }\n-                            var ContentEditableInput = function(cm) {\n-                                this.cm = cm;\n-                                this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n-                                this.polling = new Delayed();\n-                                this.composing = null;\n-                                this.gracePeriod = false;\n-                                this.readDOMTimeout = null;\n-                            };\n-                            ContentEditableInput.prototype.init = function(display) {\n-                                var this$1$1 = this;\n-                                var input = this,\n-                                    cm = input.cm;\n-                                var div = input.div = display.lineDiv;\n-                                div.contentEditable = true;\n-                                disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n-\n-                                function belongsToInput(e) {\n-                                    for (var t = e.target; t; t = t.parentNode) {\n-                                        if (t == div) {\n-                                            return true;\n-                                        }\n-                                        if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) {\n-                                            break;\n-                                        }\n-                                    }\n-                                    return false;\n-                                }\n-                                on(div, \"paste\", function(e) {\n-                                    if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n-                                        return;\n-                                    }\n-                                    if (ie_version <= 11) {\n-                                        setTimeout(operation(cm, function() {\n-                                            return this$1$1.updateFromDOM();\n-                                        }), 20);\n-                                    }\n-                                });\n-                                on(div, \"compositionstart\", function(e) {\n-                                    this$1$1.composing = {\n-                                        data: e.data,\n-                                        done: false\n-                                    };\n-                                });\n-                                on(div, \"compositionupdate\", function(e) {\n-                                    if (!this$1$1.composing) {\n-                                        this$1$1.composing = {\n-                                            data: e.data,\n-                                            done: false\n-                                        };\n-                                    }\n-                                });\n-                                on(div, \"compositionend\", function(e) {\n-                                    if (this$1$1.composing) {\n-                                        if (e.data != this$1$1.composing.data) {\n-                                            this$1$1.readFromDOMSoon();\n-                                        }\n-                                        this$1$1.composing.done = true;\n-                                    }\n-                                });\n-                                on(div, \"touchstart\", function() {\n-                                    return input.forceCompositionEnd();\n-                                });\n-                                on(div, \"input\", function() {\n-                                    if (!this$1$1.composing) {\n-                                        this$1$1.readFromDOMSoon();\n-                                    }\n-                                });\n+                function renderDescription(into, options, def) {\n+                    const {\n+                        description\n+                    } = def;\n+                    if (description) {\n+                        const descriptionDiv = document.createElement('div');\n+                        descriptionDiv.className = 'info-description';\n+                        if (options.renderDescription) {\n+                            descriptionDiv.innerHTML = options.renderDescription(description);\n+                        } else {\n+                            descriptionDiv.append(document.createTextNode(description));\n+                        }\n+                        into.append(descriptionDiv);\n+                    }\n+                    renderDeprecation(into, options, def);\n+                }\n \n-                                function onCopyCut(e) {\n-                                    if (!belongsToInput(e) || signalDOMEvent(cm, e)) {\n-                                        return;\n-                                    }\n-                                    if (cm.somethingSelected()) {\n-                                        setLastCopied({\n-                                            lineWise: false,\n-                                            text: cm.getSelections()\n-                                        });\n-                                        if (e.type == \"cut\") {\n-                                            cm.replaceSelection(\"\", null, \"cut\");\n-                                        }\n-                                    } else if (!cm.options.lineWiseCopyCut) {\n-                                        return;\n-                                    } else {\n-                                        var ranges = copyableRanges(cm);\n-                                        setLastCopied({\n-                                            lineWise: true,\n-                                            text: ranges.text\n-                                        });\n-                                        if (e.type == \"cut\") {\n-                                            cm.operation(function() {\n-                                                cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n-                                                cm.replaceSelection(\"\", null, \"cut\");\n-                                            });\n-                                        }\n-                                    }\n-                                    if (e.clipboardData) {\n-                                        e.clipboardData.clearData();\n-                                        var content = lastCopied.text.join(\"\\n\");\n-                                        e.clipboardData.setData(\"Text\", content);\n-                                        if (e.clipboardData.getData(\"Text\") == content) {\n-                                            e.preventDefault();\n-                                            return;\n-                                        }\n-                                    }\n-                                    var kludge = hiddenTextarea(),\n-                                        te = kludge.firstChild;\n-                                    cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n-                                    te.value = lastCopied.text.join(\"\\n\");\n-                                    var hadFocus = activeElt();\n-                                    selectInput(te);\n-                                    setTimeout(function() {\n-                                        cm.display.lineSpace.removeChild(kludge);\n-                                        hadFocus.focus();\n-                                        if (hadFocus == div) {\n-                                            input.showPrimarySelection();\n-                                        }\n-                                    }, 50);\n-                                }\n-                                on(div, \"copy\", onCopyCut);\n-                                on(div, \"cut\", onCopyCut);\n-                            };\n-                            ContentEditableInput.prototype.screenReaderLabelChanged = function(label) {\n-                                if (label) {\n-                                    this.div.setAttribute(\"aria-label\", label);\n-                                } else {\n-                                    this.div.removeAttribute(\"aria-label\");\n-                                }\n-                            };\n-                            ContentEditableInput.prototype.prepareSelection = function() {\n-                                var result = prepareSelection(this.cm, false);\n-                                result.focus = activeElt() == this.div;\n-                                return result;\n-                            };\n-                            ContentEditableInput.prototype.showSelection = function(info, takeFocus) {\n-                                if (!info || !this.cm.display.view.length) {\n-                                    return;\n-                                }\n-                                if (info.focus || takeFocus) {\n-                                    this.showPrimarySelection();\n-                                }\n-                                this.showMultipleSelections(info);\n-                            };\n-                            ContentEditableInput.prototype.getSelection = function() {\n-                                return this.cm.display.wrapper.ownerDocument.getSelection();\n-                            };\n-                            ContentEditableInput.prototype.showPrimarySelection = function() {\n-                                var sel = this.getSelection(),\n-                                    cm = this.cm,\n-                                    prim = cm.doc.sel.primary();\n-                                var from = prim.from(),\n-                                    to = prim.to();\n-                                if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n-                                    sel.removeAllRanges();\n-                                    return;\n-                                }\n-                                var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n-                                var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n-                                if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && cmp(minPos(curAnchor, curFocus), from) == 0 && cmp(maxPos(curAnchor, curFocus), to) == 0) {\n-                                    return;\n-                                }\n-                                var view = cm.display.view;\n-                                var start = from.line >= cm.display.viewFrom && posToDOM(cm, from) || {\n-                                    node: view[0].measure.map[2],\n-                                    offset: 0\n-                                };\n-                                var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n-                                if (!end) {\n-                                    var measure = view[view.length - 1].measure;\n-                                    var map2 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n-                                    end = {\n-                                        node: map2[map2.length - 1],\n-                                        offset: map2[map2.length - 2] - map2[map2.length - 3]\n-                                    };\n-                                }\n-                                if (!start || !end) {\n-                                    sel.removeAllRanges();\n-                                    return;\n-                                }\n-                                var old = sel.rangeCount && sel.getRangeAt(0),\n-                                    rng;\n-                                try {\n-                                    rng = range(start.node, start.offset, end.offset, end.node);\n-                                } catch (e) {}\n-                                if (rng) {\n-                                    if (!gecko && cm.state.focused) {\n-                                        sel.collapse(start.node, start.offset);\n-                                        if (!rng.collapsed) {\n-                                            sel.removeAllRanges();\n-                                            sel.addRange(rng);\n-                                        }\n-                                    } else {\n-                                        sel.removeAllRanges();\n-                                        sel.addRange(rng);\n-                                    }\n-                                    if (old && sel.anchorNode == null) {\n-                                        sel.addRange(old);\n-                                    } else if (gecko) {\n-                                        this.startGracePeriod();\n-                                    }\n-                                }\n-                                this.rememberSelection();\n-                            };\n-                            ContentEditableInput.prototype.startGracePeriod = function() {\n-                                var this$1$1 = this;\n-                                clearTimeout(this.gracePeriod);\n-                                this.gracePeriod = setTimeout(function() {\n-                                    this$1$1.gracePeriod = false;\n-                                    if (this$1$1.selectionChanged()) {\n-                                        this$1$1.cm.operation(function() {\n-                                            return this$1$1.cm.curOp.selectionChanged = true;\n-                                        });\n-                                    }\n-                                }, 20);\n-                            };\n-                            ContentEditableInput.prototype.showMultipleSelections = function(info) {\n-                                removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n-                                removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n-                            };\n-                            ContentEditableInput.prototype.rememberSelection = function() {\n-                                var sel = this.getSelection();\n-                                this.lastAnchorNode = sel.anchorNode;\n-                                this.lastAnchorOffset = sel.anchorOffset;\n-                                this.lastFocusNode = sel.focusNode;\n-                                this.lastFocusOffset = sel.focusOffset;\n-                            };\n-                            ContentEditableInput.prototype.selectionInEditor = function() {\n-                                var sel = this.getSelection();\n-                                if (!sel.rangeCount) {\n-                                    return false;\n-                                }\n-                                var node = sel.getRangeAt(0).commonAncestorContainer;\n-                                return contains(this.div, node);\n-                            };\n-                            ContentEditableInput.prototype.focus = function() {\n-                                if (this.cm.options.readOnly != \"nocursor\") {\n-                                    if (!this.selectionInEditor() || activeElt() != this.div) {\n-                                        this.showSelection(this.prepareSelection(), true);\n-                                    }\n-                                    this.div.focus();\n-                                }\n-                            };\n-                            ContentEditableInput.prototype.blur = function() {\n-                                this.div.blur();\n-                            };\n-                            ContentEditableInput.prototype.getField = function() {\n-                                return this.div;\n-                            };\n-                            ContentEditableInput.prototype.supportsTouch = function() {\n-                                return true;\n-                            };\n-                            ContentEditableInput.prototype.receivedFocus = function() {\n-                                var this$1$1 = this;\n-                                var input = this;\n-                                if (this.selectionInEditor()) {\n-                                    setTimeout(function() {\n-                                        return this$1$1.pollSelection();\n-                                    }, 20);\n-                                } else {\n-                                    runInOp(this.cm, function() {\n-                                        return input.cm.curOp.selectionChanged = true;\n-                                    });\n-                                }\n+                function renderDeprecation(into, options, def) {\n+                    const reason = def.deprecationReason;\n+                    if (reason) {\n+                        const deprecationDiv = document.createElement('div');\n+                        deprecationDiv.className = 'info-deprecation';\n+                        into.append(deprecationDiv);\n+                        const label = document.createElement('span');\n+                        label.className = 'info-deprecation-label';\n+                        label.append(document.createTextNode('Deprecated'));\n+                        deprecationDiv.append(label);\n+                        const reasonDiv = document.createElement('div');\n+                        reasonDiv.className = 'info-deprecation-reason';\n+                        if (options.renderDescription) {\n+                            reasonDiv.innerHTML = options.renderDescription(reason);\n+                        } else {\n+                            reasonDiv.append(document.createTextNode(reason));\n+                        }\n+                        deprecationDiv.append(reasonDiv);\n+                    }\n+                }\n \n-                                function poll() {\n-                                    if (input.cm.state.focused) {\n-                                        input.pollSelection();\n-                                        input.polling.set(input.cm.options.pollInterval, poll);\n-                                    }\n-                                }\n-                                this.polling.set(this.cm.options.pollInterval, poll);\n-                            };\n-                            ContentEditableInput.prototype.selectionChanged = function() {\n-                                var sel = this.getSelection();\n-                                return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset;\n-                            };\n-                            ContentEditableInput.prototype.pollSelection = function() {\n-                                if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) {\n-                                    return;\n-                                }\n-                                var sel = this.getSelection(),\n-                                    cm = this.cm;\n-                                if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n-                                    this.cm.triggerOnKeyDown({\n-                                        type: \"keydown\",\n-                                        keyCode: 8,\n-                                        preventDefault: Math.abs\n-                                    });\n-                                    this.blur();\n-                                    this.focus();\n-                                    return;\n-                                }\n-                                if (this.composing) {\n-                                    return;\n-                                }\n-                                this.rememberSelection();\n-                                var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n-                                var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n-                                if (anchor && head) {\n-                                    runInOp(cm, function() {\n-                                        setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n-                                        if (anchor.bad || head.bad) {\n-                                            cm.curOp.selectionChanged = true;\n-                                        }\n-                                    });\n-                                }\n-                            };\n-                            ContentEditableInput.prototype.pollContent = function() {\n-                                if (this.readDOMTimeout != null) {\n-                                    clearTimeout(this.readDOMTimeout);\n-                                    this.readDOMTimeout = null;\n-                                }\n-                                var cm = this.cm,\n-                                    display = cm.display,\n-                                    sel = cm.doc.sel.primary();\n-                                var from = sel.from(),\n-                                    to = sel.to();\n-                                if (from.ch == 0 && from.line > cm.firstLine()) {\n-                                    from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length);\n-                                }\n-                                if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) {\n-                                    to = Pos(to.line + 1, 0);\n-                                }\n-                                if (from.line < display.viewFrom || to.line > display.viewTo - 1) {\n-                                    return false;\n-                                }\n-                                var fromIndex, fromLine, fromNode;\n-                                if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n-                                    fromLine = lineNo(display.view[0].line);\n-                                    fromNode = display.view[0].node;\n-                                } else {\n-                                    fromLine = lineNo(display.view[fromIndex].line);\n-                                    fromNode = display.view[fromIndex - 1].node.nextSibling;\n-                                }\n-                                var toIndex = findViewIndex(cm, to.line);\n-                                var toLine, toNode;\n-                                if (toIndex == display.view.length - 1) {\n-                                    toLine = display.viewTo - 1;\n-                                    toNode = display.lineDiv.lastChild;\n-                                } else {\n-                                    toLine = lineNo(display.view[toIndex + 1].line) - 1;\n-                                    toNode = display.view[toIndex + 1].node.previousSibling;\n-                                }\n-                                if (!fromNode) {\n-                                    return false;\n-                                }\n-                                var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n-                                var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n-                                while (newText.length > 1 && oldText.length > 1) {\n-                                    if (lst(newText) == lst(oldText)) {\n-                                        newText.pop();\n-                                        oldText.pop();\n-                                        toLine--;\n-                                    } else if (newText[0] == oldText[0]) {\n-                                        newText.shift();\n-                                        oldText.shift();\n-                                        fromLine++;\n-                                    } else {\n-                                        break;\n-                                    }\n-                                }\n-                                var cutFront = 0,\n-                                    cutEnd = 0;\n-                                var newTop = newText[0],\n-                                    oldTop = oldText[0],\n-                                    maxCutFront = Math.min(newTop.length, oldTop.length);\n-                                while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) {\n-                                    ++cutFront;\n-                                }\n-                                var newBot = lst(newText),\n-                                    oldBot = lst(oldText);\n-                                var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), oldBot.length - (oldText.length == 1 ? cutFront : 0));\n-                                while (cutEnd < maxCutEnd && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n-                                    ++cutEnd;\n-                                }\n-                                if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n-                                    while (cutFront && cutFront > from.ch && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n-                                        cutFront--;\n-                                        cutEnd++;\n-                                    }\n-                                }\n-                                newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n-                                newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n-                                var chFrom = Pos(fromLine, cutFront);\n-                                var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n-                                if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n-                                    replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n-                                    return true;\n-                                }\n-                            };\n-                            ContentEditableInput.prototype.ensurePolled = function() {\n-                                this.forceCompositionEnd();\n-                            };\n-                            ContentEditableInput.prototype.reset = function() {\n-                                this.forceCompositionEnd();\n-                            };\n-                            ContentEditableInput.prototype.forceCompositionEnd = function() {\n-                                if (!this.composing) {\n-                                    return;\n-                                }\n-                                clearTimeout(this.readDOMTimeout);\n-                                this.composing = null;\n-                                this.updateFromDOM();\n-                                this.div.blur();\n-                                this.div.focus();\n-                            };\n-                            ContentEditableInput.prototype.readFromDOMSoon = function() {\n-                                var this$1$1 = this;\n-                                if (this.readDOMTimeout != null) {\n-                                    return;\n-                                }\n-                                this.readDOMTimeout = setTimeout(function() {\n-                                    this$1$1.readDOMTimeout = null;\n-                                    if (this$1$1.composing) {\n-                                        if (this$1$1.composing.done) {\n-                                            this$1$1.composing = null;\n-                                        } else {\n-                                            return;\n-                                        }\n-                                    }\n-                                    this$1$1.updateFromDOM();\n-                                }, 80);\n-                            };\n-                            ContentEditableInput.prototype.updateFromDOM = function() {\n-                                var this$1$1 = this;\n-                                if (this.cm.isReadOnly() || !this.pollContent()) {\n-                                    runInOp(this.cm, function() {\n-                                        return regChange(this$1$1.cm);\n-                                    });\n-                                }\n-                            };\n-                            ContentEditableInput.prototype.setUneditable = function(node) {\n-                                node.contentEditable = \"false\";\n-                            };\n-                            ContentEditableInput.prototype.onKeyPress = function(e) {\n-                                if (e.charCode == 0 || this.composing) {\n-                                    return;\n-                                }\n+                function text(into, content, className = '', options = {\n+                    onClick: null\n+                }, ref = null) {\n+                    if (className) {\n+                        const {\n+                            onClick\n+                        } = options;\n+                        let node;\n+                        if (onClick) {\n+                            node = document.createElement('a');\n+                            node.href = 'javascript:void 0';\n+                            node.addEventListener('click', e => {\n                                 e.preventDefault();\n-                                if (!this.cm.isReadOnly()) {\n-                                    operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0);\n-                                }\n-                            };\n-                            ContentEditableInput.prototype.readOnlyChanged = function(val) {\n-                                this.div.contentEditable = String(val != \"nocursor\");\n-                            };\n-                            ContentEditableInput.prototype.onContextMenu = function() {};\n-                            ContentEditableInput.prototype.resetPosition = function() {};\n-                            ContentEditableInput.prototype.needsContentAttribute = true;\n-\n-                            function posToDOM(cm, pos) {\n-                                var view = findViewForLine(cm, pos.line);\n-                                if (!view || view.hidden) {\n-                                    return null;\n-                                }\n-                                var line = getLine(cm.doc, pos.line);\n-                                var info = mapFromLineView(view, line, pos.line);\n-                                var order = getOrder(line, cm.doc.direction),\n-                                    side = \"left\";\n-                                if (order) {\n-                                    var partPos = getBidiPartAt(order, pos.ch);\n-                                    side = partPos % 2 ? \"right\" : \"left\";\n-                                }\n-                                var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n-                                result.offset = result.collapse == \"right\" ? result.end : result.start;\n-                                return result;\n-                            }\n-\n-                            function isInGutter(node) {\n-                                for (var scan = node; scan; scan = scan.parentNode) {\n-                                    if (/CodeMirror-gutter-wrapper/.test(scan.className)) {\n-                                        return true;\n-                                    }\n-                                }\n-                                return false;\n-                            }\n-\n-                            function badPos(pos, bad) {\n-                                if (bad) {\n-                                    pos.bad = true;\n-                                }\n-                                return pos;\n-                            }\n-\n-                            function domTextBetween(cm, from, to, fromLine, toLine) {\n-                                var text = \"\",\n-                                    closing = false,\n-                                    lineSep = cm.doc.lineSeparator(),\n-                                    extraLinebreak = false;\n-\n-                                function recognizeMarker(id) {\n-                                    return function(marker) {\n-                                        return marker.id == id;\n-                                    };\n-                                }\n-\n-                                function close() {\n-                                    if (closing) {\n-                                        text += lineSep;\n-                                        if (extraLinebreak) {\n-                                            text += lineSep;\n-                                        }\n-                                        closing = extraLinebreak = false;\n-                                    }\n-                                }\n-\n-                                function addText(str) {\n-                                    if (str) {\n-                                        close();\n-                                        text += str;\n-                                    }\n-                                }\n-\n-                                function walk(node) {\n-                                    if (node.nodeType == 1) {\n-                                        var cmText = node.getAttribute(\"cm-text\");\n-                                        if (cmText) {\n-                                            addText(cmText);\n-                                            return;\n-                                        }\n-                                        var markerID = node.getAttribute(\"cm-marker\"),\n-                                            range2;\n-                                        if (markerID) {\n-                                            var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n-                                            if (found.length && (range2 = found[0].find(0))) {\n-                                                addText(getBetween(cm.doc, range2.from, range2.to).join(lineSep));\n-                                            }\n-                                            return;\n-                                        }\n-                                        if (node.getAttribute(\"contenteditable\") == \"false\") {\n-                                            return;\n-                                        }\n-                                        var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n-                                        if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) {\n-                                            return;\n-                                        }\n-                                        if (isBlock) {\n-                                            close();\n-                                        }\n-                                        for (var i2 = 0; i2 < node.childNodes.length; i2++) {\n-                                            walk(node.childNodes[i2]);\n-                                        }\n-                                        if (/^(pre|p)$/i.test(node.nodeName)) {\n-                                            extraLinebreak = true;\n-                                        }\n-                                        if (isBlock) {\n-                                            closing = true;\n-                                        }\n-                                    } else if (node.nodeType == 3) {\n-                                        addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n-                                    }\n-                                }\n-                                for (;;) {\n-                                    walk(from);\n-                                    if (from == to) {\n-                                        break;\n-                                    }\n-                                    from = from.nextSibling;\n-                                    extraLinebreak = false;\n-                                }\n-                                return text;\n-                            }\n-\n-                            function domToPos(cm, node, offset) {\n-                                var lineNode;\n-                                if (node == cm.display.lineDiv) {\n-                                    lineNode = cm.display.lineDiv.childNodes[offset];\n-                                    if (!lineNode) {\n-                                        return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true);\n-                                    }\n-                                    node = null;\n-                                    offset = 0;\n-                                } else {\n-                                    for (lineNode = node;; lineNode = lineNode.parentNode) {\n-                                        if (!lineNode || lineNode == cm.display.lineDiv) {\n-                                            return null;\n-                                        }\n-                                        if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) {\n-                                            break;\n-                                        }\n-                                    }\n-                                }\n-                                for (var i2 = 0; i2 < cm.display.view.length; i2++) {\n-                                    var lineView = cm.display.view[i2];\n-                                    if (lineView.node == lineNode) {\n-                                        return locateNodeInLineView(lineView, node, offset);\n-                                    }\n-                                }\n-                            }\n-\n-                            function locateNodeInLineView(lineView, node, offset) {\n-                                var wrapper = lineView.text.firstChild,\n-                                    bad = false;\n-                                if (!node || !contains(wrapper, node)) {\n-                                    return badPos(Pos(lineNo(lineView.line), 0), true);\n-                                }\n-                                if (node == wrapper) {\n-                                    bad = true;\n-                                    node = wrapper.childNodes[offset];\n-                                    offset = 0;\n-                                    if (!node) {\n-                                        var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n-                                        return badPos(Pos(lineNo(line), line.text.length), bad);\n-                                    }\n-                                }\n-                                var textNode = node.nodeType == 3 ? node : null,\n-                                    topNode = node;\n-                                if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n-                                    textNode = node.firstChild;\n-                                    if (offset) {\n-                                        offset = textNode.nodeValue.length;\n-                                    }\n-                                }\n-                                while (topNode.parentNode != wrapper) {\n-                                    topNode = topNode.parentNode;\n-                                }\n-                                var measure = lineView.measure,\n-                                    maps = measure.maps;\n-\n-                                function find(textNode2, topNode2, offset2) {\n-                                    for (var i2 = -1; i2 < (maps ? maps.length : 0); i2++) {\n-                                        var map2 = i2 < 0 ? measure.map : maps[i2];\n-                                        for (var j = 0; j < map2.length; j += 3) {\n-                                            var curNode = map2[j + 2];\n-                                            if (curNode == textNode2 || curNode == topNode2) {\n-                                                var line2 = lineNo(i2 < 0 ? lineView.line : lineView.rest[i2]);\n-                                                var ch = map2[j] + offset2;\n-                                                if (offset2 < 0 || curNode != textNode2) {\n-                                                    ch = map2[j + (offset2 ? 1 : 0)];\n-                                                }\n-                                                return Pos(line2, ch);\n-                                            }\n-                                        }\n-                                    }\n-                                }\n-                                var found = find(textNode, topNode, offset);\n-                                if (found) {\n-                                    return badPos(found, bad);\n-                                }\n-                                for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n-                                    found = find(after, after.firstChild, 0);\n-                                    if (found) {\n-                                        return badPos(Pos(found.line, found.ch - dist), bad);\n-                                    } else {\n-                                        dist += after.textContent.length;\n-                                    }\n-                                }\n-                                for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n-                                    found = find(before, before.firstChild, -1);\n-                                    if (found) {\n-                                        return badPos(Pos(found.line, found.ch + dist$1), bad);\n-                                    } else {\n-                                        dist$1 += before.textContent.length;\n-                                    }\n-                                }\n-                            }\n-                            var TextareaInput = function(cm) {\n-                                this.cm = cm;\n-                                this.prevInput = \"\";\n-                                this.pollingFast = false;\n-                                this.polling = new Delayed();\n-                                this.hasSelection = false;\n-                                this.composing = null;\n-                            };\n-                            TextareaInput.prototype.init = function(display) {\n-                                var this$1$1 = this;\n-                                var input = this,\n-                                    cm = this.cm;\n-                                this.createField(display);\n-                                var te = this.textarea;\n-                                display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n-                                if (ios) {\n-                                    te.style.width = \"0px\";\n-                                }\n-                                on(te, \"input\", function() {\n-                                    if (ie && ie_version >= 9 && this$1$1.hasSelection) {\n-                                        this$1$1.hasSelection = null;\n-                                    }\n-                                    input.poll();\n-                                });\n-                                on(te, \"paste\", function(e) {\n-                                    if (signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n-                                        return;\n-                                    }\n-                                    cm.state.pasteIncoming = + /* @__PURE__ */ new Date();\n-                                    input.fastPoll();\n-                                });\n+                                onClick(ref, e);\n+                            });\n+                        } else {\n+                            node = document.createElement('span');\n+                        }\n+                        node.className = className;\n+                        node.append(document.createTextNode(content));\n+                        into.append(node);\n+                    } else {\n+                        into.append(document.createTextNode(content));\n+                    }\n+                }\n \n-                                function prepareCopyCut(e) {\n-                                    if (signalDOMEvent(cm, e)) {\n-                                        return;\n-                                    }\n-                                    if (cm.somethingSelected()) {\n-                                        setLastCopied({\n-                                            lineWise: false,\n-                                            text: cm.getSelections()\n-                                        });\n-                                    } else if (!cm.options.lineWiseCopyCut) {\n-                                        return;\n-                                    } else {\n-                                        var ranges = copyableRanges(cm);\n-                                        setLastCopied({\n-                                            lineWise: true,\n-                                            text: ranges.text\n-                                        });\n-                                        if (e.type == \"cut\") {\n-                                            cm.setSelections(ranges.ranges, null, sel_dontScroll);\n-                                        } else {\n-                                            input.prevInput = \"\";\n-                                            te.value = ranges.text.join(\"\\n\");\n-                                            selectInput(te);\n-                                        }\n-                                    }\n-                                    if (e.type == \"cut\") {\n-                                        cm.state.cutIncoming = + /* @__PURE__ */ new Date();\n-                                    }\n-                                }\n-                                on(te, \"cut\", prepareCopyCut);\n-                                on(te, \"copy\", prepareCopyCut);\n-                                on(display.scroller, \"paste\", function(e) {\n-                                    if (eventInWidget(display, e) || signalDOMEvent(cm, e)) {\n-                                        return;\n-                                    }\n-                                    if (!te.dispatchEvent) {\n-                                        cm.state.pasteIncoming = + /* @__PURE__ */ new Date();\n-                                        input.focus();\n-                                        return;\n-                                    }\n-                                    var event = new Event(\"paste\");\n-                                    event.clipboardData = e.clipboardData;\n-                                    te.dispatchEvent(event);\n-                                });\n-                                on(display.lineSpace, \"selectstart\", function(e) {\n-                                    if (!eventInWidget(display, e)) {\n-                                        e_preventDefault(e);\n-                                    }\n-                                });\n-                                on(te, \"compositionstart\", function() {\n-                                    var start = cm.getCursor(\"from\");\n-                                    if (input.composing) {\n-                                        input.composing.range.clear();\n-                                    }\n-                                    input.composing = {\n-                                        start,\n-                                        range: cm.markText(start, cm.getCursor(\"to\"), {\n-                                            className: \"CodeMirror-composing\"\n-                                        })\n-                                    };\n-                                });\n-                                on(te, \"compositionend\", function() {\n-                                    if (input.composing) {\n-                                        input.poll();\n-                                        input.composing.range.clear();\n-                                        input.composing = null;\n-                                    }\n-                                });\n-                            };\n-                            TextareaInput.prototype.createField = function(_display) {\n-                                this.wrapper = hiddenTextarea();\n-                                this.textarea = this.wrapper.firstChild;\n-                            };\n-                            TextareaInput.prototype.screenReaderLabelChanged = function(label) {\n-                                if (label) {\n-                                    this.textarea.setAttribute(\"aria-label\", label);\n-                                } else {\n-                                    this.textarea.removeAttribute(\"aria-label\");\n-                                }\n-                            };\n-                            TextareaInput.prototype.prepareSelection = function() {\n-                                var cm = this.cm,\n-                                    display = cm.display,\n-                                    doc = cm.doc;\n-                                var result = prepareSelection(cm);\n-                                if (cm.options.moveInputWithCursor) {\n-                                    var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n-                                    var wrapOff = display.wrapper.getBoundingClientRect(),\n-                                        lineOff = display.lineDiv.getBoundingClientRect();\n-                                    result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, headPos.top + lineOff.top - wrapOff.top));\n-                                    result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, headPos.left + lineOff.left - wrapOff.left));\n-                                }\n-                                return result;\n-                            };\n-                            TextareaInput.prototype.showSelection = function(drawn) {\n-                                var cm = this.cm,\n-                                    display = cm.display;\n-                                removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n-                                removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n-                                if (drawn.teTop != null) {\n-                                    this.wrapper.style.top = drawn.teTop + \"px\";\n-                                    this.wrapper.style.left = drawn.teLeft + \"px\";\n-                                }\n-                            };\n-                            TextareaInput.prototype.reset = function(typing) {\n-                                if (this.contextMenuPending || this.composing) {\n-                                    return;\n-                                }\n-                                var cm = this.cm;\n-                                if (cm.somethingSelected()) {\n-                                    this.prevInput = \"\";\n-                                    var content = cm.getSelection();\n-                                    this.textarea.value = content;\n-                                    if (cm.state.focused) {\n-                                        selectInput(this.textarea);\n-                                    }\n-                                    if (ie && ie_version >= 9) {\n-                                        this.hasSelection = content;\n-                                    }\n-                                } else if (!typing) {\n-                                    this.prevInput = this.textarea.value = \"\";\n-                                    if (ie && ie_version >= 9) {\n-                                        this.hasSelection = null;\n-                                    }\n-                                }\n-                            };\n-                            TextareaInput.prototype.getField = function() {\n-                                return this.textarea;\n-                            };\n-                            TextareaInput.prototype.supportsTouch = function() {\n-                                return false;\n-                            };\n-                            TextareaInput.prototype.focus = function() {\n-                                if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n-                                    try {\n-                                        this.textarea.focus();\n-                                    } catch (e) {}\n-                                }\n-                            };\n-                            TextareaInput.prototype.blur = function() {\n-                                this.textarea.blur();\n-                            };\n-                            TextareaInput.prototype.resetPosition = function() {\n-                                this.wrapper.style.top = this.wrapper.style.left = 0;\n-                            };\n-                            TextareaInput.prototype.receivedFocus = function() {\n-                                this.slowPoll();\n-                            };\n-                            TextareaInput.prototype.slowPoll = function() {\n-                                var this$1$1 = this;\n-                                if (this.pollingFast) {\n-                                    return;\n-                                }\n-                                this.polling.set(this.cm.options.pollInterval, function() {\n-                                    this$1$1.poll();\n-                                    if (this$1$1.cm.state.focused) {\n-                                        this$1$1.slowPoll();\n-                                    }\n-                                });\n-                            };\n-                            TextareaInput.prototype.fastPoll = function() {\n-                                var missed = false,\n-                                    input = this;\n-                                input.pollingFast = true;\n-\n-                                function p() {\n-                                    var changed = input.poll();\n-                                    if (!changed && !missed) {\n-                                        missed = true;\n-                                        input.polling.set(60, p);\n-                                    } else {\n-                                        input.pollingFast = false;\n-                                        input.slowPoll();\n-                                    }\n-                                }\n-                                input.polling.set(20, p);\n-                            };\n-                            TextareaInput.prototype.poll = function() {\n-                                var this$1$1 = this;\n-                                var cm = this.cm,\n-                                    input = this.textarea,\n-                                    prevInput = this.prevInput;\n-                                if (this.contextMenuPending || !cm.state.focused || hasSelection(input) && !prevInput && !this.composing || cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) {\n-                                    return false;\n-                                }\n-                                var text = input.value;\n-                                if (text == prevInput && !cm.somethingSelected()) {\n-                                    return false;\n-                                }\n-                                if (ie && ie_version >= 9 && this.hasSelection === text || mac && /[\\uf700-\\uf7ff]/.test(text)) {\n-                                    cm.display.input.reset();\n-                                    return false;\n-                                }\n-                                if (cm.doc.sel == cm.display.selForContextMenu) {\n-                                    var first = text.charCodeAt(0);\n-                                    if (first == 8203 && !prevInput) {\n-                                        prevInput = \"\u200b\";\n-                                    }\n-                                    if (first == 8666) {\n-                                        this.reset();\n-                                        return this.cm.execCommand(\"undo\");\n-                                    }\n-                                }\n-                                var same = 0,\n-                                    l = Math.min(prevInput.length, text.length);\n-                                while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) {\n-                                    ++same;\n-                                }\n-                                runInOp(cm, function() {\n-                                    applyTextInput(cm, text.slice(same), prevInput.length - same, null, this$1$1.composing ? \"*compose\" : null);\n-                                    if (text.length > 1e3 || text.indexOf(\"\\n\") > -1) {\n-                                        input.value = this$1$1.prevInput = \"\";\n-                                    } else {\n-                                        this$1$1.prevInput = text;\n-                                    }\n-                                    if (this$1$1.composing) {\n-                                        this$1$1.composing.range.clear();\n-                                        this$1$1.composing.range = cm.markText(this$1$1.composing.start, cm.getCursor(\"to\"), {\n-                                            className: \"CodeMirror-composing\"\n-                                        });\n-                                    }\n-                                });\n-                                return true;\n-                            };\n-                            TextareaInput.prototype.ensurePolled = function() {\n-                                if (this.pollingFast && this.poll()) {\n-                                    this.pollingFast = false;\n-                                }\n-                            };\n-                            TextareaInput.prototype.onKeyPress = function() {\n-                                if (ie && ie_version >= 9) {\n-                                    this.hasSelection = null;\n-                                }\n-                                this.fastPoll();\n-                            };\n-                            TextareaInput.prototype.onContextMenu = function(e) {\n-                                var input = this,\n-                                    cm = input.cm,\n-                                    display = cm.display,\n-                                    te = input.textarea;\n-                                if (input.contextMenuPending) {\n-                                    input.contextMenuPending();\n-                                }\n-                                var pos = posFromMouse(cm, e),\n-                                    scrollPos = display.scroller.scrollTop;\n-                                if (!pos || presto) {\n-                                    return;\n-                                }\n-                                var reset = cm.options.resetSelectionOnContextMenu;\n-                                if (reset && cm.doc.sel.contains(pos) == -1) {\n-                                    operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);\n-                                }\n-                                var oldCSS = te.style.cssText,\n-                                    oldWrapperCSS = input.wrapper.style.cssText;\n-                                var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n-                                input.wrapper.style.cssText = \"position: static\";\n-                                te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n      top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n      z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n-                                var oldScrollY;\n-                                if (webkit) {\n-                                    oldScrollY = window.scrollY;\n-                                }\n-                                display.input.focus();\n-                                if (webkit) {\n-                                    window.scrollTo(null, oldScrollY);\n-                                }\n-                                display.input.reset();\n-                                if (!cm.somethingSelected()) {\n-                                    te.value = input.prevInput = \" \";\n-                                }\n-                                input.contextMenuPending = rehide;\n-                                display.selForContextMenu = cm.doc.sel;\n-                                clearTimeout(display.detectingSelectAll);\n+                /***/\n+            }),\n \n-                                function prepareSelectAllHack() {\n-                                    if (te.selectionStart != null) {\n-                                        var selected = cm.somethingSelected();\n-                                        var extval = \"\u200b\" + (selected ? te.value : \"\");\n-                                        te.value = \"\u21da\";\n-                                        te.value = extval;\n-                                        input.prevInput = selected ? \"\" : \"\u200b\";\n-                                        te.selectionStart = 1;\n-                                        te.selectionEnd = extval.length;\n-                                        display.selForContextMenu = cm.doc.sel;\n-                                    }\n-                                }\n+        /***/\n+        \"../../codemirror-graphql/esm/jump.js\":\n+            /*!********************************************!*\\\n+              !*** ../../codemirror-graphql/esm/jump.js ***!\n+              \\********************************************/\n+            /***/\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n-                                function rehide() {\n-                                    if (input.contextMenuPending != rehide) {\n-                                        return;\n-                                    }\n-                                    input.contextMenuPending = false;\n-                                    input.wrapper.style.cssText = oldWrapperCSS;\n-                                    te.style.cssText = oldCSS;\n-                                    if (ie && ie_version < 9) {\n-                                        display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos);\n-                                    }\n-                                    if (te.selectionStart != null) {\n-                                        if (!ie || ie && ie_version < 9) {\n-                                            prepareSelectAllHack();\n-                                        }\n-                                        var i2 = 0,\n-                                            poll = function() {\n-                                                if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && te.selectionEnd > 0 && input.prevInput == \"\u200b\") {\n-                                                    operation(cm, selectAll)(cm);\n-                                                } else if (i2++ < 10) {\n-                                                    display.detectingSelectAll = setTimeout(poll, 500);\n-                                                } else {\n-                                                    display.selForContextMenu = null;\n-                                                    display.input.reset();\n-                                                }\n-                                            };\n-                                        display.detectingSelectAll = setTimeout(poll, 200);\n-                                    }\n-                                }\n-                                if (ie && ie_version >= 9) {\n-                                    prepareSelectAllHack();\n-                                }\n-                                if (captureRightClick) {\n-                                    e_stop(e);\n-                                    var mouseup = function() {\n-                                        off(window, \"mouseup\", mouseup);\n-                                        setTimeout(rehide, 20);\n-                                    };\n-                                    on(window, \"mouseup\", mouseup);\n-                                } else {\n-                                    setTimeout(rehide, 50);\n-                                }\n-                            };\n-                            TextareaInput.prototype.readOnlyChanged = function(val) {\n-                                if (!val) {\n-                                    this.reset();\n-                                }\n-                                this.textarea.disabled = val == \"nocursor\";\n-                                this.textarea.readOnly = !!val;\n-                            };\n-                            TextareaInput.prototype.setUneditable = function() {};\n-                            TextareaInput.prototype.needsContentAttribute = false;\n+                \"use strict\";\n \n-                            function fromTextArea(textarea, options) {\n-                                options = options ? copyObj(options) : {};\n-                                options.value = textarea.value;\n-                                if (!options.tabindex && textarea.tabIndex) {\n-                                    options.tabindex = textarea.tabIndex;\n-                                }\n-                                if (!options.placeholder && textarea.placeholder) {\n-                                    options.placeholder = textarea.placeholder;\n-                                }\n-                                if (options.autofocus == null) {\n-                                    var hasFocus = activeElt();\n-                                    options.autofocus = hasFocus == textarea || textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n-                                }\n \n-                                function save() {\n-                                    textarea.value = cm.getValue();\n-                                }\n-                                var realSubmit;\n-                                if (textarea.form) {\n-                                    on(textarea.form, \"submit\", save);\n-                                    if (!options.leaveSubmitMethodAlone) {\n-                                        var form = textarea.form;\n-                                        realSubmit = form.submit;\n-                                        try {\n-                                            var wrappedSubmit = form.submit = function() {\n-                                                save();\n-                                                form.submit = realSubmit;\n-                                                form.submit();\n-                                                form.submit = wrappedSubmit;\n-                                            };\n-                                        } catch (e) {}\n-                                    }\n-                                }\n-                                options.finishInit = function(cm2) {\n-                                    cm2.save = save;\n-                                    cm2.getTextArea = function() {\n-                                        return textarea;\n-                                    };\n-                                    cm2.toTextArea = function() {\n-                                        cm2.toTextArea = isNaN;\n-                                        save();\n-                                        textarea.parentNode.removeChild(cm2.getWrapperElement());\n-                                        textarea.style.display = \"\";\n-                                        if (textarea.form) {\n-                                            off(textarea.form, \"submit\", save);\n-                                            if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\") {\n-                                                textarea.form.submit = realSubmit;\n-                                            }\n-                                        }\n-                                    };\n-                                };\n-                                textarea.style.display = \"none\";\n-                                var cm = CodeMirror(function(node) {\n-                                    return textarea.parentNode.insertBefore(node, textarea.nextSibling);\n-                                }, options);\n-                                return cm;\n-                            }\n+                var _codemirror = _interopRequireDefault(__webpack_require__( /*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                var _getTypeInfo = _interopRequireDefault(__webpack_require__( /*! ./utils/getTypeInfo */ \"../../codemirror-graphql/esm/utils/getTypeInfo.js\"));\n+                var _SchemaReference = __webpack_require__( /*! ./utils/SchemaReference */ \"../../codemirror-graphql/esm/utils/SchemaReference.js\");\n+                __webpack_require__( /*! ./utils/jump-addon */ \"../../codemirror-graphql/esm/utils/jump-addon.js\");\n \n-                            function addLegacyProps(CodeMirror2) {\n-                                CodeMirror2.off = off;\n-                                CodeMirror2.on = on;\n-                                CodeMirror2.wheelEventPixels = wheelEventPixels;\n-                                CodeMirror2.Doc = Doc;\n-                                CodeMirror2.splitLines = splitLinesAuto;\n-                                CodeMirror2.countColumn = countColumn;\n-                                CodeMirror2.findColumn = findColumn;\n-                                CodeMirror2.isWordChar = isWordCharBasic;\n-                                CodeMirror2.Pass = Pass;\n-                                CodeMirror2.signal = signal;\n-                                CodeMirror2.Line = Line;\n-                                CodeMirror2.changeEnd = changeEnd;\n-                                CodeMirror2.scrollbarModel = scrollbarModel;\n-                                CodeMirror2.Pos = Pos;\n-                                CodeMirror2.cmpPos = cmp;\n-                                CodeMirror2.modes = modes;\n-                                CodeMirror2.mimeModes = mimeModes;\n-                                CodeMirror2.resolveMode = resolveMode;\n-                                CodeMirror2.getMode = getMode;\n-                                CodeMirror2.modeExtensions = modeExtensions;\n-                                CodeMirror2.extendMode = extendMode;\n-                                CodeMirror2.copyState = copyState;\n-                                CodeMirror2.startState = startState;\n-                                CodeMirror2.innerMode = innerMode;\n-                                CodeMirror2.commands = commands;\n-                                CodeMirror2.keyMap = keyMap;\n-                                CodeMirror2.keyName = keyName;\n-                                CodeMirror2.isModifierKey = isModifierKey;\n-                                CodeMirror2.lookupKey = lookupKey;\n-                                CodeMirror2.normalizeKeyMap = normalizeKeyMap;\n-                                CodeMirror2.StringStream = StringStream;\n-                                CodeMirror2.SharedTextMarker = SharedTextMarker;\n-                                CodeMirror2.TextMarker = TextMarker;\n-                                CodeMirror2.LineWidget = LineWidget;\n-                                CodeMirror2.e_preventDefault = e_preventDefault;\n-                                CodeMirror2.e_stopPropagation = e_stopPropagation;\n-                                CodeMirror2.e_stop = e_stop;\n-                                CodeMirror2.addClass = addClass;\n-                                CodeMirror2.contains = contains;\n-                                CodeMirror2.rmClass = rmClass;\n-                                CodeMirror2.keyNames = keyNames;\n-                            }\n-                            defineOptions(CodeMirror);\n-                            addEditorMethods(CodeMirror);\n-                            var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n-                            for (var prop in Doc.prototype) {\n-                                if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) {\n-                                    CodeMirror.prototype[prop] = /* @__PURE__ */ function(method) {\n-                                        return function() {\n-                                            return method.apply(this.doc, arguments);\n-                                        };\n-                                    }(Doc.prototype[prop]);\n-                                }\n-                            }\n-                            eventMixin(Doc);\n-                            CodeMirror.inputStyles = {\n-                                \"textarea\": TextareaInput,\n-                                \"contenteditable\": ContentEditableInput\n-                            };\n-                            CodeMirror.defineMode = function(name) {\n-                                if (!CodeMirror.defaults.mode && name != \"null\") {\n-                                    CodeMirror.defaults.mode = name;\n-                                }\n-                                defineMode.apply(this, arguments);\n-                            };\n-                            CodeMirror.defineMIME = defineMIME;\n-                            CodeMirror.defineMode(\"null\", function() {\n-                                return {\n-                                    token: function(stream) {\n-                                        return stream.skipToEnd();\n-                                    }\n-                                };\n-                            });\n-                            CodeMirror.defineMIME(\"text/plain\", \"null\");\n-                            CodeMirror.defineExtension = function(name, func) {\n-                                CodeMirror.prototype[name] = func;\n-                            };\n-                            CodeMirror.defineDocExtension = function(name, func) {\n-                                Doc.prototype[name] = func;\n-                            };\n-                            CodeMirror.fromTextArea = fromTextArea;\n-                            addLegacyProps(CodeMirror);\n-                            CodeMirror.version = \"5.65.3\";\n-                            return CodeMirror;\n-                        });\n-                    })(codemirror);\n-                    return codemirror.exports;\n+                function _interopRequireDefault(obj) {\n+                    return obj && obj.__esModule ? obj : {\n+                        default: obj\n+                    };\n                 }\n-                exports.getDefaultExportFromCjs = getDefaultExportFromCjs;\n-                exports.requireCodemirror = requireCodemirror;\n+                _codemirror.default.registerHelper('jump', 'graphql', (token, options) => {\n+                    if (!options.schema || !options.onClick || !token.state) {\n+                        return;\n+                    }\n+                    const {\n+                        state\n+                    } = token;\n+                    const {\n+                        kind,\n+                        step\n+                    } = state;\n+                    const typeInfo = (0, _getTypeInfo.default)(options.schema, state);\n+                    if (kind === 'Field' && step === 0 && typeInfo.fieldDef || kind === 'AliasedField' && step === 2 && typeInfo.fieldDef) {\n+                        return (0, _SchemaReference.getFieldReference)(typeInfo);\n+                    }\n+                    if (kind === 'Directive' && step === 1 && typeInfo.directiveDef) {\n+                        return (0, _SchemaReference.getDirectiveReference)(typeInfo);\n+                    }\n+                    if (kind === 'Argument' && step === 0 && typeInfo.argDef) {\n+                        return (0, _SchemaReference.getArgumentReference)(typeInfo);\n+                    }\n+                    if (kind === 'EnumValue' && typeInfo.enumValue) {\n+                        return (0, _SchemaReference.getEnumValueReference)(typeInfo);\n+                    }\n+                    if (kind === 'NamedType' && typeInfo.type) {\n+                        return (0, _SchemaReference.getTypeReference)(typeInfo);\n+                    }\n+                });\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-react/dist/comment.cjs.js\":\n-            /*!************************************************!*\\\n-              !*** ../../graphiql-react/dist/comment.cjs.js ***!\n-              \\************************************************/\n+        \"../../codemirror-graphql/esm/lint.js\":\n+            /*!********************************************!*\\\n+              !*** ../../codemirror-graphql/esm/lint.js ***!\n+              \\********************************************/\n             /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n+                var _codemirror = _interopRequireDefault(__webpack_require__( /*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                var _graphqlLanguageService = __webpack_require__( /*! graphql-language-service */ \"../../graphql-language-service/esm/index.js\");\n \n-                function _mergeNamespaces(n, m) {\n-                    for (var i = 0; i < m.length; i++) {\n-                        const e = m[i];\n-                        if (typeof e !== \"string\" && !Array.isArray(e)) {\n-                            for (const k in e) {\n-                                if (k !== \"default\" && !(k in n)) {\n-                                    const d = Object.getOwnPropertyDescriptor(e, k);\n-                                    if (d) {\n-                                        Object.defineProperty(n, k, d.get ? d : {\n-                                            enumerable: true,\n-                                            get: () => e[k]\n-                                        });\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    }\n-                    return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, {\n-                        value: \"Module\"\n-                    }));\n+                function _interopRequireDefault(obj) {\n+                    return obj && obj.__esModule ? obj : {\n+                        default: obj\n+                    };\n                 }\n-                var comment$2 = {\n-                    exports: {}\n+                const SEVERITY = ['error', 'warning', 'information', 'hint'];\n+                const TYPE = {\n+                    'GraphQL: Validation': 'validation',\n+                    'GraphQL: Deprecation': 'deprecation',\n+                    'GraphQL: Syntax': 'syntax'\n                 };\n-                (function(module2, exports2) {\n-                    (function(mod) {\n-                        mod(codemirror.requireCodemirror());\n-                    })(function(CodeMirror) {\n-                        var noOptions = {};\n-                        var nonWS = /[^\\s\\u00a0]/;\n-                        var Pos = CodeMirror.Pos,\n-                            cmp = CodeMirror.cmpPos;\n-\n-                        function firstNonWS(str) {\n-                            var found = str.search(nonWS);\n-                            return found == -1 ? 0 : found;\n-                        }\n-                        CodeMirror.commands.toggleComment = function(cm) {\n-                            cm.toggleComment();\n-                        };\n-                        CodeMirror.defineExtension(\"toggleComment\", function(options) {\n-                            if (!options) options = noOptions;\n-                            var cm = this;\n-                            var minLine = Infinity,\n-                                ranges = this.listSelections(),\n-                                mode = null;\n-                            for (var i = ranges.length - 1; i >= 0; i--) {\n-                                var from = ranges[i].from(),\n-                                    to = ranges[i].to();\n-                                if (from.line >= minLine) continue;\n-                                if (to.line >= minLine) to = Pos(minLine, 0);\n-                                minLine = from.line;\n-                                if (mode == null) {\n-                                    if (cm.uncomment(from, to, options)) mode = \"un\";\n-                                    else {\n-                                        cm.lineComment(from, to, options);\n-                                        mode = \"line\";\n-                                    }\n-                                } else if (mode == \"un\") {\n-                                    cm.uncomment(from, to, options);\n-                                } else {\n-                                    cm.lineComment(from, to, options);\n-                                }\n-                            }\n-                        });\n-\n-                        function probablyInsideString(cm, pos, line) {\n-                            return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line);\n-                        }\n-\n-                        function getMode(cm, pos) {\n-                            var mode = cm.getMode();\n-                            return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos);\n-                        }\n-                        CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n-                            if (!options) options = noOptions;\n-                            var self = this,\n-                                mode = getMode(self, from);\n-                            var firstLine = self.getLine(from.line);\n-                            if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n-                            var commentString = options.lineComment || mode.lineComment;\n-                            if (!commentString) {\n-                                if (options.blockCommentStart || mode.blockCommentStart) {\n-                                    options.fullLines = true;\n-                                    self.blockComment(from, to, options);\n-                                }\n-                                return;\n-                            }\n-                            var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n-                            var pad = options.padding == null ? \" \" : options.padding;\n-                            var blankLines = options.commentBlankLines || from.line == to.line;\n-                            self.operation(function() {\n-                                if (options.indent) {\n-                                    var baseString = null;\n-                                    for (var i = from.line; i < end; ++i) {\n-                                        var line = self.getLine(i);\n-                                        var whitespace = line.slice(0, firstNonWS(line));\n-                                        if (baseString == null || baseString.length > whitespace.length) {\n-                                            baseString = whitespace;\n-                                        }\n-                                    }\n-                                    for (var i = from.line; i < end; ++i) {\n-                                        var line = self.getLine(i),\n-                                            cut = baseString.length;\n-                                        if (!blankLines && !nonWS.test(line)) continue;\n-                                        if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n-                                        self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n-                                    }\n-                                } else {\n-                                    for (var i = from.line; i < end; ++i) {\n-                                        if (blankLines || nonWS.test(self.getLine(i))) self.replaceRange(commentString + pad, Pos(i, 0));\n-                                    }\n-                                }\n-                            });\n-                        });\n-                        CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n-                            if (!options) options = noOptions;\n-                            var self = this,\n-                                mode = getMode(self, from);\n-                            var startString = options.blockCommentStart || mode.blockCommentStart;\n-                            var endString = options.blockCommentEnd || mode.blockCommentEnd;\n-                            if (!startString || !endString) {\n-                                if ((options.lineComment || mode.lineComment) && options.fullLines != false) self.lineComment(from, to, options);\n-                                return;\n-                            }\n-                            if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return;\n-                            var end = Math.min(to.line, self.lastLine());\n-                            if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n-                            var pad = options.padding == null ? \" \" : options.padding;\n-                            if (from.line > end) return;\n-                            self.operation(function() {\n-                                if (options.fullLines != false) {\n-                                    var lastLineHasText = nonWS.test(self.getLine(end));\n-                                    self.replaceRange(pad + endString, Pos(end));\n-                                    self.replaceRange(startString + pad, Pos(from.line, 0));\n-                                    var lead = options.blockCommentLead || mode.blockCommentLead;\n-                                    if (lead != null) {\n-                                        for (var i = from.line + 1; i <= end; ++i)\n-                                            if (i != end || lastLineHasText) self.replaceRange(lead + pad, Pos(i, 0));\n-                                    }\n-                                } else {\n-                                    var atCursor = cmp(self.getCursor(\"to\"), to) == 0,\n-                                        empty = !self.somethingSelected();\n-                                    self.replaceRange(endString, to);\n-                                    if (atCursor) self.setSelection(empty ? to : self.getCursor(\"from\"), to);\n-                                    self.replaceRange(startString, from);\n-                                }\n-                            });\n-                        });\n-                        CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n-                            if (!options) options = noOptions;\n-                            var self = this,\n-                                mode = getMode(self, from);\n-                            var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()),\n-                                start = Math.min(from.line, end);\n-                            var lineString = options.lineComment || mode.lineComment,\n-                                lines = [];\n-                            var pad = options.padding == null ? \" \" : options.padding,\n-                                didSomething;\n-                            lineComment: {\n-                                if (!lineString) break lineComment;\n-                                for (var i = start; i <= end; ++i) {\n-                                    var line = self.getLine(i);\n-                                    var found = line.indexOf(lineString);\n-                                    if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n-                                    if (found == -1 && nonWS.test(line)) break lineComment;\n-                                    if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n-                                    lines.push(line);\n-                                }\n-                                self.operation(function() {\n-                                    for (var i2 = start; i2 <= end; ++i2) {\n-                                        var line2 = lines[i2 - start];\n-                                        var pos = line2.indexOf(lineString),\n-                                            endPos = pos + lineString.length;\n-                                        if (pos < 0) continue;\n-                                        if (line2.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n-                                        didSomething = true;\n-                                        self.replaceRange(\"\", Pos(i2, pos), Pos(i2, endPos));\n-                                    }\n-                                });\n-                                if (didSomething) return true;\n-                            }\n-                            var startString = options.blockCommentStart || mode.blockCommentStart;\n-                            var endString = options.blockCommentEnd || mode.blockCommentEnd;\n-                            if (!startString || !endString) return false;\n-                            var lead = options.blockCommentLead || mode.blockCommentLead;\n-                            var startLine = self.getLine(start),\n-                                open = startLine.indexOf(startString);\n-                            if (open == -1) return false;\n-                            var endLine = end == start ? startLine : self.getLine(end);\n-                            var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n-                            var insideStart = Pos(start, open + 1),\n-                                insideEnd = Pos(end, close + 1);\n-                            if (close == -1 || !/comment/.test(self.getTokenTypeAt(insideStart)) || !/comment/.test(self.getTokenTypeAt(insideEnd)) || self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1) return false;\n-                            var lastStart = startLine.lastIndexOf(startString, from.ch);\n-                            var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n-                            if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n-                            firstEnd = endLine.indexOf(endString, to.ch);\n-                            var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n-                            lastStart = firstEnd == -1 || almostLastStart == -1 ? -1 : to.ch + almostLastStart;\n-                            if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n-                            self.operation(function() {\n-                                self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)), Pos(end, close + endString.length));\n-                                var openEnd = open + startString.length;\n-                                if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n-                                self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n-                                if (lead)\n-                                    for (var i2 = start + 1; i2 <= end; ++i2) {\n-                                        var line2 = self.getLine(i2),\n-                                            found2 = line2.indexOf(lead);\n-                                        if (found2 == -1 || nonWS.test(line2.slice(0, found2))) continue;\n-                                        var foundEnd = found2 + lead.length;\n-                                        if (pad && line2.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n-                                        self.replaceRange(\"\", Pos(i2, found2), Pos(i2, foundEnd));\n-                                    }\n-                            });\n-                            return true;\n-                        });\n-                    });\n-                })();\n-                var commentExports = comment$2.exports;\n-                const comment = /* @__PURE__ */ codemirror.getDefaultExportFromCjs(commentExports);\n-                const comment$1 = /* @__PURE__ */ _mergeNamespaces({\n-                    __proto__: null,\n-                    default: comment\n-                }, [commentExports]);\n-                exports.comment = comment$1;\n+                _codemirror.default.registerHelper('lint', 'graphql', (text, options) => {\n+                    const {\n+                        schema,\n+                        validationRules,\n+                        externalFragments\n+                    } = options;\n+                    const rawResults = (0, _graphqlLanguageService.getDiagnostics)(text, schema, validationRules, undefined, externalFragments);\n+                    const results = rawResults.map(error => ({\n+                        message: error.message,\n+                        severity: error.severity ? SEVERITY[error.severity - 1] : SEVERITY[0],\n+                        type: error.source ? TYPE[error.source] : undefined,\n+                        from: _codemirror.default.Pos(error.range.start.line, error.range.start.character),\n+                        to: _codemirror.default.Pos(error.range.end.line, error.range.end.character)\n+                    }));\n+                    return results;\n+                });\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-react/dist/dialog.cjs.js\":\n-            /*!***********************************************!*\\\n-              !*** ../../graphiql-react/dist/dialog.cjs.js ***!\n-              \\***********************************************/\n+        \"../../codemirror-graphql/esm/mode.js\":\n+            /*!********************************************!*\\\n+              !*** ../../codemirror-graphql/esm/mode.js ***!\n+              \\********************************************/\n             /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n+                var _codemirror = _interopRequireDefault(__webpack_require__( /*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                var _modeFactory = _interopRequireDefault(__webpack_require__( /*! ./utils/mode-factory */ \"../../codemirror-graphql/esm/utils/mode-factory.js\"));\n \n-                function _mergeNamespaces(n, m) {\n-                    for (var i = 0; i < m.length; i++) {\n-                        const e = m[i];\n-                        if (typeof e !== \"string\" && !Array.isArray(e)) {\n-                            for (const k in e) {\n-                                if (k !== \"default\" && !(k in n)) {\n-                                    const d = Object.getOwnPropertyDescriptor(e, k);\n-                                    if (d) {\n-                                        Object.defineProperty(n, k, d.get ? d : {\n-                                            enumerable: true,\n-                                            get: () => e[k]\n-                                        });\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    }\n-                    return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, {\n-                        value: \"Module\"\n-                    }));\n+                function _interopRequireDefault(obj) {\n+                    return obj && obj.__esModule ? obj : {\n+                        default: obj\n+                    };\n                 }\n-                var dialog$2 = {\n-                    exports: {}\n-                };\n-                (function(module2, exports2) {\n-                    (function(mod) {\n-                        mod(codemirror.requireCodemirror());\n-                    })(function(CodeMirror) {\n-                        function dialogDiv(cm, template, bottom) {\n-                            var wrap = cm.getWrapperElement();\n-                            var dialog2;\n-                            dialog2 = wrap.appendChild(document.createElement(\"div\"));\n-                            if (bottom) dialog2.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n-                            else dialog2.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n-                            if (typeof template == \"string\") {\n-                                dialog2.innerHTML = template;\n-                            } else {\n-                                dialog2.appendChild(template);\n-                            }\n-                            CodeMirror.addClass(wrap, \"dialog-opened\");\n-                            return dialog2;\n-                        }\n-\n-                        function closeNotification(cm, newVal) {\n-                            if (cm.state.currentNotificationClose) cm.state.currentNotificationClose();\n-                            cm.state.currentNotificationClose = newVal;\n-                        }\n-                        CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n-                            if (!options) options = {};\n-                            closeNotification(this, null);\n-                            var dialog2 = dialogDiv(this, template, options.bottom);\n-                            var closed = false,\n-                                me = this;\n-\n-                            function close(newVal) {\n-                                if (typeof newVal == \"string\") {\n-                                    inp.value = newVal;\n-                                } else {\n-                                    if (closed) return;\n-                                    closed = true;\n-                                    CodeMirror.rmClass(dialog2.parentNode, \"dialog-opened\");\n-                                    dialog2.parentNode.removeChild(dialog2);\n-                                    me.focus();\n-                                    if (options.onClose) options.onClose(dialog2);\n-                                }\n-                            }\n-                            var inp = dialog2.getElementsByTagName(\"input\")[0],\n-                                button;\n-                            if (inp) {\n-                                inp.focus();\n-                                if (options.value) {\n-                                    inp.value = options.value;\n-                                    if (options.selectValueOnOpen !== false) {\n-                                        inp.select();\n-                                    }\n-                                }\n-                                if (options.onInput) CodeMirror.on(inp, \"input\", function(e) {\n-                                    options.onInput(e, inp.value, close);\n-                                });\n-                                if (options.onKeyUp) CodeMirror.on(inp, \"keyup\", function(e) {\n-                                    options.onKeyUp(e, inp.value, close);\n-                                });\n-                                CodeMirror.on(inp, \"keydown\", function(e) {\n-                                    if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) {\n-                                        return;\n-                                    }\n-                                    if (e.keyCode == 27 || options.closeOnEnter !== false && e.keyCode == 13) {\n-                                        inp.blur();\n-                                        CodeMirror.e_stop(e);\n-                                        close();\n-                                    }\n-                                    if (e.keyCode == 13) callback(inp.value, e);\n-                                });\n-                                if (options.closeOnBlur !== false) CodeMirror.on(dialog2, \"focusout\", function(evt) {\n-                                    if (evt.relatedTarget !== null) close();\n-                                });\n-                            } else if (button = dialog2.getElementsByTagName(\"button\")[0]) {\n-                                CodeMirror.on(button, \"click\", function() {\n-                                    close();\n-                                    me.focus();\n-                                });\n-                                if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n-                                button.focus();\n-                            }\n-                            return close;\n-                        });\n-                        CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n-                            closeNotification(this, null);\n-                            var dialog2 = dialogDiv(this, template, options && options.bottom);\n-                            var buttons = dialog2.getElementsByTagName(\"button\");\n-                            var closed = false,\n-                                me = this,\n-                                blurring = 1;\n-\n-                            function close() {\n-                                if (closed) return;\n-                                closed = true;\n-                                CodeMirror.rmClass(dialog2.parentNode, \"dialog-opened\");\n-                                dialog2.parentNode.removeChild(dialog2);\n-                                me.focus();\n-                            }\n-                            buttons[0].focus();\n-                            for (var i = 0; i < buttons.length; ++i) {\n-                                var b = buttons[i];\n-                                (function(callback) {\n-                                    CodeMirror.on(b, \"click\", function(e) {\n-                                        CodeMirror.e_preventDefault(e);\n-                                        close();\n-                                        if (callback) callback(me);\n-                                    });\n-                                })(callbacks[i]);\n-                                CodeMirror.on(b, \"blur\", function() {\n-                                    --blurring;\n-                                    setTimeout(function() {\n-                                        if (blurring <= 0) close();\n-                                    }, 200);\n-                                });\n-                                CodeMirror.on(b, \"focus\", function() {\n-                                    ++blurring;\n-                                });\n-                            }\n-                        });\n-                        CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n-                            closeNotification(this, close);\n-                            var dialog2 = dialogDiv(this, template, options && options.bottom);\n-                            var closed = false,\n-                                doneTimer;\n-                            var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5e3;\n-\n-                            function close() {\n-                                if (closed) return;\n-                                closed = true;\n-                                clearTimeout(doneTimer);\n-                                CodeMirror.rmClass(dialog2.parentNode, \"dialog-opened\");\n-                                dialog2.parentNode.removeChild(dialog2);\n-                            }\n-                            CodeMirror.on(dialog2, \"click\", function(e) {\n-                                CodeMirror.e_preventDefault(e);\n-                                close();\n-                            });\n-                            if (duration) doneTimer = setTimeout(close, duration);\n-                            return close;\n-                        });\n-                    });\n-                })();\n-                var dialogExports = dialog$2.exports;\n-                const dialog = /* @__PURE__ */ codemirror.getDefaultExportFromCjs(dialogExports);\n-                const dialog$1 = /* @__PURE__ */ _mergeNamespaces({\n-                    __proto__: null,\n-                    default: dialog\n-                }, [dialogExports]);\n-                exports.dialog = dialog$1;\n-                exports.dialogExports = dialogExports;\n+                _codemirror.default.defineMode('graphql', _modeFactory.default);\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-react/dist/foldgutter.cjs.js\":\n-            /*!***************************************************!*\\\n-              !*** ../../graphiql-react/dist/foldgutter.cjs.js ***!\n-              \\***************************************************/\n+        \"../../codemirror-graphql/esm/results/mode.js\":\n+            /*!****************************************************!*\\\n+              !*** ../../codemirror-graphql/esm/results/mode.js ***!\n+              \\****************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n+                var _codemirror = _interopRequireDefault(__webpack_require__( /*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                var _graphqlLanguageService = __webpack_require__( /*! graphql-language-service */ \"../../graphql-language-service/esm/index.js\");\n+                var _modeIndent = _interopRequireDefault(__webpack_require__( /*! ../utils/mode-indent */ \"../../codemirror-graphql/esm/utils/mode-indent.js\"));\n \n-                function _mergeNamespaces(n, m) {\n-                    for (var i = 0; i < m.length; i++) {\n-                        const e = m[i];\n-                        if (typeof e !== \"string\" && !Array.isArray(e)) {\n-                            for (const k in e) {\n-                                if (k !== \"default\" && !(k in n)) {\n-                                    const d = Object.getOwnPropertyDescriptor(e, k);\n-                                    if (d) {\n-                                        Object.defineProperty(n, k, d.get ? d : {\n-                                            enumerable: true,\n-                                            get: () => e[k]\n-                                        });\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    }\n-                    return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, {\n-                        value: \"Module\"\n-                    }));\n+                function _interopRequireDefault(obj) {\n+                    return obj && obj.__esModule ? obj : {\n+                        default: obj\n+                    };\n                 }\n-                var foldgutter$2 = {\n-                    exports: {}\n-                };\n-                var foldcode = {\n-                    exports: {}\n+                _codemirror.default.defineMode('graphql-results', config => {\n+                    const parser = (0, _graphqlLanguageService.onlineParser)({\n+                        eatWhitespace: stream => stream.eatSpace(),\n+                        lexRules: LexRules,\n+                        parseRules: ParseRules,\n+                        editorConfig: {\n+                            tabSize: config.tabSize\n+                        }\n+                    });\n+                    return {\n+                        config,\n+                        startState: parser.startState,\n+                        token: parser.token,\n+                        indent: _modeIndent.default,\n+                        electricInput: /^\\s*[}\\]]/,\n+                        fold: 'brace',\n+                        closeBrackets: {\n+                            pairs: '[]{}\"\"',\n+                            explode: '[]{}'\n+                        }\n+                    };\n+                });\n+                const LexRules = {\n+                    Punctuation: /^\\[|]|\\{|\\}|:|,/,\n+                    Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n+                    String: /^\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?/,\n+                    Keyword: /^true|false|null/\n                 };\n-                var hasRequiredFoldcode;\n-\n-                function requireFoldcode() {\n-                    if (hasRequiredFoldcode) return foldcode.exports;\n-                    hasRequiredFoldcode = 1;\n-                    (function(module2, exports2) {\n-                        (function(mod) {\n-                            mod(codemirror.requireCodemirror());\n-                        })(function(CodeMirror) {\n-                            function doFold(cm, pos, options, force) {\n-                                if (options && options.call) {\n-                                    var finder = options;\n-                                    options = null;\n-                                } else {\n-                                    var finder = getOption(cm, options, \"rangeFinder\");\n+                const ParseRules = {\n+                    Document: [(0, _graphqlLanguageService.p)('{'), (0, _graphqlLanguageService.list)('Entry', (0, _graphqlLanguageService.p)(',')), (0, _graphqlLanguageService.p)('}')],\n+                    Entry: [(0, _graphqlLanguageService.t)('String', 'def'), (0, _graphqlLanguageService.p)(':'), 'Value'],\n+                    Value(token) {\n+                        switch (token.kind) {\n+                            case 'Number':\n+                                return 'NumberValue';\n+                            case 'String':\n+                                return 'StringValue';\n+                            case 'Punctuation':\n+                                switch (token.value) {\n+                                    case '[':\n+                                        return 'ListValue';\n+                                    case '{':\n+                                        return 'ObjectValue';\n                                 }\n-                                if (typeof pos == \"number\") pos = CodeMirror.Pos(pos, 0);\n-                                var minSize = getOption(cm, options, \"minFoldSize\");\n-\n-                                function getRange(allowFolded) {\n-                                    var range2 = finder(cm, pos);\n-                                    if (!range2 || range2.to.line - range2.from.line < minSize) return null;\n-                                    if (force === \"fold\") return range2;\n-                                    var marks = cm.findMarksAt(range2.from);\n-                                    for (var i = 0; i < marks.length; ++i) {\n-                                        if (marks[i].__isFold) {\n-                                            if (!allowFolded) return null;\n-                                            range2.cleared = true;\n-                                            marks[i].clear();\n-                                        }\n-                                    }\n-                                    return range2;\n+                                return null;\n+                            case 'Keyword':\n+                                switch (token.value) {\n+                                    case 'true':\n+                                    case 'false':\n+                                        return 'BooleanValue';\n+                                    case 'null':\n+                                        return 'NullValue';\n                                 }\n-                                var range = getRange(true);\n-                                if (getOption(cm, options, \"scanUp\"))\n-                                    while (!range && pos.line > cm.firstLine()) {\n-                                        pos = CodeMirror.Pos(pos.line - 1, 0);\n-                                        range = getRange(false);\n-                                    }\n-                                if (!range || range.cleared || force === \"unfold\") return;\n-                                var myWidget = makeWidget(cm, options, range);\n-                                CodeMirror.on(myWidget, \"mousedown\", function(e) {\n-                                    myRange.clear();\n-                                    CodeMirror.e_preventDefault(e);\n-                                });\n-                                var myRange = cm.markText(range.from, range.to, {\n-                                    replacedWith: myWidget,\n-                                    clearOnEnter: getOption(cm, options, \"clearOnEnter\"),\n-                                    __isFold: true\n-                                });\n-                                myRange.on(\"clear\", function(from, to) {\n-                                    CodeMirror.signal(cm, \"unfold\", cm, from, to);\n-                                });\n-                                CodeMirror.signal(cm, \"fold\", cm, range.from, range.to);\n-                            }\n+                                return null;\n+                        }\n+                    },\n+                    NumberValue: [(0, _graphqlLanguageService.t)('Number', 'number')],\n+                    StringValue: [(0, _graphqlLanguageService.t)('String', 'string')],\n+                    BooleanValue: [(0, _graphqlLanguageService.t)('Keyword', 'builtin')],\n+                    NullValue: [(0, _graphqlLanguageService.t)('Keyword', 'keyword')],\n+                    ListValue: [(0, _graphqlLanguageService.p)('['), (0, _graphqlLanguageService.list)('Value', (0, _graphqlLanguageService.p)(',')), (0, _graphqlLanguageService.p)(']')],\n+                    ObjectValue: [(0, _graphqlLanguageService.p)('{'), (0, _graphqlLanguageService.list)('ObjectField', (0, _graphqlLanguageService.p)(',')), (0, _graphqlLanguageService.p)('}')],\n+                    ObjectField: [(0, _graphqlLanguageService.t)('String', 'property'), (0, _graphqlLanguageService.p)(':'), 'Value']\n+                };\n \n-                            function makeWidget(cm, options, range) {\n-                                var widget = getOption(cm, options, \"widget\");\n-                                if (typeof widget == \"function\") {\n-                                    widget = widget(range.from, range.to);\n-                                }\n-                                if (typeof widget == \"string\") {\n-                                    var text = document.createTextNode(widget);\n-                                    widget = document.createElement(\"span\");\n-                                    widget.appendChild(text);\n-                                    widget.className = \"CodeMirror-foldmarker\";\n-                                } else if (widget) {\n-                                    widget = widget.cloneNode(true);\n-                                }\n-                                return widget;\n-                            }\n-                            CodeMirror.newFoldFunction = function(rangeFinder, widget) {\n-                                return function(cm, pos) {\n-                                    doFold(cm, pos, {\n-                                        rangeFinder,\n-                                        widget\n-                                    });\n-                                };\n-                            };\n-                            CodeMirror.defineExtension(\"foldCode\", function(pos, options, force) {\n-                                doFold(this, pos, options, force);\n-                            });\n-                            CodeMirror.defineExtension(\"isFolded\", function(pos) {\n-                                var marks = this.findMarksAt(pos);\n-                                for (var i = 0; i < marks.length; ++i)\n-                                    if (marks[i].__isFold) return true;\n-                            });\n-                            CodeMirror.commands.toggleFold = function(cm) {\n-                                cm.foldCode(cm.getCursor());\n-                            };\n-                            CodeMirror.commands.fold = function(cm) {\n-                                cm.foldCode(cm.getCursor(), null, \"fold\");\n-                            };\n-                            CodeMirror.commands.unfold = function(cm) {\n-                                cm.foldCode(cm.getCursor(), {\n-                                    scanUp: false\n-                                }, \"unfold\");\n-                            };\n-                            CodeMirror.commands.foldAll = function(cm) {\n-                                cm.operation(function() {\n-                                    for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++) cm.foldCode(CodeMirror.Pos(i, 0), {\n-                                        scanUp: false\n-                                    }, \"fold\");\n-                                });\n-                            };\n-                            CodeMirror.commands.unfoldAll = function(cm) {\n-                                cm.operation(function() {\n-                                    for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++) cm.foldCode(CodeMirror.Pos(i, 0), {\n-                                        scanUp: false\n-                                    }, \"unfold\");\n-                                });\n-                            };\n-                            CodeMirror.registerHelper(\"fold\", \"combine\", function() {\n-                                var funcs = Array.prototype.slice.call(arguments, 0);\n-                                return function(cm, start) {\n-                                    for (var i = 0; i < funcs.length; ++i) {\n-                                        var found = funcs[i](cm, start);\n-                                        if (found) return found;\n-                                    }\n-                                };\n-                            });\n-                            CodeMirror.registerHelper(\"fold\", \"auto\", function(cm, start) {\n-                                var helpers = cm.getHelpers(start, \"fold\");\n-                                for (var i = 0; i < helpers.length; i++) {\n-                                    var cur = helpers[i](cm, start);\n-                                    if (cur) return cur;\n-                                }\n-                            });\n-                            var defaultOptions = {\n-                                rangeFinder: CodeMirror.fold.auto,\n-                                widget: \"\u2194\",\n-                                minFoldSize: 0,\n-                                scanUp: false,\n-                                clearOnEnter: true\n-                            };\n-                            CodeMirror.defineOption(\"foldOptions\", null);\n-\n-                            function getOption(cm, options, name) {\n-                                if (options && options[name] !== void 0) return options[name];\n-                                var editorOptions = cm.options.foldOptions;\n-                                if (editorOptions && editorOptions[name] !== void 0) return editorOptions[name];\n-                                return defaultOptions[name];\n-                            }\n-                            CodeMirror.defineExtension(\"foldOption\", function(options, name) {\n-                                return getOption(this, options, name);\n-                            });\n-                        });\n-                    })();\n-                    return foldcode.exports;\n-                }\n-                (function(module2, exports2) {\n-                    (function(mod) {\n-                        mod(codemirror.requireCodemirror(), requireFoldcode());\n-                    })(function(CodeMirror) {\n-                        CodeMirror.defineOption(\"foldGutter\", false, function(cm, val, old) {\n-                            if (old && old != CodeMirror.Init) {\n-                                cm.clearGutter(cm.state.foldGutter.options.gutter);\n-                                cm.state.foldGutter = null;\n-                                cm.off(\"gutterClick\", onGutterClick);\n-                                cm.off(\"changes\", onChange);\n-                                cm.off(\"viewportChange\", onViewportChange);\n-                                cm.off(\"fold\", onFold);\n-                                cm.off(\"unfold\", onFold);\n-                                cm.off(\"swapDoc\", onChange);\n-                            }\n-                            if (val) {\n-                                cm.state.foldGutter = new State(parseOptions(val));\n-                                updateInViewport(cm);\n-                                cm.on(\"gutterClick\", onGutterClick);\n-                                cm.on(\"changes\", onChange);\n-                                cm.on(\"viewportChange\", onViewportChange);\n-                                cm.on(\"fold\", onFold);\n-                                cm.on(\"unfold\", onFold);\n-                                cm.on(\"swapDoc\", onChange);\n-                            }\n-                        });\n-                        var Pos = CodeMirror.Pos;\n+                /***/\n+            }),\n \n-                        function State(options) {\n-                            this.options = options;\n-                            this.from = this.to = 0;\n-                        }\n+        /***/\n+        \"../../codemirror-graphql/esm/utils/SchemaReference.js\":\n+            /*!*************************************************************!*\\\n+              !*** ../../codemirror-graphql/esm/utils/SchemaReference.js ***!\n+              \\*************************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n \n-                        function parseOptions(opts) {\n-                            if (opts === true) opts = {};\n-                            if (opts.gutter == null) opts.gutter = \"CodeMirror-foldgutter\";\n-                            if (opts.indicatorOpen == null) opts.indicatorOpen = \"CodeMirror-foldgutter-open\";\n-                            if (opts.indicatorFolded == null) opts.indicatorFolded = \"CodeMirror-foldgutter-folded\";\n-                            return opts;\n-                        }\n+                \"use strict\";\n \n-                        function isFolded(cm, line) {\n-                            var marks = cm.findMarks(Pos(line, 0), Pos(line + 1, 0));\n-                            for (var i = 0; i < marks.length; ++i) {\n-                                if (marks[i].__isFold) {\n-                                    var fromPos = marks[i].find(-1);\n-                                    if (fromPos && fromPos.line === line) return marks[i];\n-                                }\n-                            }\n-                        }\n \n-                        function marker(spec) {\n-                            if (typeof spec == \"string\") {\n-                                var elt = document.createElement(\"div\");\n-                                elt.className = spec + \" CodeMirror-guttermarker-subtle\";\n-                                return elt;\n-                            } else {\n-                                return spec.cloneNode(true);\n-                            }\n-                        }\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports.getArgumentReference = getArgumentReference;\n+                exports.getDirectiveReference = getDirectiveReference;\n+                exports.getEnumValueReference = getEnumValueReference;\n+                exports.getFieldReference = getFieldReference;\n+                exports.getTypeReference = getTypeReference;\n+                var _graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n \n-                        function updateFoldInfo(cm, from, to) {\n-                            var opts = cm.state.foldGutter.options,\n-                                cur = from - 1;\n-                            var minSize = cm.foldOption(opts, \"minFoldSize\");\n-                            var func = cm.foldOption(opts, \"rangeFinder\");\n-                            var clsFolded = typeof opts.indicatorFolded == \"string\" && classTest(opts.indicatorFolded);\n-                            var clsOpen = typeof opts.indicatorOpen == \"string\" && classTest(opts.indicatorOpen);\n-                            cm.eachLine(from, to, function(line) {\n-                                ++cur;\n-                                var mark = null;\n-                                var old = line.gutterMarkers;\n-                                if (old) old = old[opts.gutter];\n-                                if (isFolded(cm, cur)) {\n-                                    if (clsFolded && old && clsFolded.test(old.className)) return;\n-                                    mark = marker(opts.indicatorFolded);\n-                                } else {\n-                                    var pos = Pos(cur, 0);\n-                                    var range = func && func(cm, pos);\n-                                    if (range && range.to.line - range.from.line >= minSize) {\n-                                        if (clsOpen && old && clsOpen.test(old.className)) return;\n-                                        mark = marker(opts.indicatorOpen);\n-                                    }\n-                                }\n-                                if (!mark && !old) return;\n-                                cm.setGutterMarker(line, opts.gutter, mark);\n-                            });\n-                        }\n+                function getFieldReference(typeInfo) {\n+                    return {\n+                        kind: 'Field',\n+                        schema: typeInfo.schema,\n+                        field: typeInfo.fieldDef,\n+                        type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType\n+                    };\n+                }\n \n-                        function classTest(cls) {\n-                            return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\");\n-                        }\n+                function getDirectiveReference(typeInfo) {\n+                    return {\n+                        kind: 'Directive',\n+                        schema: typeInfo.schema,\n+                        directive: typeInfo.directiveDef\n+                    };\n+                }\n \n-                        function updateInViewport(cm) {\n-                            var vp = cm.getViewport(),\n-                                state = cm.state.foldGutter;\n-                            if (!state) return;\n-                            cm.operation(function() {\n-                                updateFoldInfo(cm, vp.from, vp.to);\n-                            });\n-                            state.from = vp.from;\n-                            state.to = vp.to;\n-                        }\n+                function getArgumentReference(typeInfo) {\n+                    return typeInfo.directiveDef ? {\n+                        kind: 'Argument',\n+                        schema: typeInfo.schema,\n+                        argument: typeInfo.argDef,\n+                        directive: typeInfo.directiveDef\n+                    } : {\n+                        kind: 'Argument',\n+                        schema: typeInfo.schema,\n+                        argument: typeInfo.argDef,\n+                        field: typeInfo.fieldDef,\n+                        type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType\n+                    };\n+                }\n \n-                        function onGutterClick(cm, line, gutter) {\n-                            var state = cm.state.foldGutter;\n-                            if (!state) return;\n-                            var opts = state.options;\n-                            if (gutter != opts.gutter) return;\n-                            var folded = isFolded(cm, line);\n-                            if (folded) folded.clear();\n-                            else cm.foldCode(Pos(line, 0), opts);\n-                        }\n-\n-                        function onChange(cm) {\n-                            var state = cm.state.foldGutter;\n-                            if (!state) return;\n-                            var opts = state.options;\n-                            state.from = state.to = 0;\n-                            clearTimeout(state.changeUpdate);\n-                            state.changeUpdate = setTimeout(function() {\n-                                updateInViewport(cm);\n-                            }, opts.foldOnChangeTimeSpan || 600);\n-                        }\n+                function getEnumValueReference(typeInfo) {\n+                    return {\n+                        kind: 'EnumValue',\n+                        value: typeInfo.enumValue || undefined,\n+                        type: typeInfo.inputType ? (0, _graphql.getNamedType)(typeInfo.inputType) : undefined\n+                    };\n+                }\n \n-                        function onViewportChange(cm) {\n-                            var state = cm.state.foldGutter;\n-                            if (!state) return;\n-                            var opts = state.options;\n-                            clearTimeout(state.changeUpdate);\n-                            state.changeUpdate = setTimeout(function() {\n-                                var vp = cm.getViewport();\n-                                if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {\n-                                    updateInViewport(cm);\n-                                } else {\n-                                    cm.operation(function() {\n-                                        if (vp.from < state.from) {\n-                                            updateFoldInfo(cm, vp.from, state.from);\n-                                            state.from = vp.from;\n-                                        }\n-                                        if (vp.to > state.to) {\n-                                            updateFoldInfo(cm, state.to, vp.to);\n-                                            state.to = vp.to;\n-                                        }\n-                                    });\n-                                }\n-                            }, opts.updateViewportTimeSpan || 400);\n-                        }\n+                function getTypeReference(typeInfo, type) {\n+                    return {\n+                        kind: 'Type',\n+                        schema: typeInfo.schema,\n+                        type: type || typeInfo.type\n+                    };\n+                }\n \n-                        function onFold(cm, from) {\n-                            var state = cm.state.foldGutter;\n-                            if (!state) return;\n-                            var line = from.line;\n-                            if (line >= state.from && line < state.to) updateFoldInfo(cm, line, line + 1);\n-                        }\n-                    });\n-                })();\n-                var foldgutterExports = foldgutter$2.exports;\n-                const foldgutter = /* @__PURE__ */ codemirror.getDefaultExportFromCjs(foldgutterExports);\n-                const foldgutter$1 = /* @__PURE__ */ _mergeNamespaces({\n-                    __proto__: null,\n-                    default: foldgutter\n-                }, [foldgutterExports]);\n-                exports.foldgutter = foldgutter$1;\n+                function isMetaField(fieldDef) {\n+                    return fieldDef.name.slice(0, 2) === '__';\n+                }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-react/dist/forEachState.cjs.js\":\n-            /*!*****************************************************!*\\\n-              !*** ../../graphiql-react/dist/forEachState.cjs.js ***!\n-              \\*****************************************************/\n+        \"../../codemirror-graphql/esm/utils/forEachState.js\":\n+            /*!**********************************************************!*\\\n+              !*** ../../codemirror-graphql/esm/utils/forEachState.js ***!\n+              \\**********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports[\"default\"] = forEachState;\n+\n                 function forEachState(stack, fn) {\n                     const reverseStateStack = [];\n                     let state = stack;\n                     while (state === null || state === void 0 ? void 0 : state.kind) {\n                         reverseStateStack.push(state);\n                         state = state.prevState;\n                     }\n                     for (let i = reverseStateStack.length - 1; i >= 0; i--) {\n                         fn(reverseStateStack[i]);\n                     }\n                 }\n-                exports.forEachState = forEachState;\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-react/dist/hint.cjs.js\":\n-            /*!*********************************************!*\\\n-              !*** ../../graphiql-react/dist/hint.cjs.js ***!\n-              \\*********************************************/\n+        \"../../codemirror-graphql/esm/utils/getTypeInfo.js\":\n+            /*!*********************************************************!*\\\n+              !*** ../../codemirror-graphql/esm/utils/getTypeInfo.js ***!\n+              \\*********************************************************/\n             /***/\n-            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs.js */ \"../../graphiql-react/dist/codemirror.cjs.js\");\n-                __webpack_require__( /*! ./show-hint.cjs.js */ \"../../graphiql-react/dist/show-hint.cjs.js\");\n-                const graphqlLanguageService = __webpack_require__( /*! graphql-language-service */ \"../../graphql-language-service/esm/index.js\");\n-                codemirror.CodeMirror.registerHelper(\"hint\", \"graphql\", (editor, options) => {\n-                    const {\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports[\"default\"] = getTypeInfo;\n+                var _graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n+                var _forEachState = _interopRequireDefault(__webpack_require__( /*! ./forEachState */ \"../../codemirror-graphql/esm/utils/forEachState.js\"));\n+\n+                function _interopRequireDefault(obj) {\n+                    return obj && obj.__esModule ? obj : {\n+                        default: obj\n+                    };\n+                }\n+\n+                function getTypeInfo(schema, tokenState) {\n+                    const info = {\n                         schema,\n-                        externalFragments,\n-                        autocompleteOptions\n-                    } = options;\n-                    if (!schema) {\n-                        return;\n+                        type: null,\n+                        parentType: null,\n+                        inputType: null,\n+                        directiveDef: null,\n+                        fieldDef: null,\n+                        argDef: null,\n+                        argDefs: null,\n+                        objectFieldDefs: null\n+                    };\n+                    (0, _forEachState.default)(tokenState, state => {\n+                        var _a, _b;\n+                        switch (state.kind) {\n+                            case 'Query':\n+                            case 'ShortQuery':\n+                                info.type = schema.getQueryType();\n+                                break;\n+                            case 'Mutation':\n+                                info.type = schema.getMutationType();\n+                                break;\n+                            case 'Subscription':\n+                                info.type = schema.getSubscriptionType();\n+                                break;\n+                            case 'InlineFragment':\n+                            case 'FragmentDefinition':\n+                                if (state.type) {\n+                                    info.type = schema.getType(state.type);\n+                                }\n+                                break;\n+                            case 'Field':\n+                            case 'AliasedField':\n+                                info.fieldDef = info.type && state.name ? getFieldDef(schema, info.parentType, state.name) : null;\n+                                info.type = (_a = info.fieldDef) === null || _a === void 0 ? void 0 : _a.type;\n+                                break;\n+                            case 'SelectionSet':\n+                                info.parentType = info.type ? (0, _graphql.getNamedType)(info.type) : null;\n+                                break;\n+                            case 'Directive':\n+                                info.directiveDef = state.name ? schema.getDirective(state.name) : null;\n+                                break;\n+                            case 'Arguments':\n+                                const parentDef = state.prevState ? state.prevState.kind === 'Field' ? info.fieldDef : state.prevState.kind === 'Directive' ? info.directiveDef : state.prevState.kind === 'AliasedField' ? state.prevState.name && getFieldDef(schema, info.parentType, state.prevState.name) : null : null;\n+                                info.argDefs = parentDef ? parentDef.args : null;\n+                                break;\n+                            case 'Argument':\n+                                info.argDef = null;\n+                                if (info.argDefs) {\n+                                    for (let i = 0; i < info.argDefs.length; i++) {\n+                                        if (info.argDefs[i].name === state.name) {\n+                                            info.argDef = info.argDefs[i];\n+                                            break;\n+                                        }\n+                                    }\n+                                }\n+                                info.inputType = (_b = info.argDef) === null || _b === void 0 ? void 0 : _b.type;\n+                                break;\n+                            case 'EnumValue':\n+                                const enumType = info.inputType ? (0, _graphql.getNamedType)(info.inputType) : null;\n+                                info.enumValue = enumType instanceof _graphql.GraphQLEnumType ? find(enumType.getValues(), val => val.value === state.name) : null;\n+                                break;\n+                            case 'ListValue':\n+                                const nullableType = info.inputType ? (0, _graphql.getNullableType)(info.inputType) : null;\n+                                info.inputType = nullableType instanceof _graphql.GraphQLList ? nullableType.ofType : null;\n+                                break;\n+                            case 'ObjectValue':\n+                                const objectType = info.inputType ? (0, _graphql.getNamedType)(info.inputType) : null;\n+                                info.objectFieldDefs = objectType instanceof _graphql.GraphQLInputObjectType ? objectType.getFields() : null;\n+                                break;\n+                            case 'ObjectField':\n+                                const objectField = state.name && info.objectFieldDefs ? info.objectFieldDefs[state.name] : null;\n+                                info.inputType = objectField === null || objectField === void 0 ? void 0 : objectField.type;\n+                                info.fieldDef = objectField;\n+                                break;\n+                            case 'NamedType':\n+                                info.type = state.name ? schema.getType(state.name) : null;\n+                                break;\n+                        }\n+                    });\n+                    return info;\n+                }\n+\n+                function getFieldDef(schema, type, fieldName) {\n+                    if (fieldName === _graphql.SchemaMetaFieldDef.name && schema.getQueryType() === type) {\n+                        return _graphql.SchemaMetaFieldDef;\n                     }\n-                    const cur = editor.getCursor();\n-                    const token = editor.getTokenAt(cur);\n-                    const tokenStart = token.type !== null && /\"|\\w/.test(token.string[0]) ? token.start : token.end;\n-                    const position = new graphqlLanguageService.Position(cur.line, tokenStart);\n-                    const rawResults = graphqlLanguageService.getAutocompleteSuggestions(schema, editor.getValue(), position, token, externalFragments, autocompleteOptions);\n-                    const results = {\n-                        list: rawResults.map(item => {\n-                            var _a;\n-                            return {\n-                                text: (_a = item === null || item === void 0 ? void 0 : item.rawInsert) !== null && _a !== void 0 ? _a : item.label,\n-                                type: item.type,\n-                                description: item.documentation,\n-                                isDeprecated: item.isDeprecated,\n-                                deprecationReason: item.deprecationReason\n-                            };\n-                        }),\n-                        from: {\n-                            line: cur.line,\n-                            ch: tokenStart\n-                        },\n-                        to: {\n-                            line: cur.line,\n-                            ch: token.end\n+                    if (fieldName === _graphql.TypeMetaFieldDef.name && schema.getQueryType() === type) {\n+                        return _graphql.TypeMetaFieldDef;\n+                    }\n+                    if (fieldName === _graphql.TypeNameMetaFieldDef.name && (0, _graphql.isCompositeType)(type)) {\n+                        return _graphql.TypeNameMetaFieldDef;\n+                    }\n+                    if (type && type.getFields) {\n+                        return type.getFields()[fieldName];\n+                    }\n+                }\n+\n+                function find(array, predicate) {\n+                    for (let i = 0; i < array.length; i++) {\n+                        if (predicate(array[i])) {\n+                            return array[i];\n                         }\n-                    };\n-                    if ((results === null || results === void 0 ? void 0 : results.list) && results.list.length > 0) {\n-                        results.from = codemirror.CodeMirror.Pos(results.from.line, results.from.ch);\n-                        results.to = codemirror.CodeMirror.Pos(results.to.line, results.to.ch);\n-                        codemirror.CodeMirror.signal(editor, \"hasCompletion\", editor, results, token);\n                     }\n-                    return results;\n-                });\n+                }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-react/dist/hint.cjs2.js\":\n-            /*!**********************************************!*\\\n-              !*** ../../graphiql-react/dist/hint.cjs2.js ***!\n-              \\**********************************************/\n+        \"../../codemirror-graphql/esm/utils/hintList.js\":\n+            /*!******************************************************!*\\\n+              !*** ../../codemirror-graphql/esm/utils/hintList.js ***!\n+              \\******************************************************/\n             /***/\n-            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n+            (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs.js */ \"../../graphiql-react/dist/codemirror.cjs.js\");\n-                const graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n-                const forEachState = __webpack_require__( /*! ./forEachState.cjs.js */ \"../../graphiql-react/dist/forEachState.cjs.js\");\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports[\"default\"] = hintList;\n \n                 function hintList(cursor, token, list) {\n                     const hints = filterAndSortList(list, normalizeText(token.string));\n                     if (!hints) {\n                         return;\n                     }\n                     const tokenStart = token.type !== null && /\"|\\w/.test(token.string[0]) ? token.start : token.end;\n@@ -73372,15 +78302,15 @@\n \n                 function filterNonEmpty(array, predicate) {\n                     const filtered = array.filter(predicate);\n                     return filtered.length === 0 ? array : filtered;\n                 }\n \n                 function normalizeText(text) {\n-                    return text.toLowerCase().replaceAll(/\\W/g, \"\");\n+                    return text.toLowerCase().replaceAll(/\\W/g, '');\n                 }\n \n                 function getProximity(suggestion, text) {\n                     let proximity = lexicalDistance(text, suggestion);\n                     if (suggestion.length > text.length) {\n                         proximity -= suggestion.length - text.length - 1;\n                         proximity += suggestion.indexOf(text) === 0 ? 0 : 0.5;\n@@ -73407,140 +78337,1171 @@\n                             if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n                                 d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost);\n                             }\n                         }\n                     }\n                     return d[aLength][bLength];\n                 }\n-                codemirror.CodeMirror.registerHelper(\"hint\", \"graphql-variables\", (editor, options) => {\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../codemirror-graphql/esm/utils/info-addon.js\":\n+            /*!********************************************************!*\\\n+              !*** ../../codemirror-graphql/esm/utils/info-addon.js ***!\n+              \\********************************************************/\n+            /***/\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                var _codemirror = _interopRequireDefault(__webpack_require__( /*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+\n+                function _interopRequireDefault(obj) {\n+                    return obj && obj.__esModule ? obj : {\n+                        default: obj\n+                    };\n+                }\n+                _codemirror.default.defineOption('info', false, (cm, options, old) => {\n+                    if (old && old !== _codemirror.default.Init) {\n+                        const oldOnMouseOver = cm.state.info.onMouseOver;\n+                        _codemirror.default.off(cm.getWrapperElement(), 'mouseover', oldOnMouseOver);\n+                        clearTimeout(cm.state.info.hoverTimeout);\n+                        delete cm.state.info;\n+                    }\n+                    if (options) {\n+                        const state = cm.state.info = createState(options);\n+                        state.onMouseOver = onMouseOver.bind(null, cm);\n+                        _codemirror.default.on(cm.getWrapperElement(), 'mouseover', state.onMouseOver);\n+                    }\n+                });\n+\n+                function createState(options) {\n+                    return {\n+                        options: options instanceof Function ? {\n+                            render: options\n+                        } : options === true ? {} : options\n+                    };\n+                }\n+\n+                function getHoverTime(cm) {\n+                    const {\n+                        options\n+                    } = cm.state.info;\n+                    return (options === null || options === void 0 ? void 0 : options.hoverTime) || 500;\n+                }\n+\n+                function onMouseOver(cm, e) {\n+                    const state = cm.state.info;\n+                    const target = e.target || e.srcElement;\n+                    if (!(target instanceof HTMLElement)) {\n+                        return;\n+                    }\n+                    if (target.nodeName !== 'SPAN' || state.hoverTimeout !== undefined) {\n+                        return;\n+                    }\n+                    const box = target.getBoundingClientRect();\n+                    const onMouseMove = function() {\n+                        clearTimeout(state.hoverTimeout);\n+                        state.hoverTimeout = setTimeout(onHover, hoverTime);\n+                    };\n+                    const onMouseOut = function() {\n+                        _codemirror.default.off(document, 'mousemove', onMouseMove);\n+                        _codemirror.default.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n+                        clearTimeout(state.hoverTimeout);\n+                        state.hoverTimeout = undefined;\n+                    };\n+                    const onHover = function() {\n+                        _codemirror.default.off(document, 'mousemove', onMouseMove);\n+                        _codemirror.default.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n+                        state.hoverTimeout = undefined;\n+                        onMouseHover(cm, box);\n+                    };\n+                    const hoverTime = getHoverTime(cm);\n+                    state.hoverTimeout = setTimeout(onHover, hoverTime);\n+                    _codemirror.default.on(document, 'mousemove', onMouseMove);\n+                    _codemirror.default.on(cm.getWrapperElement(), 'mouseout', onMouseOut);\n+                }\n+\n+                function onMouseHover(cm, box) {\n+                    const pos = cm.coordsChar({\n+                        left: (box.left + box.right) / 2,\n+                        top: (box.top + box.bottom) / 2\n+                    }, 'window');\n+                    const state = cm.state.info;\n+                    const {\n+                        options\n+                    } = state;\n+                    const render = options.render || cm.getHelper(pos, 'info');\n+                    if (render) {\n+                        const token = cm.getTokenAt(pos, true);\n+                        if (token) {\n+                            const info = render(token, options, cm, pos);\n+                            if (info) {\n+                                showPopup(cm, box, info);\n+                            }\n+                        }\n+                    }\n+                }\n+\n+                function showPopup(cm, box, info) {\n+                    const popup = document.createElement('div');\n+                    popup.className = 'CodeMirror-info';\n+                    popup.append(info);\n+                    document.body.append(popup);\n+                    const popupBox = popup.getBoundingClientRect();\n+                    const popupStyle = window.getComputedStyle(popup);\n+                    const popupWidth = popupBox.right - popupBox.left + parseFloat(popupStyle.marginLeft) + parseFloat(popupStyle.marginRight);\n+                    const popupHeight = popupBox.bottom - popupBox.top + parseFloat(popupStyle.marginTop) + parseFloat(popupStyle.marginBottom);\n+                    let topPos = box.bottom;\n+                    if (popupHeight > window.innerHeight - box.bottom - 15 && box.top > window.innerHeight - box.bottom) {\n+                        topPos = box.top - popupHeight;\n+                    }\n+                    if (topPos < 0) {\n+                        topPos = box.bottom;\n+                    }\n+                    let leftPos = Math.max(0, window.innerWidth - popupWidth - 15);\n+                    if (leftPos > box.left) {\n+                        leftPos = box.left;\n+                    }\n+                    popup.style.opacity = '1';\n+                    popup.style.top = topPos + 'px';\n+                    popup.style.left = leftPos + 'px';\n+                    let popupTimeout;\n+                    const onMouseOverPopup = function() {\n+                        clearTimeout(popupTimeout);\n+                    };\n+                    const onMouseOut = function() {\n+                        clearTimeout(popupTimeout);\n+                        popupTimeout = setTimeout(hidePopup, 200);\n+                    };\n+                    const hidePopup = function() {\n+                        _codemirror.default.off(popup, 'mouseover', onMouseOverPopup);\n+                        _codemirror.default.off(popup, 'mouseout', onMouseOut);\n+                        _codemirror.default.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n+                        if (popup.style.opacity) {\n+                            popup.style.opacity = '0';\n+                            setTimeout(() => {\n+                                if (popup.parentNode) {\n+                                    popup.remove();\n+                                }\n+                            }, 600);\n+                        } else if (popup.parentNode) {\n+                            popup.remove();\n+                        }\n+                    };\n+                    _codemirror.default.on(popup, 'mouseover', onMouseOverPopup);\n+                    _codemirror.default.on(popup, 'mouseout', onMouseOut);\n+                    _codemirror.default.on(cm.getWrapperElement(), 'mouseout', onMouseOut);\n+                }\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../codemirror-graphql/esm/utils/jsonParse.js\":\n+            /*!*******************************************************!*\\\n+              !*** ../../codemirror-graphql/esm/utils/jsonParse.js ***!\n+              \\*******************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports) {\n+\n+                \"use strict\";\n+\n+\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports.JSONSyntaxError = void 0;\n+                exports[\"default\"] = jsonParse;\n+\n+                function jsonParse(str) {\n+                    string = str;\n+                    strLen = str.length;\n+                    start = end = lastEnd = -1;\n+                    ch();\n+                    lex();\n+                    const ast = parseObj();\n+                    expect('EOF');\n+                    return ast;\n+                }\n+                let string;\n+                let strLen;\n+                let start;\n+                let end;\n+                let lastEnd;\n+                let code;\n+                let kind;\n+\n+                function parseObj() {\n+                    const nodeStart = start;\n+                    const members = [];\n+                    expect('{');\n+                    if (!skip('}')) {\n+                        do {\n+                            members.push(parseMember());\n+                        } while (skip(','));\n+                        expect('}');\n+                    }\n+                    return {\n+                        kind: 'Object',\n+                        start: nodeStart,\n+                        end: lastEnd,\n+                        members\n+                    };\n+                }\n+\n+                function parseMember() {\n+                    const nodeStart = start;\n+                    const key = kind === 'String' ? curToken() : null;\n+                    expect('String');\n+                    expect(':');\n+                    const value = parseVal();\n+                    return {\n+                        kind: 'Member',\n+                        start: nodeStart,\n+                        end: lastEnd,\n+                        key,\n+                        value\n+                    };\n+                }\n+\n+                function parseArr() {\n+                    const nodeStart = start;\n+                    const values = [];\n+                    expect('[');\n+                    if (!skip(']')) {\n+                        do {\n+                            values.push(parseVal());\n+                        } while (skip(','));\n+                        expect(']');\n+                    }\n+                    return {\n+                        kind: 'Array',\n+                        start: nodeStart,\n+                        end: lastEnd,\n+                        values\n+                    };\n+                }\n+\n+                function parseVal() {\n+                    switch (kind) {\n+                        case '[':\n+                            return parseArr();\n+                        case '{':\n+                            return parseObj();\n+                        case 'String':\n+                        case 'Number':\n+                        case 'Boolean':\n+                        case 'Null':\n+                            const token = curToken();\n+                            lex();\n+                            return token;\n+                    }\n+                    expect('Value');\n+                }\n+\n+                function curToken() {\n+                    return {\n+                        kind,\n+                        start,\n+                        end,\n+                        value: JSON.parse(string.slice(start, end))\n+                    };\n+                }\n+\n+                function expect(str) {\n+                    if (kind === str) {\n+                        lex();\n+                        return;\n+                    }\n+                    let found;\n+                    if (kind === 'EOF') {\n+                        found = '[end of file]';\n+                    } else if (end - start > 1) {\n+                        found = '`' + string.slice(start, end) + '`';\n+                    } else {\n+                        const match = string.slice(start).match(/^.+?\\b/);\n+                        found = '`' + (match ? match[0] : string[start]) + '`';\n+                    }\n+                    throw syntaxError(`Expected ${str} but found ${found}.`);\n+                }\n+                class JSONSyntaxError extends Error {\n+                    constructor(message, position) {\n+                        super(message);\n+                        this.position = position;\n+                    }\n+                }\n+                exports.JSONSyntaxError = JSONSyntaxError;\n+\n+                function syntaxError(message) {\n+                    return new JSONSyntaxError(message, {\n+                        start,\n+                        end\n+                    });\n+                }\n+\n+                function skip(k) {\n+                    if (kind === k) {\n+                        lex();\n+                        return true;\n+                    }\n+                }\n+\n+                function ch() {\n+                    if (end < strLen) {\n+                        end++;\n+                        code = end === strLen ? 0 : string.charCodeAt(end);\n+                    }\n+                    return code;\n+                }\n+\n+                function lex() {\n+                    lastEnd = end;\n+                    while (code === 9 || code === 10 || code === 13 || code === 32) {\n+                        ch();\n+                    }\n+                    if (code === 0) {\n+                        kind = 'EOF';\n+                        return;\n+                    }\n+                    start = end;\n+                    switch (code) {\n+                        case 34:\n+                            kind = 'String';\n+                            return readString();\n+                        case 45:\n+                        case 48:\n+                        case 49:\n+                        case 50:\n+                        case 51:\n+                        case 52:\n+                        case 53:\n+                        case 54:\n+                        case 55:\n+                        case 56:\n+                        case 57:\n+                            kind = 'Number';\n+                            return readNumber();\n+                        case 102:\n+                            if (string.slice(start, start + 5) !== 'false') {\n+                                break;\n+                            }\n+                            end += 4;\n+                            ch();\n+                            kind = 'Boolean';\n+                            return;\n+                        case 110:\n+                            if (string.slice(start, start + 4) !== 'null') {\n+                                break;\n+                            }\n+                            end += 3;\n+                            ch();\n+                            kind = 'Null';\n+                            return;\n+                        case 116:\n+                            if (string.slice(start, start + 4) !== 'true') {\n+                                break;\n+                            }\n+                            end += 3;\n+                            ch();\n+                            kind = 'Boolean';\n+                            return;\n+                    }\n+                    kind = string[start];\n+                    ch();\n+                }\n+\n+                function readString() {\n+                    ch();\n+                    while (code !== 34 && code > 31) {\n+                        if (code === 92) {\n+                            code = ch();\n+                            switch (code) {\n+                                case 34:\n+                                case 47:\n+                                case 92:\n+                                case 98:\n+                                case 102:\n+                                case 110:\n+                                case 114:\n+                                case 116:\n+                                    ch();\n+                                    break;\n+                                case 117:\n+                                    ch();\n+                                    readHex();\n+                                    readHex();\n+                                    readHex();\n+                                    readHex();\n+                                    break;\n+                                default:\n+                                    throw syntaxError('Bad character escape sequence.');\n+                            }\n+                        } else if (end === strLen) {\n+                            throw syntaxError('Unterminated string.');\n+                        } else {\n+                            ch();\n+                        }\n+                    }\n+                    if (code === 34) {\n+                        ch();\n+                        return;\n+                    }\n+                    throw syntaxError('Unterminated string.');\n+                }\n+\n+                function readHex() {\n+                    if (code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102) {\n+                        return ch();\n+                    }\n+                    throw syntaxError('Expected hexadecimal digit.');\n+                }\n+\n+                function readNumber() {\n+                    if (code === 45) {\n+                        ch();\n+                    }\n+                    if (code === 48) {\n+                        ch();\n+                    } else {\n+                        readDigits();\n+                    }\n+                    if (code === 46) {\n+                        ch();\n+                        readDigits();\n+                    }\n+                    if (code === 69 || code === 101) {\n+                        code = ch();\n+                        if (code === 43 || code === 45) {\n+                            ch();\n+                        }\n+                        readDigits();\n+                    }\n+                }\n+\n+                function readDigits() {\n+                    if (code < 48 || code > 57) {\n+                        throw syntaxError('Expected decimal digit.');\n+                    }\n+                    do {\n+                        ch();\n+                    } while (code >= 48 && code <= 57);\n+                }\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../codemirror-graphql/esm/utils/jump-addon.js\":\n+            /*!********************************************************!*\\\n+              !*** ../../codemirror-graphql/esm/utils/jump-addon.js ***!\n+              \\********************************************************/\n+            /***/\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                var _codemirror = _interopRequireDefault(__webpack_require__( /*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+\n+                function _interopRequireDefault(obj) {\n+                    return obj && obj.__esModule ? obj : {\n+                        default: obj\n+                    };\n+                }\n+                _codemirror.default.defineOption('jump', false, (cm, options, old) => {\n+                    if (old && old !== _codemirror.default.Init) {\n+                        const oldOnMouseOver = cm.state.jump.onMouseOver;\n+                        _codemirror.default.off(cm.getWrapperElement(), 'mouseover', oldOnMouseOver);\n+                        const oldOnMouseOut = cm.state.jump.onMouseOut;\n+                        _codemirror.default.off(cm.getWrapperElement(), 'mouseout', oldOnMouseOut);\n+                        _codemirror.default.off(document, 'keydown', cm.state.jump.onKeyDown);\n+                        delete cm.state.jump;\n+                    }\n+                    if (options) {\n+                        const state = cm.state.jump = {\n+                            options,\n+                            onMouseOver: onMouseOver.bind(null, cm),\n+                            onMouseOut: onMouseOut.bind(null, cm),\n+                            onKeyDown: onKeyDown.bind(null, cm)\n+                        };\n+                        _codemirror.default.on(cm.getWrapperElement(), 'mouseover', state.onMouseOver);\n+                        _codemirror.default.on(cm.getWrapperElement(), 'mouseout', state.onMouseOut);\n+                        _codemirror.default.on(document, 'keydown', state.onKeyDown);\n+                    }\n+                });\n+\n+                function onMouseOver(cm, event) {\n+                    const target = event.target || event.srcElement;\n+                    if (!(target instanceof HTMLElement)) {\n+                        return;\n+                    }\n+                    if ((target === null || target === void 0 ? void 0 : target.nodeName) !== 'SPAN') {\n+                        return;\n+                    }\n+                    const box = target.getBoundingClientRect();\n+                    const cursor = {\n+                        left: (box.left + box.right) / 2,\n+                        top: (box.top + box.bottom) / 2\n+                    };\n+                    cm.state.jump.cursor = cursor;\n+                    if (cm.state.jump.isHoldingModifier) {\n+                        enableJumpMode(cm);\n+                    }\n+                }\n+\n+                function onMouseOut(cm) {\n+                    if (!cm.state.jump.isHoldingModifier && cm.state.jump.cursor) {\n+                        cm.state.jump.cursor = null;\n+                        return;\n+                    }\n+                    if (cm.state.jump.isHoldingModifier && cm.state.jump.marker) {\n+                        disableJumpMode(cm);\n+                    }\n+                }\n+\n+                function onKeyDown(cm, event) {\n+                    if (cm.state.jump.isHoldingModifier || !isJumpModifier(event.key)) {\n+                        return;\n+                    }\n+                    cm.state.jump.isHoldingModifier = true;\n+                    if (cm.state.jump.cursor) {\n+                        enableJumpMode(cm);\n+                    }\n+                    const onKeyUp = upEvent => {\n+                        if (upEvent.code !== event.code) {\n+                            return;\n+                        }\n+                        cm.state.jump.isHoldingModifier = false;\n+                        if (cm.state.jump.marker) {\n+                            disableJumpMode(cm);\n+                        }\n+                        _codemirror.default.off(document, 'keyup', onKeyUp);\n+                        _codemirror.default.off(document, 'click', onClick);\n+                        cm.off('mousedown', onMouseDown);\n+                    };\n+                    const onClick = clickEvent => {\n+                        const {\n+                            destination,\n+                            options\n+                        } = cm.state.jump;\n+                        if (destination) {\n+                            options.onClick(destination, clickEvent);\n+                        }\n+                    };\n+                    const onMouseDown = (_, downEvent) => {\n+                        if (cm.state.jump.destination) {\n+                            downEvent.codemirrorIgnore = true;\n+                        }\n+                    };\n+                    _codemirror.default.on(document, 'keyup', onKeyUp);\n+                    _codemirror.default.on(document, 'click', onClick);\n+                    cm.on('mousedown', onMouseDown);\n+                }\n+                const isMac = typeof navigator !== 'undefined' && navigator.userAgent.includes('Mac');\n+\n+                function isJumpModifier(key) {\n+                    return key === (isMac ? 'Meta' : 'Control');\n+                }\n+\n+                function enableJumpMode(cm) {\n+                    if (cm.state.jump.marker) {\n+                        return;\n+                    }\n+                    const {\n+                        cursor,\n+                        options\n+                    } = cm.state.jump;\n+                    const pos = cm.coordsChar(cursor);\n+                    const token = cm.getTokenAt(pos, true);\n+                    const getDestination = options.getDestination || cm.getHelper(pos, 'jump');\n+                    if (getDestination) {\n+                        const destination = getDestination(token, options, cm);\n+                        if (destination) {\n+                            const marker = cm.markText({\n+                                line: pos.line,\n+                                ch: token.start\n+                            }, {\n+                                line: pos.line,\n+                                ch: token.end\n+                            }, {\n+                                className: 'CodeMirror-jump-token'\n+                            });\n+                            cm.state.jump.marker = marker;\n+                            cm.state.jump.destination = destination;\n+                        }\n+                    }\n+                }\n+\n+                function disableJumpMode(cm) {\n+                    const {\n+                        marker\n+                    } = cm.state.jump;\n+                    cm.state.jump.marker = null;\n+                    cm.state.jump.destination = null;\n+                    marker.clear();\n+                }\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../codemirror-graphql/esm/utils/mode-factory.js\":\n+            /*!**********************************************************!*\\\n+              !*** ../../codemirror-graphql/esm/utils/mode-factory.js ***!\n+              \\**********************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports[\"default\"] = void 0;\n+                var _graphqlLanguageService = __webpack_require__( /*! graphql-language-service */ \"../../graphql-language-service/esm/index.js\");\n+                var _modeIndent = _interopRequireDefault(__webpack_require__( /*! ./mode-indent */ \"../../codemirror-graphql/esm/utils/mode-indent.js\"));\n+\n+                function _interopRequireDefault(obj) {\n+                    return obj && obj.__esModule ? obj : {\n+                        default: obj\n+                    };\n+                }\n+                const graphqlModeFactory = config => {\n+                    const parser = (0, _graphqlLanguageService.onlineParser)({\n+                        eatWhitespace: stream => stream.eatWhile(_graphqlLanguageService.isIgnored),\n+                        lexRules: _graphqlLanguageService.LexRules,\n+                        parseRules: _graphqlLanguageService.ParseRules,\n+                        editorConfig: {\n+                            tabSize: config.tabSize\n+                        }\n+                    });\n+                    return {\n+                        config,\n+                        startState: parser.startState,\n+                        token: parser.token,\n+                        indent: _modeIndent.default,\n+                        electricInput: /^\\s*[})\\]]/,\n+                        fold: 'brace',\n+                        lineComment: '#',\n+                        closeBrackets: {\n+                            pairs: '()[]{}\"\"',\n+                            explode: '()[]{}'\n+                        }\n+                    };\n+                };\n+                var _default = exports[\"default\"] = graphqlModeFactory;\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../codemirror-graphql/esm/utils/mode-indent.js\":\n+            /*!*********************************************************!*\\\n+              !*** ../../codemirror-graphql/esm/utils/mode-indent.js ***!\n+              \\*********************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports) {\n+\n+                \"use strict\";\n+\n+\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports[\"default\"] = indent;\n+\n+                function indent(state, textAfter) {\n+                    var _a, _b;\n+                    const {\n+                        levels,\n+                        indentLevel\n+                    } = state;\n+                    const level = !levels || levels.length === 0 ? indentLevel : levels.at(-1) - (((_a = this.electricInput) === null || _a === void 0 ? void 0 : _a.test(textAfter)) ? 1 : 0);\n+                    return (level || 0) * (((_b = this.config) === null || _b === void 0 ? void 0 : _b.indentUnit) || 0);\n+                }\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../codemirror-graphql/esm/variables/hint.js\":\n+            /*!******************************************************!*\\\n+              !*** ../../codemirror-graphql/esm/variables/hint.js ***!\n+              \\******************************************************/\n+            /***/\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                var _codemirror = _interopRequireDefault(__webpack_require__( /*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                var _graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n+                var _forEachState = _interopRequireDefault(__webpack_require__( /*! ../utils/forEachState */ \"../../codemirror-graphql/esm/utils/forEachState.js\"));\n+                var _hintList = _interopRequireDefault(__webpack_require__( /*! ../utils/hintList */ \"../../codemirror-graphql/esm/utils/hintList.js\"));\n+\n+                function _interopRequireDefault(obj) {\n+                    return obj && obj.__esModule ? obj : {\n+                        default: obj\n+                    };\n+                }\n+                _codemirror.default.registerHelper('hint', 'graphql-variables', (editor, options) => {\n                     const cur = editor.getCursor();\n                     const token = editor.getTokenAt(cur);\n                     const results = getVariablesHint(cur, token, options);\n                     if ((results === null || results === void 0 ? void 0 : results.list) && results.list.length > 0) {\n-                        results.from = codemirror.CodeMirror.Pos(results.from.line, results.from.ch);\n-                        results.to = codemirror.CodeMirror.Pos(results.to.line, results.to.ch);\n-                        codemirror.CodeMirror.signal(editor, \"hasCompletion\", editor, results, token);\n+                        results.from = _codemirror.default.Pos(results.from.line, results.from.ch);\n+                        results.to = _codemirror.default.Pos(results.to.line, results.to.ch);\n+                        _codemirror.default.signal(editor, 'hasCompletion', editor, results, token);\n                     }\n                     return results;\n                 });\n \n                 function getVariablesHint(cur, token, options) {\n-                    const state = token.state.kind === \"Invalid\" ? token.state.prevState : token.state;\n+                    const state = token.state.kind === 'Invalid' ? token.state.prevState : token.state;\n                     const {\n                         kind,\n                         step\n                     } = state;\n-                    if (kind === \"Document\" && step === 0) {\n-                        return hintList(cur, token, [{\n-                            text: \"{\"\n+                    if (kind === 'Document' && step === 0) {\n+                        return (0, _hintList.default)(cur, token, [{\n+                            text: '{'\n                         }]);\n                     }\n                     const {\n                         variableToType\n                     } = options;\n                     if (!variableToType) {\n                         return;\n                     }\n                     const typeInfo = getTypeInfo(variableToType, token.state);\n-                    if (kind === \"Document\" || kind === \"Variable\" && step === 0) {\n+                    if (kind === 'Document' || kind === 'Variable' && step === 0) {\n                         const variableNames = Object.keys(variableToType);\n-                        return hintList(cur, token, variableNames.map(name => ({\n+                        return (0, _hintList.default)(cur, token, variableNames.map(name => ({\n                             text: `\"${name}\": `,\n                             type: variableToType[name]\n                         })));\n                     }\n-                    if ((kind === \"ObjectValue\" || kind === \"ObjectField\" && step === 0) && typeInfo.fields) {\n+                    if ((kind === 'ObjectValue' || kind === 'ObjectField' && step === 0) && typeInfo.fields) {\n                         const inputFields = Object.keys(typeInfo.fields).map(fieldName => typeInfo.fields[fieldName]);\n-                        return hintList(cur, token, inputFields.map(field => ({\n+                        return (0, _hintList.default)(cur, token, inputFields.map(field => ({\n                             text: `\"${field.name}\": `,\n                             type: field.type,\n                             description: field.description\n                         })));\n                     }\n-                    if (kind === \"StringValue\" || kind === \"NumberValue\" || kind === \"BooleanValue\" || kind === \"NullValue\" || kind === \"ListValue\" && step === 1 || kind === \"ObjectField\" && step === 2 || kind === \"Variable\" && step === 2) {\n-                        const namedInputType = typeInfo.type ? graphql.getNamedType(typeInfo.type) : void 0;\n-                        if (namedInputType instanceof graphql.GraphQLInputObjectType) {\n-                            return hintList(cur, token, [{\n-                                text: \"{\"\n+                    if (kind === 'StringValue' || kind === 'NumberValue' || kind === 'BooleanValue' || kind === 'NullValue' || kind === 'ListValue' && step === 1 || kind === 'ObjectField' && step === 2 || kind === 'Variable' && step === 2) {\n+                        const namedInputType = typeInfo.type ? (0, _graphql.getNamedType)(typeInfo.type) : undefined;\n+                        if (namedInputType instanceof _graphql.GraphQLInputObjectType) {\n+                            return (0, _hintList.default)(cur, token, [{\n+                                text: '{'\n                             }]);\n                         }\n-                        if (namedInputType instanceof graphql.GraphQLEnumType) {\n+                        if (namedInputType instanceof _graphql.GraphQLEnumType) {\n                             const values = namedInputType.getValues();\n-                            return hintList(cur, token, values.map(value => ({\n+                            return (0, _hintList.default)(cur, token, values.map(value => ({\n                                 text: `\"${value.name}\"`,\n                                 type: namedInputType,\n                                 description: value.description\n                             })));\n                         }\n-                        if (namedInputType === graphql.GraphQLBoolean) {\n-                            return hintList(cur, token, [{\n-                                text: \"true\",\n-                                type: graphql.GraphQLBoolean,\n-                                description: \"Not false.\"\n+                        if (namedInputType === _graphql.GraphQLBoolean) {\n+                            return (0, _hintList.default)(cur, token, [{\n+                                text: 'true',\n+                                type: _graphql.GraphQLBoolean,\n+                                description: 'Not false.'\n                             }, {\n-                                text: \"false\",\n-                                type: graphql.GraphQLBoolean,\n-                                description: \"Not true.\"\n+                                text: 'false',\n+                                type: _graphql.GraphQLBoolean,\n+                                description: 'Not true.'\n                             }]);\n                         }\n                     }\n                 }\n \n                 function getTypeInfo(variableToType, tokenState) {\n                     const info = {\n                         type: null,\n                         fields: null\n                     };\n-                    forEachState.forEachState(tokenState, state => {\n+                    (0, _forEachState.default)(tokenState, state => {\n                         switch (state.kind) {\n-                            case \"Variable\": {\n+                            case 'Variable': {\n                                 info.type = variableToType[state.name];\n                                 break;\n                             }\n-                            case \"ListValue\": {\n-                                const nullableType = info.type ? graphql.getNullableType(info.type) : void 0;\n-                                info.type = nullableType instanceof graphql.GraphQLList ? nullableType.ofType : null;\n+                            case 'ListValue': {\n+                                const nullableType = info.type ? (0, _graphql.getNullableType)(info.type) : undefined;\n+                                info.type = nullableType instanceof _graphql.GraphQLList ? nullableType.ofType : null;\n                                 break;\n                             }\n-                            case \"ObjectValue\": {\n-                                const objectType = info.type ? graphql.getNamedType(info.type) : void 0;\n-                                info.fields = objectType instanceof graphql.GraphQLInputObjectType ? objectType.getFields() : null;\n+                            case 'ObjectValue': {\n+                                const objectType = info.type ? (0, _graphql.getNamedType)(info.type) : undefined;\n+                                info.fields = objectType instanceof _graphql.GraphQLInputObjectType ? objectType.getFields() : null;\n                                 break;\n                             }\n-                            case \"ObjectField\": {\n+                            case 'ObjectField': {\n                                 const objectField = state.name && info.fields ? info.fields[state.name] : null;\n                                 info.type = objectField === null || objectField === void 0 ? void 0 : objectField.type;\n                                 break;\n                             }\n                         }\n                     });\n                     return info;\n                 }\n \n                 /***/\n             }),\n \n         /***/\n+        \"../../codemirror-graphql/esm/variables/lint.js\":\n+            /*!******************************************************!*\\\n+              !*** ../../codemirror-graphql/esm/variables/lint.js ***!\n+              \\******************************************************/\n+            /***/\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                var _codemirror = _interopRequireDefault(__webpack_require__( /*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                var _graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n+                var _jsonParse = _interopRequireWildcard(__webpack_require__( /*! ../utils/jsonParse */ \"../../codemirror-graphql/esm/utils/jsonParse.js\"));\n+\n+                function _getRequireWildcardCache(e) {\n+                    if (\"function\" != typeof WeakMap) return null;\n+                    var r = new WeakMap(),\n+                        t = new WeakMap();\n+                    return (_getRequireWildcardCache = function(e) {\n+                        return e ? t : r;\n+                    })(e);\n+                }\n+\n+                function _interopRequireWildcard(e, r) {\n+                    if (!r && e && e.__esModule) return e;\n+                    if (null === e || \"object\" != typeof e && \"function\" != typeof e) return {\n+                        default: e\n+                    };\n+                    var t = _getRequireWildcardCache(r);\n+                    if (t && t.has(e)) return t.get(e);\n+                    var n = {\n+                            __proto__: null\n+                        },\n+                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;\n+                    for (var u in e)\n+                        if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) {\n+                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;\n+                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];\n+                        } return n.default = e, t && t.set(e, n), n;\n+                }\n+\n+                function _interopRequireDefault(obj) {\n+                    return obj && obj.__esModule ? obj : {\n+                        default: obj\n+                    };\n+                }\n+                _codemirror.default.registerHelper('lint', 'graphql-variables', (text, options, editor) => {\n+                    if (!text) {\n+                        return [];\n+                    }\n+                    let ast;\n+                    try {\n+                        ast = (0, _jsonParse.default)(text);\n+                    } catch (error) {\n+                        if (error instanceof _jsonParse.JSONSyntaxError) {\n+                            return [lintError(editor, error.position, error.message)];\n+                        }\n+                        throw error;\n+                    }\n+                    const {\n+                        variableToType\n+                    } = options;\n+                    if (!variableToType) {\n+                        return [];\n+                    }\n+                    return validateVariables(editor, variableToType, ast);\n+                });\n+\n+                function validateVariables(editor, variableToType, variablesAST) {\n+                    var _a;\n+                    const errors = [];\n+                    for (const member of variablesAST.members) {\n+                        if (member) {\n+                            const variableName = (_a = member.key) === null || _a === void 0 ? void 0 : _a.value;\n+                            const type = variableToType[variableName];\n+                            if (type) {\n+                                for (const [node, message] of validateValue(type, member.value)) {\n+                                    errors.push(lintError(editor, node, message));\n+                                }\n+                            } else {\n+                                errors.push(lintError(editor, member.key, `Variable \"$${variableName}\" does not appear in any GraphQL query.`));\n+                            }\n+                        }\n+                    }\n+                    return errors;\n+                }\n+\n+                function validateValue(type, valueAST) {\n+                    if (!type || !valueAST) {\n+                        return [];\n+                    }\n+                    if (type instanceof _graphql.GraphQLNonNull) {\n+                        if (valueAST.kind === 'Null') {\n+                            return [\n+                                [valueAST, `Type \"${type}\" is non-nullable and cannot be null.`]\n+                            ];\n+                        }\n+                        return validateValue(type.ofType, valueAST);\n+                    }\n+                    if (valueAST.kind === 'Null') {\n+                        return [];\n+                    }\n+                    if (type instanceof _graphql.GraphQLList) {\n+                        const itemType = type.ofType;\n+                        if (valueAST.kind === 'Array') {\n+                            const values = valueAST.values || [];\n+                            return mapCat(values, item => validateValue(itemType, item));\n+                        }\n+                        return validateValue(itemType, valueAST);\n+                    }\n+                    if (type instanceof _graphql.GraphQLInputObjectType) {\n+                        if (valueAST.kind !== 'Object') {\n+                            return [\n+                                [valueAST, `Type \"${type}\" must be an Object.`]\n+                            ];\n+                        }\n+                        const providedFields = Object.create(null);\n+                        const fieldErrors = mapCat(valueAST.members, member => {\n+                            var _a;\n+                            const fieldName = (_a = member === null || member === void 0 ? void 0 : member.key) === null || _a === void 0 ? void 0 : _a.value;\n+                            providedFields[fieldName] = true;\n+                            const inputField = type.getFields()[fieldName];\n+                            if (!inputField) {\n+                                return [\n+                                    [member.key, `Type \"${type}\" does not have a field \"${fieldName}\".`]\n+                                ];\n+                            }\n+                            const fieldType = inputField ? inputField.type : undefined;\n+                            return validateValue(fieldType, member.value);\n+                        });\n+                        for (const fieldName of Object.keys(type.getFields())) {\n+                            const field = type.getFields()[fieldName];\n+                            if (!providedFields[fieldName] && field.type instanceof _graphql.GraphQLNonNull && !field.defaultValue) {\n+                                fieldErrors.push([valueAST, `Object of type \"${type}\" is missing required field \"${fieldName}\".`]);\n+                            }\n+                        }\n+                        return fieldErrors;\n+                    }\n+                    if (type.name === 'Boolean' && valueAST.kind !== 'Boolean' || type.name === 'String' && valueAST.kind !== 'String' || type.name === 'ID' && valueAST.kind !== 'Number' && valueAST.kind !== 'String' || type.name === 'Float' && valueAST.kind !== 'Number' || type.name === 'Int' && (valueAST.kind !== 'Number' || (valueAST.value | 0) !== valueAST.value)) {\n+                        return [\n+                            [valueAST, `Expected value of type \"${type}\".`]\n+                        ];\n+                    }\n+                    if ((type instanceof _graphql.GraphQLEnumType || type instanceof _graphql.GraphQLScalarType) && (valueAST.kind !== 'String' && valueAST.kind !== 'Number' && valueAST.kind !== 'Boolean' && valueAST.kind !== 'Null' || isNullish(type.parseValue(valueAST.value)))) {\n+                        return [\n+                            [valueAST, `Expected value of type \"${type}\".`]\n+                        ];\n+                    }\n+                    return [];\n+                }\n+\n+                function lintError(editor, node, message) {\n+                    return {\n+                        message,\n+                        severity: 'error',\n+                        type: 'validation',\n+                        from: editor.posFromIndex(node.start),\n+                        to: editor.posFromIndex(node.end)\n+                    };\n+                }\n+\n+                function isNullish(value) {\n+                    return value === null || value === undefined || value !== value;\n+                }\n+\n+                function mapCat(array, mapper) {\n+                    return Array.prototype.concat.apply([], array.map(mapper));\n+                }\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../codemirror-graphql/esm/variables/mode.js\":\n+            /*!******************************************************!*\\\n+              !*** ../../codemirror-graphql/esm/variables/mode.js ***!\n+              \\******************************************************/\n+            /***/\n+            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n+\n+                \"use strict\";\n+\n+\n+                var _codemirror = _interopRequireDefault(__webpack_require__( /*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"));\n+                var _graphqlLanguageService = __webpack_require__( /*! graphql-language-service */ \"../../graphql-language-service/esm/index.js\");\n+                var _modeIndent = _interopRequireDefault(__webpack_require__( /*! ../utils/mode-indent */ \"../../codemirror-graphql/esm/utils/mode-indent.js\"));\n+\n+                function _interopRequireDefault(obj) {\n+                    return obj && obj.__esModule ? obj : {\n+                        default: obj\n+                    };\n+                }\n+                _codemirror.default.defineMode('graphql-variables', config => {\n+                    const parser = (0, _graphqlLanguageService.onlineParser)({\n+                        eatWhitespace: stream => stream.eatSpace(),\n+                        lexRules: LexRules,\n+                        parseRules: ParseRules,\n+                        editorConfig: {\n+                            tabSize: config.tabSize\n+                        }\n+                    });\n+                    return {\n+                        config,\n+                        startState: parser.startState,\n+                        token: parser.token,\n+                        indent: _modeIndent.default,\n+                        electricInput: /^\\s*[}\\]]/,\n+                        fold: 'brace',\n+                        closeBrackets: {\n+                            pairs: '[]{}\"\"',\n+                            explode: '[]{}'\n+                        }\n+                    };\n+                });\n+                const LexRules = {\n+                    Punctuation: /^\\[|]|\\{|\\}|:|,/,\n+                    Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n+                    String: /^\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?/,\n+                    Keyword: /^true|false|null/\n+                };\n+                const ParseRules = {\n+                    Document: [(0, _graphqlLanguageService.p)('{'), (0, _graphqlLanguageService.list)('Variable', (0, _graphqlLanguageService.opt)((0, _graphqlLanguageService.p)(','))), (0, _graphqlLanguageService.p)('}')],\n+                    Variable: [namedKey('variable'), (0, _graphqlLanguageService.p)(':'), 'Value'],\n+                    Value(token) {\n+                        switch (token.kind) {\n+                            case 'Number':\n+                                return 'NumberValue';\n+                            case 'String':\n+                                return 'StringValue';\n+                            case 'Punctuation':\n+                                switch (token.value) {\n+                                    case '[':\n+                                        return 'ListValue';\n+                                    case '{':\n+                                        return 'ObjectValue';\n+                                }\n+                                return null;\n+                            case 'Keyword':\n+                                switch (token.value) {\n+                                    case 'true':\n+                                    case 'false':\n+                                        return 'BooleanValue';\n+                                    case 'null':\n+                                        return 'NullValue';\n+                                }\n+                                return null;\n+                        }\n+                    },\n+                    NumberValue: [(0, _graphqlLanguageService.t)('Number', 'number')],\n+                    StringValue: [(0, _graphqlLanguageService.t)('String', 'string')],\n+                    BooleanValue: [(0, _graphqlLanguageService.t)('Keyword', 'builtin')],\n+                    NullValue: [(0, _graphqlLanguageService.t)('Keyword', 'keyword')],\n+                    ListValue: [(0, _graphqlLanguageService.p)('['), (0, _graphqlLanguageService.list)('Value', (0, _graphqlLanguageService.opt)((0, _graphqlLanguageService.p)(','))), (0, _graphqlLanguageService.p)(']')],\n+                    ObjectValue: [(0, _graphqlLanguageService.p)('{'), (0, _graphqlLanguageService.list)('ObjectField', (0, _graphqlLanguageService.opt)((0, _graphqlLanguageService.p)(','))), (0, _graphqlLanguageService.p)('}')],\n+                    ObjectField: [namedKey('attribute'), (0, _graphqlLanguageService.p)(':'), 'Value']\n+                };\n+\n+                function namedKey(style) {\n+                    return {\n+                        style,\n+                        match: token => token.kind === 'String',\n+                        update(state, token) {\n+                            state.name = token.value.slice(1, -1);\n+                        }\n+                    };\n+                }\n+\n+                /***/\n+            }),\n+\n+        /***/\n         \"../../graphiql-react/dist/index.js\":\n             /*!******************************************!*\\\n               !*** ../../graphiql-react/dist/index.js ***!\n               \\******************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n+\n \n+                function _getRequireWildcardCache(e) {\n+                    if (\"function\" != typeof WeakMap) return null;\n+                    var r = new WeakMap(),\n+                        t = new WeakMap();\n+                    return (_getRequireWildcardCache = function(e) {\n+                        return e ? t : r;\n+                    })(e);\n+                }\n \n+                function _interopRequireWildcard(e, r) {\n+                    if (!r && e && e.__esModule) return e;\n+                    if (null === e || \"object\" != typeof e && \"function\" != typeof e) return {\n+                        default: e\n+                    };\n+                    var t = _getRequireWildcardCache(r);\n+                    if (t && t.has(e)) return t.get(e);\n+                    var n = {\n+                            __proto__: null\n+                        },\n+                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;\n+                    for (var u in e)\n+                        if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) {\n+                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;\n+                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];\n+                        } return n.default = e, t && t.set(e, n), n;\n+                }\n+                var __create = Object.create;\n+                var __defProp = Object.defineProperty;\n+                var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n+                var __getOwnPropNames = Object.getOwnPropertyNames;\n+                var __getProtoOf = Object.getPrototypeOf;\n+                var __hasOwnProp = Object.prototype.hasOwnProperty;\n+                var __copyProps = (to, from, except, desc) => {\n+                    if (from && typeof from === \"object\" || typeof from === \"function\") {\n+                        for (let key of __getOwnPropNames(from))\n+                            if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n+                                get: () => from[key],\n+                                enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n+                            });\n+                    }\n+                    return to;\n+                };\n+                var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n+                    // If the importer is in node compatibility mode or this is not an ESM\n+                    // file that has been converted to a CommonJS file using a Babel-\n+                    // compatible transform (i.e. \"__esModule\" has not been set), then set\n+                    // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n+                    isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", {\n+                        value: mod,\n+                        enumerable: true\n+                    }) : target, mod));\n                 Object.defineProperty(exports, Symbol.toStringTag, {\n                     value: \"Module\"\n                 });\n                 const jsxRuntime = __webpack_require__( /*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n+                const reactCompilerRuntime = __webpack_require__( /*! react-compiler-runtime */ \"../../../node_modules/react-compiler-runtime/dist/index.js\");\n                 const React = __webpack_require__( /*! react */ \"react\");\n                 const clsx = __webpack_require__( /*! clsx */ \"../../../node_modules/clsx/dist/clsx.m.js\");\n                 const graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n-                const toolkit = __webpack_require__( /*! @graphiql/toolkit */ \"../../graphiql-toolkit/esm/index.js\");\n+                const toolkit = __webpack_require__( /*! @graphiql/toolkit */ \"../../graphiql-toolkit/dist/esm/index.js\");\n                 const graphqlLanguageService = __webpack_require__( /*! graphql-language-service */ \"../../graphql-language-service/esm/index.js\");\n                 const setValue = __webpack_require__( /*! set-value */ \"../../../node_modules/set-value/index.js\");\n                 const getValue = __webpack_require__( /*! get-value */ \"../../../node_modules/get-value/index.js\");\n                 const copyToClipboard = __webpack_require__( /*! copy-to-clipboard */ \"../../../node_modules/copy-to-clipboard/index.js\");\n                 const D = __webpack_require__( /*! @radix-ui/react-dialog */ \"../../../node_modules/@radix-ui/react-dialog/dist/index.js\");\n                 const reactVisuallyHidden = __webpack_require__( /*! @radix-ui/react-visually-hidden */ \"../../../node_modules/@radix-ui/react-visually-hidden/dist/index.js\");\n                 const reactDropdownMenu = __webpack_require__( /*! @radix-ui/react-dropdown-menu */ \"../../../node_modules/@radix-ui/react-dropdown-menu/dist/index.js\");\n@@ -73581,39 +79542,69 @@\n                 }\n \n                 function createContextHook(context) {\n                     function useGivenContext(options) {\n                         var _a;\n                         const value = React.useContext(context);\n                         if (value === null && (options == null ? void 0 : options.nonNull)) {\n-                            throw new Error(`Tried to use \\`${((_a = options.caller) == null ? void 0 : _a.name) || useGivenContext.caller.name}\\` without the necessary context. Make sure to render the \\`${context.displayName}Provider\\` component higher up the tree.`);\n+                            throw new Error(`Tried to use \\`${((_a = options.caller) == null ? void 0 : _a.name) || \"a component\"}\\` without the necessary context. Make sure to render the \\`${context.displayName}Provider\\` component higher up the tree.`);\n                         }\n                         return value;\n                     }\n                     Object.defineProperty(useGivenContext, \"name\", {\n                         value: `use${context.displayName}`\n                     });\n                     return useGivenContext;\n                 }\n                 const StorageContext = createNullableContext(\"StorageContext\");\n \n                 function StorageContextProvider(props) {\n+                    const $ = reactCompilerRuntime.c(8);\n                     const isInitialRender = React.useRef(true);\n-                    const [storage, setStorage] = React.useState(new toolkit.StorageAPI(props.storage));\n-                    React.useEffect(() => {\n-                        if (isInitialRender.current) {\n-                            isInitialRender.current = false;\n-                        } else {\n-                            setStorage(new toolkit.StorageAPI(props.storage));\n-                        }\n-                    }, [props.storage]);\n-                    return /* @__PURE__ */ jsxRuntime.jsx(StorageContext.Provider, {\n-                        value: storage,\n-                        children: props.children\n-                    });\n+                    let t0;\n+                    if ($[0] !== props.storage) {\n+                        t0 = () => new toolkit.StorageAPI(props.storage);\n+                        $[0] = props.storage;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    const [storage, setStorage] = React.useState(t0);\n+                    let t1;\n+                    let t2;\n+                    if ($[2] !== props.storage) {\n+                        t1 = () => {\n+                            if (isInitialRender.current) {\n+                                isInitialRender.current = false;\n+                            } else {\n+                                setStorage(new toolkit.StorageAPI(props.storage));\n+                            }\n+                        };\n+                        t2 = [props.storage];\n+                        $[2] = props.storage;\n+                        $[3] = t1;\n+                        $[4] = t2;\n+                    } else {\n+                        t1 = $[3];\n+                        t2 = $[4];\n+                    }\n+                    React.useEffect(t1, t2);\n+                    let t3;\n+                    if ($[5] !== props.children || $[6] !== storage) {\n+                        t3 = /* @__PURE__ */ jsxRuntime.jsx(StorageContext.Provider, {\n+                            value: storage,\n+                            children: props.children\n+                        });\n+                        $[5] = props.children;\n+                        $[6] = storage;\n+                        $[7] = t3;\n+                    } else {\n+                        t3 = $[7];\n+                    }\n+                    return t3;\n                 }\n                 const useStorageContext = createContextHook(StorageContext);\n                 const SvgArgument = ({\n                     title,\n                     titleId,\n                     ...props\n                 }) => /* @__PURE__ */ React__namespace.createElement(\"svg\", {\n@@ -74428,109 +80419,314 @@\n                 const TrashIcon = generateIcon(SvgTrash);\n                 const TypeIcon = generateIcon(SvgType);\n \n                 function generateIcon(RawComponent) {\n                     const title = RawComponent.name.replace(\"Svg\", \"\").replaceAll(/([A-Z])/g, \" $1\").trimStart().toLowerCase() + \" icon\";\n \n                     function IconComponent(props) {\n-                        return /* @__PURE__ */ jsxRuntime.jsx(RawComponent, {\n-                            title,\n-                            ...props\n-                        });\n+                        const $ = reactCompilerRuntime.c(2);\n+                        let t0;\n+                        if ($[0] !== props) {\n+                            t0 = /* @__PURE__ */ jsxRuntime.jsx(RawComponent, {\n+                                title,\n+                                ...props\n+                            });\n+                            $[0] = props;\n+                            $[1] = t0;\n+                        } else {\n+                            t0 = $[1];\n+                        }\n+                        return t0;\n                     }\n                     IconComponent.displayName = RawComponent.name;\n                     return IconComponent;\n                 }\n-                const UnStyledButton = React.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(\"button\", {\n-                    ...props,\n-                    ref,\n-                    className: clsx.clsx(\"graphiql-un-styled\", props.className)\n-                }));\n+                const UnStyledButton = React.forwardRef((props, ref) => {\n+                    const $ = reactCompilerRuntime.c(6);\n+                    let t0;\n+                    if ($[0] !== props.className) {\n+                        t0 = clsx.clsx(\"graphiql-un-styled\", props.className);\n+                        $[0] = props.className;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    let t1;\n+                    if ($[2] !== props || $[3] !== ref || $[4] !== t0) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(\"button\", {\n+                            ...props,\n+                            ref,\n+                            className: t0\n+                        });\n+                        $[2] = props;\n+                        $[3] = ref;\n+                        $[4] = t0;\n+                        $[5] = t1;\n+                    } else {\n+                        t1 = $[5];\n+                    }\n+                    return t1;\n+                });\n                 UnStyledButton.displayName = \"UnStyledButton\";\n-                const Button$1 = React.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(\"button\", {\n-                    ...props,\n-                    ref,\n-                    className: clsx.clsx(\"graphiql-button\", {\n-                        success: \"graphiql-button-success\",\n-                        error: \"graphiql-button-error\"\n-                    } [props.state], props.className)\n-                }));\n+                const Button$1 = React.forwardRef((props, ref) => {\n+                    const $ = reactCompilerRuntime.c(7);\n+                    let t0;\n+                    if ($[0] !== props.className || $[1] !== props.state) {\n+                        t0 = clsx.clsx(\"graphiql-button\", {\n+                            success: \"graphiql-button-success\",\n+                            error: \"graphiql-button-error\"\n+                        } [props.state], props.className);\n+                        $[0] = props.className;\n+                        $[1] = props.state;\n+                        $[2] = t0;\n+                    } else {\n+                        t0 = $[2];\n+                    }\n+                    let t1;\n+                    if ($[3] !== props || $[4] !== ref || $[5] !== t0) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(\"button\", {\n+                            ...props,\n+                            ref,\n+                            className: t0\n+                        });\n+                        $[3] = props;\n+                        $[4] = ref;\n+                        $[5] = t0;\n+                        $[6] = t1;\n+                    } else {\n+                        t1 = $[6];\n+                    }\n+                    return t1;\n+                });\n                 Button$1.displayName = \"Button\";\n-                const ButtonGroup = React.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                    ...props,\n-                    ref,\n-                    className: clsx.clsx(\"graphiql-button-group\", props.className)\n-                }));\n+                const ButtonGroup = React.forwardRef((props, ref) => {\n+                    const $ = reactCompilerRuntime.c(6);\n+                    let t0;\n+                    if ($[0] !== props.className) {\n+                        t0 = clsx.clsx(\"graphiql-button-group\", props.className);\n+                        $[0] = props.className;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    let t1;\n+                    if ($[2] !== props || $[3] !== ref || $[4] !== t0) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                            ...props,\n+                            ref,\n+                            className: t0\n+                        });\n+                        $[2] = props;\n+                        $[3] = ref;\n+                        $[4] = t0;\n+                        $[5] = t1;\n+                    } else {\n+                        t1 = $[5];\n+                    }\n+                    return t1;\n+                });\n                 ButtonGroup.displayName = \"ButtonGroup\";\n                 const createComponentGroup = (root, children) => Object.entries(children).reduce((r, [key, value]) => {\n                     r[key] = value;\n                     return r;\n                 }, root);\n-                const DialogClose = React.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(D__namespace.Close, {\n-                    asChild: true,\n-                    children: /* @__PURE__ */ jsxRuntime.jsxs(UnStyledButton, {\n-                        ...props,\n-                        ref,\n-                        type: \"button\",\n-                        className: clsx.clsx(\"graphiql-dialog-close\", props.className),\n-                        children: [ /* @__PURE__ */ jsxRuntime.jsx(reactVisuallyHidden.Root, {\n+                const DialogClose = React.forwardRef((props, ref) => {\n+                    const $ = reactCompilerRuntime.c(8);\n+                    let t0;\n+                    if ($[0] !== props.className) {\n+                        t0 = clsx.clsx(\"graphiql-dialog-close\", props.className);\n+                        $[0] = props.className;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    let t1;\n+                    let t2;\n+                    if ($[2] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(reactVisuallyHidden.Root, {\n                             children: \"Close dialog\"\n-                        }), /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, {})]\n-                    })\n-                }));\n+                        });\n+                        t2 = /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, {});\n+                        $[2] = t1;\n+                        $[3] = t2;\n+                    } else {\n+                        t1 = $[2];\n+                        t2 = $[3];\n+                    }\n+                    let t3;\n+                    if ($[4] !== props || $[5] !== ref || $[6] !== t0) {\n+                        t3 = /* @__PURE__ */ jsxRuntime.jsx(D__namespace.Close, {\n+                            asChild: true,\n+                            children: /* @__PURE__ */ jsxRuntime.jsxs(UnStyledButton, {\n+                                ...props,\n+                                ref,\n+                                type: \"button\",\n+                                className: t0,\n+                                children: [t1, t2]\n+                            })\n+                        });\n+                        $[4] = props;\n+                        $[5] = ref;\n+                        $[6] = t0;\n+                        $[7] = t3;\n+                    } else {\n+                        t3 = $[7];\n+                    }\n+                    return t3;\n+                });\n                 DialogClose.displayName = \"Dialog.Close\";\n \n-                function DialogRoot({\n-                    children,\n-                    ...props\n-                }) {\n-                    return /* @__PURE__ */ jsxRuntime.jsx(D__namespace.Root, {\n-                        ...props,\n-                        children: /* @__PURE__ */ jsxRuntime.jsxs(D__namespace.Portal, {\n-                            children: [ /* @__PURE__ */ jsxRuntime.jsx(D__namespace.Overlay, {\n-                                className: \"graphiql-dialog-overlay\"\n-                            }), /* @__PURE__ */ jsxRuntime.jsx(D__namespace.Content, {\n+                function DialogRoot(t0) {\n+                    const $ = reactCompilerRuntime.c(9);\n+                    let children;\n+                    let props;\n+                    if ($[0] !== t0) {\n+                        ({\n+                            children,\n+                            ...props\n+                        } = t0);\n+                        $[0] = t0;\n+                        $[1] = children;\n+                        $[2] = props;\n+                    } else {\n+                        children = $[1];\n+                        props = $[2];\n+                    }\n+                    let t1;\n+                    if ($[3] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(D__namespace.Overlay, {\n+                            className: \"graphiql-dialog-overlay\"\n+                        });\n+                        $[3] = t1;\n+                    } else {\n+                        t1 = $[3];\n+                    }\n+                    let t2;\n+                    if ($[4] !== children) {\n+                        t2 = /* @__PURE__ */ jsxRuntime.jsxs(D__namespace.Portal, {\n+                            children: [t1, /* @__PURE__ */ jsxRuntime.jsx(D__namespace.Content, {\n                                 className: \"graphiql-dialog\",\n                                 children\n                             })]\n-                        })\n-                    });\n+                        });\n+                        $[4] = children;\n+                        $[5] = t2;\n+                    } else {\n+                        t2 = $[5];\n+                    }\n+                    let t3;\n+                    if ($[6] !== props || $[7] !== t2) {\n+                        t3 = /* @__PURE__ */ jsxRuntime.jsx(D__namespace.Root, {\n+                            ...props,\n+                            children: t2\n+                        });\n+                        $[6] = props;\n+                        $[7] = t2;\n+                        $[8] = t3;\n+                    } else {\n+                        t3 = $[8];\n+                    }\n+                    return t3;\n                 }\n                 const Dialog = createComponentGroup(DialogRoot, {\n                     Close: DialogClose,\n                     Title: D__namespace.Title,\n                     Trigger: D__namespace.Trigger,\n                     Description: D__namespace.Description\n                 });\n-                const Button = React.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(reactDropdownMenu.Trigger, {\n-                    asChild: true,\n-                    children: /* @__PURE__ */ jsxRuntime.jsx(\"button\", {\n-                        ...props,\n-                        ref,\n-                        className: clsx.clsx(\"graphiql-un-styled\", props.className)\n-                    })\n-                }));\n+                const Button = React.forwardRef((props, ref) => {\n+                    const $ = reactCompilerRuntime.c(6);\n+                    let t0;\n+                    if ($[0] !== props.className) {\n+                        t0 = clsx.clsx(\"graphiql-un-styled\", props.className);\n+                        $[0] = props.className;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    let t1;\n+                    if ($[2] !== props || $[3] !== ref || $[4] !== t0) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(reactDropdownMenu.Trigger, {\n+                            asChild: true,\n+                            children: /* @__PURE__ */ jsxRuntime.jsx(\"button\", {\n+                                ...props,\n+                                ref,\n+                                className: t0\n+                            })\n+                        });\n+                        $[2] = props;\n+                        $[3] = ref;\n+                        $[4] = t0;\n+                        $[5] = t1;\n+                    } else {\n+                        t1 = $[5];\n+                    }\n+                    return t1;\n+                });\n                 Button.displayName = \"DropdownMenuButton\";\n \n-                function Content({\n-                    children,\n-                    align = \"start\",\n-                    sideOffset = 5,\n-                    className,\n-                    ...props\n-                }) {\n-                    return /* @__PURE__ */ jsxRuntime.jsx(reactDropdownMenu.Portal, {\n-                        children: /* @__PURE__ */ jsxRuntime.jsx(reactDropdownMenu.Content, {\n-                            align,\n-                            sideOffset,\n-                            className: clsx.clsx(\"graphiql-dropdown-content\", className),\n-                            ...props,\n-                            children\n-                        })\n-                    });\n+                function Content(t0) {\n+                    const $ = reactCompilerRuntime.c(14);\n+                    let children;\n+                    let className;\n+                    let props;\n+                    let t1;\n+                    let t2;\n+                    if ($[0] !== t0) {\n+                        ({\n+                            children,\n+                            align: t1,\n+                            sideOffset: t2,\n+                            className,\n+                            ...props\n+                        } = t0);\n+                        $[0] = t0;\n+                        $[1] = children;\n+                        $[2] = className;\n+                        $[3] = props;\n+                        $[4] = t1;\n+                        $[5] = t2;\n+                    } else {\n+                        children = $[1];\n+                        className = $[2];\n+                        props = $[3];\n+                        t1 = $[4];\n+                        t2 = $[5];\n+                    }\n+                    const align = t1 === void 0 ? \"start\" : t1;\n+                    const sideOffset = t2 === void 0 ? 5 : t2;\n+                    let t3;\n+                    if ($[6] !== className) {\n+                        t3 = clsx.clsx(\"graphiql-dropdown-content\", className);\n+                        $[6] = className;\n+                        $[7] = t3;\n+                    } else {\n+                        t3 = $[7];\n+                    }\n+                    let t4;\n+                    if ($[8] !== align || $[9] !== children || $[10] !== props || $[11] !== sideOffset || $[12] !== t3) {\n+                        t4 = /* @__PURE__ */ jsxRuntime.jsx(reactDropdownMenu.Portal, {\n+                            children: /* @__PURE__ */ jsxRuntime.jsx(reactDropdownMenu.Content, {\n+                                align,\n+                                sideOffset,\n+                                className: t3,\n+                                ...props,\n+                                children\n+                            })\n+                        });\n+                        $[8] = align;\n+                        $[9] = children;\n+                        $[10] = props;\n+                        $[11] = sideOffset;\n+                        $[12] = t3;\n+                        $[13] = t4;\n+                    } else {\n+                        t4 = $[13];\n+                    }\n+                    return t4;\n                 }\n                 const Item = ({\n                     className,\n                     children,\n                     ...props\n                 }) => /* @__PURE__ */ jsxRuntime.jsx(reactDropdownMenu.Item, {\n                     className: clsx.clsx(\"graphiql-dropdown-item\", className),\n@@ -74542,158 +80738,445 @@\n                     Item,\n                     Content\n                 });\n                 const markdown = new MarkdownIt({\n                     breaks: true,\n                     linkify: true\n                 });\n-                const MarkdownContent = React.forwardRef(({\n-                    children,\n-                    onlyShowFirstChild,\n-                    type,\n-                    ...props\n-                }, ref) => /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                    ...props,\n-                    ref,\n-                    className: clsx.clsx(`graphiql-markdown-${type}`, onlyShowFirstChild && \"graphiql-markdown-preview\", props.className),\n-                    dangerouslySetInnerHTML: {\n-                        __html: markdown.render(children)\n+                const MarkdownContent = React.forwardRef((t0, ref) => {\n+                    const $ = reactCompilerRuntime.c(18);\n+                    let children;\n+                    let onlyShowFirstChild;\n+                    let props;\n+                    let type;\n+                    if ($[0] !== t0) {\n+                        ({\n+                            children,\n+                            onlyShowFirstChild,\n+                            type,\n+                            ...props\n+                        } = t0);\n+                        $[0] = t0;\n+                        $[1] = children;\n+                        $[2] = onlyShowFirstChild;\n+                        $[3] = props;\n+                        $[4] = type;\n+                    } else {\n+                        children = $[1];\n+                        onlyShowFirstChild = $[2];\n+                        props = $[3];\n+                        type = $[4];\n+                    }\n+                    const t1 = `graphiql-markdown-${type}`;\n+                    const t2 = onlyShowFirstChild && \"graphiql-markdown-preview\";\n+                    let t3;\n+                    if ($[5] !== props.className || $[6] !== t1 || $[7] !== t2) {\n+                        t3 = clsx.clsx(t1, t2, props.className);\n+                        $[5] = props.className;\n+                        $[6] = t1;\n+                        $[7] = t2;\n+                        $[8] = t3;\n+                    } else {\n+                        t3 = $[8];\n                     }\n-                }));\n+                    let t4;\n+                    if ($[9] !== children) {\n+                        t4 = markdown.render(children);\n+                        $[9] = children;\n+                        $[10] = t4;\n+                    } else {\n+                        t4 = $[10];\n+                    }\n+                    let t5;\n+                    if ($[11] !== t4) {\n+                        t5 = {\n+                            __html: t4\n+                        };\n+                        $[11] = t4;\n+                        $[12] = t5;\n+                    } else {\n+                        t5 = $[12];\n+                    }\n+                    let t6;\n+                    if ($[13] !== props || $[14] !== ref || $[15] !== t3 || $[16] !== t5) {\n+                        t6 = /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                            ...props,\n+                            ref,\n+                            className: t3,\n+                            dangerouslySetInnerHTML: t5\n+                        });\n+                        $[13] = props;\n+                        $[14] = ref;\n+                        $[15] = t3;\n+                        $[16] = t5;\n+                        $[17] = t6;\n+                    } else {\n+                        t6 = $[17];\n+                    }\n+                    return t6;\n+                });\n                 MarkdownContent.displayName = \"MarkdownContent\";\n-                const Spinner = React.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                    ...props,\n-                    ref,\n-                    className: clsx.clsx(\"graphiql-spinner\", props.className)\n-                }));\n+                const Spinner = React.forwardRef((props, ref) => {\n+                    const $ = reactCompilerRuntime.c(6);\n+                    let t0;\n+                    if ($[0] !== props.className) {\n+                        t0 = clsx.clsx(\"graphiql-spinner\", props.className);\n+                        $[0] = props.className;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    let t1;\n+                    if ($[2] !== props || $[3] !== ref || $[4] !== t0) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                            ...props,\n+                            ref,\n+                            className: t0\n+                        });\n+                        $[2] = props;\n+                        $[3] = ref;\n+                        $[4] = t0;\n+                        $[5] = t1;\n+                    } else {\n+                        t1 = $[5];\n+                    }\n+                    return t1;\n+                });\n                 Spinner.displayName = \"Spinner\";\n \n-                function TooltipRoot({\n-                    children,\n-                    align = \"start\",\n-                    side = \"bottom\",\n-                    sideOffset = 5,\n-                    label\n-                }) {\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(T__namespace.Root, {\n-                        children: [ /* @__PURE__ */ jsxRuntime.jsx(T__namespace.Trigger, {\n+                function TooltipRoot(t0) {\n+                    const $ = reactCompilerRuntime.c(10);\n+                    const {\n+                        children,\n+                        align: t1,\n+                        side: t2,\n+                        sideOffset: t3,\n+                        label\n+                    } = t0;\n+                    const align = t1 === void 0 ? \"start\" : t1;\n+                    const side = t2 === void 0 ? \"bottom\" : t2;\n+                    const sideOffset = t3 === void 0 ? 5 : t3;\n+                    let t4;\n+                    if ($[0] !== children) {\n+                        t4 = /* @__PURE__ */ jsxRuntime.jsx(T__namespace.Trigger, {\n                             asChild: true,\n                             children\n-                        }), /* @__PURE__ */ jsxRuntime.jsx(T__namespace.Portal, {\n+                        });\n+                        $[0] = children;\n+                        $[1] = t4;\n+                    } else {\n+                        t4 = $[1];\n+                    }\n+                    let t5;\n+                    if ($[2] !== align || $[3] !== label || $[4] !== side || $[5] !== sideOffset) {\n+                        t5 = /* @__PURE__ */ jsxRuntime.jsx(T__namespace.Portal, {\n                             children: /* @__PURE__ */ jsxRuntime.jsx(T__namespace.Content, {\n                                 className: \"graphiql-tooltip\",\n                                 align,\n                                 side,\n                                 sideOffset,\n                                 children: label\n                             })\n-                        })]\n-                    });\n+                        });\n+                        $[2] = align;\n+                        $[3] = label;\n+                        $[4] = side;\n+                        $[5] = sideOffset;\n+                        $[6] = t5;\n+                    } else {\n+                        t5 = $[6];\n+                    }\n+                    let t6;\n+                    if ($[7] !== t4 || $[8] !== t5) {\n+                        t6 = /* @__PURE__ */ jsxRuntime.jsxs(T__namespace.Root, {\n+                            children: [t4, t5]\n+                        });\n+                        $[7] = t4;\n+                        $[8] = t5;\n+                        $[9] = t6;\n+                    } else {\n+                        t6 = $[9];\n+                    }\n+                    return t6;\n                 }\n                 const Tooltip = createComponentGroup(TooltipRoot, {\n                     Provider: T__namespace.Provider\n                 });\n-                const TabRoot = React.forwardRef(({\n-                    isActive,\n-                    value,\n-                    children,\n-                    className,\n-                    ...props\n-                }, ref) => /* @__PURE__ */ jsxRuntime.jsx(framerMotion.Reorder.Item, {\n-                    ...props,\n-                    ref,\n-                    value,\n-                    \"aria-selected\": isActive ? \"true\" : void 0,\n-                    role: \"tab\",\n-                    className: clsx.clsx(\"graphiql-tab\", isActive && \"graphiql-tab-active\", className),\n-                    children\n-                }));\n+                const TabRoot = React.forwardRef((t0, ref) => {\n+                    const $ = reactCompilerRuntime.c(16);\n+                    let children;\n+                    let className;\n+                    let isActive;\n+                    let props;\n+                    let value;\n+                    if ($[0] !== t0) {\n+                        ({\n+                            isActive,\n+                            value,\n+                            children,\n+                            className,\n+                            ...props\n+                        } = t0);\n+                        $[0] = t0;\n+                        $[1] = children;\n+                        $[2] = className;\n+                        $[3] = isActive;\n+                        $[4] = props;\n+                        $[5] = value;\n+                    } else {\n+                        children = $[1];\n+                        className = $[2];\n+                        isActive = $[3];\n+                        props = $[4];\n+                        value = $[5];\n+                    }\n+                    const t1 = isActive ? \"true\" : void 0;\n+                    const t2 = isActive && \"graphiql-tab-active\";\n+                    let t3;\n+                    if ($[6] !== className || $[7] !== t2) {\n+                        t3 = clsx.clsx(\"graphiql-tab\", t2, className);\n+                        $[6] = className;\n+                        $[7] = t2;\n+                        $[8] = t3;\n+                    } else {\n+                        t3 = $[8];\n+                    }\n+                    let t4;\n+                    if ($[9] !== children || $[10] !== props || $[11] !== ref || $[12] !== t1 || $[13] !== t3 || $[14] !== value) {\n+                        t4 = /* @__PURE__ */ jsxRuntime.jsx(framerMotion.Reorder.Item, {\n+                            ...props,\n+                            ref,\n+                            value,\n+                            \"aria-selected\": t1,\n+                            role: \"tab\",\n+                            className: t3,\n+                            children\n+                        });\n+                        $[9] = children;\n+                        $[10] = props;\n+                        $[11] = ref;\n+                        $[12] = t1;\n+                        $[13] = t3;\n+                        $[14] = value;\n+                        $[15] = t4;\n+                    } else {\n+                        t4 = $[15];\n+                    }\n+                    return t4;\n+                });\n                 TabRoot.displayName = \"Tab\";\n-                const TabButton = React.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(UnStyledButton, {\n-                    ...props,\n-                    ref,\n-                    type: \"button\",\n-                    className: clsx.clsx(\"graphiql-tab-button\", props.className),\n-                    children: props.children\n-                }));\n+                const TabButton = React.forwardRef((props, ref) => {\n+                    const $ = reactCompilerRuntime.c(6);\n+                    let t0;\n+                    if ($[0] !== props.className) {\n+                        t0 = clsx.clsx(\"graphiql-tab-button\", props.className);\n+                        $[0] = props.className;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    let t1;\n+                    if ($[2] !== props || $[3] !== ref || $[4] !== t0) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(UnStyledButton, {\n+                            ...props,\n+                            ref,\n+                            type: \"button\",\n+                            className: t0,\n+                            children: props.children\n+                        });\n+                        $[2] = props;\n+                        $[3] = ref;\n+                        $[4] = t0;\n+                        $[5] = t1;\n+                    } else {\n+                        t1 = $[5];\n+                    }\n+                    return t1;\n+                });\n                 TabButton.displayName = \"Tab.Button\";\n-                const TabClose = React.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(Tooltip, {\n-                    label: \"Close Tab\",\n-                    children: /* @__PURE__ */ jsxRuntime.jsx(UnStyledButton, {\n-                        \"aria-label\": \"Close Tab\",\n-                        ...props,\n-                        ref,\n-                        type: \"button\",\n-                        className: clsx.clsx(\"graphiql-tab-close\", props.className),\n-                        children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, {})\n-                    })\n-                }));\n+                const TabClose = React.forwardRef((props, ref) => {\n+                    const $ = reactCompilerRuntime.c(7);\n+                    let t0;\n+                    if ($[0] !== props.className) {\n+                        t0 = clsx.clsx(\"graphiql-tab-close\", props.className);\n+                        $[0] = props.className;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    let t1;\n+                    if ($[2] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, {});\n+                        $[2] = t1;\n+                    } else {\n+                        t1 = $[2];\n+                    }\n+                    let t2;\n+                    if ($[3] !== props || $[4] !== ref || $[5] !== t0) {\n+                        t2 = /* @__PURE__ */ jsxRuntime.jsx(Tooltip, {\n+                            label: \"Close Tab\",\n+                            children: /* @__PURE__ */ jsxRuntime.jsx(UnStyledButton, {\n+                                \"aria-label\": \"Close Tab\",\n+                                ...props,\n+                                ref,\n+                                type: \"button\",\n+                                className: t0,\n+                                children: t1\n+                            })\n+                        });\n+                        $[3] = props;\n+                        $[4] = ref;\n+                        $[5] = t0;\n+                        $[6] = t2;\n+                    } else {\n+                        t2 = $[6];\n+                    }\n+                    return t2;\n+                });\n                 TabClose.displayName = \"Tab.Close\";\n                 const Tab = createComponentGroup(TabRoot, {\n                     Button: TabButton,\n                     Close: TabClose\n                 });\n-                const Tabs = React.forwardRef(({\n-                    values,\n-                    onReorder,\n-                    children,\n-                    className,\n-                    ...props\n-                }, ref) => /* @__PURE__ */ jsxRuntime.jsx(framerMotion.Reorder.Group, {\n-                    ...props,\n-                    ref,\n-                    values,\n-                    onReorder,\n-                    axis: \"x\",\n-                    role: \"tablist\",\n-                    className: clsx.clsx(\"graphiql-tabs\", className),\n-                    children\n-                }));\n+                const Tabs = React.forwardRef((t0, ref) => {\n+                    const $ = reactCompilerRuntime.c(15);\n+                    let children;\n+                    let className;\n+                    let onReorder;\n+                    let props;\n+                    let values;\n+                    if ($[0] !== t0) {\n+                        ({\n+                            values,\n+                            onReorder,\n+                            children,\n+                            className,\n+                            ...props\n+                        } = t0);\n+                        $[0] = t0;\n+                        $[1] = children;\n+                        $[2] = className;\n+                        $[3] = onReorder;\n+                        $[4] = props;\n+                        $[5] = values;\n+                    } else {\n+                        children = $[1];\n+                        className = $[2];\n+                        onReorder = $[3];\n+                        props = $[4];\n+                        values = $[5];\n+                    }\n+                    let t1;\n+                    if ($[6] !== className) {\n+                        t1 = clsx.clsx(\"graphiql-tabs\", className);\n+                        $[6] = className;\n+                        $[7] = t1;\n+                    } else {\n+                        t1 = $[7];\n+                    }\n+                    let t2;\n+                    if ($[8] !== children || $[9] !== onReorder || $[10] !== props || $[11] !== ref || $[12] !== t1 || $[13] !== values) {\n+                        t2 = /* @__PURE__ */ jsxRuntime.jsx(framerMotion.Reorder.Group, {\n+                            ...props,\n+                            ref,\n+                            values,\n+                            onReorder,\n+                            axis: \"x\",\n+                            role: \"tablist\",\n+                            className: t1,\n+                            children\n+                        });\n+                        $[8] = children;\n+                        $[9] = onReorder;\n+                        $[10] = props;\n+                        $[11] = ref;\n+                        $[12] = t1;\n+                        $[13] = values;\n+                        $[14] = t2;\n+                    } else {\n+                        t2 = $[14];\n+                    }\n+                    return t2;\n+                });\n                 Tabs.displayName = \"Tabs\";\n                 const HistoryContext = createNullableContext(\"HistoryContext\");\n \n-                function HistoryContextProvider(props) {\n-                    var _a;\n+                function HistoryContextProvider(t0) {\n+                    const $ = reactCompilerRuntime.c(11);\n+                    const {\n+                        maxHistoryLength: t1,\n+                        children\n+                    } = t0;\n+                    const maxHistoryLength = t1 === void 0 ? DEFAULT_HISTORY_LENGTH : t1;\n                     const storage = useStorageContext();\n-                    const historyStore = React.useRef(new toolkit.HistoryStore(\n-                        // Fall back to a noop storage when the StorageContext is empty\n-                        storage || new toolkit.StorageAPI(null), props.maxHistoryLength || DEFAULT_HISTORY_LENGTH));\n-                    const [items, setItems] = React.useState(((_a = historyStore.current) == null ? void 0 : _a.queries) || []);\n-                    const addToHistory = React.useCallback(operation => {\n-                        var _a2;\n-                        (_a2 = historyStore.current) == null ? void 0 : _a2.updateHistory(operation);\n-                        setItems(historyStore.current.queries);\n-                    }, []);\n-                    const editLabel = React.useCallback((operation, index) => {\n-                        historyStore.current.editLabel(operation, index);\n-                        setItems(historyStore.current.queries);\n-                    }, []);\n-                    const toggleFavorite = React.useCallback(operation => {\n-                        historyStore.current.toggleFavorite(operation);\n-                        setItems(historyStore.current.queries);\n-                    }, []);\n-                    const setActive = React.useCallback(item => {\n-                        return item;\n-                    }, []);\n-                    const deleteFromHistory = React.useCallback((item, clearFavorites = false) => {\n-                        historyStore.current.deleteHistory(item, clearFavorites);\n-                        setItems(historyStore.current.queries);\n-                    }, []);\n-                    const value = React.useMemo(() => ({\n-                        addToHistory,\n-                        editLabel,\n-                        items,\n-                        toggleFavorite,\n-                        setActive,\n-                        deleteFromHistory\n-                    }), [addToHistory, editLabel, items, toggleFavorite, setActive, deleteFromHistory]);\n-                    return /* @__PURE__ */ jsxRuntime.jsx(HistoryContext.Provider, {\n-                        value,\n-                        children: props.children\n-                    });\n+                    let t2;\n+                    if ($[0] !== maxHistoryLength || $[1] !== storage) {\n+                        t2 = () => new toolkit.HistoryStore(storage || new toolkit.StorageAPI(null), maxHistoryLength);\n+                        $[0] = maxHistoryLength;\n+                        $[1] = storage;\n+                        $[2] = t2;\n+                    } else {\n+                        t2 = $[2];\n+                    }\n+                    const [historyStore] = React.useState(t2);\n+                    let t3;\n+                    if ($[3] !== historyStore.queries) {\n+                        t3 = () => historyStore.queries || [];\n+                        $[3] = historyStore.queries;\n+                        $[4] = t3;\n+                    } else {\n+                        t3 = $[4];\n+                    }\n+                    const [items, setItems] = React.useState(t3);\n+                    let t4;\n+                    if ($[5] !== historyStore || $[6] !== items) {\n+                        t4 = {\n+                            addToHistory(operation) {\n+                                historyStore.updateHistory(operation);\n+                                setItems(historyStore.queries);\n+                            },\n+                            editLabel(operation_0, index) {\n+                                historyStore.editLabel(operation_0, index);\n+                                setItems(historyStore.queries);\n+                            },\n+                            items,\n+                            toggleFavorite(operation_1) {\n+                                historyStore.toggleFavorite(operation_1);\n+                                setItems(historyStore.queries);\n+                            },\n+                            setActive: _temp$8,\n+                            deleteFromHistory(item_0, clearFavorites) {\n+                                historyStore.deleteHistory(item_0, clearFavorites);\n+                                setItems(historyStore.queries);\n+                            }\n+                        };\n+                        $[5] = historyStore;\n+                        $[6] = items;\n+                        $[7] = t4;\n+                    } else {\n+                        t4 = $[7];\n+                    }\n+                    const value = t4;\n+                    let t5;\n+                    if ($[8] !== children || $[9] !== value) {\n+                        t5 = /* @__PURE__ */ jsxRuntime.jsx(HistoryContext.Provider, {\n+                            value,\n+                            children\n+                        });\n+                        $[8] = children;\n+                        $[9] = value;\n+                        $[10] = t5;\n+                    } else {\n+                        t5 = $[10];\n+                    }\n+                    return t5;\n+                }\n+\n+                function _temp$8(item) {\n+                    return item;\n                 }\n                 const useHistoryContext = createContextHook(HistoryContext);\n                 const DEFAULT_HISTORY_LENGTH = 20;\n \n                 function History() {\n                     const {\n                         items: all,\n@@ -74701,36 +81184,36 @@\n                     } = useHistoryContext({\n                         nonNull: true\n                     });\n                     let items = all.slice().map((item, i) => ({\n                         ...item,\n                         index: i\n                     })).reverse();\n-                    const favorites = items.filter(item => item.favorite);\n+                    const favorites = items.filter(item_0 => item_0.favorite);\n                     if (favorites.length) {\n-                        items = items.filter(item => !item.favorite);\n+                        items = items.filter(item_1 => !item_1.favorite);\n                     }\n                     const [clearStatus, setClearStatus] = React.useState(null);\n                     React.useEffect(() => {\n                         if (clearStatus) {\n                             setTimeout(() => {\n                                 setClearStatus(null);\n                             }, 2e3);\n                         }\n                     }, [clearStatus]);\n-                    const handleClearStatus = React.useCallback(() => {\n+                    const handleClearStatus = () => {\n                         try {\n-                            for (const item of items) {\n-                                deleteFromHistory(item, true);\n+                            for (const item_2 of items) {\n+                                deleteFromHistory(item_2, true);\n                             }\n                             setClearStatus(\"success\");\n                         } catch {\n                             setClearStatus(\"error\");\n                         }\n-                    }, [deleteFromHistory, items]);\n+                    };\n                     return /* @__PURE__ */ jsxRuntime.jsxs(\"section\", {\n                         \"aria-label\": \"History\",\n                         className: \"graphiql-history\",\n                         children: [ /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n                             className: \"graphiql-history-header\",\n                             children: [\"History\", (clearStatus || items.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(Button$1, {\n                                 type: \"button\",\n@@ -74740,110 +81223,211 @@\n                                 children: {\n                                     success: \"Cleared\",\n                                     error: \"Failed to Clear\"\n                                 } [clearStatus] || \"Clear\"\n                             })]\n                         }), Boolean(favorites.length) && /* @__PURE__ */ jsxRuntime.jsx(\"ul\", {\n                             className: \"graphiql-history-items\",\n-                            children: favorites.map(item => /* @__PURE__ */ jsxRuntime.jsx(HistoryItem, {\n-                                item\n-                            }, item.index))\n+                            children: favorites.map(item_3 => /* @__PURE__ */ jsxRuntime.jsx(HistoryItem, {\n+                                item: item_3\n+                            }, item_3.index))\n                         }), Boolean(favorites.length) && Boolean(items.length) && /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n                             className: \"graphiql-history-item-spacer\"\n                         }), Boolean(items.length) && /* @__PURE__ */ jsxRuntime.jsx(\"ul\", {\n                             className: \"graphiql-history-items\",\n-                            children: items.map(item => /* @__PURE__ */ jsxRuntime.jsx(HistoryItem, {\n-                                item\n-                            }, item.index))\n+                            children: items.map(item_4 => /* @__PURE__ */ jsxRuntime.jsx(HistoryItem, {\n+                                item: item_4\n+                            }, item_4.index))\n                         })]\n                     });\n                 }\n \n                 function HistoryItem(props) {\n+                    const $ = reactCompilerRuntime.c(40);\n+                    let t0;\n+                    if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t0 = {\n+                            nonNull: true,\n+                            caller: HistoryItem\n+                        };\n+                        $[0] = t0;\n+                    } else {\n+                        t0 = $[0];\n+                    }\n                     const {\n                         editLabel,\n                         toggleFavorite,\n                         deleteFromHistory,\n                         setActive\n-                    } = useHistoryContext({\n-                        nonNull: true,\n-                        caller: HistoryItem\n-                    });\n+                    } = useHistoryContext(t0);\n+                    let t1;\n+                    if ($[1] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = {\n+                            nonNull: true,\n+                            caller: HistoryItem\n+                        };\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n                     const {\n                         headerEditor,\n                         queryEditor,\n                         variableEditor\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller: HistoryItem\n-                    });\n+                    } = useEditorContext(t1);\n                     const inputRef = React.useRef(null);\n                     const buttonRef = React.useRef(null);\n                     const [isEditable, setIsEditable] = React.useState(false);\n-                    React.useEffect(() => {\n-                        var _a;\n-                        if (isEditable) {\n-                            (_a = inputRef.current) == null ? void 0 : _a.focus();\n-                        }\n-                    }, [isEditable]);\n-                    const displayName = props.item.label || props.item.operationName || formatQuery(props.item.query);\n-                    const handleSave = React.useCallback(() => {\n-                        var _a;\n-                        setIsEditable(false);\n-                        const {\n-                            index,\n-                            ...item\n-                        } = props.item;\n-                        editLabel({\n-                            ...item,\n-                            label: (_a = inputRef.current) == null ? void 0 : _a.value\n-                        }, index);\n-                    }, [editLabel, props.item]);\n-                    const handleClose = React.useCallback(() => {\n-                        setIsEditable(false);\n-                    }, []);\n-                    const handleEditLabel = React.useCallback(e => {\n-                        e.stopPropagation();\n-                        setIsEditable(true);\n-                    }, []);\n-                    const handleHistoryItemClick = React.useCallback(() => {\n-                        const {\n-                            query,\n-                            variables,\n-                            headers\n-                        } = props.item;\n-                        queryEditor == null ? void 0 : queryEditor.setValue(query !== null && query !== void 0 ? query : \"\");\n-                        variableEditor == null ? void 0 : variableEditor.setValue(variables !== null && variables !== void 0 ? variables : \"\");\n-                        headerEditor == null ? void 0 : headerEditor.setValue(headers !== null && headers !== void 0 ? headers : \"\");\n-                        setActive(props.item);\n-                    }, [headerEditor, props.item, queryEditor, setActive, variableEditor]);\n-                    const handleDeleteItemFromHistory = React.useCallback(e => {\n-                        e.stopPropagation();\n-                        deleteFromHistory(props.item);\n-                    }, [props.item, deleteFromHistory]);\n-                    const handleToggleFavorite = React.useCallback(e => {\n-                        e.stopPropagation();\n-                        toggleFavorite(props.item);\n-                    }, [props.item, toggleFavorite]);\n-                    return /* @__PURE__ */ jsxRuntime.jsx(\"li\", {\n-                        className: clsx.clsx(\"graphiql-history-item\", isEditable && \"editable\"),\n-                        children: isEditable ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n+                    let t2;\n+                    let t3;\n+                    if ($[2] !== isEditable) {\n+                        t2 = () => {\n+                            var _a;\n+                            if (isEditable) {\n+                                (_a = inputRef.current) == null ? void 0 : _a.focus();\n+                            }\n+                        };\n+                        t3 = [isEditable];\n+                        $[2] = isEditable;\n+                        $[3] = t2;\n+                        $[4] = t3;\n+                    } else {\n+                        t2 = $[3];\n+                        t3 = $[4];\n+                    }\n+                    React.useEffect(t2, t3);\n+                    let t4;\n+                    if ($[5] !== props.item.label || $[6] !== props.item.operationName || $[7] !== props.item.query) {\n+                        t4 = props.item.label || props.item.operationName || formatQuery(props.item.query);\n+                        $[5] = props.item.label;\n+                        $[6] = props.item.operationName;\n+                        $[7] = props.item.query;\n+                        $[8] = t4;\n+                    } else {\n+                        t4 = $[8];\n+                    }\n+                    const displayName = t4;\n+                    let t5;\n+                    if ($[9] !== editLabel || $[10] !== props.item) {\n+                        t5 = () => {\n+                            var _a;\n+                            setIsEditable(false);\n+                            const {\n+                                index,\n+                                ...item\n+                            } = props.item;\n+                            editLabel({\n+                                ...item,\n+                                label: (_a = inputRef.current) == null ? void 0 : _a.value\n+                            }, index);\n+                        };\n+                        $[9] = editLabel;\n+                        $[10] = props.item;\n+                        $[11] = t5;\n+                    } else {\n+                        t5 = $[11];\n+                    }\n+                    const handleSave = t5;\n+                    let t6;\n+                    if ($[12] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t6 = () => {\n+                            setIsEditable(false);\n+                        };\n+                        $[12] = t6;\n+                    } else {\n+                        t6 = $[12];\n+                    }\n+                    const handleClose = t6;\n+                    let t7;\n+                    if ($[13] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t7 = e => {\n+                            e.stopPropagation();\n+                            setIsEditable(true);\n+                        };\n+                        $[13] = t7;\n+                    } else {\n+                        t7 = $[13];\n+                    }\n+                    const handleEditLabel = t7;\n+                    let t8;\n+                    if ($[14] !== headerEditor || $[15] !== props.item || $[16] !== queryEditor || $[17] !== setActive || $[18] !== variableEditor) {\n+                        t8 = () => {\n+                            const {\n+                                query,\n+                                variables,\n+                                headers\n+                            } = props.item;\n+                            queryEditor == null ? void 0 : queryEditor.setValue(query !== null && query !== void 0 ? query : \"\");\n+                            variableEditor == null ? void 0 : variableEditor.setValue(variables !== null && variables !== void 0 ? variables : \"\");\n+                            headerEditor == null ? void 0 : headerEditor.setValue(headers !== null && headers !== void 0 ? headers : \"\");\n+                            setActive(props.item);\n+                        };\n+                        $[14] = headerEditor;\n+                        $[15] = props.item;\n+                        $[16] = queryEditor;\n+                        $[17] = setActive;\n+                        $[18] = variableEditor;\n+                        $[19] = t8;\n+                    } else {\n+                        t8 = $[19];\n+                    }\n+                    const handleHistoryItemClick = t8;\n+                    let t9;\n+                    if ($[20] !== deleteFromHistory || $[21] !== props.item) {\n+                        t9 = e_0 => {\n+                            e_0.stopPropagation();\n+                            deleteFromHistory(props.item);\n+                        };\n+                        $[20] = deleteFromHistory;\n+                        $[21] = props.item;\n+                        $[22] = t9;\n+                    } else {\n+                        t9 = $[22];\n+                    }\n+                    const handleDeleteItemFromHistory = t9;\n+                    let t10;\n+                    if ($[23] !== props.item || $[24] !== toggleFavorite) {\n+                        t10 = e_1 => {\n+                            e_1.stopPropagation();\n+                            toggleFavorite(props.item);\n+                        };\n+                        $[23] = props.item;\n+                        $[24] = toggleFavorite;\n+                        $[25] = t10;\n+                    } else {\n+                        t10 = $[25];\n+                    }\n+                    const handleToggleFavorite = t10;\n+                    const t11 = isEditable && \"editable\";\n+                    let t12;\n+                    if ($[26] !== t11) {\n+                        t12 = clsx.clsx(\"graphiql-history-item\", t11);\n+                        $[26] = t11;\n+                        $[27] = t12;\n+                    } else {\n+                        t12 = $[27];\n+                    }\n+                    let t13;\n+                    if ($[28] !== displayName || $[29] !== editLabel || $[30] !== handleDeleteItemFromHistory || $[31] !== handleHistoryItemClick || $[32] !== handleSave || $[33] !== handleToggleFavorite || $[34] !== isEditable || $[35] !== props.item) {\n+                        t13 = isEditable ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n                             children: [ /* @__PURE__ */ jsxRuntime.jsx(\"input\", {\n                                 type: \"text\",\n                                 defaultValue: props.item.label,\n                                 ref: inputRef,\n-                                onKeyDown: e => {\n-                                    if (e.key === \"Esc\") {\n-                                        setIsEditable(false);\n-                                    } else if (e.key === \"Enter\") {\n+                                onKeyDown: e_2 => {\n+                                    if (e_2.key === \"Esc\") {\n                                         setIsEditable(false);\n-                                        editLabel({\n-                                            ...props.item,\n-                                            label: e.currentTarget.value\n-                                        });\n+                                    } else {\n+                                        if (e_2.key === \"Enter\") {\n+                                            setIsEditable(false);\n+                                            editLabel({\n+                                                ...props.item,\n+                                                label: e_2.currentTarget.value\n+                                            });\n+                                        }\n                                     }\n                                 },\n                                 placeholder: \"Type a label\"\n                             }), /* @__PURE__ */ jsxRuntime.jsx(UnStyledButton, {\n                                 type: \"button\",\n                                 ref: buttonRef,\n                                 onClick: handleSave,\n@@ -74896,195 +81480,298 @@\n                                     onClick: handleDeleteItemFromHistory,\n                                     \"aria-label\": \"Delete from history\",\n                                     children: /* @__PURE__ */ jsxRuntime.jsx(TrashIcon, {\n                                         \"aria-hidden\": \"true\"\n                                     })\n                                 })\n                             })]\n-                        })\n-                    });\n+                        });\n+                        $[28] = displayName;\n+                        $[29] = editLabel;\n+                        $[30] = handleDeleteItemFromHistory;\n+                        $[31] = handleHistoryItemClick;\n+                        $[32] = handleSave;\n+                        $[33] = handleToggleFavorite;\n+                        $[34] = isEditable;\n+                        $[35] = props.item;\n+                        $[36] = t13;\n+                    } else {\n+                        t13 = $[36];\n+                    }\n+                    let t14;\n+                    if ($[37] !== t12 || $[38] !== t13) {\n+                        t14 = /* @__PURE__ */ jsxRuntime.jsx(\"li\", {\n+                            className: t12,\n+                            children: t13\n+                        });\n+                        $[37] = t12;\n+                        $[38] = t13;\n+                        $[39] = t14;\n+                    } else {\n+                        t14 = $[39];\n+                    }\n+                    return t14;\n                 }\n \n                 function formatQuery(query) {\n                     return query == null ? void 0 : query.split(\"\\n\").map(line => line.replace(/#(.*)/, \"\")).join(\" \").replaceAll(\"{\", \" { \").replaceAll(\"}\", \" } \").replaceAll(/[\\s]{2,}/g, \" \");\n                 }\n                 const ExecutionContext = createNullableContext(\"ExecutionContext\");\n \n-                function ExecutionContextProvider({\n-                    fetcher,\n-                    getDefaultFieldNames,\n-                    children,\n-                    operationName\n-                }) {\n+                function ExecutionContextProvider(t0) {\n+                    const $ = reactCompilerRuntime.c(27);\n+                    const {\n+                        fetcher,\n+                        getDefaultFieldNames,\n+                        children,\n+                        operationName\n+                    } = t0;\n                     if (!fetcher) {\n                         throw new TypeError(\"The `ExecutionContextProvider` component requires a `fetcher` function to be passed as prop.\");\n                     }\n+                    let t1;\n+                    if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = {\n+                            nonNull: true,\n+                            caller: ExecutionContextProvider\n+                        };\n+                        $[0] = t1;\n+                    } else {\n+                        t1 = $[0];\n+                    }\n                     const {\n                         externalFragments,\n                         headerEditor,\n                         queryEditor,\n                         responseEditor,\n                         variableEditor,\n                         updateActiveTabValues\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller: ExecutionContextProvider\n-                    });\n+                    } = useEditorContext(t1);\n                     const history = useHistoryContext();\n-                    const autoCompleteLeafs = useAutoCompleteLeafs({\n-                        getDefaultFieldNames,\n-                        caller: ExecutionContextProvider\n-                    });\n+                    let t2;\n+                    if ($[1] !== getDefaultFieldNames) {\n+                        t2 = {\n+                            getDefaultFieldNames,\n+                            caller: ExecutionContextProvider\n+                        };\n+                        $[1] = getDefaultFieldNames;\n+                        $[2] = t2;\n+                    } else {\n+                        t2 = $[2];\n+                    }\n+                    const autoCompleteLeafs = useAutoCompleteLeafs(t2);\n                     const [isFetching, setIsFetching] = React.useState(false);\n                     const [subscription, setSubscription] = React.useState(null);\n                     const queryIdRef = React.useRef(0);\n-                    const stop = React.useCallback(() => {\n-                        subscription == null ? void 0 : subscription.unsubscribe();\n-                        setIsFetching(false);\n-                        setSubscription(null);\n-                    }, [subscription]);\n-                    const run = React.useCallback(async () => {\n-                        var _ref;\n-                        if (!queryEditor || !responseEditor) {\n-                            return;\n-                        }\n-                        if (subscription) {\n-                            stop();\n-                            return;\n-                        }\n-                        const setResponse = value2 => {\n-                            responseEditor.setValue(value2);\n-                            updateActiveTabValues({\n-                                response: value2\n-                            });\n+                    let t3;\n+                    if ($[3] !== subscription) {\n+                        t3 = () => {\n+                            subscription == null ? void 0 : subscription.unsubscribe();\n+                            setIsFetching(false);\n+                            setSubscription(null);\n                         };\n-                        queryIdRef.current += 1;\n-                        const queryId = queryIdRef.current;\n-                        let query = autoCompleteLeafs() || queryEditor.getValue();\n-                        const variablesString = variableEditor == null ? void 0 : variableEditor.getValue();\n-                        let variables;\n-                        try {\n-                            variables = tryParseJsonObject({\n-                                json: variablesString,\n-                                errorMessageParse: \"Variables are invalid JSON\",\n-                                errorMessageType: \"Variables are not a JSON object.\"\n-                            });\n-                        } catch (error) {\n-                            setResponse(error instanceof Error ? error.message : `${error}`);\n-                            return;\n-                        }\n-                        const headersString = headerEditor == null ? void 0 : headerEditor.getValue();\n-                        let headers;\n-                        try {\n-                            headers = tryParseJsonObject({\n-                                json: headersString,\n-                                errorMessageParse: \"Headers are invalid JSON\",\n-                                errorMessageType: \"Headers are not a JSON object.\"\n-                            });\n-                        } catch (error) {\n-                            setResponse(error instanceof Error ? error.message : `${error}`);\n-                            return;\n-                        }\n-                        if (externalFragments) {\n-                            const fragmentDependencies = queryEditor.documentAST ? graphqlLanguageService.getFragmentDependenciesForAST(queryEditor.documentAST, externalFragments) : [];\n-                            if (fragmentDependencies.length > 0) {\n-                                query += \"\\n\" + fragmentDependencies.map(node => graphql.print(node)).join(\"\\n\");\n+                        $[3] = subscription;\n+                        $[4] = t3;\n+                    } else {\n+                        t3 = $[4];\n+                    }\n+                    const stop = t3;\n+                    let t4;\n+                    if ($[5] !== autoCompleteLeafs || $[6] !== externalFragments || $[7] !== fetcher || $[8] !== headerEditor || $[9] !== history || $[10] !== operationName || $[11] !== queryEditor || $[12] !== responseEditor || $[13] !== stop || $[14] !== subscription || $[15] !== updateActiveTabValues || $[16] !== variableEditor) {\n+                        t4 = async () => {\n+                            var _ref, _headers2, _queryEditor$document;\n+                            if (!queryEditor || !responseEditor) {\n+                                return;\n                             }\n-                        }\n-                        setResponse(\"\");\n-                        setIsFetching(true);\n-                        const opName = (_ref = operationName !== null && operationName !== void 0 ? operationName : queryEditor.operationName) !== null && _ref !== void 0 ? _ref : void 0;\n-                        history == null ? void 0 : history.addToHistory({\n-                            query,\n-                            variables: variablesString,\n-                            headers: headersString,\n-                            operationName: opName\n-                        });\n-                        try {\n-                            var _headers, _queryEditor$document;\n-                            const fullResponse = {};\n-                            const handleResponse = result => {\n-                                if (queryId !== queryIdRef.current) {\n-                                    return;\n-                                }\n-                                let maybeMultipart = Array.isArray(result) ? result : false;\n-                                if (!maybeMultipart && typeof result === \"object\" && result !== null && \"hasNext\" in result) {\n-                                    maybeMultipart = [result];\n-                                }\n-                                if (maybeMultipart) {\n-                                    for (const part of maybeMultipart) {\n-                                        mergeIncrementalResult(fullResponse, part);\n-                                    }\n-                                    setIsFetching(false);\n-                                    setResponse(toolkit.formatResult(fullResponse));\n-                                } else {\n-                                    const response = toolkit.formatResult(result);\n-                                    setIsFetching(false);\n-                                    setResponse(response);\n-                                }\n+                            if (subscription) {\n+                                stop();\n+                                return;\n+                            }\n+                            const setResponse = value => {\n+                                responseEditor.setValue(value);\n+                                updateActiveTabValues({\n+                                    response: value\n+                                });\n                             };\n-                            const fetch2 = fetcher({\n+                            queryIdRef.current = queryIdRef.current + 1;\n+                            const queryId = queryIdRef.current;\n+                            let query = autoCompleteLeafs() || queryEditor.getValue();\n+                            const variablesString = variableEditor == null ? void 0 : variableEditor.getValue();\n+                            let variables;\n+                            try {\n+                                variables = tryParseJsonObject({\n+                                    json: variablesString,\n+                                    errorMessageParse: \"Variables are invalid JSON\",\n+                                    errorMessageType: \"Variables are not a JSON object.\"\n+                                });\n+                            } catch (t52) {\n+                                const error = t52;\n+                                setResponse(error instanceof Error ? error.message : `${error}`);\n+                                return;\n+                            }\n+                            const headersString = headerEditor == null ? void 0 : headerEditor.getValue();\n+                            let headers;\n+                            try {\n+                                headers = tryParseJsonObject({\n+                                    json: headersString,\n+                                    errorMessageParse: \"Headers are invalid JSON\",\n+                                    errorMessageType: \"Headers are not a JSON object.\"\n+                                });\n+                            } catch (t62) {\n+                                const error_0 = t62;\n+                                setResponse(error_0 instanceof Error ? error_0.message : `${error_0}`);\n+                                return;\n+                            }\n+                            if (externalFragments) {\n+                                const fragmentDependencies = queryEditor.documentAST ? graphqlLanguageService.getFragmentDependenciesForAST(queryEditor.documentAST, externalFragments) : [];\n+                                if (fragmentDependencies.length > 0) {\n+                                    query = query + (\"\\n\" + fragmentDependencies.map(_temp$7).join(\"\\n\"));\n+                                }\n+                            }\n+                            setResponse(\"\");\n+                            setIsFetching(true);\n+                            const opName = (_ref = operationName !== null && operationName !== void 0 ? operationName : queryEditor.operationName) !== null && _ref !== void 0 ? _ref : void 0;\n+                            history == null ? void 0 : history.addToHistory({\n                                 query,\n-                                variables,\n+                                variables: variablesString,\n+                                headers: headersString,\n                                 operationName: opName\n-                            }, {\n-                                headers: (_headers = headers) !== null && _headers !== void 0 ? _headers : void 0,\n-                                documentAST: (_queryEditor$document = queryEditor.documentAST) !== null && _queryEditor$document !== void 0 ? _queryEditor$document : void 0\n                             });\n-                            const value2 = await Promise.resolve(fetch2);\n-                            if (toolkit.isObservable(value2)) {\n-                                setSubscription(value2.subscribe({\n-                                    next(result) {\n-                                        handleResponse(result);\n-                                    },\n-                                    error(error) {\n+                            const _headers = (_headers2 = headers) !== null && _headers2 !== void 0 ? _headers2 : void 0;\n+                            const documentAST = (_queryEditor$document = queryEditor.documentAST) !== null && _queryEditor$document !== void 0 ? _queryEditor$document : void 0;\n+                            try {\n+                                const fullResponse = {};\n+                                const handleResponse = result => {\n+                                    if (queryId !== queryIdRef.current) {\n+                                        return;\n+                                    }\n+                                    let maybeMultipart = Array.isArray(result) ? result : false;\n+                                    if (!maybeMultipart && typeof result === \"object\" && result !== null && \"hasNext\" in result) {\n+                                        maybeMultipart = [result];\n+                                    }\n+                                    if (maybeMultipart) {\n+                                        for (const part of maybeMultipart) {\n+                                            mergeIncrementalResult(fullResponse, part);\n+                                        }\n+                                        setIsFetching(false);\n+                                        setResponse(toolkit.formatResult(fullResponse));\n+                                    } else {\n+                                        const response = toolkit.formatResult(result);\n                                         setIsFetching(false);\n-                                        if (error) {\n-                                            setResponse(toolkit.formatError(error));\n+                                        setResponse(response);\n+                                    }\n+                                };\n+                                const fetch2 = fetcher({\n+                                    query,\n+                                    variables,\n+                                    operationName: opName\n+                                }, {\n+                                    headers: _headers,\n+                                    documentAST\n+                                });\n+                                const value_0 = await Promise.resolve(fetch2);\n+                                if (toolkit.isObservable(value_0)) {\n+                                    setSubscription(value_0.subscribe({\n+                                        next(result_0) {\n+                                            handleResponse(result_0);\n+                                        },\n+                                        error(error_2) {\n+                                            setIsFetching(false);\n+                                            if (error_2) {\n+                                                setResponse(toolkit.formatError(error_2));\n+                                            }\n+                                            setSubscription(null);\n+                                        },\n+                                        complete() {\n+                                            setIsFetching(false);\n+                                            setSubscription(null);\n                                         }\n-                                        setSubscription(null);\n-                                    },\n-                                    complete() {\n+                                    }));\n+                                } else {\n+                                    if (toolkit.isAsyncIterable(value_0)) {\n+                                        setSubscription({\n+                                            unsubscribe: () => {\n+                                                var _a, _b;\n+                                                return (_b = (_a = value_0[Symbol.asyncIterator]()).return) == null ? void 0 : _b.call(_a);\n+                                            }\n+                                        });\n+                                        await handleAsyncResults(handleResponse, value_0);\n                                         setIsFetching(false);\n                                         setSubscription(null);\n+                                    } else {\n+                                        handleResponse(value_0);\n                                     }\n-                                }));\n-                            } else if (toolkit.isAsyncIterable(value2)) {\n-                                setSubscription({\n-                                    unsubscribe: () => {\n-                                        var _a, _b;\n-                                        return (_b = (_a = value2[Symbol.asyncIterator]()).return) == null ? void 0 : _b.call(_a);\n-                                    }\n-                                });\n-                                for await (const result of value2) {\n-                                    handleResponse(result);\n                                 }\n+                            } catch (t72) {\n+                                const error_1 = t72;\n                                 setIsFetching(false);\n+                                setResponse(toolkit.formatError(error_1));\n                                 setSubscription(null);\n-                            } else {\n-                                handleResponse(value2);\n                             }\n-                        } catch (error) {\n-                            setIsFetching(false);\n-                            setResponse(toolkit.formatError(error));\n-                            setSubscription(null);\n-                        }\n-                    }, [autoCompleteLeafs, externalFragments, fetcher, headerEditor, history, operationName, queryEditor, responseEditor, stop, subscription, updateActiveTabValues, variableEditor]);\n+                        };\n+                        $[5] = autoCompleteLeafs;\n+                        $[6] = externalFragments;\n+                        $[7] = fetcher;\n+                        $[8] = headerEditor;\n+                        $[9] = history;\n+                        $[10] = operationName;\n+                        $[11] = queryEditor;\n+                        $[12] = responseEditor;\n+                        $[13] = stop;\n+                        $[14] = subscription;\n+                        $[15] = updateActiveTabValues;\n+                        $[16] = variableEditor;\n+                        $[17] = t4;\n+                    } else {\n+                        t4 = $[17];\n+                    }\n+                    const run = t4;\n                     const isSubscribed = Boolean(subscription);\n-                    const value = React.useMemo(() => ({\n-                        isFetching,\n-                        isSubscribed,\n-                        operationName: operationName !== null && operationName !== void 0 ? operationName : null,\n-                        run,\n-                        stop\n-                    }), [isFetching, isSubscribed, operationName, run, stop]);\n-                    return /* @__PURE__ */ jsxRuntime.jsx(ExecutionContext.Provider, {\n-                        value,\n-                        children\n-                    });\n+                    const t5 = operationName !== null && operationName !== void 0 ? operationName : null;\n+                    let t6;\n+                    if ($[18] !== isFetching || $[19] !== isSubscribed || $[20] !== run || $[21] !== stop || $[22] !== t5) {\n+                        t6 = {\n+                            isFetching,\n+                            isSubscribed,\n+                            operationName: t5,\n+                            run,\n+                            stop\n+                        };\n+                        $[18] = isFetching;\n+                        $[19] = isSubscribed;\n+                        $[20] = run;\n+                        $[21] = stop;\n+                        $[22] = t5;\n+                        $[23] = t6;\n+                    } else {\n+                        t6 = $[23];\n+                    }\n+                    const value_1 = t6;\n+                    let t7;\n+                    if ($[24] !== children || $[25] !== value_1) {\n+                        t7 = /* @__PURE__ */ jsxRuntime.jsx(ExecutionContext.Provider, {\n+                            value: value_1,\n+                            children\n+                        });\n+                        $[24] = children;\n+                        $[25] = value_1;\n+                        $[26] = t7;\n+                    } else {\n+                        t7 = $[26];\n+                    }\n+                    return t7;\n+                }\n+\n+                function _temp$7(node) {\n+                    return graphql.print(node);\n+                }\n+                async function handleAsyncResults(onResponse, value) {\n+                    for await (const result of value) {\n+                        onResponse(result);\n+                    }\n                 }\n                 const useExecutionContext = createContextHook(ExecutionContext);\n \n                 function tryParseJsonObject({\n                     json,\n                     errorMessageParse,\n                     errorMessageType\n@@ -75193,226 +81880,382 @@\n                             if (errors) {\n                                 executionResult.errors || (executionResult.errors = []);\n                                 executionResult.errors.push(...errors);\n                             }\n                         }\n                     }\n                 }\n+                const isMacOs = typeof navigator !== \"undefined\" && navigator.userAgent.includes(\"Mac\");\n                 const DEFAULT_EDITOR_THEME = \"graphiql\";\n                 const DEFAULT_KEY_MAP = \"sublime\";\n-                let isMacOs = false;\n-                if (typeof window === \"object\") {\n-                    isMacOs = window.navigator.platform.toLowerCase().indexOf(\"mac\") === 0;\n-                }\n                 const commonKeys = {\n                     // Persistent search box in Query Editor\n                     [isMacOs ? \"Cmd-F\" : \"Ctrl-F\"]: \"findPersistent\",\n                     \"Cmd-G\": \"findPersistent\",\n                     \"Ctrl-G\": \"findPersistent\",\n                     // Editor improvements\n                     \"Ctrl-Left\": \"goSubwordLeft\",\n                     \"Ctrl-Right\": \"goSubwordRight\",\n                     \"Alt-Left\": \"goGroupLeft\",\n                     \"Alt-Right\": \"goGroupRight\"\n                 };\n                 async function importCodeMirror(addons, options) {\n-                    const CodeMirror = await Promise.resolve().then(() => __webpack_require__( /*! ./codemirror.cjs.js */ \"../../graphiql-react/dist/codemirror.cjs.js\")).then(n => n.codemirror).then(c =>\n+                    const CodeMirror = await Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror */ \"../../../node_modules/codemirror/lib/codemirror.js\"))).then(c =>\n                         // Depending on bundler and settings the dynamic import either returns a\n                         // function (e.g. parcel) or an object containing a `default` property\n                         typeof c === \"function\" ? c : c.default);\n-                    await Promise.all((options == null ? void 0 : options.useCommonAddons) === false ? addons : [Promise.resolve().then(() => __webpack_require__( /*! ./show-hint.cjs.js */ \"../../graphiql-react/dist/show-hint.cjs.js\")).then(n => n.showHint), Promise.resolve().then(() => __webpack_require__( /*! ./matchbrackets.cjs.js */ \"../../graphiql-react/dist/matchbrackets.cjs.js\")).then(n => n.matchbrackets), Promise.resolve().then(() => __webpack_require__( /*! ./closebrackets.cjs.js */ \"../../graphiql-react/dist/closebrackets.cjs.js\")).then(n => n.closebrackets), Promise.resolve().then(() => __webpack_require__( /*! ./brace-fold.cjs.js */ \"../../graphiql-react/dist/brace-fold.cjs.js\")).then(n => n.braceFold), Promise.resolve().then(() => __webpack_require__( /*! ./foldgutter.cjs.js */ \"../../graphiql-react/dist/foldgutter.cjs.js\")).then(n => n.foldgutter), Promise.resolve().then(() => __webpack_require__( /*! ./lint.cjs.js */ \"../../graphiql-react/dist/lint.cjs.js\")).then(n => n.lint), Promise.resolve().then(() => __webpack_require__( /*! ./searchcursor.cjs.js */ \"../../graphiql-react/dist/searchcursor.cjs.js\")).then(n => n.searchcursor), Promise.resolve().then(() => __webpack_require__( /*! ./jump-to-line.cjs.js */ \"../../graphiql-react/dist/jump-to-line.cjs.js\")).then(n => n.jumpToLine), Promise.resolve().then(() => __webpack_require__( /*! ./dialog.cjs.js */ \"../../graphiql-react/dist/dialog.cjs.js\")).then(n => n.dialog),\n-                        // @ts-expect-error\n-                        Promise.resolve().then(() => __webpack_require__( /*! ./sublime.cjs.js */ \"../../graphiql-react/dist/sublime.cjs.js\")).then(n => n.sublime), ...addons\n+                    await Promise.all((options == null ? void 0 : options.useCommonAddons) === false ? addons : [Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/hint/show-hint.js */ \"../../../node_modules/codemirror/addon/hint/show-hint.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/edit/matchbrackets.js */ \"../../../node_modules/codemirror/addon/edit/matchbrackets.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/edit/closebrackets.js */ \"../../../node_modules/codemirror/addon/edit/closebrackets.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/fold/brace-fold.js */ \"../../../node_modules/codemirror/addon/fold/brace-fold.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/fold/foldgutter.js */ \"../../../node_modules/codemirror/addon/fold/foldgutter.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/lint/lint.js */ \"../../../node_modules/codemirror/addon/lint/lint.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/search/searchcursor.js */ \"../../../node_modules/codemirror/addon/search/searchcursor.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/search/jump-to-line.js */ \"../../../node_modules/codemirror/addon/search/jump-to-line.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/dialog/dialog.js */ \"../../../node_modules/codemirror/addon/dialog/dialog.js\"))), // @ts-expect-error\n+                        Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/keymap/sublime.js */ \"../../../node_modules/codemirror/keymap/sublime.js\"))), ...addons\n                     ]);\n                     return CodeMirror;\n                 }\n                 const printDefault = ast => {\n                     if (!ast) {\n                         return \"\";\n                     }\n                     return graphql.print(ast);\n                 };\n \n-                function DefaultValue({\n-                    field\n-                }) {\n+                function DefaultValue(t0) {\n+                    const $ = reactCompilerRuntime.c(12);\n+                    const {\n+                        field\n+                    } = t0;\n                     if (!(\"defaultValue\" in field) || field.defaultValue === void 0) {\n                         return null;\n                     }\n-                    const ast = graphql.astFromValue(field.defaultValue, field.type);\n-                    if (!ast) {\n-                        return null;\n+                    const t1 = field.defaultValue;\n+                    const t2 = field.type;\n+                    let t3;\n+                    let t4;\n+                    let t5;\n+                    let t6;\n+                    if ($[0] !== field.defaultValue || $[1] !== field.type) {\n+                        t6 = Symbol.for(\"react.early_return_sentinel\");\n+                        bb0: {\n+                            const ast = graphql.astFromValue(t1, t2);\n+                            if (!ast) {\n+                                t6 = null;\n+                                break bb0;\n+                            }\n+                            t5 = \" = \";\n+                            t3 = \"graphiql-doc-explorer-default-value\";\n+                            t4 = printDefault(ast);\n+                        }\n+                        $[0] = field.defaultValue;\n+                        $[1] = field.type;\n+                        $[2] = t3;\n+                        $[3] = t4;\n+                        $[4] = t5;\n+                        $[5] = t6;\n+                    } else {\n+                        t3 = $[2];\n+                        t4 = $[3];\n+                        t5 = $[4];\n+                        t6 = $[5];\n+                    }\n+                    if (t6 !== Symbol.for(\"react.early_return_sentinel\")) {\n+                        return t6;\n+                    }\n+                    let t7;\n+                    if ($[6] !== t3 || $[7] !== t4) {\n+                        t7 = /* @__PURE__ */ jsxRuntime.jsx(\"span\", {\n+                            className: t3,\n+                            children: t4\n+                        });\n+                        $[6] = t3;\n+                        $[7] = t4;\n+                        $[8] = t7;\n+                    } else {\n+                        t7 = $[8];\n                     }\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n-                        children: [\" = \", /* @__PURE__ */ jsxRuntime.jsx(\"span\", {\n-                            className: \"graphiql-doc-explorer-default-value\",\n-                            children: printDefault(ast)\n-                        })]\n-                    });\n+                    let t8;\n+                    if ($[9] !== t5 || $[10] !== t7) {\n+                        t8 = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n+                            children: [t5, t7]\n+                        });\n+                        $[9] = t5;\n+                        $[10] = t7;\n+                        $[11] = t8;\n+                    } else {\n+                        t8 = $[11];\n+                    }\n+                    return t8;\n                 }\n                 const SchemaContext = createNullableContext(\"SchemaContext\");\n \n-                function SchemaContextProvider(props) {\n-                    if (!props.fetcher) {\n+                function SchemaContextProvider(t0) {\n+                    const $ = reactCompilerRuntime.c(38);\n+                    let fetcher;\n+                    let onSchemaChange;\n+                    let props;\n+                    if ($[0] !== t0) {\n+                        ({\n+                            fetcher,\n+                            onSchemaChange,\n+                            ...props\n+                        } = t0);\n+                        $[0] = t0;\n+                        $[1] = fetcher;\n+                        $[2] = onSchemaChange;\n+                        $[3] = props;\n+                    } else {\n+                        fetcher = $[1];\n+                        onSchemaChange = $[2];\n+                        props = $[3];\n+                    }\n+                    if (!fetcher) {\n                         throw new TypeError(\"The `SchemaContextProvider` component requires a `fetcher` function to be passed as prop.\");\n                     }\n+                    let t1;\n+                    if ($[4] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = {\n+                            nonNull: true,\n+                            caller: SchemaContextProvider\n+                        };\n+                        $[4] = t1;\n+                    } else {\n+                        t1 = $[4];\n+                    }\n                     const {\n                         initialHeaders,\n                         headerEditor\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller: SchemaContextProvider\n-                    });\n+                    } = useEditorContext(t1);\n                     const [schema, setSchema] = React.useState();\n                     const [isFetching, setIsFetching] = React.useState(false);\n                     const [fetchError, setFetchError] = React.useState(null);\n                     const counterRef = React.useRef(0);\n-                    React.useEffect(() => {\n-                        setSchema(graphql.isSchema(props.schema) || props.schema === null || props.schema === void 0 ? props.schema : void 0);\n-                        counterRef.current++;\n-                    }, [props.schema]);\n+                    let t2;\n+                    let t3;\n+                    if ($[5] !== props.schema) {\n+                        t2 = () => {\n+                            setSchema(graphql.isSchema(props.schema) || props.schema == null ? props.schema : void 0);\n+                            counterRef.current = counterRef.current + 1;\n+                        };\n+                        t3 = [props.schema];\n+                        $[5] = props.schema;\n+                        $[6] = t2;\n+                        $[7] = t3;\n+                    } else {\n+                        t2 = $[6];\n+                        t3 = $[7];\n+                    }\n+                    React.useEffect(t2, t3);\n                     const headersRef = React.useRef(initialHeaders);\n-                    React.useEffect(() => {\n-                        if (headerEditor) {\n-                            headersRef.current = headerEditor.getValue();\n-                        }\n-                    });\n+                    let t4;\n+                    if ($[8] !== headerEditor) {\n+                        t4 = () => {\n+                            if (headerEditor) {\n+                                headersRef.current = headerEditor.getValue();\n+                            }\n+                        };\n+                        $[8] = headerEditor;\n+                        $[9] = t4;\n+                    } else {\n+                        t4 = $[9];\n+                    }\n+                    React.useEffect(t4);\n+                    let t5;\n+                    if ($[10] !== props.inputValueDeprecation || $[11] !== props.introspectionQueryName || $[12] !== props.schemaDescription) {\n+                        t5 = {\n+                            inputValueDeprecation: props.inputValueDeprecation,\n+                            introspectionQueryName: props.introspectionQueryName,\n+                            schemaDescription: props.schemaDescription\n+                        };\n+                        $[10] = props.inputValueDeprecation;\n+                        $[11] = props.introspectionQueryName;\n+                        $[12] = props.schemaDescription;\n+                        $[13] = t5;\n+                    } else {\n+                        t5 = $[13];\n+                    }\n                     const {\n                         introspectionQuery,\n                         introspectionQueryName,\n                         introspectionQuerySansSubscriptions\n-                    } = useIntrospectionQuery({\n-                        inputValueDeprecation: props.inputValueDeprecation,\n-                        introspectionQueryName: props.introspectionQueryName,\n-                        schemaDescription: props.schemaDescription\n-                    });\n-                    const {\n-                        fetcher,\n-                        onSchemaChange,\n-                        dangerouslyAssumeSchemaIsValid,\n-                        children\n-                    } = props;\n-                    const introspect = React.useCallback(() => {\n-                        if (graphql.isSchema(props.schema) || props.schema === null) {\n-                            return;\n-                        }\n-                        const counter = ++counterRef.current;\n-                        const maybeIntrospectionData = props.schema;\n-                        async function fetchIntrospectionData() {\n-                            if (maybeIntrospectionData) {\n-                                return maybeIntrospectionData;\n-                            }\n-                            const parsedHeaders = parseHeaderString(headersRef.current);\n-                            if (!parsedHeaders.isValidJSON) {\n-                                setFetchError(\"Introspection failed as headers are invalid.\");\n-                                return;\n-                            }\n-                            const fetcherOpts = parsedHeaders.headers ? {\n-                                headers: parsedHeaders.headers\n-                            } : {};\n-                            const fetch2 = toolkit.fetcherReturnToPromise(fetcher({\n-                                query: introspectionQuery,\n-                                operationName: introspectionQueryName\n-                            }, fetcherOpts));\n-                            if (!toolkit.isPromise(fetch2)) {\n-                                setFetchError(\"Fetcher did not return a Promise for introspection.\");\n+                    } = useIntrospectionQuery(t5);\n+                    let t6;\n+                    if ($[14] !== fetcher || $[15] !== introspectionQuery || $[16] !== introspectionQueryName || $[17] !== introspectionQuerySansSubscriptions || $[18] !== onSchemaChange || $[19] !== props.schema) {\n+                        t6 = () => {\n+                            if (graphql.isSchema(props.schema) || props.schema === null) {\n                                 return;\n                             }\n-                            setIsFetching(true);\n-                            setFetchError(null);\n-                            let result = await fetch2;\n-                            if (typeof result !== \"object\" || result === null || !(\"data\" in result)) {\n-                                const fetch22 = toolkit.fetcherReturnToPromise(fetcher({\n-                                    query: introspectionQuerySansSubscriptions,\n+                            const counter = counterRef.current = counterRef.current + 1;\n+                            const maybeIntrospectionData = props.schema;\n+                            const fetchIntrospectionData = async function fetchIntrospectionData2() {\n+                                if (maybeIntrospectionData) {\n+                                    return maybeIntrospectionData;\n+                                }\n+                                const parsedHeaders = parseHeaderString(headersRef.current);\n+                                if (!parsedHeaders.isValidJSON) {\n+                                    setFetchError(\"Introspection failed as headers are invalid.\");\n+                                    return;\n+                                }\n+                                const fetcherOpts = parsedHeaders.headers ? {\n+                                    headers: parsedHeaders.headers\n+                                } : {};\n+                                const fetch2 = toolkit.fetcherReturnToPromise(fetcher({\n+                                    query: introspectionQuery,\n                                     operationName: introspectionQueryName\n                                 }, fetcherOpts));\n-                                if (!toolkit.isPromise(fetch22)) {\n-                                    throw new Error(\"Fetcher did not return a Promise for introspection.\");\n+                                if (!toolkit.isPromise(fetch2)) {\n+                                    setFetchError(\"Fetcher did not return a Promise for introspection.\");\n+                                    return;\n                                 }\n-                                result = await fetch22;\n-                            }\n-                            setIsFetching(false);\n-                            if ((result == null ? void 0 : result.data) && \"__schema\" in result.data) {\n-                                return result.data;\n-                            }\n-                            const responseString = typeof result === \"string\" ? result : toolkit.formatResult(result);\n-                            setFetchError(responseString);\n-                        }\n-                        fetchIntrospectionData().then(introspectionData => {\n-                            if (counter !== counterRef.current || !introspectionData) {\n-                                return;\n-                            }\n-                            try {\n-                                const newSchema = graphql.buildClientSchema(introspectionData);\n-                                setSchema(newSchema);\n-                                onSchemaChange == null ? void 0 : onSchemaChange(newSchema);\n-                            } catch (error) {\n-                                setFetchError(toolkit.formatError(error));\n-                            }\n-                        }).catch(error => {\n-                            if (counter !== counterRef.current) {\n-                                return;\n-                            }\n-                            setFetchError(toolkit.formatError(error));\n-                            setIsFetching(false);\n+                                setIsFetching(true);\n+                                setFetchError(null);\n+                                let result = await fetch2;\n+                                if (typeof result !== \"object\" || result === null || !(\"data\" in result)) {\n+                                    const fetch22 = toolkit.fetcherReturnToPromise(fetcher({\n+                                        query: introspectionQuerySansSubscriptions,\n+                                        operationName: introspectionQueryName\n+                                    }, fetcherOpts));\n+                                    if (!toolkit.isPromise(fetch22)) {\n+                                        throw new Error(\"Fetcher did not return a Promise for introspection.\");\n+                                    }\n+                                    result = await fetch22;\n+                                }\n+                                setIsFetching(false);\n+                                if ((result == null ? void 0 : result.data) && \"__schema\" in result.data) {\n+                                    return result.data;\n+                                }\n+                                const responseString = typeof result === \"string\" ? result : toolkit.formatResult(result);\n+                                setFetchError(responseString);\n+                            };\n+                            fetchIntrospectionData().then(introspectionData => {\n+                                if (counter !== counterRef.current || !introspectionData) {\n+                                    return;\n+                                }\n+                                try {\n+                                    const newSchema = graphql.buildClientSchema(introspectionData);\n+                                    setSchema(newSchema);\n+                                    if (onSchemaChange) {\n+                                        onSchemaChange(newSchema);\n+                                    }\n+                                } catch (t72) {\n+                                    const error = t72;\n+                                    setFetchError(toolkit.formatError(error));\n+                                }\n+                            }).catch(error_0 => {\n+                                if (counter !== counterRef.current) {\n+                                    return;\n+                                }\n+                                setFetchError(toolkit.formatError(error_0));\n+                                setIsFetching(false);\n+                            });\n+                        };\n+                        $[14] = fetcher;\n+                        $[15] = introspectionQuery;\n+                        $[16] = introspectionQueryName;\n+                        $[17] = introspectionQuerySansSubscriptions;\n+                        $[18] = onSchemaChange;\n+                        $[19] = props.schema;\n+                        $[20] = t6;\n+                    } else {\n+                        t6 = $[20];\n+                    }\n+                    const introspect = t6;\n+                    let t7;\n+                    let t8;\n+                    if ($[21] !== introspect) {\n+                        t7 = () => {\n+                            introspect();\n+                        };\n+                        t8 = [introspect];\n+                        $[21] = introspect;\n+                        $[22] = t7;\n+                        $[23] = t8;\n+                    } else {\n+                        t7 = $[22];\n+                        t8 = $[23];\n+                    }\n+                    React.useEffect(t7, t8);\n+                    let t9;\n+                    if ($[24] !== introspect) {\n+                        t9 = () => {\n+                            const triggerIntrospection = function triggerIntrospection2(event) {\n+                                if (event.ctrlKey && event.key === \"R\") {\n+                                    introspect();\n+                                }\n+                            };\n+                            window.addEventListener(\"keydown\", triggerIntrospection);\n+                            return () => {\n+                                window.removeEventListener(\"keydown\", triggerIntrospection);\n+                            };\n+                        };\n+                        $[24] = introspect;\n+                        $[25] = t9;\n+                    } else {\n+                        t9 = $[25];\n+                    }\n+                    React.useEffect(t9);\n+                    let t10;\n+                    if ($[26] !== props.dangerouslyAssumeSchemaIsValid || $[27] !== schema) {\n+                        t10 = !schema || props.dangerouslyAssumeSchemaIsValid ? [] : graphql.validateSchema(schema);\n+                        $[26] = props.dangerouslyAssumeSchemaIsValid;\n+                        $[27] = schema;\n+                        $[28] = t10;\n+                    } else {\n+                        t10 = $[28];\n+                    }\n+                    const validationErrors = t10;\n+                    let t11;\n+                    if ($[29] !== fetchError || $[30] !== introspect || $[31] !== isFetching || $[32] !== schema || $[33] !== validationErrors) {\n+                        t11 = {\n+                            fetchError,\n+                            introspect,\n+                            isFetching,\n+                            schema,\n+                            validationErrors\n+                        };\n+                        $[29] = fetchError;\n+                        $[30] = introspect;\n+                        $[31] = isFetching;\n+                        $[32] = schema;\n+                        $[33] = validationErrors;\n+                        $[34] = t11;\n+                    } else {\n+                        t11 = $[34];\n+                    }\n+                    const value = t11;\n+                    let t12;\n+                    if ($[35] !== props.children || $[36] !== value) {\n+                        t12 = /* @__PURE__ */ jsxRuntime.jsx(SchemaContext.Provider, {\n+                            value,\n+                            children: props.children\n                         });\n-                    }, [fetcher, introspectionQueryName, introspectionQuery, introspectionQuerySansSubscriptions, onSchemaChange, props.schema]);\n-                    React.useEffect(() => {\n-                        introspect();\n-                    }, [introspect]);\n-                    React.useEffect(() => {\n-                        function triggerIntrospection(event) {\n-                            if (event.ctrlKey && event.key === \"R\") {\n-                                introspect();\n-                            }\n-                        }\n-                        window.addEventListener(\"keydown\", triggerIntrospection);\n-                        return () => window.removeEventListener(\"keydown\", triggerIntrospection);\n-                    });\n-                    const validationErrors = React.useMemo(() => {\n-                        if (!schema || dangerouslyAssumeSchemaIsValid) {\n-                            return [];\n-                        }\n-                        return graphql.validateSchema(schema);\n-                    }, [schema, dangerouslyAssumeSchemaIsValid]);\n-                    const value = React.useMemo(() => ({\n-                        fetchError,\n-                        introspect,\n-                        isFetching,\n-                        schema,\n-                        validationErrors\n-                    }), [fetchError, introspect, isFetching, schema, validationErrors]);\n-                    return /* @__PURE__ */ jsxRuntime.jsx(SchemaContext.Provider, {\n-                        value,\n-                        children\n-                    });\n+                        $[35] = props.children;\n+                        $[36] = value;\n+                        $[37] = t12;\n+                    } else {\n+                        t12 = $[37];\n+                    }\n+                    return t12;\n                 }\n                 const useSchemaContext = createContextHook(SchemaContext);\n \n                 function useIntrospectionQuery({\n                     inputValueDeprecation,\n                     introspectionQueryName,\n                     schemaDescription\n                 }) {\n-                    return React.useMemo(() => {\n-                        const queryName = introspectionQueryName || \"IntrospectionQuery\";\n-                        let query = graphql.getIntrospectionQuery({\n-                            inputValueDeprecation,\n-                            schemaDescription\n-                        });\n-                        if (introspectionQueryName) {\n-                            query = query.replace(\"query IntrospectionQuery\", `query ${queryName}`);\n-                        }\n-                        const querySansSubscriptions = query.replace(\"subscriptionType { name }\", \"\");\n-                        return {\n-                            introspectionQueryName: queryName,\n-                            introspectionQuery: query,\n-                            introspectionQuerySansSubscriptions: querySansSubscriptions\n-                        };\n-                    }, [inputValueDeprecation, introspectionQueryName, schemaDescription]);\n+                    const queryName = introspectionQueryName || \"IntrospectionQuery\";\n+                    let query = graphql.getIntrospectionQuery({\n+                        inputValueDeprecation,\n+                        schemaDescription\n+                    });\n+                    if (introspectionQueryName) {\n+                        query = query.replace(\"query IntrospectionQuery\", `query ${queryName}`);\n+                    }\n+                    const querySansSubscriptions = query.replace(\"subscriptionType { name }\", \"\");\n+                    return {\n+                        introspectionQueryName: queryName,\n+                        introspectionQuery: query,\n+                        introspectionQuerySansSubscriptions: querySansSubscriptions\n+                    };\n                 }\n \n                 function parseHeaderString(headersString) {\n                     let headers = null;\n                     let isValidJSON = true;\n                     try {\n                         if (headersString) {\n@@ -75428,107 +82271,185 @@\n                 }\n                 const initialNavStackItem = {\n                     name: \"Docs\"\n                 };\n                 const ExplorerContext = createNullableContext(\"ExplorerContext\");\n \n                 function ExplorerContextProvider(props) {\n+                    const $ = reactCompilerRuntime.c(14);\n+                    let t0;\n+                    if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t0 = {\n+                            nonNull: true,\n+                            caller: ExplorerContextProvider\n+                        };\n+                        $[0] = t0;\n+                    } else {\n+                        t0 = $[0];\n+                    }\n                     const {\n                         schema,\n                         validationErrors\n-                    } = useSchemaContext({\n-                        nonNull: true,\n-                        caller: ExplorerContextProvider\n-                    });\n-                    const [navStack, setNavStack] = React.useState([initialNavStackItem]);\n-                    const push = React.useCallback(item => {\n-                        setNavStack(currentState => {\n-                            const lastItem = currentState.at(-1);\n-                            return lastItem.def === item.def ?\n-                                // Avoid pushing duplicate items\n-                                currentState : [...currentState, item];\n-                        });\n-                    }, []);\n-                    const pop = React.useCallback(() => {\n-                        setNavStack(currentState => currentState.length > 1 ? currentState.slice(0, -1) : currentState);\n-                    }, []);\n-                    const reset = React.useCallback(() => {\n-                        setNavStack(currentState => currentState.length === 1 ? currentState : [initialNavStackItem]);\n-                    }, []);\n-                    React.useEffect(() => {\n-                        if (schema == null || validationErrors.length > 0) {\n-                            reset();\n-                        } else {\n-                            setNavStack(oldNavStack => {\n-                                if (oldNavStack.length === 1) {\n-                                    return oldNavStack;\n-                                }\n-                                const newNavStack = [initialNavStackItem];\n-                                let lastEntity = null;\n-                                for (const item of oldNavStack) {\n-                                    if (item === initialNavStackItem) {\n-                                        continue;\n-                                    }\n-                                    if (item.def) {\n-                                        if (graphql.isNamedType(item.def)) {\n-                                            const newType = schema.getType(item.def.name);\n-                                            if (newType) {\n-                                                newNavStack.push({\n-                                                    name: item.name,\n-                                                    def: newType\n-                                                });\n-                                                lastEntity = newType;\n-                                            } else {\n-                                                break;\n-                                            }\n-                                        } else if (lastEntity === null) {\n-                                            break;\n-                                        } else if (graphql.isObjectType(lastEntity) || graphql.isInputObjectType(lastEntity)) {\n-                                            const field = lastEntity.getFields()[item.name];\n-                                            if (field) {\n-                                                newNavStack.push({\n-                                                    name: item.name,\n-                                                    def: field\n-                                                });\n+                    } = useSchemaContext(t0);\n+                    let t1;\n+                    if ($[1] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = [initialNavStackItem];\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    const [navStack, setNavStack] = React.useState(t1);\n+                    let t2;\n+                    if ($[2] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t2 = item => {\n+                            setNavStack(currentState => {\n+                                const lastItem = currentState.at(-1);\n+                                return lastItem.def === item.def ? currentState : [...currentState, item];\n+                            });\n+                        };\n+                        $[2] = t2;\n+                    } else {\n+                        t2 = $[2];\n+                    }\n+                    const push = t2;\n+                    let t3;\n+                    if ($[3] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t3 = () => {\n+                            setNavStack(_temp$6);\n+                        };\n+                        $[3] = t3;\n+                    } else {\n+                        t3 = $[3];\n+                    }\n+                    const pop = t3;\n+                    let t4;\n+                    if ($[4] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t4 = () => {\n+                            setNavStack(_temp2$3);\n+                        };\n+                        $[4] = t4;\n+                    } else {\n+                        t4 = $[4];\n+                    }\n+                    const reset = t4;\n+                    let t5;\n+                    let t6;\n+                    if ($[5] !== schema || $[6] !== validationErrors) {\n+                        t5 = () => {\n+                            if (schema == null || validationErrors.length > 0) {\n+                                reset();\n+                            } else {\n+                                setNavStack(oldNavStack => {\n+                                    if (oldNavStack.length === 1) {\n+                                        return oldNavStack;\n+                                    }\n+                                    const newNavStack = [initialNavStackItem];\n+                                    let lastEntity = null;\n+                                    for (const item_0 of oldNavStack) {\n+                                        if (item_0 === initialNavStackItem) {\n+                                            continue;\n+                                        }\n+                                        if (item_0.def) {\n+                                            if (graphql.isNamedType(item_0.def)) {\n+                                                const newType = schema.getType(item_0.def.name);\n+                                                if (newType) {\n+                                                    newNavStack.push({\n+                                                        name: item_0.name,\n+                                                        def: newType\n+                                                    });\n+                                                    lastEntity = newType;\n+                                                } else {\n+                                                    break;\n+                                                }\n                                             } else {\n-                                                break;\n+                                                if (lastEntity === null) {\n+                                                    break;\n+                                                } else {\n+                                                    if (graphql.isObjectType(lastEntity) || graphql.isInputObjectType(lastEntity)) {\n+                                                        const field = lastEntity.getFields()[item_0.name];\n+                                                        if (field) {\n+                                                            newNavStack.push({\n+                                                                name: item_0.name,\n+                                                                def: field\n+                                                            });\n+                                                        } else {\n+                                                            break;\n+                                                        }\n+                                                    } else {\n+                                                        if (graphql.isScalarType(lastEntity) || graphql.isEnumType(lastEntity) || graphql.isInterfaceType(lastEntity) || graphql.isUnionType(lastEntity)) {\n+                                                            break;\n+                                                        } else {\n+                                                            const field_0 = lastEntity;\n+                                                            const arg = field_0.args.find(a => a.name === item_0.name);\n+                                                            if (arg) {\n+                                                                newNavStack.push({\n+                                                                    name: item_0.name,\n+                                                                    def: field_0\n+                                                                });\n+                                                            } else {\n+                                                                break;\n+                                                            }\n+                                                        }\n+                                                    }\n+                                                }\n                                             }\n-                                        } else if (graphql.isScalarType(lastEntity) || graphql.isEnumType(lastEntity) || graphql.isInterfaceType(lastEntity) || graphql.isUnionType(lastEntity)) {\n-                                            break;\n                                         } else {\n-                                            const field = lastEntity;\n-                                            const arg = field.args.find(a => a.name === item.name);\n-                                            if (arg) {\n-                                                newNavStack.push({\n-                                                    name: item.name,\n-                                                    def: field\n-                                                });\n-                                            } else {\n-                                                break;\n-                                            }\n+                                            lastEntity = null;\n+                                            newNavStack.push(item_0);\n                                         }\n-                                    } else {\n-                                        lastEntity = null;\n-                                        newNavStack.push(item);\n                                     }\n-                                }\n-                                return newNavStack;\n-                            });\n-                        }\n-                    }, [reset, schema, validationErrors]);\n-                    const value = React.useMemo(() => ({\n-                        explorerNavStack: navStack,\n-                        push,\n-                        pop,\n-                        reset\n-                    }), [navStack, push, pop, reset]);\n-                    return /* @__PURE__ */ jsxRuntime.jsx(ExplorerContext.Provider, {\n-                        value,\n-                        children: props.children\n-                    });\n+                                    return newNavStack;\n+                                });\n+                            }\n+                        };\n+                        t6 = [schema, validationErrors];\n+                        $[5] = schema;\n+                        $[6] = validationErrors;\n+                        $[7] = t5;\n+                        $[8] = t6;\n+                    } else {\n+                        t5 = $[7];\n+                        t6 = $[8];\n+                    }\n+                    React.useEffect(t5, t6);\n+                    let t7;\n+                    if ($[9] !== navStack) {\n+                        t7 = {\n+                            explorerNavStack: navStack,\n+                            push,\n+                            pop,\n+                            reset\n+                        };\n+                        $[9] = navStack;\n+                        $[10] = t7;\n+                    } else {\n+                        t7 = $[10];\n+                    }\n+                    const value = t7;\n+                    let t8;\n+                    if ($[11] !== props.children || $[12] !== value) {\n+                        t8 = /* @__PURE__ */ jsxRuntime.jsx(ExplorerContext.Provider, {\n+                            value,\n+                            children: props.children\n+                        });\n+                        $[11] = props.children;\n+                        $[12] = value;\n+                        $[13] = t8;\n+                    } else {\n+                        t8 = $[13];\n+                    }\n+                    return t8;\n+                }\n+\n+                function _temp2$3(currentState_1) {\n+                    return currentState_1.length === 1 ? currentState_1 : [initialNavStackItem];\n+                }\n+\n+                function _temp$6(currentState_0) {\n+                    return currentState_0.length > 1 ? currentState_0.slice(0, -1) : currentState_0;\n                 }\n                 const useExplorerContext = createContextHook(ExplorerContext);\n \n                 function renderType(type, renderNamedType) {\n                     if (graphql.isNonNullType(type)) {\n                         return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n                             children: [renderType(type.ofType, renderNamedType), \"!\"]\n@@ -75539,108 +82460,251 @@\n                             children: [\"[\", renderType(type.ofType, renderNamedType), \"]\"]\n                         });\n                     }\n                     return renderNamedType(type);\n                 }\n \n                 function TypeLink(props) {\n+                    const $ = reactCompilerRuntime.c(6);\n+                    let t0;\n+                    if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t0 = {\n+                            nonNull: true,\n+                            caller: TypeLink\n+                        };\n+                        $[0] = t0;\n+                    } else {\n+                        t0 = $[0];\n+                    }\n                     const {\n                         push\n-                    } = useExplorerContext({\n-                        nonNull: true,\n-                        caller: TypeLink\n-                    });\n+                    } = useExplorerContext(t0);\n                     if (!props.type) {\n                         return null;\n                     }\n-                    return renderType(props.type, namedType => /* @__PURE__ */ jsxRuntime.jsx(\"a\", {\n-                        className: \"graphiql-doc-explorer-type-name\",\n-                        onClick: event => {\n-                            event.preventDefault();\n-                            push({\n-                                name: namedType.name,\n-                                def: namedType\n-                            });\n-                        },\n-                        href: \"#\",\n-                        children: namedType.name\n-                    }));\n+                    let t1;\n+                    if ($[1] !== push) {\n+                        t1 = namedType => /* @__PURE__ */ jsxRuntime.jsx(\"a\", {\n+                            className: \"graphiql-doc-explorer-type-name\",\n+                            onClick: event => {\n+                                event.preventDefault();\n+                                push({\n+                                    name: namedType.name,\n+                                    def: namedType\n+                                });\n+                            },\n+                            href: \"#\",\n+                            children: namedType.name\n+                        });\n+                        $[1] = push;\n+                        $[2] = t1;\n+                    } else {\n+                        t1 = $[2];\n+                    }\n+                    let t2;\n+                    if ($[3] !== props.type || $[4] !== t1) {\n+                        t2 = renderType(props.type, t1);\n+                        $[3] = props.type;\n+                        $[4] = t1;\n+                        $[5] = t2;\n+                    } else {\n+                        t2 = $[5];\n+                    }\n+                    return t2;\n                 }\n \n-                function Argument({\n-                    arg,\n-                    showDefaultValue,\n-                    inline\n-                }) {\n-                    const definition = /* @__PURE__ */ jsxRuntime.jsxs(\"span\", {\n-                        children: [ /* @__PURE__ */ jsxRuntime.jsx(\"span\", {\n+                function Argument(t0) {\n+                    const $ = reactCompilerRuntime.c(19);\n+                    const {\n+                        arg,\n+                        showDefaultValue,\n+                        inline\n+                    } = t0;\n+                    let t1;\n+                    if ($[0] !== arg.name) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(\"span\", {\n                             className: \"graphiql-doc-explorer-argument-name\",\n                             children: arg.name\n-                        }), \": \", /* @__PURE__ */ jsxRuntime.jsx(TypeLink, {\n+                        });\n+                        $[0] = arg.name;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    let t2;\n+                    if ($[2] !== arg.type) {\n+                        t2 = /* @__PURE__ */ jsxRuntime.jsx(TypeLink, {\n                             type: arg.type\n-                        }), showDefaultValue !== false && /* @__PURE__ */ jsxRuntime.jsx(DefaultValue, {\n+                        });\n+                        $[2] = arg.type;\n+                        $[3] = t2;\n+                    } else {\n+                        t2 = $[3];\n+                    }\n+                    let t3;\n+                    if ($[4] !== arg || $[5] !== showDefaultValue) {\n+                        t3 = showDefaultValue !== false && /* @__PURE__ */ jsxRuntime.jsx(DefaultValue, {\n                             field: arg\n-                        })]\n-                    });\n+                        });\n+                        $[4] = arg;\n+                        $[5] = showDefaultValue;\n+                        $[6] = t3;\n+                    } else {\n+                        t3 = $[6];\n+                    }\n+                    let t4;\n+                    if ($[7] !== t1 || $[8] !== t2 || $[9] !== t3) {\n+                        t4 = /* @__PURE__ */ jsxRuntime.jsxs(\"span\", {\n+                            children: [t1, \": \", t2, t3]\n+                        });\n+                        $[7] = t1;\n+                        $[8] = t2;\n+                        $[9] = t3;\n+                        $[10] = t4;\n+                    } else {\n+                        t4 = $[10];\n+                    }\n+                    const definition = t4;\n                     if (inline) {\n                         return definition;\n                     }\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n-                        className: \"graphiql-doc-explorer-argument\",\n-                        children: [definition, arg.description ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n+                    let t5;\n+                    if ($[11] !== arg.description) {\n+                        t5 = arg.description ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n                             type: \"description\",\n                             children: arg.description\n-                        }) : null, arg.deprecationReason ? /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                        }) : null;\n+                        $[11] = arg.description;\n+                        $[12] = t5;\n+                    } else {\n+                        t5 = $[12];\n+                    }\n+                    let t6;\n+                    if ($[13] !== arg.deprecationReason) {\n+                        t6 = arg.deprecationReason ? /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n                             className: \"graphiql-doc-explorer-argument-deprecation\",\n                             children: [ /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n                                 className: \"graphiql-doc-explorer-argument-deprecation-label\",\n                                 children: \"Deprecated\"\n                             }), /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n                                 type: \"deprecation\",\n                                 children: arg.deprecationReason\n                             })]\n-                        }) : null]\n-                    });\n+                        }) : null;\n+                        $[13] = arg.deprecationReason;\n+                        $[14] = t6;\n+                    } else {\n+                        t6 = $[14];\n+                    }\n+                    let t7;\n+                    if ($[15] !== definition || $[16] !== t5 || $[17] !== t6) {\n+                        t7 = /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                            className: \"graphiql-doc-explorer-argument\",\n+                            children: [definition, t5, t6]\n+                        });\n+                        $[15] = definition;\n+                        $[16] = t5;\n+                        $[17] = t6;\n+                        $[18] = t7;\n+                    } else {\n+                        t7 = $[18];\n+                    }\n+                    return t7;\n                 }\n \n                 function DeprecationReason(props) {\n-                    var _props$preview;\n-                    return props.children ? /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n-                        className: \"graphiql-doc-explorer-deprecation\",\n-                        children: [ /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                            className: \"graphiql-doc-explorer-deprecation-label\",\n-                            children: \"Deprecated\"\n-                        }), /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n-                            type: \"deprecation\",\n-                            onlyShowFirstChild: (_props$preview = props.preview) !== null && _props$preview !== void 0 ? _props$preview : true,\n-                            children: props.children\n-                        })]\n-                    }) : null;\n+                    const $ = reactCompilerRuntime.c(3);\n+                    let t0;\n+                    if ($[0] !== props.children || $[1] !== props.preview) {\n+                        var _props$preview;\n+                        t0 = props.children ? /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                            className: \"graphiql-doc-explorer-deprecation\",\n+                            children: [ /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                                className: \"graphiql-doc-explorer-deprecation-label\",\n+                                children: \"Deprecated\"\n+                            }), /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n+                                type: \"deprecation\",\n+                                onlyShowFirstChild: (_props$preview = props.preview) !== null && _props$preview !== void 0 ? _props$preview : true,\n+                                children: props.children\n+                            })]\n+                        }) : null;\n+                        $[0] = props.children;\n+                        $[1] = props.preview;\n+                        $[2] = t0;\n+                    } else {\n+                        t0 = $[2];\n+                    }\n+                    return t0;\n                 }\n \n-                function Directive({\n-                    directive\n-                }) {\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(\"span\", {\n-                        className: \"graphiql-doc-explorer-directive\",\n-                        children: [\"@\", directive.name.value]\n-                    });\n+                function Directive(t0) {\n+                    const $ = reactCompilerRuntime.c(2);\n+                    const {\n+                        directive\n+                    } = t0;\n+                    let t1;\n+                    if ($[0] !== directive.name.value) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsxs(\"span\", {\n+                            className: \"graphiql-doc-explorer-directive\",\n+                            children: [\"@\", directive.name.value]\n+                        });\n+                        $[0] = directive.name.value;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    return t1;\n                 }\n \n                 function ExplorerSection(props) {\n+                    const $ = reactCompilerRuntime.c(10);\n                     const Icon2 = TYPE_TO_ICON[props.title];\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n-                        children: [ /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                    let t0;\n+                    if ($[0] !== Icon2) {\n+                        t0 = /* @__PURE__ */ jsxRuntime.jsx(Icon2, {});\n+                        $[0] = Icon2;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    let t1;\n+                    if ($[2] !== props.title || $[3] !== t0) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n                             className: \"graphiql-doc-explorer-section-title\",\n-                            children: [ /* @__PURE__ */ jsxRuntime.jsx(Icon2, {}), props.title]\n-                        }), /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                            children: [t0, props.title]\n+                        });\n+                        $[2] = props.title;\n+                        $[3] = t0;\n+                        $[4] = t1;\n+                    } else {\n+                        t1 = $[4];\n+                    }\n+                    let t2;\n+                    if ($[5] !== props.children) {\n+                        t2 = /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n                             className: \"graphiql-doc-explorer-section-content\",\n                             children: props.children\n-                        })]\n-                    });\n+                        });\n+                        $[5] = props.children;\n+                        $[6] = t2;\n+                    } else {\n+                        t2 = $[6];\n+                    }\n+                    let t3;\n+                    if ($[7] !== t1 || $[8] !== t2) {\n+                        t3 = /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                            children: [t1, t2]\n+                        });\n+                        $[7] = t1;\n+                        $[8] = t2;\n+                        $[9] = t3;\n+                    } else {\n+                        t3 = $[9];\n+                    }\n+                    return t3;\n                 }\n                 const TYPE_TO_ICON = {\n                     Arguments: ArgumentIcon,\n                     \"Deprecated Arguments\": DeprecatedArgumentIcon,\n                     \"Deprecated Enum Values\": DeprecatedEnumValueIcon,\n                     \"Deprecated Fields\": DeprecatedFieldIcon,\n                     Directives: DirectiveIcon,\n@@ -75651,141 +82715,394 @@\n                     \"Possible Types\": TypeIcon,\n                     \"Root Types\": RootTypeIcon,\n                     Type: TypeIcon,\n                     \"All Schema Types\": TypeIcon\n                 };\n \n                 function FieldDocumentation(props) {\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n-                        children: [props.field.description ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n+                    const $ = reactCompilerRuntime.c(15);\n+                    let t0;\n+                    if ($[0] !== props.field.description) {\n+                        t0 = props.field.description ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n                             type: \"description\",\n                             children: props.field.description\n-                        }) : null, /* @__PURE__ */ jsxRuntime.jsx(DeprecationReason, {\n+                        }) : null;\n+                        $[0] = props.field.description;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    let t1;\n+                    if ($[2] !== props.field.deprecationReason) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(DeprecationReason, {\n                             preview: false,\n                             children: props.field.deprecationReason\n-                        }), /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n+                        });\n+                        $[2] = props.field.deprecationReason;\n+                        $[3] = t1;\n+                    } else {\n+                        t1 = $[3];\n+                    }\n+                    let t2;\n+                    if ($[4] !== props.field.type) {\n+                        t2 = /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n                             title: \"Type\",\n                             children: /* @__PURE__ */ jsxRuntime.jsx(TypeLink, {\n                                 type: props.field.type\n                             })\n-                        }), /* @__PURE__ */ jsxRuntime.jsx(Arguments, {\n+                        });\n+                        $[4] = props.field.type;\n+                        $[5] = t2;\n+                    } else {\n+                        t2 = $[5];\n+                    }\n+                    let t3;\n+                    let t4;\n+                    if ($[6] !== props.field) {\n+                        t3 = /* @__PURE__ */ jsxRuntime.jsx(Arguments, {\n                             field: props.field\n-                        }), /* @__PURE__ */ jsxRuntime.jsx(Directives, {\n+                        });\n+                        t4 = /* @__PURE__ */ jsxRuntime.jsx(Directives, {\n                             field: props.field\n-                        })]\n-                    });\n+                        });\n+                        $[6] = props.field;\n+                        $[7] = t3;\n+                        $[8] = t4;\n+                    } else {\n+                        t3 = $[7];\n+                        t4 = $[8];\n+                    }\n+                    let t5;\n+                    if ($[9] !== t0 || $[10] !== t1 || $[11] !== t2 || $[12] !== t3 || $[13] !== t4) {\n+                        t5 = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n+                            children: [t0, t1, t2, t3, t4]\n+                        });\n+                        $[9] = t0;\n+                        $[10] = t1;\n+                        $[11] = t2;\n+                        $[12] = t3;\n+                        $[13] = t4;\n+                        $[14] = t5;\n+                    } else {\n+                        t5 = $[14];\n+                    }\n+                    return t5;\n                 }\n \n-                function Arguments({\n-                    field\n-                }) {\n+                function Arguments(t0) {\n+                    const $ = reactCompilerRuntime.c(12);\n+                    const {\n+                        field\n+                    } = t0;\n                     const [showDeprecated, setShowDeprecated] = React.useState(false);\n-                    const handleShowDeprecated = React.useCallback(() => {\n-                        setShowDeprecated(true);\n-                    }, []);\n+                    let t1;\n+                    if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = () => {\n+                            setShowDeprecated(true);\n+                        };\n+                        $[0] = t1;\n+                    } else {\n+                        t1 = $[0];\n+                    }\n+                    const handleShowDeprecated = t1;\n                     if (!(\"args\" in field)) {\n                         return null;\n                     }\n-                    const args = [];\n-                    const deprecatedArgs = [];\n-                    for (const argument of field.args) {\n-                        if (argument.deprecationReason) {\n-                            deprecatedArgs.push(argument);\n-                        } else {\n-                            args.push(argument);\n+                    let args;\n+                    let deprecatedArgs;\n+                    let t2;\n+                    if ($[1] !== field.args) {\n+                        args = [];\n+                        deprecatedArgs = [];\n+                        for (const argument of field.args) {\n+                            if (argument.deprecationReason) {\n+                                deprecatedArgs.push(argument);\n+                            } else {\n+                                args.push(argument);\n+                            }\n                         }\n-                    }\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n-                        children: [args.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n+                        t2 = args.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n                             title: \"Arguments\",\n-                            children: args.map(arg => /* @__PURE__ */ jsxRuntime.jsx(Argument, {\n-                                arg\n-                            }, arg.name))\n-                        }) : null, deprecatedArgs.length > 0 ? showDeprecated || args.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n+                            children: args.map(_temp$5)\n+                        }) : null;\n+                        $[1] = field.args;\n+                        $[2] = args;\n+                        $[3] = deprecatedArgs;\n+                        $[4] = t2;\n+                    } else {\n+                        args = $[2];\n+                        deprecatedArgs = $[3];\n+                        t2 = $[4];\n+                    }\n+                    let t3;\n+                    if ($[5] !== args.length || $[6] !== deprecatedArgs || $[7] !== showDeprecated) {\n+                        t3 = deprecatedArgs.length > 0 ? showDeprecated || args.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n                             title: \"Deprecated Arguments\",\n-                            children: deprecatedArgs.map(arg => /* @__PURE__ */ jsxRuntime.jsx(Argument, {\n-                                arg\n-                            }, arg.name))\n+                            children: deprecatedArgs.map(_temp2$2)\n                         }) : /* @__PURE__ */ jsxRuntime.jsx(Button$1, {\n                             type: \"button\",\n                             onClick: handleShowDeprecated,\n                             children: \"Show Deprecated Arguments\"\n-                        }) : null]\n-                    });\n+                        }) : null;\n+                        $[5] = args.length;\n+                        $[6] = deprecatedArgs;\n+                        $[7] = showDeprecated;\n+                        $[8] = t3;\n+                    } else {\n+                        t3 = $[8];\n+                    }\n+                    let t4;\n+                    if ($[9] !== t2 || $[10] !== t3) {\n+                        t4 = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n+                            children: [t2, t3]\n+                        });\n+                        $[9] = t2;\n+                        $[10] = t3;\n+                        $[11] = t4;\n+                    } else {\n+                        t4 = $[11];\n+                    }\n+                    return t4;\n                 }\n \n-                function Directives({\n-                    field\n-                }) {\n-                    var _a;\n-                    const directives = ((_a = field.astNode) == null ? void 0 : _a.directives) || [];\n+                function _temp2$2(arg_0) {\n+                    return /* @__PURE__ */ jsxRuntime.jsx(Argument, {\n+                        arg: arg_0\n+                    }, arg_0.name);\n+                }\n+\n+                function _temp$5(arg) {\n+                    return /* @__PURE__ */ jsxRuntime.jsx(Argument, {\n+                        arg\n+                    }, arg.name);\n+                }\n+\n+                function Directives(t0) {\n+                    var _a, _b, _c;\n+                    const $ = reactCompilerRuntime.c(6);\n+                    const {\n+                        field\n+                    } = t0;\n+                    let t1;\n+                    if ($[0] !== ((_a = field.astNode) == null ? void 0 : _a.directives)) {\n+                        t1 = ((_b = field.astNode) == null ? void 0 : _b.directives) || [];\n+                        $[0] = (_c = field.astNode) == null ? void 0 : _c.directives;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    const directives = t1;\n                     if (!directives || directives.length === 0) {\n                         return null;\n                     }\n-                    return /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n-                        title: \"Directives\",\n-                        children: directives.map(directive => /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                            children: /* @__PURE__ */ jsxRuntime.jsx(Directive, {\n-                                directive\n-                            })\n-                        }, directive.name.value))\n-                    });\n+                    let t2;\n+                    if ($[2] !== directives) {\n+                        t2 = directives.map(_temp3$2);\n+                        $[2] = directives;\n+                        $[3] = t2;\n+                    } else {\n+                        t2 = $[3];\n+                    }\n+                    let t3;\n+                    if ($[4] !== t2) {\n+                        t3 = /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n+                            title: \"Directives\",\n+                            children: t2\n+                        });\n+                        $[4] = t2;\n+                        $[5] = t3;\n+                    } else {\n+                        t3 = $[5];\n+                    }\n+                    return t3;\n+                }\n+\n+                function _temp3$2(directive) {\n+                    return /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                        children: /* @__PURE__ */ jsxRuntime.jsx(Directive, {\n+                            directive\n+                        })\n+                    }, directive.name.value);\n                 }\n \n                 function SchemaDocumentation(props) {\n                     var _a, _b, _c, _d;\n-                    const queryType = props.schema.getQueryType();\n-                    const mutationType = (_b = (_a = props.schema).getMutationType) == null ? void 0 : _b.call(_a);\n-                    const subscriptionType = (_d = (_c = props.schema).getSubscriptionType) == null ? void 0 : _d.call(_c);\n-                    const typeMap = props.schema.getTypeMap();\n-                    const ignoreTypesInAllSchema = [queryType == null ? void 0 : queryType.name, mutationType == null ? void 0 : mutationType.name, subscriptionType == null ? void 0 : subscriptionType.name];\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n-                        children: [ /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n-                            type: \"description\",\n-                            children: props.schema.description || \"A GraphQL schema provides a root type for each kind of operation.\"\n-                        }), /* @__PURE__ */ jsxRuntime.jsxs(ExplorerSection, {\n-                            title: \"Root Types\",\n-                            children: [queryType ? /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                    const $ = reactCompilerRuntime.c(39);\n+                    let t0;\n+                    if ($[0] !== props.schema) {\n+                        t0 = props.schema.getQueryType();\n+                        $[0] = props.schema;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    const queryType = t0;\n+                    let t1;\n+                    if ($[2] !== props.schema) {\n+                        t1 = (_b = (_a = props.schema).getMutationType) == null ? void 0 : _b.call(_a);\n+                        $[2] = props.schema;\n+                        $[3] = t1;\n+                    } else {\n+                        t1 = $[3];\n+                    }\n+                    const mutationType = t1;\n+                    let t2;\n+                    if ($[4] !== props.schema) {\n+                        t2 = (_d = (_c = props.schema).getSubscriptionType) == null ? void 0 : _d.call(_c);\n+                        $[4] = props.schema;\n+                        $[5] = t2;\n+                    } else {\n+                        t2 = $[5];\n+                    }\n+                    const subscriptionType = t2;\n+                    let T0;\n+                    let t3;\n+                    let t4;\n+                    let t5;\n+                    let t6;\n+                    if ($[6] !== mutationType || $[7] !== props.schema || $[8] !== queryType || $[9] !== subscriptionType) {\n+                        const typeMap = props.schema.getTypeMap();\n+                        const t72 = queryType == null ? void 0 : queryType.name;\n+                        const t82 = mutationType == null ? void 0 : mutationType.name;\n+                        const t9 = subscriptionType == null ? void 0 : subscriptionType.name;\n+                        let t10;\n+                        if ($[15] !== t72 || $[16] !== t82 || $[17] !== t9) {\n+                            t10 = [t72, t82, t9];\n+                            $[15] = t72;\n+                            $[16] = t82;\n+                            $[17] = t9;\n+                            $[18] = t10;\n+                        } else {\n+                            t10 = $[18];\n+                        }\n+                        const ignoreTypesInAllSchema = t10;\n+                        const t11 = props.schema.description || \"A GraphQL schema provides a root type for each kind of operation.\";\n+                        if ($[19] !== t11) {\n+                            t5 = /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n+                                type: \"description\",\n+                                children: t11\n+                            });\n+                            $[19] = t11;\n+                            $[20] = t5;\n+                        } else {\n+                            t5 = $[20];\n+                        }\n+                        let t12;\n+                        if ($[21] !== queryType) {\n+                            t12 = queryType ? /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n                                 children: [ /* @__PURE__ */ jsxRuntime.jsx(\"span\", {\n                                     className: \"graphiql-doc-explorer-root-type\",\n                                     children: \"query\"\n                                 }), \": \", /* @__PURE__ */ jsxRuntime.jsx(TypeLink, {\n                                     type: queryType\n                                 })]\n-                            }) : null, mutationType && /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                            }) : null;\n+                            $[21] = queryType;\n+                            $[22] = t12;\n+                        } else {\n+                            t12 = $[22];\n+                        }\n+                        let t13;\n+                        if ($[23] !== mutationType) {\n+                            t13 = mutationType && /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n                                 children: [ /* @__PURE__ */ jsxRuntime.jsx(\"span\", {\n                                     className: \"graphiql-doc-explorer-root-type\",\n                                     children: \"mutation\"\n                                 }), \": \", /* @__PURE__ */ jsxRuntime.jsx(TypeLink, {\n                                     type: mutationType\n                                 })]\n-                            }), subscriptionType && /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                            });\n+                            $[23] = mutationType;\n+                            $[24] = t13;\n+                        } else {\n+                            t13 = $[24];\n+                        }\n+                        let t14;\n+                        if ($[25] !== subscriptionType) {\n+                            t14 = subscriptionType && /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n                                 children: [ /* @__PURE__ */ jsxRuntime.jsx(\"span\", {\n                                     className: \"graphiql-doc-explorer-root-type\",\n                                     children: \"subscription\"\n                                 }), \": \", /* @__PURE__ */ jsxRuntime.jsx(TypeLink, {\n                                     type: subscriptionType\n                                 })]\n-                            })]\n-                        }), /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n-                            title: \"All Schema Types\",\n-                            children: typeMap && /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                                children: Object.values(typeMap).map(type => {\n-                                    if (ignoreTypesInAllSchema.includes(type.name) || type.name.startsWith(\"__\")) {\n-                                        return null;\n-                                    }\n-                                    return /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                                        children: /* @__PURE__ */ jsxRuntime.jsx(TypeLink, {\n-                                            type\n-                                        })\n-                                    }, type.name);\n-                                })\n+                            });\n+                            $[25] = subscriptionType;\n+                            $[26] = t14;\n+                        } else {\n+                            t14 = $[26];\n+                        }\n+                        if ($[27] !== t12 || $[28] !== t13 || $[29] !== t14) {\n+                            t6 = /* @__PURE__ */ jsxRuntime.jsxs(ExplorerSection, {\n+                                title: \"Root Types\",\n+                                children: [t12, t13, t14]\n+                            });\n+                            $[27] = t12;\n+                            $[28] = t13;\n+                            $[29] = t14;\n+                            $[30] = t6;\n+                        } else {\n+                            t6 = $[30];\n+                        }\n+                        T0 = ExplorerSection;\n+                        t3 = \"All Schema Types\";\n+                        t4 = typeMap && /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                            children: Object.values(typeMap).map(type => {\n+                                if (ignoreTypesInAllSchema.includes(type.name) || type.name.startsWith(\"__\")) {\n+                                    return null;\n+                                }\n+                                return /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                                    children: /* @__PURE__ */ jsxRuntime.jsx(TypeLink, {\n+                                        type\n+                                    })\n+                                }, type.name);\n                             })\n-                        })]\n-                    });\n+                        });\n+                        $[6] = mutationType;\n+                        $[7] = props.schema;\n+                        $[8] = queryType;\n+                        $[9] = subscriptionType;\n+                        $[10] = T0;\n+                        $[11] = t3;\n+                        $[12] = t4;\n+                        $[13] = t5;\n+                        $[14] = t6;\n+                    } else {\n+                        T0 = $[10];\n+                        t3 = $[11];\n+                        t4 = $[12];\n+                        t5 = $[13];\n+                        t6 = $[14];\n+                    }\n+                    let t7;\n+                    if ($[31] !== T0 || $[32] !== t3 || $[33] !== t4) {\n+                        t7 = /* @__PURE__ */ jsxRuntime.jsx(T0, {\n+                            title: t3,\n+                            children: t4\n+                        });\n+                        $[31] = T0;\n+                        $[32] = t3;\n+                        $[33] = t4;\n+                        $[34] = t7;\n+                    } else {\n+                        t7 = $[34];\n+                    }\n+                    let t8;\n+                    if ($[35] !== t5 || $[36] !== t6 || $[37] !== t7) {\n+                        t8 = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n+                            children: [t5, t6, t7]\n+                        });\n+                        $[35] = t5;\n+                        $[36] = t6;\n+                        $[37] = t7;\n+                        $[38] = t8;\n+                    } else {\n+                        t8 = $[38];\n+                    }\n+                    return t8;\n                 }\n \n                 function debounce(duration, fn) {\n                     let timeout;\n                     return function(...args) {\n                         if (timeout) {\n                             window.clearTimeout(timeout);\n@@ -75794,14 +83111,16 @@\n                             timeout = null;\n                             fn(...args);\n                         }, duration);\n                     };\n                 }\n \n                 function Search() {\n+                    \"use no memo\";\n+\n                     const {\n                         explorerNavStack,\n                         push\n                     } = useExplorerContext({\n                         nonNull: true,\n                         caller: Search\n                     });\n@@ -75855,16 +83174,16 @@\n                                 var _a;\n                                 (_a = inputRef.current) == null ? void 0 : _a.focus();\n                             },\n                             children: [ /* @__PURE__ */ jsxRuntime.jsx(MagnifyingGlassIcon, {}), /* @__PURE__ */ jsxRuntime.jsx(react.Combobox.Input, {\n                                 autoComplete: \"off\",\n                                 onFocus: handleFocus,\n                                 onBlur: handleFocus,\n-                                onChange: event => setSearchValue(event.target.value),\n-                                placeholder: \"\u2318 K\",\n+                                onChange: event_0 => setSearchValue(event_0.target.value),\n+                                placeholder: `${isMacOs ? \"\u2318\" : \"Ctrl\"} K`,\n                                 ref: inputRef,\n                                 value: searchValue,\n                                 \"data-cy\": \"doc-explorer-input\"\n                             })]\n                         }), isFocused.current && /* @__PURE__ */ jsxRuntime.jsxs(react.Combobox.Options, {\n                             \"data-cy\": \"doc-explorer-list\",\n                             children: [results.within.length + results.types.length + results.fields.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(\"li\", {\n@@ -75876,426 +83195,968 @@\n                                 children: /* @__PURE__ */ jsxRuntime.jsx(Field$1, {\n                                     field: result.field,\n                                     argument: result.argument\n                                 })\n                             }, `within-${i}`)), results.within.length > 0 && results.types.length + results.fields.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n                                 className: \"graphiql-doc-explorer-search-divider\",\n                                 children: \"Other results\"\n-                            }) : null, results.types.map((result, i) => /* @__PURE__ */ jsxRuntime.jsx(react.Combobox.Option, {\n-                                value: result,\n+                            }) : null, results.types.map((result_0, i_0) => /* @__PURE__ */ jsxRuntime.jsx(react.Combobox.Option, {\n+                                value: result_0,\n                                 \"data-cy\": \"doc-explorer-option\",\n                                 children: /* @__PURE__ */ jsxRuntime.jsx(Type, {\n-                                    type: result.type\n+                                    type: result_0.type\n                                 })\n-                            }, `type-${i}`)), results.fields.map((result, i) => /* @__PURE__ */ jsxRuntime.jsxs(react.Combobox.Option, {\n-                                value: result,\n+                            }, `type-${i_0}`)), results.fields.map((result_1, i_1) => /* @__PURE__ */ jsxRuntime.jsxs(react.Combobox.Option, {\n+                                value: result_1,\n                                 \"data-cy\": \"doc-explorer-option\",\n                                 children: [ /* @__PURE__ */ jsxRuntime.jsx(Type, {\n-                                    type: result.type\n+                                    type: result_1.type\n                                 }), \".\", /* @__PURE__ */ jsxRuntime.jsx(Field$1, {\n-                                    field: result.field,\n-                                    argument: result.argument\n+                                    field: result_1.field,\n+                                    argument: result_1.argument\n                                 })]\n-                            }, `field-${i}`))]\n+                            }, `field-${i_1}`))]\n                         })]\n                     });\n                 }\n+                const _useSearchResults = useSearchResults;\n \n                 function useSearchResults(caller) {\n+                    const $ = reactCompilerRuntime.c(9);\n+                    const t0 = caller || _useSearchResults;\n+                    let t1;\n+                    if ($[0] !== t0) {\n+                        t1 = {\n+                            nonNull: true,\n+                            caller: t0\n+                        };\n+                        $[0] = t0;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n                     const {\n                         explorerNavStack\n-                    } = useExplorerContext({\n-                        nonNull: true,\n-                        caller: caller || useSearchResults\n-                    });\n+                    } = useExplorerContext(t1);\n+                    const t2 = caller || _useSearchResults;\n+                    let t3;\n+                    if ($[2] !== t2) {\n+                        t3 = {\n+                            nonNull: true,\n+                            caller: t2\n+                        };\n+                        $[2] = t2;\n+                        $[3] = t3;\n+                    } else {\n+                        t3 = $[3];\n+                    }\n                     const {\n                         schema\n-                    } = useSchemaContext({\n-                        nonNull: true,\n-                        caller: caller || useSearchResults\n-                    });\n-                    const navItem = explorerNavStack.at(-1);\n-                    return React.useCallback(searchValue => {\n-                        const matches = {\n-                            within: [],\n-                            types: [],\n-                            fields: []\n-                        };\n-                        if (!schema) {\n-                            return matches;\n-                        }\n-                        const withinType = navItem.def;\n-                        const typeMap = schema.getTypeMap();\n-                        let typeNames = Object.keys(typeMap);\n-                        if (withinType) {\n-                            typeNames = typeNames.filter(n => n !== withinType.name);\n-                            typeNames.unshift(withinType.name);\n-                        }\n-                        for (const typeName of typeNames) {\n-                            if (matches.within.length + matches.types.length + matches.fields.length >= 100) {\n-                                break;\n-                            }\n-                            const type = typeMap[typeName];\n-                            if (withinType !== type && isMatch(typeName, searchValue)) {\n-                                matches.types.push({\n-                                    type\n-                                });\n-                            }\n-                            if (!graphql.isObjectType(type) && !graphql.isInterfaceType(type) && !graphql.isInputObjectType(type)) {\n-                                continue;\n+                    } = useSchemaContext(t3);\n+                    let t4;\n+                    if ($[4] !== explorerNavStack) {\n+                        t4 = explorerNavStack.at(-1);\n+                        $[4] = explorerNavStack;\n+                        $[5] = t4;\n+                    } else {\n+                        t4 = $[5];\n+                    }\n+                    const navItem = t4;\n+                    let t5;\n+                    if ($[6] !== navItem || $[7] !== schema) {\n+                        t5 = searchValue => {\n+                            const matches = {\n+                                within: [],\n+                                types: [],\n+                                fields: []\n+                            };\n+                            if (!schema) {\n+                                return matches;\n+                            }\n+                            const withinType = navItem.def;\n+                            const typeMap = schema.getTypeMap();\n+                            let typeNames = Object.keys(typeMap);\n+                            if (withinType) {\n+                                typeNames = typeNames.filter(n => n !== withinType.name);\n+                                typeNames.unshift(withinType.name);\n                             }\n-                            const fields = type.getFields();\n-                            for (const fieldName in fields) {\n-                                const field = fields[fieldName];\n-                                let matchingArgs;\n-                                if (!isMatch(fieldName, searchValue)) {\n-                                    if (\"args\" in field) {\n-                                        matchingArgs = field.args.filter(arg => isMatch(arg.name, searchValue));\n-                                        if (matchingArgs.length === 0) {\n+                            for (const typeName of typeNames) {\n+                                if (matches.within.length + matches.types.length + matches.fields.length >= 100) {\n+                                    break;\n+                                }\n+                                const type = typeMap[typeName];\n+                                if (withinType !== type && isMatch(typeName, searchValue)) {\n+                                    matches.types.push({\n+                                        type\n+                                    });\n+                                }\n+                                if (!graphql.isObjectType(type) && !graphql.isInterfaceType(type) && !graphql.isInputObjectType(type)) {\n+                                    continue;\n+                                }\n+                                const fields = type.getFields();\n+                                for (const fieldName in fields) {\n+                                    const field = fields[fieldName];\n+                                    let matchingArgs;\n+                                    if (!isMatch(fieldName, searchValue)) {\n+                                        if (\"args\" in field) {\n+                                            matchingArgs = field.args.filter(arg => isMatch(arg.name, searchValue));\n+                                            if (matchingArgs.length === 0) {\n+                                                continue;\n+                                            }\n+                                        } else {\n                                             continue;\n                                         }\n-                                    } else {\n-                                        continue;\n                                     }\n+                                    matches[withinType === type ? \"within\" : \"fields\"].push(...(matchingArgs ? matchingArgs.map(argument => ({\n+                                        type,\n+                                        field,\n+                                        argument\n+                                    })) : [{\n+                                        type,\n+                                        field\n+                                    }]));\n                                 }\n-                                matches[withinType === type ? \"within\" : \"fields\"].push(...(matchingArgs ? matchingArgs.map(argument => ({\n-                                    type,\n-                                    field,\n-                                    argument\n-                                })) : [{\n-                                    type,\n-                                    field\n-                                }]));\n                             }\n-                        }\n-                        return matches;\n-                    }, [navItem.def, schema]);\n+                            return matches;\n+                        };\n+                        $[6] = navItem;\n+                        $[7] = schema;\n+                        $[8] = t5;\n+                    } else {\n+                        t5 = $[8];\n+                    }\n+                    return t5;\n                 }\n \n                 function isMatch(sourceText, searchValue) {\n                     try {\n                         const escaped = searchValue.replaceAll(/[^_0-9A-Za-z]/g, ch => \"\\\\\" + ch);\n                         return sourceText.search(new RegExp(escaped, \"i\")) !== -1;\n                     } catch {\n                         return sourceText.toLowerCase().includes(searchValue.toLowerCase());\n                     }\n                 }\n \n                 function Type(props) {\n-                    return /* @__PURE__ */ jsxRuntime.jsx(\"span\", {\n-                        className: \"graphiql-doc-explorer-search-type\",\n-                        children: props.type.name\n-                    });\n+                    const $ = reactCompilerRuntime.c(2);\n+                    let t0;\n+                    if ($[0] !== props.type.name) {\n+                        t0 = /* @__PURE__ */ jsxRuntime.jsx(\"span\", {\n+                            className: \"graphiql-doc-explorer-search-type\",\n+                            children: props.type.name\n+                        });\n+                        $[0] = props.type.name;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    return t0;\n                 }\n \n-                function Field$1({\n-                    field,\n-                    argument\n-                }) {\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n-                        children: [ /* @__PURE__ */ jsxRuntime.jsx(\"span\", {\n+                function Field$1(t0) {\n+                    const $ = reactCompilerRuntime.c(7);\n+                    const {\n+                        field,\n+                        argument\n+                    } = t0;\n+                    let t1;\n+                    if ($[0] !== field.name) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(\"span\", {\n                             className: \"graphiql-doc-explorer-search-field\",\n                             children: field.name\n-                        }), argument ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n+                        });\n+                        $[0] = field.name;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    let t2;\n+                    if ($[2] !== argument) {\n+                        t2 = argument ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n                             children: [\"(\", /* @__PURE__ */ jsxRuntime.jsx(\"span\", {\n                                 className: \"graphiql-doc-explorer-search-argument\",\n                                 children: argument.name\n-                            }), \":\", \" \", renderType(argument.type, namedType => /* @__PURE__ */ jsxRuntime.jsx(Type, {\n-                                type: namedType\n-                            })), \")\"]\n-                        }) : null]\n+                            }), \":\", \" \", renderType(argument.type, _temp$4), \")\"]\n+                        }) : null;\n+                        $[2] = argument;\n+                        $[3] = t2;\n+                    } else {\n+                        t2 = $[3];\n+                    }\n+                    let t3;\n+                    if ($[4] !== t1 || $[5] !== t2) {\n+                        t3 = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n+                            children: [t1, t2]\n+                        });\n+                        $[4] = t1;\n+                        $[5] = t2;\n+                        $[6] = t3;\n+                    } else {\n+                        t3 = $[6];\n+                    }\n+                    return t3;\n+                }\n+\n+                function _temp$4(namedType) {\n+                    return /* @__PURE__ */ jsxRuntime.jsx(Type, {\n+                        type: namedType\n                     });\n                 }\n \n                 function FieldLink(props) {\n+                    const $ = reactCompilerRuntime.c(7);\n+                    let t0;\n+                    if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t0 = {\n+                            nonNull: true\n+                        };\n+                        $[0] = t0;\n+                    } else {\n+                        t0 = $[0];\n+                    }\n                     const {\n                         push\n-                    } = useExplorerContext({\n-                        nonNull: true\n-                    });\n-                    return /* @__PURE__ */ jsxRuntime.jsx(\"a\", {\n-                        className: \"graphiql-doc-explorer-field-name\",\n-                        onClick: event => {\n+                    } = useExplorerContext(t0);\n+                    let t1;\n+                    if ($[1] !== props.field || $[2] !== push) {\n+                        t1 = event => {\n                             event.preventDefault();\n                             push({\n                                 name: props.field.name,\n                                 def: props.field\n                             });\n-                        },\n-                        href: \"#\",\n-                        children: props.field.name\n-                    });\n+                        };\n+                        $[1] = props.field;\n+                        $[2] = push;\n+                        $[3] = t1;\n+                    } else {\n+                        t1 = $[3];\n+                    }\n+                    let t2;\n+                    if ($[4] !== props.field.name || $[5] !== t1) {\n+                        t2 = /* @__PURE__ */ jsxRuntime.jsx(\"a\", {\n+                            className: \"graphiql-doc-explorer-field-name\",\n+                            onClick: t1,\n+                            href: \"#\",\n+                            children: props.field.name\n+                        });\n+                        $[4] = props.field.name;\n+                        $[5] = t1;\n+                        $[6] = t2;\n+                    } else {\n+                        t2 = $[6];\n+                    }\n+                    return t2;\n                 }\n \n                 function TypeDocumentation(props) {\n-                    return graphql.isNamedType(props.type) ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n-                        children: [props.type.description ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n-                            type: \"description\",\n-                            children: props.type.description\n-                        }) : null, /* @__PURE__ */ jsxRuntime.jsx(ImplementsInterfaces, {\n-                            type: props.type\n-                        }), /* @__PURE__ */ jsxRuntime.jsx(Fields, {\n-                            type: props.type\n-                        }), /* @__PURE__ */ jsxRuntime.jsx(EnumValues, {\n-                            type: props.type\n-                        }), /* @__PURE__ */ jsxRuntime.jsx(PossibleTypes, {\n-                            type: props.type\n-                        })]\n-                    }) : null;\n+                    const $ = reactCompilerRuntime.c(2);\n+                    let t0;\n+                    if ($[0] !== props.type) {\n+                        t0 = graphql.isNamedType(props.type) ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n+                            children: [props.type.description ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n+                                type: \"description\",\n+                                children: props.type.description\n+                            }) : null, /* @__PURE__ */ jsxRuntime.jsx(ImplementsInterfaces, {\n+                                type: props.type\n+                            }), /* @__PURE__ */ jsxRuntime.jsx(Fields, {\n+                                type: props.type\n+                            }), /* @__PURE__ */ jsxRuntime.jsx(EnumValues, {\n+                                type: props.type\n+                            }), /* @__PURE__ */ jsxRuntime.jsx(PossibleTypes, {\n+                                type: props.type\n+                            })]\n+                        }) : null;\n+                        $[0] = props.type;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    return t0;\n                 }\n \n-                function ImplementsInterfaces({\n-                    type\n-                }) {\n+                function ImplementsInterfaces(t0) {\n+                    const $ = reactCompilerRuntime.c(5);\n+                    const {\n+                        type\n+                    } = t0;\n                     if (!graphql.isObjectType(type)) {\n                         return null;\n                     }\n-                    const interfaces = type.getInterfaces();\n-                    return interfaces.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n-                        title: \"Implements\",\n-                        children: type.getInterfaces().map(implementedInterface => /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                            children: /* @__PURE__ */ jsxRuntime.jsx(TypeLink, {\n-                                type: implementedInterface\n-                            })\n-                        }, implementedInterface.name))\n-                    }) : null;\n+                    let t1;\n+                    if ($[0] !== type) {\n+                        t1 = type.getInterfaces();\n+                        $[0] = type;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    const interfaces = t1;\n+                    let t2;\n+                    if ($[2] !== interfaces.length || $[3] !== type) {\n+                        t2 = interfaces.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n+                            title: \"Implements\",\n+                            children: type.getInterfaces().map(_temp$3)\n+                        }) : null;\n+                        $[2] = interfaces.length;\n+                        $[3] = type;\n+                        $[4] = t2;\n+                    } else {\n+                        t2 = $[4];\n+                    }\n+                    return t2;\n                 }\n \n-                function Fields({\n-                    type\n-                }) {\n+                function _temp$3(implementedInterface) {\n+                    return /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                        children: /* @__PURE__ */ jsxRuntime.jsx(TypeLink, {\n+                            type: implementedInterface\n+                        })\n+                    }, implementedInterface.name);\n+                }\n+\n+                function Fields(t0) {\n+                    const $ = reactCompilerRuntime.c(12);\n+                    const {\n+                        type\n+                    } = t0;\n                     const [showDeprecated, setShowDeprecated] = React.useState(false);\n-                    const handleShowDeprecated = React.useCallback(() => {\n-                        setShowDeprecated(true);\n-                    }, []);\n+                    let t1;\n+                    if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = () => {\n+                            setShowDeprecated(true);\n+                        };\n+                        $[0] = t1;\n+                    } else {\n+                        t1 = $[0];\n+                    }\n+                    const handleShowDeprecated = t1;\n                     if (!graphql.isObjectType(type) && !graphql.isInterfaceType(type) && !graphql.isInputObjectType(type)) {\n                         return null;\n                     }\n-                    const fieldMap = type.getFields();\n-                    const fields = [];\n-                    const deprecatedFields = [];\n-                    for (const field of Object.keys(fieldMap).map(name => fieldMap[name])) {\n-                        if (field.deprecationReason) {\n-                            deprecatedFields.push(field);\n-                        } else {\n-                            fields.push(field);\n+                    let deprecatedFields;\n+                    let fields;\n+                    let t2;\n+                    if ($[1] !== type) {\n+                        const fieldMap = type.getFields();\n+                        fields = [];\n+                        deprecatedFields = [];\n+                        for (const field of Object.keys(fieldMap).map(name => fieldMap[name])) {\n+                            if (field.deprecationReason) {\n+                                deprecatedFields.push(field);\n+                            } else {\n+                                fields.push(field);\n+                            }\n                         }\n-                    }\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n-                        children: [fields.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n+                        t2 = fields.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n                             title: \"Fields\",\n-                            children: fields.map(field => /* @__PURE__ */ jsxRuntime.jsx(Field, {\n-                                field\n-                            }, field.name))\n-                        }) : null, deprecatedFields.length > 0 ? showDeprecated || fields.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n+                            children: fields.map(_temp2$1)\n+                        }) : null;\n+                        $[1] = type;\n+                        $[2] = deprecatedFields;\n+                        $[3] = fields;\n+                        $[4] = t2;\n+                    } else {\n+                        deprecatedFields = $[2];\n+                        fields = $[3];\n+                        t2 = $[4];\n+                    }\n+                    let t3;\n+                    if ($[5] !== deprecatedFields || $[6] !== fields.length || $[7] !== showDeprecated) {\n+                        t3 = deprecatedFields.length > 0 ? showDeprecated || fields.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n                             title: \"Deprecated Fields\",\n-                            children: deprecatedFields.map(field => /* @__PURE__ */ jsxRuntime.jsx(Field, {\n-                                field\n-                            }, field.name))\n+                            children: deprecatedFields.map(_temp3$1)\n                         }) : /* @__PURE__ */ jsxRuntime.jsx(Button$1, {\n                             type: \"button\",\n                             onClick: handleShowDeprecated,\n                             children: \"Show Deprecated Fields\"\n-                        }) : null]\n-                    });\n+                        }) : null;\n+                        $[5] = deprecatedFields;\n+                        $[6] = fields.length;\n+                        $[7] = showDeprecated;\n+                        $[8] = t3;\n+                    } else {\n+                        t3 = $[8];\n+                    }\n+                    let t4;\n+                    if ($[9] !== t2 || $[10] !== t3) {\n+                        t4 = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n+                            children: [t2, t3]\n+                        });\n+                        $[9] = t2;\n+                        $[10] = t3;\n+                        $[11] = t4;\n+                    } else {\n+                        t4 = $[11];\n+                    }\n+                    return t4;\n                 }\n \n-                function Field({\n-                    field\n-                }) {\n-                    const args = \"args\" in field ? field.args.filter(arg => !arg.deprecationReason) : [];\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n-                        className: \"graphiql-doc-explorer-item\",\n-                        children: [ /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n-                            children: [ /* @__PURE__ */ jsxRuntime.jsx(FieldLink, {\n-                                field\n-                            }), args.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n-                                children: [\"(\", /* @__PURE__ */ jsxRuntime.jsx(\"span\", {\n-                                    children: args.map(arg => args.length === 1 ? /* @__PURE__ */ jsxRuntime.jsx(Argument, {\n-                                        arg,\n+                function _temp3$1(field_1) {\n+                    return /* @__PURE__ */ jsxRuntime.jsx(Field, {\n+                        field: field_1\n+                    }, field_1.name);\n+                }\n+\n+                function _temp2$1(field_0) {\n+                    return /* @__PURE__ */ jsxRuntime.jsx(Field, {\n+                        field: field_0\n+                    }, field_0.name);\n+                }\n+\n+                function Field(t0) {\n+                    const $ = reactCompilerRuntime.c(22);\n+                    const {\n+                        field\n+                    } = t0;\n+                    let t1;\n+                    let t2;\n+                    let t3;\n+                    if ($[0] !== field) {\n+                        const args = \"args\" in field ? field.args.filter(_temp4$1) : [];\n+                        t3 = \"graphiql-doc-explorer-item\";\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(FieldLink, {\n+                            field\n+                        });\n+                        t2 = args.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n+                            children: [\"(\", /* @__PURE__ */ jsxRuntime.jsx(\"span\", {\n+                                children: args.map(arg_0 => args.length === 1 ? /* @__PURE__ */ jsxRuntime.jsx(Argument, {\n+                                    arg: arg_0,\n+                                    inline: true\n+                                }, arg_0.name) : /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                                    className: \"graphiql-doc-explorer-argument-multiple\",\n+                                    children: /* @__PURE__ */ jsxRuntime.jsx(Argument, {\n+                                        arg: arg_0,\n                                         inline: true\n-                                    }, arg.name) : /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                                        className: \"graphiql-doc-explorer-argument-multiple\",\n-                                        children: /* @__PURE__ */ jsxRuntime.jsx(Argument, {\n-                                            arg,\n-                                            inline: true\n-                                        })\n-                                    }, arg.name))\n-                                }), \")\"]\n-                            }) : null, \": \", /* @__PURE__ */ jsxRuntime.jsx(TypeLink, {\n-                                type: field.type\n-                            }), /* @__PURE__ */ jsxRuntime.jsx(DefaultValue, {\n-                                field\n-                            })]\n-                        }), field.description ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n+                                    })\n+                                }, arg_0.name))\n+                            }), \")\"]\n+                        }) : null;\n+                        $[0] = field;\n+                        $[1] = t1;\n+                        $[2] = t2;\n+                        $[3] = t3;\n+                    } else {\n+                        t1 = $[1];\n+                        t2 = $[2];\n+                        t3 = $[3];\n+                    }\n+                    let t4;\n+                    if ($[4] !== field.type) {\n+                        t4 = /* @__PURE__ */ jsxRuntime.jsx(TypeLink, {\n+                            type: field.type\n+                        });\n+                        $[4] = field.type;\n+                        $[5] = t4;\n+                    } else {\n+                        t4 = $[5];\n+                    }\n+                    let t5;\n+                    if ($[6] !== field) {\n+                        t5 = /* @__PURE__ */ jsxRuntime.jsx(DefaultValue, {\n+                            field\n+                        });\n+                        $[6] = field;\n+                        $[7] = t5;\n+                    } else {\n+                        t5 = $[7];\n+                    }\n+                    let t6;\n+                    if ($[8] !== t1 || $[9] !== t2 || $[10] !== t4 || $[11] !== t5) {\n+                        t6 = /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                            children: [t1, t2, \": \", t4, t5]\n+                        });\n+                        $[8] = t1;\n+                        $[9] = t2;\n+                        $[10] = t4;\n+                        $[11] = t5;\n+                        $[12] = t6;\n+                    } else {\n+                        t6 = $[12];\n+                    }\n+                    let t7;\n+                    if ($[13] !== field.description) {\n+                        t7 = field.description ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n                             type: \"description\",\n                             onlyShowFirstChild: true,\n                             children: field.description\n-                        }) : null, /* @__PURE__ */ jsxRuntime.jsx(DeprecationReason, {\n+                        }) : null;\n+                        $[13] = field.description;\n+                        $[14] = t7;\n+                    } else {\n+                        t7 = $[14];\n+                    }\n+                    let t8;\n+                    if ($[15] !== field.deprecationReason) {\n+                        t8 = /* @__PURE__ */ jsxRuntime.jsx(DeprecationReason, {\n                             children: field.deprecationReason\n-                        })]\n-                    });\n+                        });\n+                        $[15] = field.deprecationReason;\n+                        $[16] = t8;\n+                    } else {\n+                        t8 = $[16];\n+                    }\n+                    let t9;\n+                    if ($[17] !== t3 || $[18] !== t6 || $[19] !== t7 || $[20] !== t8) {\n+                        t9 = /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                            className: t3,\n+                            children: [t6, t7, t8]\n+                        });\n+                        $[17] = t3;\n+                        $[18] = t6;\n+                        $[19] = t7;\n+                        $[20] = t8;\n+                        $[21] = t9;\n+                    } else {\n+                        t9 = $[21];\n+                    }\n+                    return t9;\n                 }\n \n-                function EnumValues({\n-                    type\n-                }) {\n+                function _temp4$1(arg) {\n+                    return !arg.deprecationReason;\n+                }\n+\n+                function EnumValues(t0) {\n+                    const $ = reactCompilerRuntime.c(12);\n+                    const {\n+                        type\n+                    } = t0;\n                     const [showDeprecated, setShowDeprecated] = React.useState(false);\n-                    const handleShowDeprecated = React.useCallback(() => {\n-                        setShowDeprecated(true);\n-                    }, []);\n+                    let t1;\n+                    if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = () => {\n+                            setShowDeprecated(true);\n+                        };\n+                        $[0] = t1;\n+                    } else {\n+                        t1 = $[0];\n+                    }\n+                    const handleShowDeprecated = t1;\n                     if (!graphql.isEnumType(type)) {\n                         return null;\n                     }\n-                    const values = [];\n-                    const deprecatedValues = [];\n-                    for (const value of type.getValues()) {\n-                        if (value.deprecationReason) {\n-                            deprecatedValues.push(value);\n-                        } else {\n-                            values.push(value);\n+                    let deprecatedValues;\n+                    let t2;\n+                    let values;\n+                    if ($[1] !== type) {\n+                        values = [];\n+                        deprecatedValues = [];\n+                        for (const value of type.getValues()) {\n+                            if (value.deprecationReason) {\n+                                deprecatedValues.push(value);\n+                            } else {\n+                                values.push(value);\n+                            }\n                         }\n-                    }\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n-                        children: [values.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n+                        t2 = values.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n                             title: \"Enum Values\",\n-                            children: values.map(value => /* @__PURE__ */ jsxRuntime.jsx(EnumValue, {\n-                                value\n-                            }, value.name))\n-                        }) : null, deprecatedValues.length > 0 ? showDeprecated || values.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n+                            children: values.map(_temp5)\n+                        }) : null;\n+                        $[1] = type;\n+                        $[2] = deprecatedValues;\n+                        $[3] = t2;\n+                        $[4] = values;\n+                    } else {\n+                        deprecatedValues = $[2];\n+                        t2 = $[3];\n+                        values = $[4];\n+                    }\n+                    let t3;\n+                    if ($[5] !== deprecatedValues || $[6] !== showDeprecated || $[7] !== values.length) {\n+                        t3 = deprecatedValues.length > 0 ? showDeprecated || values.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n                             title: \"Deprecated Enum Values\",\n-                            children: deprecatedValues.map(value => /* @__PURE__ */ jsxRuntime.jsx(EnumValue, {\n-                                value\n-                            }, value.name))\n+                            children: deprecatedValues.map(_temp6)\n                         }) : /* @__PURE__ */ jsxRuntime.jsx(Button$1, {\n                             type: \"button\",\n                             onClick: handleShowDeprecated,\n                             children: \"Show Deprecated Values\"\n-                        }) : null]\n-                    });\n+                        }) : null;\n+                        $[5] = deprecatedValues;\n+                        $[6] = showDeprecated;\n+                        $[7] = values.length;\n+                        $[8] = t3;\n+                    } else {\n+                        t3 = $[8];\n+                    }\n+                    let t4;\n+                    if ($[9] !== t2 || $[10] !== t3) {\n+                        t4 = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {\n+                            children: [t2, t3]\n+                        });\n+                        $[9] = t2;\n+                        $[10] = t3;\n+                        $[11] = t4;\n+                    } else {\n+                        t4 = $[11];\n+                    }\n+                    return t4;\n                 }\n \n-                function EnumValue({\n-                    value\n-                }) {\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n-                        className: \"graphiql-doc-explorer-item\",\n-                        children: [ /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                function _temp6(value_1) {\n+                    return /* @__PURE__ */ jsxRuntime.jsx(EnumValue, {\n+                        value: value_1\n+                    }, value_1.name);\n+                }\n+\n+                function _temp5(value_0) {\n+                    return /* @__PURE__ */ jsxRuntime.jsx(EnumValue, {\n+                        value: value_0\n+                    }, value_0.name);\n+                }\n+\n+                function EnumValue(t0) {\n+                    const $ = reactCompilerRuntime.c(10);\n+                    const {\n+                        value\n+                    } = t0;\n+                    let t1;\n+                    if ($[0] !== value.name) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n                             className: \"graphiql-doc-explorer-enum-value\",\n                             children: value.name\n-                        }), value.description ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n+                        });\n+                        $[0] = value.name;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    let t2;\n+                    if ($[2] !== value.description) {\n+                        t2 = value.description ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n                             type: \"description\",\n                             children: value.description\n-                        }) : null, value.deprecationReason ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n+                        }) : null;\n+                        $[2] = value.description;\n+                        $[3] = t2;\n+                    } else {\n+                        t2 = $[3];\n+                    }\n+                    let t3;\n+                    if ($[4] !== value.deprecationReason) {\n+                        t3 = value.deprecationReason ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, {\n                             type: \"deprecation\",\n                             children: value.deprecationReason\n-                        }) : null]\n-                    });\n+                        }) : null;\n+                        $[4] = value.deprecationReason;\n+                        $[5] = t3;\n+                    } else {\n+                        t3 = $[5];\n+                    }\n+                    let t4;\n+                    if ($[6] !== t1 || $[7] !== t2 || $[8] !== t3) {\n+                        t4 = /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                            className: \"graphiql-doc-explorer-item\",\n+                            children: [t1, t2, t3]\n+                        });\n+                        $[6] = t1;\n+                        $[7] = t2;\n+                        $[8] = t3;\n+                        $[9] = t4;\n+                    } else {\n+                        t4 = $[9];\n+                    }\n+                    return t4;\n                 }\n \n-                function PossibleTypes({\n-                    type\n-                }) {\n+                function PossibleTypes(t0) {\n+                    const $ = reactCompilerRuntime.c(7);\n+                    const {\n+                        type\n+                    } = t0;\n+                    let t1;\n+                    if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = {\n+                            nonNull: true\n+                        };\n+                        $[0] = t1;\n+                    } else {\n+                        t1 = $[0];\n+                    }\n                     const {\n                         schema\n-                    } = useSchemaContext({\n-                        nonNull: true\n-                    });\n+                    } = useSchemaContext(t1);\n                     if (!schema || !graphql.isAbstractType(type)) {\n                         return null;\n                     }\n-                    return /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n-                        title: graphql.isInterfaceType(type) ? \"Implementations\" : \"Possible Types\",\n-                        children: schema.getPossibleTypes(type).map(possibleType => /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                            children: /* @__PURE__ */ jsxRuntime.jsx(TypeLink, {\n-                                type: possibleType\n-                            })\n-                        }, possibleType.name))\n-                    });\n+                    const t2 = graphql.isInterfaceType(type) ? \"Implementations\" : \"Possible Types\";\n+                    let t3;\n+                    if ($[1] !== schema || $[2] !== type) {\n+                        t3 = schema.getPossibleTypes(type).map(_temp7);\n+                        $[1] = schema;\n+                        $[2] = type;\n+                        $[3] = t3;\n+                    } else {\n+                        t3 = $[3];\n+                    }\n+                    let t4;\n+                    if ($[4] !== t2 || $[5] !== t3) {\n+                        t4 = /* @__PURE__ */ jsxRuntime.jsx(ExplorerSection, {\n+                            title: t2,\n+                            children: t3\n+                        });\n+                        $[4] = t2;\n+                        $[5] = t3;\n+                        $[6] = t4;\n+                    } else {\n+                        t4 = $[6];\n+                    }\n+                    return t4;\n+                }\n+\n+                function _temp7(possibleType) {\n+                    return /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                        children: /* @__PURE__ */ jsxRuntime.jsx(TypeLink, {\n+                            type: possibleType\n+                        })\n+                    }, possibleType.name);\n                 }\n \n                 function DocExplorer() {\n+                    const $ = reactCompilerRuntime.c(40);\n+                    let t0;\n+                    if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t0 = {\n+                            nonNull: true,\n+                            caller: DocExplorer\n+                        };\n+                        $[0] = t0;\n+                    } else {\n+                        t0 = $[0];\n+                    }\n                     const {\n                         fetchError,\n                         isFetching,\n                         schema,\n                         validationErrors\n-                    } = useSchemaContext({\n-                        nonNull: true,\n-                        caller: DocExplorer\n-                    });\n+                    } = useSchemaContext(t0);\n+                    let t1;\n+                    if ($[1] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = {\n+                            nonNull: true,\n+                            caller: DocExplorer\n+                        };\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n                     const {\n                         explorerNavStack,\n                         pop\n-                    } = useExplorerContext({\n-                        nonNull: true,\n-                        caller: DocExplorer\n-                    });\n-                    const navItem = explorerNavStack.at(-1);\n-                    let content = null;\n-                    if (fetchError) {\n-                        content = /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                            className: \"graphiql-doc-explorer-error\",\n-                            children: \"Error fetching schema\"\n-                        });\n-                    } else if (validationErrors.length > 0) {\n-                        content = /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n-                            className: \"graphiql-doc-explorer-error\",\n-                            children: [\"Schema is invalid: \", validationErrors[0].message]\n-                        });\n-                    } else if (isFetching) {\n-                        content = /* @__PURE__ */ jsxRuntime.jsx(Spinner, {});\n-                    } else if (!schema) {\n-                        content = /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                            className: \"graphiql-doc-explorer-error\",\n-                            children: \"No GraphQL schema available\"\n-                        });\n-                    } else if (explorerNavStack.length === 1) {\n-                        content = /* @__PURE__ */ jsxRuntime.jsx(SchemaDocumentation, {\n-                            schema\n-                        });\n-                    } else if (graphql.isType(navItem.def)) {\n-                        content = /* @__PURE__ */ jsxRuntime.jsx(TypeDocumentation, {\n-                            type: navItem.def\n-                        });\n-                    } else if (navItem.def) {\n-                        content = /* @__PURE__ */ jsxRuntime.jsx(FieldDocumentation, {\n-                            field: navItem.def\n-                        });\n+                    } = useExplorerContext(t1);\n+                    let content;\n+                    let navItem;\n+                    if ($[2] !== explorerNavStack || $[3] !== fetchError || $[4] !== isFetching || $[5] !== schema || $[6] !== validationErrors) {\n+                        navItem = explorerNavStack.at(-1);\n+                        content = null;\n+                        if (fetchError) {\n+                            let t22;\n+                            if ($[9] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                                t22 = /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                                    className: \"graphiql-doc-explorer-error\",\n+                                    children: \"Error fetching schema\"\n+                                });\n+                                $[9] = t22;\n+                            } else {\n+                                t22 = $[9];\n+                            }\n+                            content = t22;\n+                        } else {\n+                            if (validationErrors.length > 0) {\n+                                const t22 = validationErrors[0];\n+                                let t32;\n+                                if ($[10] !== t22.message) {\n+                                    t32 = /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                                        className: \"graphiql-doc-explorer-error\",\n+                                        children: [\"Schema is invalid: \", t22.message]\n+                                    });\n+                                    $[10] = t22.message;\n+                                    $[11] = t32;\n+                                } else {\n+                                    t32 = $[11];\n+                                }\n+                                content = t32;\n+                            } else {\n+                                if (isFetching) {\n+                                    let t22;\n+                                    if ($[12] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                                        t22 = /* @__PURE__ */ jsxRuntime.jsx(Spinner, {});\n+                                        $[12] = t22;\n+                                    } else {\n+                                        t22 = $[12];\n+                                    }\n+                                    content = t22;\n+                                } else {\n+                                    if (!schema) {\n+                                        let t22;\n+                                        if ($[13] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                                            t22 = /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                                                className: \"graphiql-doc-explorer-error\",\n+                                                children: \"No GraphQL schema available\"\n+                                            });\n+                                            $[13] = t22;\n+                                        } else {\n+                                            t22 = $[13];\n+                                        }\n+                                        content = t22;\n+                                    } else {\n+                                        if (explorerNavStack.length === 1) {\n+                                            let t22;\n+                                            if ($[14] !== schema) {\n+                                                t22 = /* @__PURE__ */ jsxRuntime.jsx(SchemaDocumentation, {\n+                                                    schema\n+                                                });\n+                                                $[14] = schema;\n+                                                $[15] = t22;\n+                                            } else {\n+                                                t22 = $[15];\n+                                            }\n+                                            content = t22;\n+                                        } else {\n+                                            if (graphql.isType(navItem.def)) {\n+                                                let t22;\n+                                                if ($[16] !== navItem.def) {\n+                                                    t22 = /* @__PURE__ */ jsxRuntime.jsx(TypeDocumentation, {\n+                                                        type: navItem.def\n+                                                    });\n+                                                    $[16] = navItem.def;\n+                                                    $[17] = t22;\n+                                                } else {\n+                                                    t22 = $[17];\n+                                                }\n+                                                content = t22;\n+                                            } else {\n+                                                if (navItem.def) {\n+                                                    let t22;\n+                                                    if ($[18] !== navItem.def) {\n+                                                        t22 = /* @__PURE__ */ jsxRuntime.jsx(FieldDocumentation, {\n+                                                            field: navItem.def\n+                                                        });\n+                                                        $[18] = navItem.def;\n+                                                        $[19] = t22;\n+                                                    } else {\n+                                                        t22 = $[19];\n+                                                    }\n+                                                    content = t22;\n+                                                }\n+                                            }\n+                                        }\n+                                    }\n+                                }\n+                            }\n+                        }\n+                        $[2] = explorerNavStack;\n+                        $[3] = fetchError;\n+                        $[4] = isFetching;\n+                        $[5] = schema;\n+                        $[6] = validationErrors;\n+                        $[7] = content;\n+                        $[8] = navItem;\n+                    } else {\n+                        content = $[7];\n+                        navItem = $[8];\n                     }\n                     let prevName;\n                     if (explorerNavStack.length > 1) {\n-                        prevName = explorerNavStack.at(-2).name;\n+                        let t22;\n+                        if ($[20] !== explorerNavStack) {\n+                            t22 = explorerNavStack.at(-2);\n+                            $[20] = explorerNavStack;\n+                            $[21] = t22;\n+                        } else {\n+                            t22 = $[21];\n+                        }\n+                        prevName = t22.name;\n                     }\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(\"section\", {\n-                        className: \"graphiql-doc-explorer\",\n-                        \"aria-label\": \"Documentation Explorer\",\n-                        children: [ /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                    let t2;\n+                    if ($[22] !== pop || $[23] !== prevName) {\n+                        t2 = prevName && /* @__PURE__ */ jsxRuntime.jsxs(\"a\", {\n+                            href: \"#\",\n+                            className: \"graphiql-doc-explorer-back\",\n+                            onClick: event => {\n+                                event.preventDefault();\n+                                pop();\n+                            },\n+                            \"aria-label\": `Go back to ${prevName}`,\n+                            children: [ /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon, {}), prevName]\n+                        });\n+                        $[22] = pop;\n+                        $[23] = prevName;\n+                        $[24] = t2;\n+                    } else {\n+                        t2 = $[24];\n+                    }\n+                    let t3;\n+                    if ($[25] !== navItem.name) {\n+                        t3 = /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                            className: \"graphiql-doc-explorer-title\",\n+                            children: navItem.name\n+                        });\n+                        $[25] = navItem.name;\n+                        $[26] = t3;\n+                    } else {\n+                        t3 = $[26];\n+                    }\n+                    let t4;\n+                    if ($[27] !== t2 || $[28] !== t3) {\n+                        t4 = /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                            className: \"graphiql-doc-explorer-header-content\",\n+                            children: [t2, t3]\n+                        });\n+                        $[27] = t2;\n+                        $[28] = t3;\n+                        $[29] = t4;\n+                    } else {\n+                        t4 = $[29];\n+                    }\n+                    let t5;\n+                    if ($[30] !== navItem.name) {\n+                        t5 = /* @__PURE__ */ jsxRuntime.jsx(Search, {}, navItem.name);\n+                        $[30] = navItem.name;\n+                        $[31] = t5;\n+                    } else {\n+                        t5 = $[31];\n+                    }\n+                    let t6;\n+                    if ($[32] !== t4 || $[33] !== t5) {\n+                        t6 = /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n                             className: \"graphiql-doc-explorer-header\",\n-                            children: [ /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n-                                className: \"graphiql-doc-explorer-header-content\",\n-                                children: [prevName && /* @__PURE__ */ jsxRuntime.jsxs(\"a\", {\n-                                    href: \"#\",\n-                                    className: \"graphiql-doc-explorer-back\",\n-                                    onClick: event => {\n-                                        event.preventDefault();\n-                                        pop();\n-                                    },\n-                                    \"aria-label\": `Go back to ${prevName}`,\n-                                    children: [ /* @__PURE__ */ jsxRuntime.jsx(ChevronLeftIcon, {}), prevName]\n-                                }), /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                                    className: \"graphiql-doc-explorer-title\",\n-                                    children: navItem.name\n-                                })]\n-                            }), /* @__PURE__ */ jsxRuntime.jsx(Search, {}, navItem.name)]\n-                        }), /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                            children: [t4, t5]\n+                        });\n+                        $[32] = t4;\n+                        $[33] = t5;\n+                        $[34] = t6;\n+                    } else {\n+                        t6 = $[34];\n+                    }\n+                    let t7;\n+                    if ($[35] !== content) {\n+                        t7 = /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n                             className: \"graphiql-doc-explorer-content\",\n                             children: content\n-                        })]\n-                    });\n+                        });\n+                        $[35] = content;\n+                        $[36] = t7;\n+                    } else {\n+                        t7 = $[36];\n+                    }\n+                    let t8;\n+                    if ($[37] !== t6 || $[38] !== t7) {\n+                        t8 = /* @__PURE__ */ jsxRuntime.jsxs(\"section\", {\n+                            className: \"graphiql-doc-explorer\",\n+                            \"aria-label\": \"Documentation Explorer\",\n+                            children: [t6, t7]\n+                        });\n+                        $[37] = t6;\n+                        $[38] = t7;\n+                        $[39] = t8;\n+                    } else {\n+                        t8 = $[39];\n+                    }\n+                    return t8;\n                 }\n                 const DOC_EXPLORER_PLUGIN = {\n                     title: \"Documentation Explorer\",\n                     icon: function Icon() {\n                         const pluginContext = usePluginContext();\n                         return (pluginContext == null ? void 0 : pluginContext.visiblePlugin) === DOC_EXPLORER_PLUGIN ? /* @__PURE__ */ jsxRuntime.jsx(DocsFilledIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(DocsIcon, {});\n                     },\n@@ -76305,85 +84166,160 @@\n                     title: \"History\",\n                     icon: HistoryIcon,\n                     content: History\n                 };\n                 const PluginContext = createNullableContext(\"PluginContext\");\n \n                 function PluginContextProvider(props) {\n+                    const $ = reactCompilerRuntime.c(27);\n                     const storage = useStorageContext();\n                     const explorerContext = useExplorerContext();\n                     const historyContext = useHistoryContext();\n                     const hasExplorerContext = Boolean(explorerContext);\n                     const hasHistoryContext = Boolean(historyContext);\n-                    const plugins = React.useMemo(() => {\n-                        const pluginList = [];\n+                    let t0;\n+                    let pluginList;\n+                    if ($[0] !== hasExplorerContext || $[1] !== hasHistoryContext || $[2] !== props.plugins) {\n+                        pluginList = [];\n                         const pluginTitles = {};\n                         if (hasExplorerContext) {\n                             pluginList.push(DOC_EXPLORER_PLUGIN);\n                             pluginTitles[DOC_EXPLORER_PLUGIN.title] = true;\n                         }\n                         if (hasHistoryContext) {\n                             pluginList.push(HISTORY_PLUGIN);\n                             pluginTitles[HISTORY_PLUGIN.title] = true;\n                         }\n-                        for (const plugin of props.plugins || []) {\n+                        let t12;\n+                        if ($[4] !== props.plugins) {\n+                            t12 = props.plugins || [];\n+                            $[4] = props.plugins;\n+                            $[5] = t12;\n+                        } else {\n+                            t12 = $[5];\n+                        }\n+                        for (const plugin of t12) {\n                             if (typeof plugin.title !== \"string\" || !plugin.title) {\n                                 throw new Error(\"All GraphiQL plugins must have a unique title\");\n                             }\n                             if (pluginTitles[plugin.title]) {\n                                 throw new Error(`All GraphiQL plugins must have a unique title, found two plugins with the title '${plugin.title}'`);\n                             } else {\n                                 pluginList.push(plugin);\n                                 pluginTitles[plugin.title] = true;\n                             }\n                         }\n-                        return pluginList;\n-                    }, [hasExplorerContext, hasHistoryContext, props.plugins]);\n-                    const [visiblePlugin, internalSetVisiblePlugin] = React.useState(() => {\n-                        const storedValue = storage == null ? void 0 : storage.get(STORAGE_KEY$4);\n-                        const pluginForStoredValue = plugins.find(plugin => plugin.title === storedValue);\n-                        if (pluginForStoredValue) {\n-                            return pluginForStoredValue;\n-                        }\n-                        if (storedValue) {\n-                            storage == null ? void 0 : storage.set(STORAGE_KEY$4, \"\");\n-                        }\n-                        if (!props.visiblePlugin) {\n-                            return null;\n-                        }\n-                        return plugins.find(plugin => (typeof props.visiblePlugin === \"string\" ? plugin.title : plugin) === props.visiblePlugin) || null;\n-                    });\n+                        $[0] = hasExplorerContext;\n+                        $[1] = hasHistoryContext;\n+                        $[2] = props.plugins;\n+                        $[3] = pluginList;\n+                    } else {\n+                        pluginList = $[3];\n+                    }\n+                    t0 = pluginList;\n+                    const plugins = t0;\n+                    let t1;\n+                    if ($[6] !== plugins || $[7] !== props.visiblePlugin || $[8] !== storage) {\n+                        t1 = () => {\n+                            const storedValue = storage == null ? void 0 : storage.get(STORAGE_KEY$4);\n+                            const pluginForStoredValue = plugins.find(plugin_0 => plugin_0.title === storedValue);\n+                            if (pluginForStoredValue) {\n+                                return pluginForStoredValue;\n+                            }\n+                            if (storedValue) {\n+                                storage == null ? void 0 : storage.set(STORAGE_KEY$4, \"\");\n+                            }\n+                            if (!props.visiblePlugin) {\n+                                return null;\n+                            }\n+                            return plugins.find(plugin_1 => (typeof props.visiblePlugin === \"string\" ? plugin_1.title : plugin_1) === props.visiblePlugin) || null;\n+                        };\n+                        $[6] = plugins;\n+                        $[7] = props.visiblePlugin;\n+                        $[8] = storage;\n+                        $[9] = t1;\n+                    } else {\n+                        t1 = $[9];\n+                    }\n+                    const [visiblePlugin, internalSetVisiblePlugin] = React.useState(t1);\n                     const {\n                         onTogglePluginVisibility,\n                         children\n                     } = props;\n-                    const setVisiblePlugin = React.useCallback(plugin => {\n-                        const newVisiblePlugin = plugin ? plugins.find(p => (typeof plugin === \"string\" ? p.title : p) === plugin) || null : null;\n-                        internalSetVisiblePlugin(current => {\n-                            if (newVisiblePlugin === current) {\n-                                return current;\n+                    let t2;\n+                    if ($[10] !== onTogglePluginVisibility || $[11] !== plugins) {\n+                        t2 = plugin_2 => {\n+                            const newVisiblePlugin = plugin_2 ? plugins.find(p => (typeof plugin_2 === \"string\" ? p.title : p) === plugin_2) || null : null;\n+                            internalSetVisiblePlugin(current => {\n+                                if (newVisiblePlugin === current) {\n+                                    return current;\n+                                }\n+                                onTogglePluginVisibility == null ? void 0 : onTogglePluginVisibility(newVisiblePlugin);\n+                                return newVisiblePlugin;\n+                            });\n+                        };\n+                        $[10] = onTogglePluginVisibility;\n+                        $[11] = plugins;\n+                        $[12] = t2;\n+                    } else {\n+                        t2 = $[12];\n+                    }\n+                    const setVisiblePlugin = t2;\n+                    let t3;\n+                    if ($[13] !== props.visiblePlugin || $[14] !== setVisiblePlugin) {\n+                        t3 = () => {\n+                            if (props.visiblePlugin) {\n+                                setVisiblePlugin(props.visiblePlugin);\n                             }\n-                            onTogglePluginVisibility == null ? void 0 : onTogglePluginVisibility(newVisiblePlugin);\n-                            return newVisiblePlugin;\n+                        };\n+                        $[13] = props.visiblePlugin;\n+                        $[14] = setVisiblePlugin;\n+                        $[15] = t3;\n+                    } else {\n+                        t3 = $[15];\n+                    }\n+                    let t4;\n+                    if ($[16] !== plugins || $[17] !== props.visiblePlugin || $[18] !== setVisiblePlugin) {\n+                        t4 = [plugins, props.visiblePlugin, setVisiblePlugin];\n+                        $[16] = plugins;\n+                        $[17] = props.visiblePlugin;\n+                        $[18] = setVisiblePlugin;\n+                        $[19] = t4;\n+                    } else {\n+                        t4 = $[19];\n+                    }\n+                    React.useEffect(t3, t4);\n+                    let t5;\n+                    if ($[20] !== plugins || $[21] !== setVisiblePlugin || $[22] !== visiblePlugin) {\n+                        t5 = {\n+                            plugins,\n+                            setVisiblePlugin,\n+                            visiblePlugin\n+                        };\n+                        $[20] = plugins;\n+                        $[21] = setVisiblePlugin;\n+                        $[22] = visiblePlugin;\n+                        $[23] = t5;\n+                    } else {\n+                        t5 = $[23];\n+                    }\n+                    const value = t5;\n+                    let t6;\n+                    if ($[24] !== children || $[25] !== value) {\n+                        t6 = /* @__PURE__ */ jsxRuntime.jsx(PluginContext.Provider, {\n+                            value,\n+                            children\n                         });\n-                    }, [onTogglePluginVisibility, plugins]);\n-                    React.useEffect(() => {\n-                        if (props.visiblePlugin) {\n-                            setVisiblePlugin(props.visiblePlugin);\n-                        }\n-                    }, [plugins, props.visiblePlugin, setVisiblePlugin]);\n-                    const value = React.useMemo(() => ({\n-                        plugins,\n-                        setVisiblePlugin,\n-                        visiblePlugin\n-                    }), [plugins, setVisiblePlugin, visiblePlugin]);\n-                    return /* @__PURE__ */ jsxRuntime.jsx(PluginContext.Provider, {\n-                        value,\n-                        children\n-                    });\n+                        $[24] = children;\n+                        $[25] = value;\n+                        $[26] = t6;\n+                    } else {\n+                        t6 = $[26];\n+                    }\n+                    return t6;\n                 }\n                 const usePluginContext = createContextHook(PluginContext);\n                 const STORAGE_KEY$4 = \"visiblePlugin\";\n \n                 function onHasCompletion(_cm, data, schema, explorer, plugin, callback) {\n                     void importCodeMirror([], {\n                         useCommonAddons: false\n@@ -76530,261 +84466,493 @@\n                             });\n                             callback == null ? void 0 : callback(type);\n                         }\n                     }\n                 }\n \n                 function useSynchronizeValue(editor, value) {\n-                    React.useEffect(() => {\n-                        if (editor && typeof value === \"string\" && value !== editor.getValue()) {\n-                            editor.setValue(value);\n-                        }\n-                    }, [editor, value]);\n+                    const $ = reactCompilerRuntime.c(4);\n+                    let t0;\n+                    let t1;\n+                    if ($[0] !== editor || $[1] !== value) {\n+                        t0 = () => {\n+                            if (editor && typeof value === \"string\" && value !== editor.getValue()) {\n+                                editor.setValue(value);\n+                            }\n+                        };\n+                        t1 = [editor, value];\n+                        $[0] = editor;\n+                        $[1] = value;\n+                        $[2] = t0;\n+                        $[3] = t1;\n+                    } else {\n+                        t0 = $[2];\n+                        t1 = $[3];\n+                    }\n+                    React.useEffect(t0, t1);\n                 }\n \n                 function useSynchronizeOption(editor, option, value) {\n-                    React.useEffect(() => {\n-                        if (editor) {\n-                            editor.setOption(option, value);\n-                        }\n-                    }, [editor, option, value]);\n+                    const $ = reactCompilerRuntime.c(5);\n+                    let t0;\n+                    let t1;\n+                    if ($[0] !== editor || $[1] !== option || $[2] !== value) {\n+                        t0 = () => {\n+                            if (editor) {\n+                                editor.setOption(option, value);\n+                            }\n+                        };\n+                        t1 = [editor, option, value];\n+                        $[0] = editor;\n+                        $[1] = option;\n+                        $[2] = value;\n+                        $[3] = t0;\n+                        $[4] = t1;\n+                    } else {\n+                        t0 = $[3];\n+                        t1 = $[4];\n+                    }\n+                    React.useEffect(t0, t1);\n                 }\n \n                 function useChangeHandler(editor, callback, storageKey, tabProperty, caller) {\n+                    const $ = reactCompilerRuntime.c(10);\n+                    let t0;\n+                    if ($[0] !== caller) {\n+                        t0 = {\n+                            nonNull: true,\n+                            caller\n+                        };\n+                        $[0] = caller;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n                     const {\n                         updateActiveTabValues\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller\n-                    });\n+                    } = useEditorContext(t0);\n                     const storage = useStorageContext();\n-                    React.useEffect(() => {\n-                        if (!editor) {\n-                            return;\n-                        }\n-                        const store = debounce(500, value => {\n-                            if (!storage || storageKey === null) {\n+                    let t1;\n+                    let t2;\n+                    if ($[2] !== callback || $[3] !== editor || $[4] !== storage || $[5] !== storageKey || $[6] !== tabProperty || $[7] !== updateActiveTabValues) {\n+                        t1 = () => {\n+                            if (!editor) {\n                                 return;\n                             }\n-                            storage.set(storageKey, value);\n-                        });\n-                        const updateTab = debounce(100, value => {\n-                            updateActiveTabValues({\n-                                [tabProperty]: value\n+                            const store = debounce(500, value => {\n+                                if (!storage || storageKey === null) {\n+                                    return;\n+                                }\n+                                storage.set(storageKey, value);\n                             });\n-                        });\n-                        const handleChange = (editorInstance, changeObj) => {\n-                            if (!changeObj) {\n-                                return;\n-                            }\n-                            const newValue = editorInstance.getValue();\n-                            store(newValue);\n-                            updateTab(newValue);\n-                            callback == null ? void 0 : callback(newValue);\n-                        };\n-                        editor.on(\"change\", handleChange);\n-                        return () => editor.off(\"change\", handleChange);\n-                    }, [callback, editor, storage, storageKey, tabProperty, updateActiveTabValues]);\n+                            const updateTab = debounce(100, value_0 => {\n+                                updateActiveTabValues({\n+                                    [tabProperty]: value_0\n+                                });\n+                            });\n+                            const handleChange = (editorInstance, changeObj) => {\n+                                if (!changeObj) {\n+                                    return;\n+                                }\n+                                const newValue = editorInstance.getValue();\n+                                store(newValue);\n+                                updateTab(newValue);\n+                                callback == null ? void 0 : callback(newValue);\n+                            };\n+                            editor.on(\"change\", handleChange);\n+                            return () => editor.off(\"change\", handleChange);\n+                        };\n+                        t2 = [callback, editor, storage, storageKey, tabProperty, updateActiveTabValues];\n+                        $[2] = callback;\n+                        $[3] = editor;\n+                        $[4] = storage;\n+                        $[5] = storageKey;\n+                        $[6] = tabProperty;\n+                        $[7] = updateActiveTabValues;\n+                        $[8] = t1;\n+                        $[9] = t2;\n+                    } else {\n+                        t1 = $[8];\n+                        t2 = $[9];\n+                    }\n+                    React.useEffect(t1, t2);\n                 }\n \n                 function useCompletion(editor, callback, caller) {\n+                    const $ = reactCompilerRuntime.c(9);\n+                    let t0;\n+                    if ($[0] !== caller) {\n+                        t0 = {\n+                            nonNull: true,\n+                            caller\n+                        };\n+                        $[0] = caller;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n                     const {\n                         schema\n-                    } = useSchemaContext({\n-                        nonNull: true,\n-                        caller\n-                    });\n+                    } = useSchemaContext(t0);\n                     const explorer = useExplorerContext();\n                     const plugin = usePluginContext();\n-                    React.useEffect(() => {\n-                        if (!editor) {\n-                            return;\n-                        }\n-                        const handleCompletion = (instance, changeObj) => {\n-                            onHasCompletion(instance, changeObj, schema, explorer, plugin, type => {\n-                                callback == null ? void 0 : callback({\n-                                    kind: \"Type\",\n-                                    type,\n-                                    schema: schema || void 0\n+                    let t1;\n+                    let t2;\n+                    if ($[2] !== callback || $[3] !== editor || $[4] !== explorer || $[5] !== plugin || $[6] !== schema) {\n+                        t1 = () => {\n+                            if (!editor) {\n+                                return;\n+                            }\n+                            const handleCompletion = (instance, changeObj) => {\n+                                onHasCompletion(instance, changeObj, schema, explorer, plugin, type => {\n+                                    callback == null ? void 0 : callback({\n+                                        kind: \"Type\",\n+                                        type,\n+                                        schema: schema || void 0\n+                                    });\n                                 });\n-                            });\n+                            };\n+                            editor.on(\"hasCompletion\", handleCompletion);\n+                            return () => editor.off(\"hasCompletion\", handleCompletion);\n                         };\n-                        editor.on(\n-                            // @ts-expect-error @TODO additional args for hasCompletion event\n-                            \"hasCompletion\", handleCompletion);\n-                        return () => editor.off(\n-                            // @ts-expect-error @TODO additional args for hasCompletion event\n-                            \"hasCompletion\", handleCompletion);\n-                    }, [callback, editor, explorer, plugin, schema]);\n+                        t2 = [callback, editor, explorer, plugin, schema];\n+                        $[2] = callback;\n+                        $[3] = editor;\n+                        $[4] = explorer;\n+                        $[5] = plugin;\n+                        $[6] = schema;\n+                        $[7] = t1;\n+                        $[8] = t2;\n+                    } else {\n+                        t1 = $[7];\n+                        t2 = $[8];\n+                    }\n+                    React.useEffect(t1, t2);\n                 }\n \n                 function useKeyMap(editor, keys, callback) {\n-                    React.useEffect(() => {\n-                        if (!editor) {\n-                            return;\n-                        }\n-                        for (const key of keys) {\n-                            editor.removeKeyMap(key);\n-                        }\n-                        if (callback) {\n-                            const keyMap = {};\n+                    const $ = reactCompilerRuntime.c(5);\n+                    let t0;\n+                    let t1;\n+                    if ($[0] !== callback || $[1] !== editor || $[2] !== keys) {\n+                        t0 = () => {\n+                            if (!editor) {\n+                                return;\n+                            }\n                             for (const key of keys) {\n-                                keyMap[key] = () => callback();\n+                                editor.removeKeyMap(key);\n                             }\n-                            editor.addKeyMap(keyMap);\n-                        }\n-                    }, [editor, keys, callback]);\n+                            if (callback) {\n+                                const keyMap = {};\n+                                for (const key_0 of keys) {\n+                                    keyMap[key_0] = () => callback();\n+                                }\n+                                editor.addKeyMap(keyMap);\n+                            }\n+                        };\n+                        t1 = [editor, keys, callback];\n+                        $[0] = callback;\n+                        $[1] = editor;\n+                        $[2] = keys;\n+                        $[3] = t0;\n+                        $[4] = t1;\n+                    } else {\n+                        t0 = $[3];\n+                        t1 = $[4];\n+                    }\n+                    React.useEffect(t0, t1);\n                 }\n-\n-                function useCopyQuery({\n-                    caller,\n-                    onCopyQuery\n-                } = {}) {\n+                const _useCopyQuery = useCopyQuery;\n+                const _useMergeQuery = useMergeQuery;\n+                const _usePrettifyEditors = usePrettifyEditors;\n+                const _useAutoCompleteLeafs = useAutoCompleteLeafs;\n+\n+                function useCopyQuery(t0) {\n+                    const $ = reactCompilerRuntime.c(7);\n+                    let t1;\n+                    if ($[0] !== t0) {\n+                        t1 = t0 === void 0 ? {} : t0;\n+                        $[0] = t0;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    const {\n+                        caller,\n+                        onCopyQuery\n+                    } = t1;\n+                    const t2 = caller || _useCopyQuery;\n+                    let t3;\n+                    if ($[2] !== t2) {\n+                        t3 = {\n+                            nonNull: true,\n+                            caller: t2\n+                        };\n+                        $[2] = t2;\n+                        $[3] = t3;\n+                    } else {\n+                        t3 = $[3];\n+                    }\n                     const {\n                         queryEditor\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller: caller || useCopyQuery\n-                    });\n-                    return React.useCallback(() => {\n-                        if (!queryEditor) {\n-                            return;\n-                        }\n-                        const query = queryEditor.getValue();\n-                        copyToClipboard(query);\n-                        onCopyQuery == null ? void 0 : onCopyQuery(query);\n-                    }, [queryEditor, onCopyQuery]);\n+                    } = useEditorContext(t3);\n+                    let t4;\n+                    if ($[4] !== onCopyQuery || $[5] !== queryEditor) {\n+                        t4 = () => {\n+                            if (!queryEditor) {\n+                                return;\n+                            }\n+                            const query = queryEditor.getValue();\n+                            copyToClipboard(query);\n+                            onCopyQuery == null ? void 0 : onCopyQuery(query);\n+                        };\n+                        $[4] = onCopyQuery;\n+                        $[5] = queryEditor;\n+                        $[6] = t4;\n+                    } else {\n+                        t4 = $[6];\n+                    }\n+                    return t4;\n                 }\n \n-                function useMergeQuery({\n-                    caller\n-                } = {}) {\n+                function useMergeQuery(t0) {\n+                    const $ = reactCompilerRuntime.c(8);\n+                    let t1;\n+                    if ($[0] !== t0) {\n+                        t1 = t0 === void 0 ? {} : t0;\n+                        $[0] = t0;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    const {\n+                        caller\n+                    } = t1;\n+                    const t2 = caller || _useMergeQuery;\n+                    let t3;\n+                    if ($[2] !== t2) {\n+                        t3 = {\n+                            nonNull: true,\n+                            caller: t2\n+                        };\n+                        $[2] = t2;\n+                        $[3] = t3;\n+                    } else {\n+                        t3 = $[3];\n+                    }\n                     const {\n                         queryEditor\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller: caller || useMergeQuery\n-                    });\n+                    } = useEditorContext(t3);\n+                    let t4;\n+                    if ($[4] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t4 = {\n+                            nonNull: true,\n+                            caller: _useMergeQuery\n+                        };\n+                        $[4] = t4;\n+                    } else {\n+                        t4 = $[4];\n+                    }\n                     const {\n                         schema\n-                    } = useSchemaContext({\n-                        nonNull: true,\n-                        caller: useMergeQuery\n-                    });\n-                    return React.useCallback(() => {\n-                        const documentAST = queryEditor == null ? void 0 : queryEditor.documentAST;\n-                        const query = queryEditor == null ? void 0 : queryEditor.getValue();\n-                        if (!documentAST || !query) {\n-                            return;\n-                        }\n-                        queryEditor.setValue(graphql.print(toolkit.mergeAst(documentAST, schema)));\n-                    }, [queryEditor, schema]);\n+                    } = useSchemaContext(t4);\n+                    let t5;\n+                    if ($[5] !== queryEditor || $[6] !== schema) {\n+                        t5 = () => {\n+                            const documentAST = queryEditor == null ? void 0 : queryEditor.documentAST;\n+                            const query = queryEditor == null ? void 0 : queryEditor.getValue();\n+                            if (!documentAST || !query) {\n+                                return;\n+                            }\n+                            queryEditor.setValue(graphql.print(toolkit.mergeAst(documentAST, schema)));\n+                        };\n+                        $[5] = queryEditor;\n+                        $[6] = schema;\n+                        $[7] = t5;\n+                    } else {\n+                        t5 = $[7];\n+                    }\n+                    return t5;\n                 }\n \n-                function usePrettifyEditors({\n-                    caller\n-                } = {}) {\n+                function usePrettifyEditors(t0) {\n+                    const $ = reactCompilerRuntime.c(8);\n+                    let t1;\n+                    if ($[0] !== t0) {\n+                        t1 = t0 === void 0 ? {} : t0;\n+                        $[0] = t0;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    const {\n+                        caller\n+                    } = t1;\n+                    const t2 = caller || _usePrettifyEditors;\n+                    let t3;\n+                    if ($[2] !== t2) {\n+                        t3 = {\n+                            nonNull: true,\n+                            caller: t2\n+                        };\n+                        $[2] = t2;\n+                        $[3] = t3;\n+                    } else {\n+                        t3 = $[3];\n+                    }\n                     const {\n                         queryEditor,\n                         headerEditor,\n                         variableEditor\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller: caller || usePrettifyEditors\n-                    });\n-                    return React.useCallback(() => {\n-                        if (variableEditor) {\n-                            const variableEditorContent = variableEditor.getValue();\n-                            try {\n-                                const prettifiedVariableEditorContent = JSON.stringify(JSON.parse(variableEditorContent), null, 2);\n-                                if (prettifiedVariableEditorContent !== variableEditorContent) {\n-                                    variableEditor.setValue(prettifiedVariableEditorContent);\n-                                }\n-                            } catch {}\n-                        }\n-                        if (headerEditor) {\n-                            const headerEditorContent = headerEditor.getValue();\n-                            try {\n-                                const prettifiedHeaderEditorContent = JSON.stringify(JSON.parse(headerEditorContent), null, 2);\n-                                if (prettifiedHeaderEditorContent !== headerEditorContent) {\n-                                    headerEditor.setValue(prettifiedHeaderEditorContent);\n+                    } = useEditorContext(t3);\n+                    let t4;\n+                    if ($[4] !== headerEditor || $[5] !== queryEditor || $[6] !== variableEditor) {\n+                        t4 = () => {\n+                            if (variableEditor) {\n+                                const variableEditorContent = variableEditor.getValue();\n+                                try {\n+                                    const prettifiedVariableEditorContent = JSON.stringify(JSON.parse(variableEditorContent), null, 2);\n+                                    if (prettifiedVariableEditorContent !== variableEditorContent) {\n+                                        variableEditor.setValue(prettifiedVariableEditorContent);\n+                                    }\n+                                } catch {}\n+                            }\n+                            if (headerEditor) {\n+                                const headerEditorContent = headerEditor.getValue();\n+                                try {\n+                                    const prettifiedHeaderEditorContent = JSON.stringify(JSON.parse(headerEditorContent), null, 2);\n+                                    if (prettifiedHeaderEditorContent !== headerEditorContent) {\n+                                        headerEditor.setValue(prettifiedHeaderEditorContent);\n+                                    }\n+                                } catch {}\n+                            }\n+                            if (queryEditor) {\n+                                const editorContent = queryEditor.getValue();\n+                                const prettifiedEditorContent = graphql.print(graphql.parse(editorContent));\n+                                if (prettifiedEditorContent !== editorContent) {\n+                                    queryEditor.setValue(prettifiedEditorContent);\n                                 }\n-                            } catch {}\n-                        }\n-                        if (queryEditor) {\n-                            const editorContent = queryEditor.getValue();\n-                            const prettifiedEditorContent = graphql.print(graphql.parse(editorContent));\n-                            if (prettifiedEditorContent !== editorContent) {\n-                                queryEditor.setValue(prettifiedEditorContent);\n                             }\n-                        }\n-                    }, [queryEditor, variableEditor, headerEditor]);\n+                        };\n+                        $[4] = headerEditor;\n+                        $[5] = queryEditor;\n+                        $[6] = variableEditor;\n+                        $[7] = t4;\n+                    } else {\n+                        t4 = $[7];\n+                    }\n+                    return t4;\n                 }\n \n-                function useAutoCompleteLeafs({\n-                    getDefaultFieldNames,\n-                    caller\n-                } = {}) {\n+                function useAutoCompleteLeafs(t0) {\n+                    const $ = reactCompilerRuntime.c(10);\n+                    let t1;\n+                    if ($[0] !== t0) {\n+                        t1 = t0 === void 0 ? {} : t0;\n+                        $[0] = t0;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    const {\n+                        getDefaultFieldNames,\n+                        caller\n+                    } = t1;\n+                    const t2 = caller || _useAutoCompleteLeafs;\n+                    let t3;\n+                    if ($[2] !== t2) {\n+                        t3 = {\n+                            nonNull: true,\n+                            caller: t2\n+                        };\n+                        $[2] = t2;\n+                        $[3] = t3;\n+                    } else {\n+                        t3 = $[3];\n+                    }\n                     const {\n                         schema\n-                    } = useSchemaContext({\n-                        nonNull: true,\n-                        caller: caller || useAutoCompleteLeafs\n-                    });\n+                    } = useSchemaContext(t3);\n+                    const t4 = caller || _useAutoCompleteLeafs;\n+                    let t5;\n+                    if ($[4] !== t4) {\n+                        t5 = {\n+                            nonNull: true,\n+                            caller: t4\n+                        };\n+                        $[4] = t4;\n+                        $[5] = t5;\n+                    } else {\n+                        t5 = $[5];\n+                    }\n                     const {\n                         queryEditor\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller: caller || useAutoCompleteLeafs\n-                    });\n-                    return React.useCallback(() => {\n-                        if (!queryEditor) {\n-                            return;\n-                        }\n-                        const query = queryEditor.getValue();\n-                        const {\n-                            insertions,\n-                            result\n-                        } = toolkit.fillLeafs(schema, query, getDefaultFieldNames);\n-                        if (insertions && insertions.length > 0) {\n-                            queryEditor.operation(() => {\n-                                const cursor = queryEditor.getCursor();\n-                                const cursorIndex = queryEditor.indexFromPos(cursor);\n-                                queryEditor.setValue(result || \"\");\n-                                let added = 0;\n-                                const markers = insertions.map(({\n-                                    index,\n-                                    string\n-                                }) => queryEditor.markText(queryEditor.posFromIndex(index + added), queryEditor.posFromIndex(index + (added += string.length)), {\n-                                    className: \"auto-inserted-leaf\",\n-                                    clearOnEnter: true,\n-                                    title: \"Automatically added leaf fields\"\n-                                }));\n-                                setTimeout(() => {\n-                                    for (const marker of markers) {\n-                                        marker.clear();\n-                                    }\n-                                }, 7e3);\n-                                let newCursorIndex = cursorIndex;\n-                                for (const {\n-                                        index,\n-                                        string\n-                                    }\n-                                    of insertions) {\n-                                    if (index < cursorIndex) {\n-                                        newCursorIndex += string.length;\n+                    } = useEditorContext(t5);\n+                    let t6;\n+                    if ($[6] !== getDefaultFieldNames || $[7] !== queryEditor || $[8] !== schema) {\n+                        t6 = () => {\n+                            if (!queryEditor) {\n+                                return;\n+                            }\n+                            const query = queryEditor.getValue();\n+                            const {\n+                                insertions,\n+                                result\n+                            } = toolkit.fillLeafs(schema, query, getDefaultFieldNames);\n+                            if (insertions && insertions.length > 0) {\n+                                queryEditor.operation(() => {\n+                                    const cursor = queryEditor.getCursor();\n+                                    const cursorIndex = queryEditor.indexFromPos(cursor);\n+                                    queryEditor.setValue(result || \"\");\n+                                    let added;\n+                                    added = 0;\n+                                    const markers = insertions.map(t7 => {\n+                                        const {\n+                                            index,\n+                                            string\n+                                        } = t7;\n+                                        added = added + string.length;\n+                                        return queryEditor.markText(queryEditor.posFromIndex(index + added), queryEditor.posFromIndex(index + added), {\n+                                            className: \"auto-inserted-leaf\",\n+                                            clearOnEnter: true,\n+                                            title: \"Automatically added leaf fields\"\n+                                        });\n+                                    });\n+                                    setTimeout(() => {\n+                                        for (const marker of markers) {\n+                                            marker.clear();\n+                                        }\n+                                    }, 7e3);\n+                                    let newCursorIndex = cursorIndex;\n+                                    for (const {\n+                                            index: index_0,\n+                                            string: string_0\n+                                        }\n+                                        of insertions) {\n+                                        if (index_0 < cursorIndex) {\n+                                            newCursorIndex = newCursorIndex + string_0.length;\n+                                        }\n                                     }\n-                                }\n-                                queryEditor.setCursor(queryEditor.posFromIndex(newCursorIndex));\n-                            });\n-                        }\n-                        return result;\n-                    }, [getDefaultFieldNames, queryEditor, schema]);\n+                                    queryEditor.setCursor(queryEditor.posFromIndex(newCursorIndex));\n+                                });\n+                            }\n+                            return result;\n+                        };\n+                        $[6] = getDefaultFieldNames;\n+                        $[7] = queryEditor;\n+                        $[8] = schema;\n+                        $[9] = t6;\n+                    } else {\n+                        t6 = $[9];\n+                    }\n+                    return t6;\n                 }\n                 const useEditorState = editor => {\n+                    \"use no memo\";\n+\n                     var _ref2;\n                     const context = useEditorContext({\n                         nonNull: true\n                     });\n                     const editorInstance = context[`${editor}Editor`];\n                     let valueString = \"\";\n                     const editorValue = (_ref2 = editorInstance == null ? void 0 : editorInstance.getValue()) !== null && _ref2 !== void 0 ? _ref2 : false;\n@@ -76800,505 +84968,858 @@\n                 const useVariablesEditorState = () => {\n                     return useEditorState(\"variable\");\n                 };\n                 const useHeadersEditorState = () => {\n                     return useEditorState(\"header\");\n                 };\n \n-                function useOptimisticState([upstreamState, upstreamSetState]) {\n-                    const lastStateRef = React.useRef({\n-                        /** The last thing that we sent upstream; we're expecting this back */\n-                        pending: null,\n-                        /** The last thing we received from upstream */\n-                        last: upstreamState\n-                    });\n+                function useOptimisticState(t0) {\n+                    const $ = reactCompilerRuntime.c(12);\n+                    const [upstreamState, upstreamSetState] = t0;\n+                    let t1;\n+                    if ($[0] !== upstreamState) {\n+                        t1 = {\n+                            pending: null,\n+                            last: upstreamState\n+                        };\n+                        $[0] = upstreamState;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    const lastStateRef = React.useRef(t1);\n                     const [state, setOperationsText] = React.useState(upstreamState);\n-                    React.useEffect(() => {\n-                        if (lastStateRef.current.last === upstreamState);\n-                        else {\n-                            lastStateRef.current.last = upstreamState;\n-                            if (lastStateRef.current.pending === null) {\n-                                setOperationsText(upstreamState);\n-                            } else if (lastStateRef.current.pending === upstreamState) {\n-                                lastStateRef.current.pending = null;\n-                                if (upstreamState !== state) {\n-                                    lastStateRef.current.pending = state;\n-                                    upstreamSetState(state);\n+                    let t2;\n+                    let t3;\n+                    if ($[2] !== state || $[3] !== upstreamSetState || $[4] !== upstreamState) {\n+                        t2 = () => {\n+                            if (lastStateRef.current.last === upstreamState);\n+                            else {\n+                                lastStateRef.current.last = upstreamState;\n+                                if (lastStateRef.current.pending === null) {\n+                                    setOperationsText(upstreamState);\n+                                } else {\n+                                    if (lastStateRef.current.pending === upstreamState) {\n+                                        lastStateRef.current.pending = null;\n+                                        if (upstreamState !== state) {\n+                                            lastStateRef.current.pending = state;\n+                                            upstreamSetState(state);\n+                                        }\n+                                    } else {\n+                                        lastStateRef.current.pending = null;\n+                                        setOperationsText(upstreamState);\n+                                    }\n                                 }\n-                            } else {\n-                                lastStateRef.current.pending = null;\n-                                setOperationsText(upstreamState);\n                             }\n-                        }\n-                    }, [upstreamState, state, upstreamSetState]);\n-                    const setState = React.useCallback(newState => {\n-                        setOperationsText(newState);\n-                        if (lastStateRef.current.pending === null && lastStateRef.current.last !== newState) {\n-                            lastStateRef.current.pending = newState;\n-                            upstreamSetState(newState);\n-                        }\n-                    }, [upstreamSetState]);\n-                    return React.useMemo(() => [state, setState], [state, setState]);\n-                }\n-\n-                function useHeaderEditor({\n-                    editorTheme = DEFAULT_EDITOR_THEME,\n-                    keyMap = DEFAULT_KEY_MAP,\n-                    onEdit,\n-                    readOnly = false\n-                } = {}, caller) {\n+                        };\n+                        t3 = [upstreamState, state, upstreamSetState];\n+                        $[2] = state;\n+                        $[3] = upstreamSetState;\n+                        $[4] = upstreamState;\n+                        $[5] = t2;\n+                        $[6] = t3;\n+                    } else {\n+                        t2 = $[5];\n+                        t3 = $[6];\n+                    }\n+                    React.useEffect(t2, t3);\n+                    let t4;\n+                    if ($[7] !== upstreamSetState) {\n+                        t4 = newState => {\n+                            setOperationsText(newState);\n+                            if (lastStateRef.current.pending === null && lastStateRef.current.last !== newState) {\n+                                lastStateRef.current.pending = newState;\n+                                upstreamSetState(newState);\n+                            }\n+                        };\n+                        $[7] = upstreamSetState;\n+                        $[8] = t4;\n+                    } else {\n+                        t4 = $[8];\n+                    }\n+                    const setState = t4;\n+                    let t5;\n+                    if ($[9] !== setState || $[10] !== state) {\n+                        t5 = [state, setState];\n+                        $[9] = setState;\n+                        $[10] = state;\n+                        $[11] = t5;\n+                    } else {\n+                        t5 = $[11];\n+                    }\n+                    return t5;\n+                }\n+\n+                function importCodeMirrorImports$3() {\n+                    return importCodeMirror([ // @ts-expect-error\n+                        Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/mode/javascript/javascript.js */ \"../../../node_modules/codemirror/mode/javascript/javascript.js\")))\n+                    ]);\n+                }\n+                const _useHeaderEditor = useHeaderEditor;\n+\n+                function useHeaderEditor(t0, caller) {\n+                    const $ = reactCompilerRuntime.c(17);\n+                    let t1;\n+                    if ($[0] !== t0) {\n+                        t1 = t0 === void 0 ? {} : t0;\n+                        $[0] = t0;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    const {\n+                        editorTheme: t2,\n+                        keyMap: t3,\n+                        onEdit,\n+                        readOnly: t4\n+                    } = t1;\n+                    const editorTheme = t2 === void 0 ? DEFAULT_EDITOR_THEME : t2;\n+                    const keyMap = t3 === void 0 ? DEFAULT_KEY_MAP : t3;\n+                    const readOnly = t4 === void 0 ? false : t4;\n+                    const t5 = caller || _useHeaderEditor;\n+                    let t6;\n+                    if ($[2] !== t5) {\n+                        t6 = {\n+                            nonNull: true,\n+                            caller: t5\n+                        };\n+                        $[2] = t5;\n+                        $[3] = t6;\n+                    } else {\n+                        t6 = $[3];\n+                    }\n                     const {\n                         initialHeaders,\n                         headerEditor,\n                         setHeaderEditor,\n                         shouldPersistHeaders\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller: caller || useHeaderEditor\n-                    });\n+                    } = useEditorContext(t6);\n                     const executionContext = useExecutionContext();\n-                    const merge = useMergeQuery({\n-                        caller: caller || useHeaderEditor\n-                    });\n-                    const prettify = usePrettifyEditors({\n-                        caller: caller || useHeaderEditor\n-                    });\n+                    const t7 = caller || _useHeaderEditor;\n+                    let t8;\n+                    if ($[4] !== t7) {\n+                        t8 = {\n+                            caller: t7\n+                        };\n+                        $[4] = t7;\n+                        $[5] = t8;\n+                    } else {\n+                        t8 = $[5];\n+                    }\n+                    const merge = useMergeQuery(t8);\n+                    const t9 = caller || _useHeaderEditor;\n+                    let t10;\n+                    if ($[6] !== t9) {\n+                        t10 = {\n+                            caller: t9\n+                        };\n+                        $[6] = t9;\n+                        $[7] = t10;\n+                    } else {\n+                        t10 = $[7];\n+                    }\n+                    const prettify = usePrettifyEditors(t10);\n                     const ref = React.useRef(null);\n-                    React.useEffect(() => {\n-                        let isActive = true;\n-                        void importCodeMirror([\n-                            // @ts-expect-error\n-                            Promise.resolve().then(() => __webpack_require__( /*! ./javascript.cjs.js */ \"../../graphiql-react/dist/javascript.cjs.js\")).then(n => n.javascript)\n-                        ]).then(CodeMirror => {\n-                            if (!isActive) {\n-                                return;\n-                            }\n-                            const container = ref.current;\n-                            if (!container) {\n-                                return;\n-                            }\n-                            const newEditor = CodeMirror(container, {\n-                                value: initialHeaders,\n-                                lineNumbers: true,\n-                                tabSize: 2,\n-                                mode: {\n-                                    name: \"javascript\",\n-                                    json: true\n-                                },\n-                                theme: editorTheme,\n-                                autoCloseBrackets: true,\n-                                matchBrackets: true,\n-                                showCursorWhenSelecting: true,\n-                                readOnly: readOnly ? \"nocursor\" : false,\n-                                foldGutter: true,\n-                                gutters: [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n-                                extraKeys: commonKeys\n-                            });\n-                            newEditor.addKeyMap({\n-                                \"Cmd-Space\"() {\n-                                    newEditor.showHint({\n-                                        completeSingle: false,\n-                                        container\n-                                    });\n-                                },\n-                                \"Ctrl-Space\"() {\n-                                    newEditor.showHint({\n-                                        completeSingle: false,\n-                                        container\n-                                    });\n-                                },\n-                                \"Alt-Space\"() {\n-                                    newEditor.showHint({\n-                                        completeSingle: false,\n-                                        container\n-                                    });\n-                                },\n-                                \"Shift-Space\"() {\n-                                    newEditor.showHint({\n-                                        completeSingle: false,\n-                                        container\n-                                    });\n+                    let t11;\n+                    let t12;\n+                    if ($[8] !== editorTheme || $[9] !== initialHeaders || $[10] !== readOnly || $[11] !== setHeaderEditor) {\n+                        t11 = () => {\n+                            let isActive;\n+                            isActive = true;\n+                            importCodeMirrorImports$3().then(CodeMirror => {\n+                                if (!isActive) {\n+                                    return;\n                                 }\n-                            });\n-                            newEditor.on(\"keyup\", (editorInstance, event) => {\n-                                const {\n-                                    code,\n-                                    key,\n-                                    shiftKey\n-                                } = event;\n-                                const isLetter = code.startsWith(\"Key\");\n-                                const isNumber = !shiftKey && code.startsWith(\"Digit\");\n-                                if (isLetter || isNumber || key === \"_\" || key === '\"') {\n-                                    editorInstance.execCommand(\"autocomplete\");\n+                                const container = ref.current;\n+                                if (!container) {\n+                                    return;\n                                 }\n+                                const newEditor = CodeMirror(container, {\n+                                    value: initialHeaders,\n+                                    lineNumbers: true,\n+                                    tabSize: 2,\n+                                    mode: {\n+                                        name: \"javascript\",\n+                                        json: true\n+                                    },\n+                                    theme: editorTheme,\n+                                    autoCloseBrackets: true,\n+                                    matchBrackets: true,\n+                                    showCursorWhenSelecting: true,\n+                                    readOnly: readOnly ? \"nocursor\" : false,\n+                                    foldGutter: true,\n+                                    gutters: [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n+                                    extraKeys: commonKeys\n+                                });\n+                                newEditor.addKeyMap({\n+                                    \"Cmd-Space\"() {\n+                                        newEditor.showHint({\n+                                            completeSingle: false,\n+                                            container\n+                                        });\n+                                    },\n+                                    \"Ctrl-Space\"() {\n+                                        newEditor.showHint({\n+                                            completeSingle: false,\n+                                            container\n+                                        });\n+                                    },\n+                                    \"Alt-Space\"() {\n+                                        newEditor.showHint({\n+                                            completeSingle: false,\n+                                            container\n+                                        });\n+                                    },\n+                                    \"Shift-Space\"() {\n+                                        newEditor.showHint({\n+                                            completeSingle: false,\n+                                            container\n+                                        });\n+                                    }\n+                                });\n+                                newEditor.on(\"keyup\", _temp$2);\n+                                setHeaderEditor(newEditor);\n                             });\n-                            setHeaderEditor(newEditor);\n-                        });\n-                        return () => {\n-                            isActive = false;\n+                            return () => {\n+                                isActive = false;\n+                            };\n                         };\n-                    }, [editorTheme, initialHeaders, readOnly, setHeaderEditor]);\n+                        t12 = [editorTheme, initialHeaders, readOnly, setHeaderEditor];\n+                        $[8] = editorTheme;\n+                        $[9] = initialHeaders;\n+                        $[10] = readOnly;\n+                        $[11] = setHeaderEditor;\n+                        $[12] = t11;\n+                        $[13] = t12;\n+                    } else {\n+                        t11 = $[12];\n+                        t12 = $[13];\n+                    }\n+                    React.useEffect(t11, t12);\n                     useSynchronizeOption(headerEditor, \"keyMap\", keyMap);\n-                    useChangeHandler(headerEditor, onEdit, shouldPersistHeaders ? STORAGE_KEY$3 : null, \"headers\", useHeaderEditor);\n-                    useKeyMap(headerEditor, [\"Cmd-Enter\", \"Ctrl-Enter\"], executionContext == null ? void 0 : executionContext.run);\n-                    useKeyMap(headerEditor, [\"Shift-Ctrl-P\"], prettify);\n-                    useKeyMap(headerEditor, [\"Shift-Ctrl-M\"], merge);\n+                    useChangeHandler(headerEditor, onEdit, shouldPersistHeaders ? STORAGE_KEY$3 : null, \"headers\", _useHeaderEditor);\n+                    let t13;\n+                    if ($[14] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t13 = [\"Cmd-Enter\", \"Ctrl-Enter\"];\n+                        $[14] = t13;\n+                    } else {\n+                        t13 = $[14];\n+                    }\n+                    useKeyMap(headerEditor, t13, executionContext == null ? void 0 : executionContext.run);\n+                    let t14;\n+                    if ($[15] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t14 = [\"Shift-Ctrl-P\"];\n+                        $[15] = t14;\n+                    } else {\n+                        t14 = $[15];\n+                    }\n+                    useKeyMap(headerEditor, t14, prettify);\n+                    let t15;\n+                    if ($[16] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t15 = [\"Shift-Ctrl-M\"];\n+                        $[16] = t15;\n+                    } else {\n+                        t15 = $[16];\n+                    }\n+                    useKeyMap(headerEditor, t15, merge);\n                     return ref;\n                 }\n+\n+                function _temp$2(editorInstance, event) {\n+                    const {\n+                        code,\n+                        key,\n+                        shiftKey\n+                    } = event;\n+                    const isLetter = code.startsWith(\"Key\");\n+                    const isNumber = !shiftKey && code.startsWith(\"Digit\");\n+                    if (isLetter || isNumber || key === \"_\" || key === '\"') {\n+                        editorInstance.execCommand(\"autocomplete\");\n+                    }\n+                }\n                 const STORAGE_KEY$3 = \"headers\";\n                 const invalidCharacters = Array.from({\n                     length: 11\n                 }, (_, i) => {\n                     return String.fromCharCode(8192 + i);\n                 }).concat([\"\\u2028\", \"\\u2029\", \"\u202f\", \"\u00a0\"]);\n                 const sanitizeRegex = new RegExp(\"[\" + invalidCharacters.join(\"\") + \"]\", \"g\");\n \n                 function normalizeWhitespace(line) {\n                     return line.replace(sanitizeRegex, \" \");\n                 }\n \n-                function useQueryEditor({\n-                    editorTheme = DEFAULT_EDITOR_THEME,\n-                    keyMap = DEFAULT_KEY_MAP,\n-                    onClickReference,\n-                    onCopyQuery,\n-                    onEdit,\n-                    readOnly = false\n-                } = {}, caller) {\n+                function importCodeMirrorImports$2() {\n+                    return importCodeMirror([Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/comment/comment.js */ \"../../../node_modules/codemirror/addon/comment/comment.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/search/search.js */ \"../../../node_modules/codemirror/addon/search/search.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror-graphql/esm/hint.js */ \"../../codemirror-graphql/esm/hint.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror-graphql/esm/lint.js */ \"../../codemirror-graphql/esm/lint.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror-graphql/esm/info.js */ \"../../codemirror-graphql/esm/info.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror-graphql/esm/jump.js */ \"../../codemirror-graphql/esm/jump.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror-graphql/esm/mode.js */ \"../../codemirror-graphql/esm/mode.js\")))]);\n+                }\n+                const _useQueryEditor = useQueryEditor;\n+\n+                function updateVariableEditor(variableEditor, operationFacts) {\n+                    variableEditor.state.lint.linterOptions.variableToType = operationFacts == null ? void 0 : operationFacts.variableToType;\n+                    variableEditor.options.lint.variableToType = operationFacts == null ? void 0 : operationFacts.variableToType;\n+                    variableEditor.options.hintOptions.variableToType = operationFacts == null ? void 0 : operationFacts.variableToType;\n+                }\n+\n+                function updateEditorSchema(editor, schema) {\n+                    editor.state.lint.linterOptions.schema = schema;\n+                    editor.options.lint.schema = schema;\n+                    editor.options.hintOptions.schema = schema;\n+                    editor.options.info.schema = schema;\n+                    editor.options.jump.schema = schema;\n+                }\n+\n+                function updateEditorValidationRules(editor, validationRules) {\n+                    editor.state.lint.linterOptions.validationRules = validationRules;\n+                    editor.options.lint.validationRules = validationRules;\n+                }\n+\n+                function updateEditorExternalFragments(editor, externalFragmentList) {\n+                    editor.state.lint.linterOptions.externalFragments = externalFragmentList;\n+                    editor.options.lint.externalFragments = externalFragmentList;\n+                    editor.options.hintOptions.externalFragments = externalFragmentList;\n+                }\n+\n+                function useQueryEditor(t0, caller) {\n+                    const $ = reactCompilerRuntime.c(41);\n+                    let t1;\n+                    if ($[0] !== t0) {\n+                        t1 = t0 === void 0 ? {} : t0;\n+                        $[0] = t0;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    const {\n+                        editorTheme: t2,\n+                        keyMap: t3,\n+                        onClickReference,\n+                        onCopyQuery,\n+                        onEdit,\n+                        readOnly: t4\n+                    } = t1;\n+                    const editorTheme = t2 === void 0 ? DEFAULT_EDITOR_THEME : t2;\n+                    const keyMap = t3 === void 0 ? DEFAULT_KEY_MAP : t3;\n+                    const readOnly = t4 === void 0 ? false : t4;\n+                    const t5 = caller || _useQueryEditor;\n+                    let t6;\n+                    if ($[2] !== t5) {\n+                        t6 = {\n+                            nonNull: true,\n+                            caller: t5\n+                        };\n+                        $[2] = t5;\n+                        $[3] = t6;\n+                    } else {\n+                        t6 = $[3];\n+                    }\n                     const {\n                         schema\n-                    } = useSchemaContext({\n-                        nonNull: true,\n-                        caller: caller || useQueryEditor\n-                    });\n+                    } = useSchemaContext(t6);\n+                    const t7 = caller || _useQueryEditor;\n+                    let t8;\n+                    if ($[4] !== t7) {\n+                        t8 = {\n+                            nonNull: true,\n+                            caller: t7\n+                        };\n+                        $[4] = t7;\n+                        $[5] = t8;\n+                    } else {\n+                        t8 = $[5];\n+                    }\n                     const {\n                         externalFragments,\n                         initialQuery,\n                         queryEditor,\n                         setOperationName,\n                         setQueryEditor,\n                         validationRules,\n                         variableEditor,\n                         updateActiveTabValues\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller: caller || useQueryEditor\n-                    });\n+                    } = useEditorContext(t8);\n                     const executionContext = useExecutionContext();\n                     const storage = useStorageContext();\n                     const explorer = useExplorerContext();\n                     const plugin = usePluginContext();\n-                    const copy = useCopyQuery({\n-                        caller: caller || useQueryEditor,\n-                        onCopyQuery\n-                    });\n-                    const merge = useMergeQuery({\n-                        caller: caller || useQueryEditor\n-                    });\n-                    const prettify = usePrettifyEditors({\n-                        caller: caller || useQueryEditor\n-                    });\n+                    const t9 = caller || _useQueryEditor;\n+                    let t10;\n+                    if ($[6] !== onCopyQuery || $[7] !== t9) {\n+                        t10 = {\n+                            caller: t9,\n+                            onCopyQuery\n+                        };\n+                        $[6] = onCopyQuery;\n+                        $[7] = t9;\n+                        $[8] = t10;\n+                    } else {\n+                        t10 = $[8];\n+                    }\n+                    const copy = useCopyQuery(t10);\n+                    const t11 = caller || _useQueryEditor;\n+                    let t12;\n+                    if ($[9] !== t11) {\n+                        t12 = {\n+                            caller: t11\n+                        };\n+                        $[9] = t11;\n+                        $[10] = t12;\n+                    } else {\n+                        t12 = $[10];\n+                    }\n+                    const merge = useMergeQuery(t12);\n+                    const t13 = caller || _useQueryEditor;\n+                    let t14;\n+                    if ($[11] !== t13) {\n+                        t14 = {\n+                            caller: t13\n+                        };\n+                        $[11] = t13;\n+                        $[12] = t14;\n+                    } else {\n+                        t14 = $[12];\n+                    }\n+                    const prettify = usePrettifyEditors(t14);\n                     const ref = React.useRef(null);\n                     const codeMirrorRef = React.useRef();\n-                    const onClickReferenceRef = React.useRef(() => {});\n-                    React.useEffect(() => {\n-                        onClickReferenceRef.current = reference => {\n-                            if (!explorer || !plugin) {\n-                                return;\n-                            }\n-                            plugin.setVisiblePlugin(DOC_EXPLORER_PLUGIN);\n-                            switch (reference.kind) {\n-                                case \"Type\": {\n-                                    explorer.push({\n-                                        name: reference.type.name,\n-                                        def: reference.type\n-                                    });\n-                                    break;\n-                                }\n-                                case \"Field\": {\n-                                    explorer.push({\n-                                        name: reference.field.name,\n-                                        def: reference.field\n-                                    });\n-                                    break;\n-                                }\n-                                case \"Argument\": {\n-                                    if (reference.field) {\n-                                        explorer.push({\n-                                            name: reference.field.name,\n-                                            def: reference.field\n-                                        });\n-                                    }\n-                                    break;\n+                    const onClickReferenceRef = React.useRef(_temp$1);\n+                    let t15;\n+                    let t16;\n+                    if ($[13] !== explorer || $[14] !== onClickReference || $[15] !== plugin) {\n+                        t15 = () => {\n+                            onClickReferenceRef.current = reference => {\n+                                if (!explorer || !plugin) {\n+                                    return;\n                                 }\n-                                case \"EnumValue\": {\n-                                    if (reference.type) {\n+                                plugin.setVisiblePlugin(DOC_EXPLORER_PLUGIN);\n+                                bb47: switch (reference.kind) {\n+                                    case \"Type\": {\n                                         explorer.push({\n                                             name: reference.type.name,\n                                             def: reference.type\n                                         });\n+                                        break bb47;\n                                     }\n-                                    break;\n-                                }\n-                            }\n-                            onClickReference == null ? void 0 : onClickReference(reference);\n-                        };\n-                    }, [explorer, onClickReference, plugin]);\n-                    React.useEffect(() => {\n-                        let isActive = true;\n-                        void importCodeMirror([Promise.resolve().then(() => __webpack_require__( /*! ./comment.cjs.js */ \"../../graphiql-react/dist/comment.cjs.js\")).then(n => n.comment), Promise.resolve().then(() => __webpack_require__( /*! ./search.cjs.js */ \"../../graphiql-react/dist/search.cjs.js\")).then(n => n.search), Promise.resolve().then(() => __webpack_require__( /*! ./hint.cjs.js */ \"../../graphiql-react/dist/hint.cjs.js\")), Promise.resolve().then(() => __webpack_require__( /*! ./lint.cjs2.js */ \"../../graphiql-react/dist/lint.cjs2.js\")), Promise.resolve().then(() => __webpack_require__( /*! ./info.cjs.js */ \"../../graphiql-react/dist/info.cjs.js\")), Promise.resolve().then(() => __webpack_require__( /*! ./jump.cjs.js */ \"../../graphiql-react/dist/jump.cjs.js\")), Promise.resolve().then(() => __webpack_require__( /*! ./mode.cjs.js */ \"../../graphiql-react/dist/mode.cjs.js\"))]).then(CodeMirror => {\n-                            if (!isActive) {\n-                                return;\n-                            }\n-                            codeMirrorRef.current = CodeMirror;\n-                            const container = ref.current;\n-                            if (!container) {\n-                                return;\n-                            }\n-                            const newEditor = CodeMirror(container, {\n-                                value: initialQuery,\n-                                lineNumbers: true,\n-                                tabSize: 2,\n-                                foldGutter: true,\n-                                mode: \"graphql\",\n-                                theme: editorTheme,\n-                                autoCloseBrackets: true,\n-                                matchBrackets: true,\n-                                showCursorWhenSelecting: true,\n-                                readOnly: readOnly ? \"nocursor\" : false,\n-                                lint: {\n-                                    // @ts-expect-error\n-                                    schema: void 0,\n-                                    validationRules: null,\n-                                    // linting accepts string or FragmentDefinitionNode[]\n-                                    externalFragments: void 0\n-                                },\n-                                hintOptions: {\n-                                    // @ts-expect-error\n-                                    schema: void 0,\n-                                    closeOnUnfocus: false,\n-                                    completeSingle: false,\n-                                    container,\n-                                    externalFragments: void 0,\n-                                    autocompleteOptions: {\n-                                        // for the query editor, restrict to executable type definitions\n-                                        mode: graphqlLanguageService.GraphQLDocumentMode.EXECUTABLE\n+                                    case \"Field\": {\n+                                        explorer.push({\n+                                            name: reference.field.name,\n+                                            def: reference.field\n+                                        });\n+                                        break bb47;\n                                     }\n-                                },\n-                                info: {\n-                                    schema: void 0,\n-                                    renderDescription: text => markdown.render(text),\n-                                    onClick(reference) {\n-                                        onClickReferenceRef.current(reference);\n+                                    case \"Argument\": {\n+                                        if (reference.field) {\n+                                            explorer.push({\n+                                                name: reference.field.name,\n+                                                def: reference.field\n+                                            });\n+                                        }\n+                                        break bb47;\n                                     }\n-                                },\n-                                jump: {\n-                                    schema: void 0,\n-                                    onClick(reference) {\n-                                        onClickReferenceRef.current(reference);\n+                                    case \"EnumValue\": {\n+                                        if (reference.type) {\n+                                            explorer.push({\n+                                                name: reference.type.name,\n+                                                def: reference.type\n+                                            });\n+                                        }\n                                     }\n-                                },\n-                                gutters: [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n-                                extraKeys: {\n-                                    ...commonKeys,\n-                                    \"Cmd-S\"() {},\n-                                    \"Ctrl-S\"() {}\n                                 }\n-                            });\n-                            newEditor.addKeyMap({\n-                                \"Cmd-Space\"() {\n-                                    newEditor.showHint({\n-                                        completeSingle: true,\n-                                        container\n-                                    });\n-                                },\n-                                \"Ctrl-Space\"() {\n-                                    newEditor.showHint({\n-                                        completeSingle: true,\n-                                        container\n-                                    });\n-                                },\n-                                \"Alt-Space\"() {\n-                                    newEditor.showHint({\n-                                        completeSingle: true,\n-                                        container\n-                                    });\n-                                },\n-                                \"Shift-Space\"() {\n-                                    newEditor.showHint({\n-                                        completeSingle: true,\n-                                        container\n-                                    });\n-                                },\n-                                \"Shift-Alt-Space\"() {\n-                                    newEditor.showHint({\n-                                        completeSingle: true,\n-                                        container\n-                                    });\n+                                onClickReference == null ? void 0 : onClickReference(reference);\n+                            };\n+                        };\n+                        t16 = [explorer, onClickReference, plugin];\n+                        $[13] = explorer;\n+                        $[14] = onClickReference;\n+                        $[15] = plugin;\n+                        $[16] = t15;\n+                        $[17] = t16;\n+                    } else {\n+                        t15 = $[16];\n+                        t16 = $[17];\n+                    }\n+                    React.useEffect(t15, t16);\n+                    let t17;\n+                    let t18;\n+                    if ($[18] !== editorTheme || $[19] !== initialQuery || $[20] !== readOnly || $[21] !== setQueryEditor) {\n+                        t17 = () => {\n+                            let isActive;\n+                            isActive = true;\n+                            importCodeMirrorImports$2().then(CodeMirror => {\n+                                if (!isActive) {\n+                                    return;\n                                 }\n-                            });\n-                            newEditor.on(\"keyup\", (editorInstance, event) => {\n-                                if (AUTO_COMPLETE_AFTER_KEY.test(event.key)) {\n-                                    editorInstance.execCommand(\"autocomplete\");\n+                                codeMirrorRef.current = CodeMirror;\n+                                const container = ref.current;\n+                                if (!container) {\n+                                    return;\n                                 }\n-                            });\n-                            let showingHints = false;\n-                            newEditor.on(\"startCompletion\", () => {\n-                                showingHints = true;\n-                            });\n-                            newEditor.on(\"endCompletion\", () => {\n+                                const newEditor = CodeMirror(container, {\n+                                    value: initialQuery,\n+                                    lineNumbers: true,\n+                                    tabSize: 2,\n+                                    foldGutter: true,\n+                                    mode: \"graphql\",\n+                                    theme: editorTheme,\n+                                    autoCloseBrackets: true,\n+                                    matchBrackets: true,\n+                                    showCursorWhenSelecting: true,\n+                                    readOnly: readOnly ? \"nocursor\" : false,\n+                                    lint: {\n+                                        schema: void 0,\n+                                        validationRules: null,\n+                                        externalFragments: void 0\n+                                    },\n+                                    hintOptions: {\n+                                        schema: void 0,\n+                                        closeOnUnfocus: false,\n+                                        completeSingle: false,\n+                                        container,\n+                                        externalFragments: void 0,\n+                                        autocompleteOptions: {\n+                                            mode: graphqlLanguageService.GraphQLDocumentMode.EXECUTABLE\n+                                        }\n+                                    },\n+                                    info: {\n+                                        schema: void 0,\n+                                        renderDescription: _temp2,\n+                                        onClick(reference_0) {\n+                                            onClickReferenceRef.current(reference_0);\n+                                        }\n+                                    },\n+                                    jump: {\n+                                        schema: void 0,\n+                                        onClick(reference_1) {\n+                                            onClickReferenceRef.current(reference_1);\n+                                        }\n+                                    },\n+                                    gutters: [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n+                                    extraKeys: {\n+                                        ...commonKeys,\n+                                        \"Cmd-S\"() {},\n+                                        \"Ctrl-S\"() {}\n+                                    }\n+                                });\n+                                newEditor.addKeyMap({\n+                                    \"Cmd-Space\"() {\n+                                        newEditor.showHint({\n+                                            completeSingle: true,\n+                                            container\n+                                        });\n+                                    },\n+                                    \"Ctrl-Space\"() {\n+                                        newEditor.showHint({\n+                                            completeSingle: true,\n+                                            container\n+                                        });\n+                                    },\n+                                    \"Alt-Space\"() {\n+                                        newEditor.showHint({\n+                                            completeSingle: true,\n+                                            container\n+                                        });\n+                                    },\n+                                    \"Shift-Space\"() {\n+                                        newEditor.showHint({\n+                                            completeSingle: true,\n+                                            container\n+                                        });\n+                                    },\n+                                    \"Shift-Alt-Space\"() {\n+                                        newEditor.showHint({\n+                                            completeSingle: true,\n+                                            container\n+                                        });\n+                                    }\n+                                });\n+                                newEditor.on(\"keyup\", _temp3);\n+                                let showingHints;\n                                 showingHints = false;\n+                                newEditor.on(\"startCompletion\", () => {\n+                                    showingHints = true;\n+                                });\n+                                newEditor.on(\"endCompletion\", () => {\n+                                    showingHints = false;\n+                                });\n+                                newEditor.on(\"keydown\", (editorInstance_0, event_0) => {\n+                                    if (event_0.key === \"Escape\" && showingHints) {\n+                                        event_0.stopPropagation();\n+                                    }\n+                                });\n+                                newEditor.on(\"beforeChange\", _temp4);\n+                                newEditor.documentAST = null;\n+                                newEditor.operationName = null;\n+                                newEditor.operations = null;\n+                                newEditor.variableToType = null;\n+                                setQueryEditor(newEditor);\n                             });\n-                            newEditor.on(\"keydown\", (editorInstance, event) => {\n-                                if (event.key === \"Escape\" && showingHints) {\n-                                    event.stopPropagation();\n-                                }\n-                            });\n-                            newEditor.on(\"beforeChange\", (editorInstance, change) => {\n-                                var _a;\n-                                if (change.origin === \"paste\") {\n-                                    const text = change.text.map(normalizeWhitespace);\n-                                    (_a = change.update) == null ? void 0 : _a.call(change, change.from, change.to, text);\n-                                }\n-                            });\n-                            newEditor.documentAST = null;\n-                            newEditor.operationName = null;\n-                            newEditor.operations = null;\n-                            newEditor.variableToType = null;\n-                            setQueryEditor(newEditor);\n-                        });\n-                        return () => {\n-                            isActive = false;\n+                            return () => {\n+                                isActive = false;\n+                            };\n                         };\n-                    }, [editorTheme, initialQuery, readOnly, setQueryEditor]);\n+                        t18 = [editorTheme, initialQuery, readOnly, setQueryEditor];\n+                        $[18] = editorTheme;\n+                        $[19] = initialQuery;\n+                        $[20] = readOnly;\n+                        $[21] = setQueryEditor;\n+                        $[22] = t17;\n+                        $[23] = t18;\n+                    } else {\n+                        t17 = $[22];\n+                        t18 = $[23];\n+                    }\n+                    React.useEffect(t17, t18);\n                     useSynchronizeOption(queryEditor, \"keyMap\", keyMap);\n-                    React.useEffect(() => {\n-                        if (!queryEditor) {\n-                            return;\n-                        }\n-\n-                        function getAndUpdateOperationFacts(editorInstance) {\n-                            var _editorInstance$opera, _editorInstance$opera2, _ref3, _ref4;\n-                            var _a;\n-                            const operationFacts = graphqlLanguageService.getOperationFacts(schema, editorInstance.getValue());\n-                            const operationName = toolkit.getSelectedOperationName((_editorInstance$opera = editorInstance.operations) !== null && _editorInstance$opera !== void 0 ? _editorInstance$opera : void 0, (_editorInstance$opera2 = editorInstance.operationName) !== null && _editorInstance$opera2 !== void 0 ? _editorInstance$opera2 : void 0, operationFacts == null ? void 0 : operationFacts.operations);\n-                            editorInstance.documentAST = (_ref3 = operationFacts == null ? void 0 : operationFacts.documentAST) !== null && _ref3 !== void 0 ? _ref3 : null;\n-                            editorInstance.operationName = operationName !== null && operationName !== void 0 ? operationName : null;\n-                            editorInstance.operations = (_ref4 = operationFacts == null ? void 0 : operationFacts.operations) !== null && _ref4 !== void 0 ? _ref4 : null;\n-                            if (variableEditor) {\n-                                variableEditor.state.lint.linterOptions.variableToType = operationFacts == null ? void 0 : operationFacts.variableToType;\n-                                variableEditor.options.lint.variableToType = operationFacts == null ? void 0 : operationFacts.variableToType;\n-                                variableEditor.options.hintOptions.variableToType = operationFacts == null ? void 0 : operationFacts.variableToType;\n-                                (_a = codeMirrorRef.current) == null ? void 0 : _a.signal(variableEditor, \"change\", variableEditor);\n-                            }\n-                            return operationFacts ? {\n-                                ...operationFacts,\n-                                operationName\n-                            } : null;\n-                        }\n-                        const handleChange = debounce(100, editorInstance => {\n-                            var _ref5;\n-                            const query = editorInstance.getValue();\n-                            storage == null ? void 0 : storage.set(STORAGE_KEY_QUERY, query);\n-                            const currentOperationName = editorInstance.operationName;\n-                            const operationFacts = getAndUpdateOperationFacts(editorInstance);\n-                            if ((operationFacts == null ? void 0 : operationFacts.operationName) !== void 0) {\n-                                storage == null ? void 0 : storage.set(STORAGE_KEY_OPERATION_NAME, operationFacts.operationName);\n-                            }\n-                            onEdit == null ? void 0 : onEdit(query, operationFacts == null ? void 0 : operationFacts.documentAST);\n-                            if ((operationFacts == null ? void 0 : operationFacts.operationName) && currentOperationName !== operationFacts.operationName) {\n-                                setOperationName(operationFacts.operationName);\n+                    let t19;\n+                    let t20;\n+                    if ($[24] !== onEdit || $[25] !== queryEditor || $[26] !== schema || $[27] !== setOperationName || $[28] !== storage || $[29] !== updateActiveTabValues || $[30] !== variableEditor) {\n+                        t19 = () => {\n+                            if (!queryEditor) {\n+                                return;\n                             }\n-                            updateActiveTabValues({\n-                                query,\n-                                operationName: (_ref5 = operationFacts == null ? void 0 : operationFacts.operationName) !== null && _ref5 !== void 0 ? _ref5 : null\n+                            const getAndUpdateOperationFacts = function getAndUpdateOperationFacts2(editorInstance_2) {\n+                                var _editorInstance_2$ope, _editorInstance_2$ope2, _ref3, _ref4;\n+                                var _a;\n+                                const operationFacts = graphqlLanguageService.getOperationFacts(schema, editorInstance_2.getValue());\n+                                const operationName = toolkit.getSelectedOperationName((_editorInstance_2$ope = editorInstance_2.operations) !== null && _editorInstance_2$ope !== void 0 ? _editorInstance_2$ope : void 0, (_editorInstance_2$ope2 = editorInstance_2.operationName) !== null && _editorInstance_2$ope2 !== void 0 ? _editorInstance_2$ope2 : void 0, operationFacts == null ? void 0 : operationFacts.operations);\n+                                editorInstance_2.documentAST = (_ref3 = operationFacts == null ? void 0 : operationFacts.documentAST) !== null && _ref3 !== void 0 ? _ref3 : null;\n+                                editorInstance_2.operationName = operationName !== null && operationName !== void 0 ? operationName : null;\n+                                editorInstance_2.operations = (_ref4 = operationFacts == null ? void 0 : operationFacts.operations) !== null && _ref4 !== void 0 ? _ref4 : null;\n+                                if (variableEditor) {\n+                                    updateVariableEditor(variableEditor, operationFacts);\n+                                    (_a = codeMirrorRef.current) == null ? void 0 : _a.signal(variableEditor, \"change\", variableEditor);\n+                                }\n+                                return operationFacts ? {\n+                                    ...operationFacts,\n+                                    operationName\n+                                } : null;\n+                            };\n+                            const handleChange = debounce(100, editorInstance_3 => {\n+                                var _ref5;\n+                                const query = editorInstance_3.getValue();\n+                                storage == null ? void 0 : storage.set(STORAGE_KEY_QUERY, query);\n+                                const currentOperationName = editorInstance_3.operationName;\n+                                const operationFacts_0 = getAndUpdateOperationFacts(editorInstance_3);\n+                                if ((operationFacts_0 == null ? void 0 : operationFacts_0.operationName) !== void 0) {\n+                                    storage == null ? void 0 : storage.set(STORAGE_KEY_OPERATION_NAME, operationFacts_0.operationName);\n+                                }\n+                                onEdit == null ? void 0 : onEdit(query, operationFacts_0 == null ? void 0 : operationFacts_0.documentAST);\n+                                if ((operationFacts_0 == null ? void 0 : operationFacts_0.operationName) && currentOperationName !== operationFacts_0.operationName) {\n+                                    setOperationName(operationFacts_0.operationName);\n+                                }\n+                                updateActiveTabValues({\n+                                    query,\n+                                    operationName: (_ref5 = operationFacts_0 == null ? void 0 : operationFacts_0.operationName) !== null && _ref5 !== void 0 ? _ref5 : null\n+                                });\n                             });\n-                        });\n-                        getAndUpdateOperationFacts(queryEditor);\n-                        queryEditor.on(\"change\", handleChange);\n-                        return () => queryEditor.off(\"change\", handleChange);\n-                    }, [onEdit, queryEditor, schema, setOperationName, storage, variableEditor, updateActiveTabValues]);\n+                            getAndUpdateOperationFacts(queryEditor);\n+                            queryEditor.on(\"change\", handleChange);\n+                            return () => queryEditor.off(\"change\", handleChange);\n+                        };\n+                        t20 = [onEdit, queryEditor, schema, setOperationName, storage, variableEditor, updateActiveTabValues];\n+                        $[24] = onEdit;\n+                        $[25] = queryEditor;\n+                        $[26] = schema;\n+                        $[27] = setOperationName;\n+                        $[28] = storage;\n+                        $[29] = updateActiveTabValues;\n+                        $[30] = variableEditor;\n+                        $[31] = t19;\n+                        $[32] = t20;\n+                    } else {\n+                        t19 = $[31];\n+                        t20 = $[32];\n+                    }\n+                    React.useEffect(t19, t20);\n                     useSynchronizeSchema(queryEditor, schema !== null && schema !== void 0 ? schema : null, codeMirrorRef);\n                     useSynchronizeValidationRules(queryEditor, validationRules !== null && validationRules !== void 0 ? validationRules : null, codeMirrorRef);\n                     useSynchronizeExternalFragments(queryEditor, externalFragments, codeMirrorRef);\n-                    useCompletion(queryEditor, onClickReference || null, useQueryEditor);\n+                    useCompletion(queryEditor, onClickReference || null, _useQueryEditor);\n                     const run = executionContext == null ? void 0 : executionContext.run;\n-                    const runAtCursor = React.useCallback(() => {\n-                        var _a;\n-                        if (!run || !queryEditor || !queryEditor.operations || !queryEditor.hasFocus()) {\n-                            run == null ? void 0 : run();\n-                            return;\n-                        }\n-                        const cursorIndex = queryEditor.indexFromPos(queryEditor.getCursor());\n-                        let operationName;\n-                        for (const operation of queryEditor.operations) {\n-                            if (operation.loc && operation.loc.start <= cursorIndex && operation.loc.end >= cursorIndex) {\n-                                operationName = (_a = operation.name) == null ? void 0 : _a.value;\n-                            }\n-                        }\n-                        if (operationName && operationName !== queryEditor.operationName) {\n-                            setOperationName(operationName);\n-                        }\n-                        run();\n-                    }, [queryEditor, run, setOperationName]);\n-                    useKeyMap(queryEditor, [\"Cmd-Enter\", \"Ctrl-Enter\"], runAtCursor);\n-                    useKeyMap(queryEditor, [\"Shift-Ctrl-C\"], copy);\n-                    useKeyMap(queryEditor, [\"Shift-Ctrl-P\",\n-                        // Shift-Ctrl-P is hard coded in Firefox for private browsing so adding an alternative to prettify\n-                        \"Shift-Ctrl-F\"\n-                    ], prettify);\n-                    useKeyMap(queryEditor, [\"Shift-Ctrl-M\"], merge);\n+                    let t21;\n+                    if ($[33] !== queryEditor || $[34] !== run || $[35] !== setOperationName) {\n+                        t21 = () => {\n+                            var _a;\n+                            if (!run || !queryEditor || !queryEditor.operations || !queryEditor.hasFocus()) {\n+                                run == null ? void 0 : run();\n+                                return;\n+                            }\n+                            const cursorIndex = queryEditor.indexFromPos(queryEditor.getCursor());\n+                            let operationName_0;\n+                            for (const operation of queryEditor.operations) {\n+                                if (operation.loc && operation.loc.start <= cursorIndex && operation.loc.end >= cursorIndex) {\n+                                    operationName_0 = (_a = operation.name) == null ? void 0 : _a.value;\n+                                }\n+                            }\n+                            if (operationName_0 && operationName_0 !== queryEditor.operationName) {\n+                                setOperationName(operationName_0);\n+                            }\n+                            run();\n+                        };\n+                        $[33] = queryEditor;\n+                        $[34] = run;\n+                        $[35] = setOperationName;\n+                        $[36] = t21;\n+                    } else {\n+                        t21 = $[36];\n+                    }\n+                    const runAtCursor = t21;\n+                    let t22;\n+                    if ($[37] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t22 = [\"Cmd-Enter\", \"Ctrl-Enter\"];\n+                        $[37] = t22;\n+                    } else {\n+                        t22 = $[37];\n+                    }\n+                    useKeyMap(queryEditor, t22, runAtCursor);\n+                    let t23;\n+                    if ($[38] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t23 = [\"Shift-Ctrl-C\"];\n+                        $[38] = t23;\n+                    } else {\n+                        t23 = $[38];\n+                    }\n+                    useKeyMap(queryEditor, t23, copy);\n+                    let t24;\n+                    if ($[39] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t24 = [\"Shift-Ctrl-P\", \"Shift-Ctrl-F\"];\n+                        $[39] = t24;\n+                    } else {\n+                        t24 = $[39];\n+                    }\n+                    useKeyMap(queryEditor, t24, prettify);\n+                    let t25;\n+                    if ($[40] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t25 = [\"Shift-Ctrl-M\"];\n+                        $[40] = t25;\n+                    } else {\n+                        t25 = $[40];\n+                    }\n+                    useKeyMap(queryEditor, t25, merge);\n                     return ref;\n                 }\n \n+                function _temp4(editorInstance_1, change) {\n+                    var _a;\n+                    if (change.origin === \"paste\") {\n+                        const text_0 = change.text.map(normalizeWhitespace);\n+                        (_a = change.update) == null ? void 0 : _a.call(change, change.from, change.to, text_0);\n+                    }\n+                }\n+\n+                function _temp3(editorInstance, event) {\n+                    if (AUTO_COMPLETE_AFTER_KEY.test(event.key)) {\n+                        editorInstance.execCommand(\"autocomplete\");\n+                    }\n+                }\n+\n+                function _temp2(text) {\n+                    return markdown.render(text);\n+                }\n+\n+                function _temp$1() {}\n+\n                 function useSynchronizeSchema(editor, schema, codeMirrorRef) {\n-                    React.useEffect(() => {\n-                        if (!editor) {\n-                            return;\n-                        }\n-                        const didChange = editor.options.lint.schema !== schema;\n-                        editor.state.lint.linterOptions.schema = schema;\n-                        editor.options.lint.schema = schema;\n-                        editor.options.hintOptions.schema = schema;\n-                        editor.options.info.schema = schema;\n-                        editor.options.jump.schema = schema;\n-                        if (didChange && codeMirrorRef.current) {\n-                            codeMirrorRef.current.signal(editor, \"change\", editor);\n-                        }\n-                    }, [editor, schema, codeMirrorRef]);\n+                    const $ = reactCompilerRuntime.c(5);\n+                    let t0;\n+                    let t1;\n+                    if ($[0] !== codeMirrorRef || $[1] !== editor || $[2] !== schema) {\n+                        t0 = () => {\n+                            if (!editor) {\n+                                return;\n+                            }\n+                            const didChange = editor.options.lint.schema !== schema;\n+                            updateEditorSchema(editor, schema);\n+                            if (didChange && codeMirrorRef.current) {\n+                                codeMirrorRef.current.signal(editor, \"change\", editor);\n+                            }\n+                        };\n+                        t1 = [editor, schema, codeMirrorRef];\n+                        $[0] = codeMirrorRef;\n+                        $[1] = editor;\n+                        $[2] = schema;\n+                        $[3] = t0;\n+                        $[4] = t1;\n+                    } else {\n+                        t0 = $[3];\n+                        t1 = $[4];\n+                    }\n+                    React.useEffect(t0, t1);\n                 }\n \n                 function useSynchronizeValidationRules(editor, validationRules, codeMirrorRef) {\n-                    React.useEffect(() => {\n-                        if (!editor) {\n-                            return;\n-                        }\n-                        const didChange = editor.options.lint.validationRules !== validationRules;\n-                        editor.state.lint.linterOptions.validationRules = validationRules;\n-                        editor.options.lint.validationRules = validationRules;\n-                        if (didChange && codeMirrorRef.current) {\n-                            codeMirrorRef.current.signal(editor, \"change\", editor);\n-                        }\n-                    }, [editor, validationRules, codeMirrorRef]);\n+                    const $ = reactCompilerRuntime.c(5);\n+                    let t0;\n+                    let t1;\n+                    if ($[0] !== codeMirrorRef || $[1] !== editor || $[2] !== validationRules) {\n+                        t0 = () => {\n+                            if (!editor) {\n+                                return;\n+                            }\n+                            const didChange = editor.options.lint.validationRules !== validationRules;\n+                            updateEditorValidationRules(editor, validationRules);\n+                            if (didChange && codeMirrorRef.current) {\n+                                codeMirrorRef.current.signal(editor, \"change\", editor);\n+                            }\n+                        };\n+                        t1 = [editor, validationRules, codeMirrorRef];\n+                        $[0] = codeMirrorRef;\n+                        $[1] = editor;\n+                        $[2] = validationRules;\n+                        $[3] = t0;\n+                        $[4] = t1;\n+                    } else {\n+                        t0 = $[3];\n+                        t1 = $[4];\n+                    }\n+                    React.useEffect(t0, t1);\n                 }\n \n                 function useSynchronizeExternalFragments(editor, externalFragments, codeMirrorRef) {\n-                    const externalFragmentList = React.useMemo(() => [...externalFragments.values()], [externalFragments]);\n-                    React.useEffect(() => {\n-                        if (!editor) {\n-                            return;\n-                        }\n-                        const didChange = editor.options.lint.externalFragments !== externalFragmentList;\n-                        editor.state.lint.linterOptions.externalFragments = externalFragmentList;\n-                        editor.options.lint.externalFragments = externalFragmentList;\n-                        editor.options.hintOptions.externalFragments = externalFragmentList;\n-                        if (didChange && codeMirrorRef.current) {\n-                            codeMirrorRef.current.signal(editor, \"change\", editor);\n-                        }\n-                    }, [editor, externalFragmentList, codeMirrorRef]);\n+                    const $ = reactCompilerRuntime.c(9);\n+                    let t0;\n+                    if ($[0] !== externalFragments) {\n+                        t0 = externalFragments.values();\n+                        $[0] = externalFragments;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    let t1;\n+                    if ($[2] !== t0) {\n+                        t1 = [...t0];\n+                        $[2] = t0;\n+                        $[3] = t1;\n+                    } else {\n+                        t1 = $[3];\n+                    }\n+                    const externalFragmentList = t1;\n+                    let t2;\n+                    let t3;\n+                    if ($[4] !== codeMirrorRef || $[5] !== editor || $[6] !== externalFragmentList) {\n+                        t2 = () => {\n+                            if (!editor) {\n+                                return;\n+                            }\n+                            const didChange = editor.options.lint.externalFragments !== externalFragmentList;\n+                            updateEditorExternalFragments(editor, externalFragmentList);\n+                            if (didChange && codeMirrorRef.current) {\n+                                codeMirrorRef.current.signal(editor, \"change\", editor);\n+                            }\n+                        };\n+                        t3 = [editor, externalFragmentList, codeMirrorRef];\n+                        $[4] = codeMirrorRef;\n+                        $[5] = editor;\n+                        $[6] = externalFragmentList;\n+                        $[7] = t2;\n+                        $[8] = t3;\n+                    } else {\n+                        t2 = $[7];\n+                        t3 = $[8];\n+                    }\n+                    React.useEffect(t2, t3);\n                 }\n                 const AUTO_COMPLETE_AFTER_KEY = /^[a-zA-Z0-9_@(]$/;\n                 const STORAGE_KEY_QUERY = \"query\";\n                 const STORAGE_KEY_OPERATION_NAME = \"operationName\";\n \n                 function getDefaultTabState({\n                     defaultQuery,\n@@ -77512,334 +86033,618 @@\n                         const parsedTabs = JSON.parse(persistedTabs);\n                         storage == null ? void 0 : storage.set(STORAGE_KEY$2, JSON.stringify(parsedTabs, (key, value) => key === \"headers\" ? null : value));\n                     }\n                 }\n                 const DEFAULT_TITLE = \"<untitled>\";\n                 const STORAGE_KEY$2 = \"tabState\";\n \n-                function useVariableEditor({\n-                    editorTheme = DEFAULT_EDITOR_THEME,\n-                    keyMap = DEFAULT_KEY_MAP,\n-                    onClickReference,\n-                    onEdit,\n-                    readOnly = false\n-                } = {}, caller) {\n+                function importCodeMirrorImports$1() {\n+                    return importCodeMirror([Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror-graphql/esm/variables/hint.js */ \"../../codemirror-graphql/esm/variables/hint.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror-graphql/esm/variables/lint.js */ \"../../codemirror-graphql/esm/variables/lint.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror-graphql/esm/variables/mode.js */ \"../../codemirror-graphql/esm/variables/mode.js\")))]);\n+                }\n+                const _useVariableEditor = useVariableEditor;\n+\n+                function useVariableEditor(t0, caller) {\n+                    const $ = reactCompilerRuntime.c(17);\n+                    let t1;\n+                    if ($[0] !== t0) {\n+                        t1 = t0 === void 0 ? {} : t0;\n+                        $[0] = t0;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    const {\n+                        editorTheme: t2,\n+                        keyMap: t3,\n+                        onClickReference,\n+                        onEdit,\n+                        readOnly: t4\n+                    } = t1;\n+                    const editorTheme = t2 === void 0 ? DEFAULT_EDITOR_THEME : t2;\n+                    const keyMap = t3 === void 0 ? DEFAULT_KEY_MAP : t3;\n+                    const readOnly = t4 === void 0 ? false : t4;\n+                    const t5 = caller || _useVariableEditor;\n+                    let t6;\n+                    if ($[2] !== t5) {\n+                        t6 = {\n+                            nonNull: true,\n+                            caller: t5\n+                        };\n+                        $[2] = t5;\n+                        $[3] = t6;\n+                    } else {\n+                        t6 = $[3];\n+                    }\n                     const {\n                         initialVariables,\n                         variableEditor,\n                         setVariableEditor\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller: caller || useVariableEditor\n-                    });\n+                    } = useEditorContext(t6);\n                     const executionContext = useExecutionContext();\n-                    const merge = useMergeQuery({\n-                        caller: caller || useVariableEditor\n-                    });\n-                    const prettify = usePrettifyEditors({\n-                        caller: caller || useVariableEditor\n-                    });\n+                    const t7 = caller || _useVariableEditor;\n+                    let t8;\n+                    if ($[4] !== t7) {\n+                        t8 = {\n+                            caller: t7\n+                        };\n+                        $[4] = t7;\n+                        $[5] = t8;\n+                    } else {\n+                        t8 = $[5];\n+                    }\n+                    const merge = useMergeQuery(t8);\n+                    const t9 = caller || _useVariableEditor;\n+                    let t10;\n+                    if ($[6] !== t9) {\n+                        t10 = {\n+                            caller: t9\n+                        };\n+                        $[6] = t9;\n+                        $[7] = t10;\n+                    } else {\n+                        t10 = $[7];\n+                    }\n+                    const prettify = usePrettifyEditors(t10);\n                     const ref = React.useRef(null);\n                     const codeMirrorRef = React.useRef();\n-                    React.useEffect(() => {\n-                        let isActive = true;\n-                        void importCodeMirror([Promise.resolve().then(() => __webpack_require__( /*! ./hint.cjs2.js */ \"../../graphiql-react/dist/hint.cjs2.js\")), Promise.resolve().then(() => __webpack_require__( /*! ./lint.cjs3.js */ \"../../graphiql-react/dist/lint.cjs3.js\")), Promise.resolve().then(() => __webpack_require__( /*! ./mode.cjs2.js */ \"../../graphiql-react/dist/mode.cjs2.js\"))]).then(CodeMirror => {\n-                            if (!isActive) {\n-                                return;\n-                            }\n-                            codeMirrorRef.current = CodeMirror;\n-                            const container = ref.current;\n-                            if (!container) {\n-                                return;\n-                            }\n-                            const newEditor = CodeMirror(container, {\n-                                value: initialVariables,\n-                                lineNumbers: true,\n-                                tabSize: 2,\n-                                mode: \"graphql-variables\",\n-                                theme: editorTheme,\n-                                autoCloseBrackets: true,\n-                                matchBrackets: true,\n-                                showCursorWhenSelecting: true,\n-                                readOnly: readOnly ? \"nocursor\" : false,\n-                                foldGutter: true,\n-                                lint: {\n-                                    // @ts-expect-error\n-                                    variableToType: void 0\n-                                },\n-                                hintOptions: {\n-                                    closeOnUnfocus: false,\n-                                    completeSingle: false,\n-                                    container,\n-                                    // @ts-expect-error\n-                                    variableToType: void 0\n-                                },\n-                                gutters: [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n-                                extraKeys: commonKeys\n-                            });\n-                            newEditor.addKeyMap({\n-                                \"Cmd-Space\"() {\n-                                    newEditor.showHint({\n-                                        completeSingle: false,\n-                                        container\n-                                    });\n-                                },\n-                                \"Ctrl-Space\"() {\n-                                    newEditor.showHint({\n-                                        completeSingle: false,\n-                                        container\n-                                    });\n-                                },\n-                                \"Alt-Space\"() {\n-                                    newEditor.showHint({\n-                                        completeSingle: false,\n-                                        container\n-                                    });\n-                                },\n-                                \"Shift-Space\"() {\n-                                    newEditor.showHint({\n-                                        completeSingle: false,\n-                                        container\n-                                    });\n+                    let t11;\n+                    let t12;\n+                    if ($[8] !== editorTheme || $[9] !== initialVariables || $[10] !== readOnly || $[11] !== setVariableEditor) {\n+                        t11 = () => {\n+                            let isActive;\n+                            isActive = true;\n+                            importCodeMirrorImports$1().then(CodeMirror => {\n+                                if (!isActive) {\n+                                    return;\n                                 }\n-                            });\n-                            newEditor.on(\"keyup\", (editorInstance, event) => {\n-                                const {\n-                                    code,\n-                                    key,\n-                                    shiftKey\n-                                } = event;\n-                                const isLetter = code.startsWith(\"Key\");\n-                                const isNumber = !shiftKey && code.startsWith(\"Digit\");\n-                                if (isLetter || isNumber || key === \"_\" || key === '\"') {\n-                                    editorInstance.execCommand(\"autocomplete\");\n+                                codeMirrorRef.current = CodeMirror;\n+                                const container = ref.current;\n+                                if (!container) {\n+                                    return;\n                                 }\n+                                const newEditor = CodeMirror(container, {\n+                                    value: initialVariables,\n+                                    lineNumbers: true,\n+                                    tabSize: 2,\n+                                    mode: \"graphql-variables\",\n+                                    theme: editorTheme,\n+                                    autoCloseBrackets: true,\n+                                    matchBrackets: true,\n+                                    showCursorWhenSelecting: true,\n+                                    readOnly: readOnly ? \"nocursor\" : false,\n+                                    foldGutter: true,\n+                                    lint: {\n+                                        variableToType: void 0\n+                                    },\n+                                    hintOptions: {\n+                                        closeOnUnfocus: false,\n+                                        completeSingle: false,\n+                                        container,\n+                                        variableToType: void 0\n+                                    },\n+                                    gutters: [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n+                                    extraKeys: commonKeys\n+                                });\n+                                newEditor.addKeyMap({\n+                                    \"Cmd-Space\"() {\n+                                        newEditor.showHint({\n+                                            completeSingle: false,\n+                                            container\n+                                        });\n+                                    },\n+                                    \"Ctrl-Space\"() {\n+                                        newEditor.showHint({\n+                                            completeSingle: false,\n+                                            container\n+                                        });\n+                                    },\n+                                    \"Alt-Space\"() {\n+                                        newEditor.showHint({\n+                                            completeSingle: false,\n+                                            container\n+                                        });\n+                                    },\n+                                    \"Shift-Space\"() {\n+                                        newEditor.showHint({\n+                                            completeSingle: false,\n+                                            container\n+                                        });\n+                                    }\n+                                });\n+                                newEditor.on(\"keyup\", _temp);\n+                                setVariableEditor(newEditor);\n                             });\n-                            setVariableEditor(newEditor);\n-                        });\n-                        return () => {\n-                            isActive = false;\n+                            return () => {\n+                                isActive = false;\n+                            };\n                         };\n-                    }, [editorTheme, initialVariables, readOnly, setVariableEditor]);\n+                        t12 = [editorTheme, initialVariables, readOnly, setVariableEditor];\n+                        $[8] = editorTheme;\n+                        $[9] = initialVariables;\n+                        $[10] = readOnly;\n+                        $[11] = setVariableEditor;\n+                        $[12] = t11;\n+                        $[13] = t12;\n+                    } else {\n+                        t11 = $[12];\n+                        t12 = $[13];\n+                    }\n+                    React.useEffect(t11, t12);\n                     useSynchronizeOption(variableEditor, \"keyMap\", keyMap);\n-                    useChangeHandler(variableEditor, onEdit, STORAGE_KEY$1, \"variables\", useVariableEditor);\n-                    useCompletion(variableEditor, onClickReference || null, useVariableEditor);\n-                    useKeyMap(variableEditor, [\"Cmd-Enter\", \"Ctrl-Enter\"], executionContext == null ? void 0 : executionContext.run);\n-                    useKeyMap(variableEditor, [\"Shift-Ctrl-P\"], prettify);\n-                    useKeyMap(variableEditor, [\"Shift-Ctrl-M\"], merge);\n+                    useChangeHandler(variableEditor, onEdit, STORAGE_KEY$1, \"variables\", _useVariableEditor);\n+                    useCompletion(variableEditor, onClickReference || null, _useVariableEditor);\n+                    let t13;\n+                    if ($[14] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t13 = [\"Cmd-Enter\", \"Ctrl-Enter\"];\n+                        $[14] = t13;\n+                    } else {\n+                        t13 = $[14];\n+                    }\n+                    useKeyMap(variableEditor, t13, executionContext == null ? void 0 : executionContext.run);\n+                    let t14;\n+                    if ($[15] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t14 = [\"Shift-Ctrl-P\"];\n+                        $[15] = t14;\n+                    } else {\n+                        t14 = $[15];\n+                    }\n+                    useKeyMap(variableEditor, t14, prettify);\n+                    let t15;\n+                    if ($[16] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t15 = [\"Shift-Ctrl-M\"];\n+                        $[16] = t15;\n+                    } else {\n+                        t15 = $[16];\n+                    }\n+                    useKeyMap(variableEditor, t15, merge);\n                     return ref;\n                 }\n+\n+                function _temp(editorInstance, event) {\n+                    const {\n+                        code,\n+                        key,\n+                        shiftKey\n+                    } = event;\n+                    const isLetter = code.startsWith(\"Key\");\n+                    const isNumber = !shiftKey && code.startsWith(\"Digit\");\n+                    if (isLetter || isNumber || key === \"_\" || key === '\"') {\n+                        editorInstance.execCommand(\"autocomplete\");\n+                    }\n+                }\n                 const STORAGE_KEY$1 = \"variables\";\n                 const EditorContext = createNullableContext(\"EditorContext\");\n \n                 function EditorContextProvider(props) {\n+                    const $ = reactCompilerRuntime.c(89);\n                     const storage = useStorageContext();\n                     const [headerEditor, setHeaderEditor] = React.useState(null);\n                     const [queryEditor, setQueryEditor] = React.useState(null);\n                     const [responseEditor, setResponseEditor] = React.useState(null);\n                     const [variableEditor, setVariableEditor] = React.useState(null);\n-                    const [shouldPersistHeaders, setShouldPersistHeadersInternal] = React.useState(() => {\n-                        const isStored = (storage == null ? void 0 : storage.get(PERSIST_HEADERS_STORAGE_KEY)) !== null;\n-                        return props.shouldPersistHeaders !== false && isStored ? (storage == null ? void 0 : storage.get(PERSIST_HEADERS_STORAGE_KEY)) === \"true\" : Boolean(props.shouldPersistHeaders);\n-                    });\n+                    let t0;\n+                    if ($[0] !== props.shouldPersistHeaders || $[1] !== storage) {\n+                        t0 = () => {\n+                            const isStored = (storage == null ? void 0 : storage.get(PERSIST_HEADERS_STORAGE_KEY)) !== null;\n+                            return props.shouldPersistHeaders !== false && isStored ? (storage == null ? void 0 : storage.get(PERSIST_HEADERS_STORAGE_KEY)) === \"true\" : Boolean(props.shouldPersistHeaders);\n+                        };\n+                        $[0] = props.shouldPersistHeaders;\n+                        $[1] = storage;\n+                        $[2] = t0;\n+                    } else {\n+                        t0 = $[2];\n+                    }\n+                    const [shouldPersistHeaders, setShouldPersistHeadersInternal] = React.useState(t0);\n                     useSynchronizeValue(headerEditor, props.headers);\n                     useSynchronizeValue(queryEditor, props.query);\n                     useSynchronizeValue(responseEditor, props.response);\n                     useSynchronizeValue(variableEditor, props.variables);\n-                    const storeTabs = useStoreTabs({\n-                        storage,\n-                        shouldPersistHeaders\n-                    });\n-                    const [initialState] = React.useState(() => {\n-                        var _ref13, _props$query, _ref14, _props$variables, _ref15, _props$headers, _props$response, _ref16, _ref17;\n-                        const query = (_ref13 = (_props$query = props.query) !== null && _props$query !== void 0 ? _props$query : storage == null ? void 0 : storage.get(STORAGE_KEY_QUERY)) !== null && _ref13 !== void 0 ? _ref13 : null;\n-                        const variables = (_ref14 = (_props$variables = props.variables) !== null && _props$variables !== void 0 ? _props$variables : storage == null ? void 0 : storage.get(STORAGE_KEY$1)) !== null && _ref14 !== void 0 ? _ref14 : null;\n-                        const headers = (_ref15 = (_props$headers = props.headers) !== null && _props$headers !== void 0 ? _props$headers : storage == null ? void 0 : storage.get(STORAGE_KEY$3)) !== null && _ref15 !== void 0 ? _ref15 : null;\n-                        const response = (_props$response = props.response) !== null && _props$response !== void 0 ? _props$response : \"\";\n-                        const tabState2 = getDefaultTabState({\n-                            query,\n-                            variables,\n-                            headers,\n-                            defaultTabs: props.defaultTabs,\n-                            defaultQuery: props.defaultQuery || DEFAULT_QUERY,\n-                            defaultHeaders: props.defaultHeaders,\n+                    let t1;\n+                    if ($[3] !== shouldPersistHeaders || $[4] !== storage) {\n+                        t1 = {\n                             storage,\n                             shouldPersistHeaders\n-                        });\n-                        storeTabs(tabState2);\n-                        return {\n-                            query: (_ref16 = query !== null && query !== void 0 ? query : tabState2.activeTabIndex === 0 ? tabState2.tabs[0].query : null) !== null && _ref16 !== void 0 ? _ref16 : \"\",\n-                            variables: variables !== null && variables !== void 0 ? variables : \"\",\n-                            headers: (_ref17 = headers !== null && headers !== void 0 ? headers : props.defaultHeaders) !== null && _ref17 !== void 0 ? _ref17 : \"\",\n-                            response,\n-                            tabState: tabState2\n                         };\n-                    });\n-                    const [tabState, setTabState] = React.useState(initialState.tabState);\n-                    const setShouldPersistHeaders = React.useCallback(persist => {\n-                        if (persist) {\n-                            var _ref18;\n-                            storage == null ? void 0 : storage.set(STORAGE_KEY$3, (_ref18 = headerEditor == null ? void 0 : headerEditor.getValue()) !== null && _ref18 !== void 0 ? _ref18 : \"\");\n-                            const serializedTabs = serializeTabState(tabState, true);\n-                            storage == null ? void 0 : storage.set(STORAGE_KEY$2, serializedTabs);\n-                        } else {\n-                            storage == null ? void 0 : storage.set(STORAGE_KEY$3, \"\");\n-                            clearHeadersFromTabs(storage);\n-                        }\n-                        setShouldPersistHeadersInternal(persist);\n-                        storage == null ? void 0 : storage.set(PERSIST_HEADERS_STORAGE_KEY, persist.toString());\n-                    }, [storage, tabState, headerEditor]);\n+                        $[3] = shouldPersistHeaders;\n+                        $[4] = storage;\n+                        $[5] = t1;\n+                    } else {\n+                        t1 = $[5];\n+                    }\n+                    const storeTabs = useStoreTabs(t1);\n+                    let t2;\n+                    if ($[6] !== props.defaultHeaders || $[7] !== props.defaultQuery || $[8] !== props.defaultTabs || $[9] !== props.headers || $[10] !== props.query || $[11] !== props.response || $[12] !== props.variables || $[13] !== shouldPersistHeaders || $[14] !== storage || $[15] !== storeTabs) {\n+                        t2 = () => {\n+                            var _ref13, _props$query, _ref14, _props$variables, _ref15, _props$headers, _props$response, _ref16, _ref17;\n+                            const query = (_ref13 = (_props$query = props.query) !== null && _props$query !== void 0 ? _props$query : storage == null ? void 0 : storage.get(STORAGE_KEY_QUERY)) !== null && _ref13 !== void 0 ? _ref13 : null;\n+                            const variables = (_ref14 = (_props$variables = props.variables) !== null && _props$variables !== void 0 ? _props$variables : storage == null ? void 0 : storage.get(STORAGE_KEY$1)) !== null && _ref14 !== void 0 ? _ref14 : null;\n+                            const headers = (_ref15 = (_props$headers = props.headers) !== null && _props$headers !== void 0 ? _props$headers : storage == null ? void 0 : storage.get(STORAGE_KEY$3)) !== null && _ref15 !== void 0 ? _ref15 : null;\n+                            const response = (_props$response = props.response) !== null && _props$response !== void 0 ? _props$response : \"\";\n+                            const tabState = getDefaultTabState({\n+                                query,\n+                                variables,\n+                                headers,\n+                                defaultTabs: props.defaultTabs,\n+                                defaultQuery: props.defaultQuery || DEFAULT_QUERY,\n+                                defaultHeaders: props.defaultHeaders,\n+                                storage,\n+                                shouldPersistHeaders\n+                            });\n+                            storeTabs(tabState);\n+                            return {\n+                                query: (_ref16 = query !== null && query !== void 0 ? query : tabState.activeTabIndex === 0 ? tabState.tabs[0].query : null) !== null && _ref16 !== void 0 ? _ref16 : \"\",\n+                                variables: variables !== null && variables !== void 0 ? variables : \"\",\n+                                headers: (_ref17 = headers !== null && headers !== void 0 ? headers : props.defaultHeaders) !== null && _ref17 !== void 0 ? _ref17 : \"\",\n+                                response,\n+                                tabState\n+                            };\n+                        };\n+                        $[6] = props.defaultHeaders;\n+                        $[7] = props.defaultQuery;\n+                        $[8] = props.defaultTabs;\n+                        $[9] = props.headers;\n+                        $[10] = props.query;\n+                        $[11] = props.response;\n+                        $[12] = props.variables;\n+                        $[13] = shouldPersistHeaders;\n+                        $[14] = storage;\n+                        $[15] = storeTabs;\n+                        $[16] = t2;\n+                    } else {\n+                        t2 = $[16];\n+                    }\n+                    const [initialState] = React.useState(t2);\n+                    const [tabState_0, setTabState] = React.useState(initialState.tabState);\n+                    let t3;\n+                    if ($[17] !== headerEditor || $[18] !== storage || $[19] !== tabState_0) {\n+                        t3 = persist => {\n+                            if (persist) {\n+                                var _ref18;\n+                                storage == null ? void 0 : storage.set(STORAGE_KEY$3, (_ref18 = headerEditor == null ? void 0 : headerEditor.getValue()) !== null && _ref18 !== void 0 ? _ref18 : \"\");\n+                                const serializedTabs = serializeTabState(tabState_0, true);\n+                                storage == null ? void 0 : storage.set(STORAGE_KEY$2, serializedTabs);\n+                            } else {\n+                                storage == null ? void 0 : storage.set(STORAGE_KEY$3, \"\");\n+                                clearHeadersFromTabs(storage);\n+                            }\n+                            setShouldPersistHeadersInternal(persist);\n+                            storage == null ? void 0 : storage.set(PERSIST_HEADERS_STORAGE_KEY, persist.toString());\n+                        };\n+                        $[17] = headerEditor;\n+                        $[18] = storage;\n+                        $[19] = tabState_0;\n+                        $[20] = t3;\n+                    } else {\n+                        t3 = $[20];\n+                    }\n+                    const setShouldPersistHeaders = t3;\n                     const lastShouldPersistHeadersProp = React.useRef();\n-                    React.useEffect(() => {\n-                        const propValue = Boolean(props.shouldPersistHeaders);\n-                        if ((lastShouldPersistHeadersProp == null ? void 0 : lastShouldPersistHeadersProp.current) !== propValue) {\n-                            setShouldPersistHeaders(propValue);\n-                            lastShouldPersistHeadersProp.current = propValue;\n-                        }\n-                    }, [props.shouldPersistHeaders, setShouldPersistHeaders]);\n-                    const synchronizeActiveTabValues = useSynchronizeActiveTabValues({\n-                        queryEditor,\n-                        variableEditor,\n-                        headerEditor,\n-                        responseEditor\n-                    });\n+                    let t4;\n+                    let t5;\n+                    if ($[21] !== props.shouldPersistHeaders || $[22] !== setShouldPersistHeaders) {\n+                        t4 = () => {\n+                            const propValue = Boolean(props.shouldPersistHeaders);\n+                            if ((lastShouldPersistHeadersProp == null ? void 0 : lastShouldPersistHeadersProp.current) !== propValue) {\n+                                setShouldPersistHeaders(propValue);\n+                                lastShouldPersistHeadersProp.current = propValue;\n+                            }\n+                        };\n+                        t5 = [props.shouldPersistHeaders, setShouldPersistHeaders];\n+                        $[21] = props.shouldPersistHeaders;\n+                        $[22] = setShouldPersistHeaders;\n+                        $[23] = t4;\n+                        $[24] = t5;\n+                    } else {\n+                        t4 = $[23];\n+                        t5 = $[24];\n+                    }\n+                    React.useEffect(t4, t5);\n+                    let t6;\n+                    if ($[25] !== headerEditor || $[26] !== queryEditor || $[27] !== responseEditor || $[28] !== variableEditor) {\n+                        t6 = {\n+                            queryEditor,\n+                            variableEditor,\n+                            headerEditor,\n+                            responseEditor\n+                        };\n+                        $[25] = headerEditor;\n+                        $[26] = queryEditor;\n+                        $[27] = responseEditor;\n+                        $[28] = variableEditor;\n+                        $[29] = t6;\n+                    } else {\n+                        t6 = $[29];\n+                    }\n+                    const synchronizeActiveTabValues = useSynchronizeActiveTabValues(t6);\n                     const {\n                         onTabChange,\n                         defaultHeaders,\n                         defaultQuery,\n                         children\n                     } = props;\n-                    const setEditorValues = useSetEditorValues({\n-                        queryEditor,\n-                        variableEditor,\n-                        headerEditor,\n-                        responseEditor,\n-                        defaultHeaders\n-                    });\n-                    const addTab = React.useCallback(() => {\n-                        setTabState(current => {\n-                            const updatedValues = synchronizeActiveTabValues(current);\n-                            const updated = {\n-                                tabs: [...updatedValues.tabs, createTab({\n-                                    headers: defaultHeaders,\n-                                    query: defaultQuery !== null && defaultQuery !== void 0 ? defaultQuery : DEFAULT_QUERY\n-                                })],\n-                                activeTabIndex: updatedValues.tabs.length\n-                            };\n-                            storeTabs(updated);\n-                            setEditorValues(updated.tabs[updated.activeTabIndex]);\n-                            onTabChange == null ? void 0 : onTabChange(updated);\n-                            return updated;\n-                        });\n-                    }, [defaultHeaders, defaultQuery, onTabChange, setEditorValues, storeTabs, synchronizeActiveTabValues]);\n-                    const changeTab = React.useCallback(index => {\n-                        setTabState(current => {\n-                            const updated = {\n-                                ...current,\n-                                activeTabIndex: index\n-                            };\n-                            storeTabs(updated);\n-                            setEditorValues(updated.tabs[updated.activeTabIndex]);\n-                            onTabChange == null ? void 0 : onTabChange(updated);\n-                            return updated;\n-                        });\n-                    }, [onTabChange, setEditorValues, storeTabs]);\n-                    const moveTab = React.useCallback(newOrder => {\n-                        setTabState(current => {\n-                            const activeTab = current.tabs[current.activeTabIndex];\n-                            const updated = {\n-                                tabs: newOrder,\n-                                activeTabIndex: newOrder.indexOf(activeTab)\n-                            };\n-                            storeTabs(updated);\n-                            setEditorValues(updated.tabs[updated.activeTabIndex]);\n-                            onTabChange == null ? void 0 : onTabChange(updated);\n-                            return updated;\n-                        });\n-                    }, [onTabChange, setEditorValues, storeTabs]);\n-                    const closeTab = React.useCallback(index => {\n-                        setTabState(current => {\n-                            const updated = {\n-                                tabs: current.tabs.filter((_tab, i) => index !== i),\n-                                activeTabIndex: Math.max(current.activeTabIndex - 1, 0)\n-                            };\n-                            storeTabs(updated);\n-                            setEditorValues(updated.tabs[updated.activeTabIndex]);\n-                            onTabChange == null ? void 0 : onTabChange(updated);\n-                            return updated;\n-                        });\n-                    }, [onTabChange, setEditorValues, storeTabs]);\n-                    const updateActiveTabValues = React.useCallback(partialTab => {\n-                        setTabState(current => {\n-                            const updated = setPropertiesInActiveTab(current, partialTab);\n-                            storeTabs(updated);\n-                            onTabChange == null ? void 0 : onTabChange(updated);\n-                            return updated;\n-                        });\n-                    }, [onTabChange, storeTabs]);\n+                    let t7;\n+                    if ($[30] !== defaultHeaders || $[31] !== headerEditor || $[32] !== queryEditor || $[33] !== responseEditor || $[34] !== variableEditor) {\n+                        t7 = {\n+                            queryEditor,\n+                            variableEditor,\n+                            headerEditor,\n+                            responseEditor,\n+                            defaultHeaders\n+                        };\n+                        $[30] = defaultHeaders;\n+                        $[31] = headerEditor;\n+                        $[32] = queryEditor;\n+                        $[33] = responseEditor;\n+                        $[34] = variableEditor;\n+                        $[35] = t7;\n+                    } else {\n+                        t7 = $[35];\n+                    }\n+                    const setEditorValues = useSetEditorValues(t7);\n+                    let t8;\n+                    if ($[36] !== defaultHeaders || $[37] !== defaultQuery || $[38] !== onTabChange || $[39] !== setEditorValues || $[40] !== storeTabs || $[41] !== synchronizeActiveTabValues) {\n+                        t8 = () => {\n+                            setTabState(current => {\n+                                const updatedValues = synchronizeActiveTabValues(current);\n+                                const updated = {\n+                                    tabs: [...updatedValues.tabs, createTab({\n+                                        headers: defaultHeaders,\n+                                        query: defaultQuery !== null && defaultQuery !== void 0 ? defaultQuery : DEFAULT_QUERY\n+                                    })],\n+                                    activeTabIndex: updatedValues.tabs.length\n+                                };\n+                                storeTabs(updated);\n+                                setEditorValues(updated.tabs[updated.activeTabIndex]);\n+                                onTabChange == null ? void 0 : onTabChange(updated);\n+                                return updated;\n+                            });\n+                        };\n+                        $[36] = defaultHeaders;\n+                        $[37] = defaultQuery;\n+                        $[38] = onTabChange;\n+                        $[39] = setEditorValues;\n+                        $[40] = storeTabs;\n+                        $[41] = synchronizeActiveTabValues;\n+                        $[42] = t8;\n+                    } else {\n+                        t8 = $[42];\n+                    }\n+                    const addTab = t8;\n+                    let t9;\n+                    if ($[43] !== onTabChange || $[44] !== setEditorValues || $[45] !== storeTabs) {\n+                        t9 = index => {\n+                            setTabState(current_0 => {\n+                                const updated_0 = {\n+                                    ...current_0,\n+                                    activeTabIndex: index\n+                                };\n+                                storeTabs(updated_0);\n+                                setEditorValues(updated_0.tabs[updated_0.activeTabIndex]);\n+                                onTabChange == null ? void 0 : onTabChange(updated_0);\n+                                return updated_0;\n+                            });\n+                        };\n+                        $[43] = onTabChange;\n+                        $[44] = setEditorValues;\n+                        $[45] = storeTabs;\n+                        $[46] = t9;\n+                    } else {\n+                        t9 = $[46];\n+                    }\n+                    const changeTab = t9;\n+                    let t10;\n+                    if ($[47] !== onTabChange || $[48] !== setEditorValues || $[49] !== storeTabs) {\n+                        t10 = newOrder => {\n+                            setTabState(current_1 => {\n+                                const activeTab = current_1.tabs[current_1.activeTabIndex];\n+                                const updated_1 = {\n+                                    tabs: newOrder,\n+                                    activeTabIndex: newOrder.indexOf(activeTab)\n+                                };\n+                                storeTabs(updated_1);\n+                                setEditorValues(updated_1.tabs[updated_1.activeTabIndex]);\n+                                onTabChange == null ? void 0 : onTabChange(updated_1);\n+                                return updated_1;\n+                            });\n+                        };\n+                        $[47] = onTabChange;\n+                        $[48] = setEditorValues;\n+                        $[49] = storeTabs;\n+                        $[50] = t10;\n+                    } else {\n+                        t10 = $[50];\n+                    }\n+                    const moveTab = t10;\n+                    let t11;\n+                    if ($[51] !== onTabChange || $[52] !== setEditorValues || $[53] !== storeTabs) {\n+                        t11 = index_0 => {\n+                            setTabState(current_2 => {\n+                                const updated_2 = {\n+                                    tabs: current_2.tabs.filter((_tab, i) => index_0 !== i),\n+                                    activeTabIndex: Math.max(current_2.activeTabIndex - 1, 0)\n+                                };\n+                                storeTabs(updated_2);\n+                                setEditorValues(updated_2.tabs[updated_2.activeTabIndex]);\n+                                onTabChange == null ? void 0 : onTabChange(updated_2);\n+                                return updated_2;\n+                            });\n+                        };\n+                        $[51] = onTabChange;\n+                        $[52] = setEditorValues;\n+                        $[53] = storeTabs;\n+                        $[54] = t11;\n+                    } else {\n+                        t11 = $[54];\n+                    }\n+                    const closeTab = t11;\n+                    let t12;\n+                    if ($[55] !== onTabChange || $[56] !== storeTabs) {\n+                        t12 = partialTab => {\n+                            setTabState(current_3 => {\n+                                const updated_3 = setPropertiesInActiveTab(current_3, partialTab);\n+                                storeTabs(updated_3);\n+                                onTabChange == null ? void 0 : onTabChange(updated_3);\n+                                return updated_3;\n+                            });\n+                        };\n+                        $[55] = onTabChange;\n+                        $[56] = storeTabs;\n+                        $[57] = t12;\n+                    } else {\n+                        t12 = $[57];\n+                    }\n+                    const updateActiveTabValues = t12;\n                     const {\n                         onEditOperationName\n                     } = props;\n-                    const setOperationName = React.useCallback(operationName => {\n-                        if (!queryEditor) {\n-                            return;\n-                        }\n-                        queryEditor.operationName = operationName;\n-                        updateActiveTabValues({\n-                            operationName\n-                        });\n-                        onEditOperationName == null ? void 0 : onEditOperationName(operationName);\n-                    }, [onEditOperationName, queryEditor, updateActiveTabValues]);\n-                    const externalFragments = React.useMemo(() => {\n-                        const map = /* @__PURE__ */ new Map();\n+                    let t13;\n+                    if ($[58] !== onEditOperationName || $[59] !== queryEditor || $[60] !== updateActiveTabValues) {\n+                        t13 = operationName => {\n+                            if (!queryEditor) {\n+                                return;\n+                            }\n+                            updateQueryEditor(queryEditor, operationName);\n+                            updateActiveTabValues({\n+                                operationName\n+                            });\n+                            onEditOperationName == null ? void 0 : onEditOperationName(operationName);\n+                        };\n+                        $[58] = onEditOperationName;\n+                        $[59] = queryEditor;\n+                        $[60] = updateActiveTabValues;\n+                        $[61] = t13;\n+                    } else {\n+                        t13 = $[61];\n+                    }\n+                    const setOperationName = t13;\n+                    let t14;\n+                    let map;\n+                    if ($[62] !== props.externalFragments) {\n+                        map = /* @__PURE__ */ new Map();\n                         if (Array.isArray(props.externalFragments)) {\n                             for (const fragment of props.externalFragments) {\n                                 map.set(fragment.name.value, fragment);\n                             }\n-                        } else if (typeof props.externalFragments === \"string\") {\n-                            graphql.visit(graphql.parse(props.externalFragments, {}), {\n-                                FragmentDefinition(fragment) {\n-                                    map.set(fragment.name.value, fragment);\n-                                }\n-                            });\n-                        } else if (props.externalFragments) {\n-                            throw new Error(\"The `externalFragments` prop must either be a string that contains the fragment definitions in SDL or a list of FragmentDefinitionNode objects.\");\n-                        }\n-                        return map;\n-                    }, [props.externalFragments]);\n-                    const validationRules = React.useMemo(() => props.validationRules || [], [props.validationRules]);\n-                    const value = React.useMemo(() => ({\n-                        ...tabState,\n-                        addTab,\n-                        changeTab,\n-                        moveTab,\n-                        closeTab,\n-                        updateActiveTabValues,\n-                        headerEditor,\n-                        queryEditor,\n-                        responseEditor,\n-                        variableEditor,\n-                        setHeaderEditor,\n-                        setQueryEditor,\n-                        setResponseEditor,\n-                        setVariableEditor,\n-                        setOperationName,\n-                        initialQuery: initialState.query,\n-                        initialVariables: initialState.variables,\n-                        initialHeaders: initialState.headers,\n-                        initialResponse: initialState.response,\n-                        externalFragments,\n-                        validationRules,\n-                        shouldPersistHeaders,\n-                        setShouldPersistHeaders\n-                    }), [tabState, addTab, changeTab, moveTab, closeTab, updateActiveTabValues, headerEditor, queryEditor, responseEditor, variableEditor, setOperationName, initialState, externalFragments, validationRules, shouldPersistHeaders, setShouldPersistHeaders]);\n-                    return /* @__PURE__ */ jsxRuntime.jsx(EditorContext.Provider, {\n-                        value,\n-                        children\n-                    });\n+                        } else {\n+                            if (typeof props.externalFragments === \"string\") {\n+                                graphql.visit(graphql.parse(props.externalFragments, {}), {\n+                                    FragmentDefinition(fragment_0) {\n+                                        map.set(fragment_0.name.value, fragment_0);\n+                                    }\n+                                });\n+                            } else {\n+                                if (props.externalFragments) {\n+                                    throw new Error(\"The `externalFragments` prop must either be a string that contains the fragment definitions in SDL or a list of FragmentDefinitionNode objects.\");\n+                                }\n+                            }\n+                        }\n+                        $[62] = props.externalFragments;\n+                        $[63] = map;\n+                    } else {\n+                        map = $[63];\n+                    }\n+                    t14 = map;\n+                    const externalFragments = t14;\n+                    let t15;\n+                    if ($[64] !== props.validationRules) {\n+                        t15 = props.validationRules || [];\n+                        $[64] = props.validationRules;\n+                        $[65] = t15;\n+                    } else {\n+                        t15 = $[65];\n+                    }\n+                    const validationRules = t15;\n+                    let t16;\n+                    if ($[66] !== addTab || $[67] !== changeTab || $[68] !== closeTab || $[69] !== externalFragments || $[70] !== headerEditor || $[71] !== initialState.headers || $[72] !== initialState.query || $[73] !== initialState.response || $[74] !== initialState.variables || $[75] !== moveTab || $[76] !== queryEditor || $[77] !== responseEditor || $[78] !== setOperationName || $[79] !== setShouldPersistHeaders || $[80] !== shouldPersistHeaders || $[81] !== tabState_0 || $[82] !== updateActiveTabValues || $[83] !== validationRules || $[84] !== variableEditor) {\n+                        t16 = {\n+                            ...tabState_0,\n+                            addTab,\n+                            changeTab,\n+                            moveTab,\n+                            closeTab,\n+                            updateActiveTabValues,\n+                            headerEditor,\n+                            queryEditor,\n+                            responseEditor,\n+                            variableEditor,\n+                            setHeaderEditor,\n+                            setQueryEditor,\n+                            setResponseEditor,\n+                            setVariableEditor,\n+                            setOperationName,\n+                            initialQuery: initialState.query,\n+                            initialVariables: initialState.variables,\n+                            initialHeaders: initialState.headers,\n+                            initialResponse: initialState.response,\n+                            externalFragments,\n+                            validationRules,\n+                            shouldPersistHeaders,\n+                            setShouldPersistHeaders\n+                        };\n+                        $[66] = addTab;\n+                        $[67] = changeTab;\n+                        $[68] = closeTab;\n+                        $[69] = externalFragments;\n+                        $[70] = headerEditor;\n+                        $[71] = initialState.headers;\n+                        $[72] = initialState.query;\n+                        $[73] = initialState.response;\n+                        $[74] = initialState.variables;\n+                        $[75] = moveTab;\n+                        $[76] = queryEditor;\n+                        $[77] = responseEditor;\n+                        $[78] = setOperationName;\n+                        $[79] = setShouldPersistHeaders;\n+                        $[80] = shouldPersistHeaders;\n+                        $[81] = tabState_0;\n+                        $[82] = updateActiveTabValues;\n+                        $[83] = validationRules;\n+                        $[84] = variableEditor;\n+                        $[85] = t16;\n+                    } else {\n+                        t16 = $[85];\n+                    }\n+                    const value = t16;\n+                    let t17;\n+                    if ($[86] !== children || $[87] !== value) {\n+                        t17 = /* @__PURE__ */ jsxRuntime.jsx(EditorContext.Provider, {\n+                            value,\n+                            children\n+                        });\n+                        $[86] = children;\n+                        $[87] = value;\n+                        $[88] = t17;\n+                    } else {\n+                        t17 = $[88];\n+                    }\n+                    return t17;\n+                }\n+\n+                function updateQueryEditor(queryEditor, operationName) {\n+                    queryEditor.operationName = operationName;\n                 }\n                 const useEditorContext = createContextHook(EditorContext);\n                 const PERSIST_HEADERS_STORAGE_KEY = \"shouldPersistHeaders\";\n                 const DEFAULT_QUERY = `# Welcome to GraphiQL\n #\n # GraphiQL is an in-browser tool for writing, validating, and\n # testing GraphQL queries.\n@@ -77868,82 +86673,186 @@\n #        Run Query:  Ctrl-Enter (or press the play button)\n #\n #    Auto Complete:  Ctrl-Space (or just start typing)\n #\n \n `;\n \n-                function HeaderEditor({\n-                    isHidden,\n-                    ...hookArgs\n-                }) {\n+                function HeaderEditor(t0) {\n+                    const $ = reactCompilerRuntime.c(13);\n+                    let hookArgs;\n+                    let isHidden;\n+                    if ($[0] !== t0) {\n+                        ({\n+                            isHidden,\n+                            ...hookArgs\n+                        } = t0);\n+                        $[0] = t0;\n+                        $[1] = hookArgs;\n+                        $[2] = isHidden;\n+                    } else {\n+                        hookArgs = $[1];\n+                        isHidden = $[2];\n+                    }\n+                    let t1;\n+                    if ($[3] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = {\n+                            nonNull: true,\n+                            caller: HeaderEditor\n+                        };\n+                        $[3] = t1;\n+                    } else {\n+                        t1 = $[3];\n+                    }\n                     const {\n                         headerEditor\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller: HeaderEditor\n-                    });\n+                    } = useEditorContext(t1);\n                     const ref = useHeaderEditor(hookArgs, HeaderEditor);\n-                    React.useEffect(() => {\n-                        if (!isHidden) {\n-                            headerEditor == null ? void 0 : headerEditor.refresh();\n-                        }\n-                    }, [headerEditor, isHidden]);\n-                    return /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                        className: clsx.clsx(\"graphiql-editor\", isHidden && \"hidden\"),\n-                        ref\n-                    });\n+                    let t2;\n+                    let t3;\n+                    if ($[4] !== headerEditor || $[5] !== isHidden) {\n+                        t2 = () => {\n+                            if (!isHidden) {\n+                                headerEditor == null ? void 0 : headerEditor.refresh();\n+                            }\n+                        };\n+                        t3 = [headerEditor, isHidden];\n+                        $[4] = headerEditor;\n+                        $[5] = isHidden;\n+                        $[6] = t2;\n+                        $[7] = t3;\n+                    } else {\n+                        t2 = $[6];\n+                        t3 = $[7];\n+                    }\n+                    React.useEffect(t2, t3);\n+                    const t4 = isHidden && \"hidden\";\n+                    let t5;\n+                    if ($[8] !== t4) {\n+                        t5 = clsx.clsx(\"graphiql-editor\", t4);\n+                        $[8] = t4;\n+                        $[9] = t5;\n+                    } else {\n+                        t5 = $[9];\n+                    }\n+                    let t6;\n+                    if ($[10] !== ref || $[11] !== t5) {\n+                        t6 = /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                            className: t5,\n+                            ref\n+                        });\n+                        $[10] = ref;\n+                        $[11] = t5;\n+                        $[12] = t6;\n+                    } else {\n+                        t6 = $[12];\n+                    }\n+                    return t6;\n                 }\n \n                 function ImagePreview(props) {\n                     var _a;\n-                    const [dimensions, setDimensions] = React.useState({\n-                        width: null,\n-                        height: null\n-                    });\n+                    const $ = reactCompilerRuntime.c(14);\n+                    let t0;\n+                    if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t0 = {\n+                            width: null,\n+                            height: null\n+                        };\n+                        $[0] = t0;\n+                    } else {\n+                        t0 = $[0];\n+                    }\n+                    const [dimensions, setDimensions] = React.useState(t0);\n                     const [mime, setMime] = React.useState(null);\n                     const ref = React.useRef(null);\n                     const src = (_a = tokenToURL(props.token)) == null ? void 0 : _a.href;\n-                    React.useEffect(() => {\n-                        if (!ref.current) {\n-                            return;\n-                        }\n-                        if (!src) {\n-                            setDimensions({\n-                                width: null,\n-                                height: null\n-                            });\n-                            setMime(null);\n-                            return;\n-                        }\n-                        fetch(src, {\n-                            method: \"HEAD\"\n-                        }).then(response => {\n-                            setMime(response.headers.get(\"Content-Type\"));\n-                        }).catch(() => {\n-                            setMime(null);\n-                        });\n-                    }, [src]);\n-                    const dims = dimensions.width !== null && dimensions.height !== null ? /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n-                        children: [dimensions.width, \"x\", dimensions.height, mime === null ? null : \" \" + mime]\n-                    }) : null;\n-                    return /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n-                        children: [ /* @__PURE__ */ jsxRuntime.jsx(\"img\", {\n-                            onLoad: () => {\n-                                var _ref19, _ref20;\n-                                var _a2, _b;\n+                    let t1;\n+                    let t2;\n+                    if ($[1] !== src) {\n+                        t1 = () => {\n+                            if (!ref.current) {\n+                                return;\n+                            }\n+                            if (!src) {\n                                 setDimensions({\n-                                    width: (_ref19 = (_a2 = ref.current) == null ? void 0 : _a2.naturalWidth) !== null && _ref19 !== void 0 ? _ref19 : null,\n-                                    height: (_ref20 = (_b = ref.current) == null ? void 0 : _b.naturalHeight) !== null && _ref20 !== void 0 ? _ref20 : null\n+                                    width: null,\n+                                    height: null\n                                 });\n-                            },\n+                                setMime(null);\n+                                return;\n+                            }\n+                            fetch(src, {\n+                                method: \"HEAD\"\n+                            }).then(response => {\n+                                setMime(response.headers.get(\"Content-Type\"));\n+                            }).catch(() => {\n+                                setMime(null);\n+                            });\n+                        };\n+                        t2 = [src];\n+                        $[1] = src;\n+                        $[2] = t1;\n+                        $[3] = t2;\n+                    } else {\n+                        t1 = $[2];\n+                        t2 = $[3];\n+                    }\n+                    React.useEffect(t1, t2);\n+                    let t3;\n+                    if ($[4] !== dimensions.height || $[5] !== dimensions.width || $[6] !== mime) {\n+                        t3 = dimensions.width !== null && dimensions.height !== null ? /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                            children: [dimensions.width, \"x\", dimensions.height, mime === null ? null : \" \" + mime]\n+                        }) : null;\n+                        $[4] = dimensions.height;\n+                        $[5] = dimensions.width;\n+                        $[6] = mime;\n+                        $[7] = t3;\n+                    } else {\n+                        t3 = $[7];\n+                    }\n+                    const dims = t3;\n+                    let t4;\n+                    if ($[8] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t4 = () => {\n+                            var _ref19, _ref20;\n+                            var _a2, _b;\n+                            setDimensions({\n+                                width: (_ref19 = (_a2 = ref.current) == null ? void 0 : _a2.naturalWidth) !== null && _ref19 !== void 0 ? _ref19 : null,\n+                                height: (_ref20 = (_b = ref.current) == null ? void 0 : _b.naturalHeight) !== null && _ref20 !== void 0 ? _ref20 : null\n+                            });\n+                        };\n+                        $[8] = t4;\n+                    } else {\n+                        t4 = $[8];\n+                    }\n+                    let t5;\n+                    if ($[9] !== src) {\n+                        t5 = /* @__PURE__ */ jsxRuntime.jsx(\"img\", {\n+                            onLoad: t4,\n                             ref,\n                             src\n-                        }), dims]\n-                    });\n+                        });\n+                        $[9] = src;\n+                        $[10] = t5;\n+                    } else {\n+                        t5 = $[10];\n+                    }\n+                    let t6;\n+                    if ($[11] !== dims || $[12] !== t5) {\n+                        t6 = /* @__PURE__ */ jsxRuntime.jsxs(\"div\", {\n+                            children: [t5, dims]\n+                        });\n+                        $[11] = dims;\n+                        $[12] = t5;\n+                        $[13] = t6;\n+                    } else {\n+                        t6 = $[13];\n+                    }\n+                    return t6;\n                 }\n                 ImagePreview.shouldRender = function shouldRender(token) {\n                     const url = tokenToURL(token);\n                     return url ? isImageURL(url) : false;\n                 };\n \n                 function tokenToURL(token) {\n@@ -77962,533 +86871,1065 @@\n                 }\n \n                 function isImageURL(url) {\n                     return /\\.(bmp|gif|jpe?g|png|svg|webp)$/.test(url.pathname);\n                 }\n \n                 function QueryEditor(props) {\n+                    const $ = reactCompilerRuntime.c(2);\n                     const ref = useQueryEditor(props, QueryEditor);\n-                    return /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                        className: \"graphiql-editor\",\n-                        ref\n+                    let t0;\n+                    if ($[0] !== ref) {\n+                        t0 = /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                            className: \"graphiql-editor\",\n+                            ref\n+                        });\n+                        $[0] = ref;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    return t0;\n+                }\n+\n+                function importCodeMirrorImports() {\n+                    return importCodeMirror([Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/fold/foldgutter.js */ \"../../../node_modules/codemirror/addon/fold/foldgutter.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/fold/brace-fold.js */ \"../../../node_modules/codemirror/addon/fold/brace-fold.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/dialog/dialog.js */ \"../../../node_modules/codemirror/addon/dialog/dialog.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/search/search.js */ \"../../../node_modules/codemirror/addon/search/search.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/search/searchcursor.js */ \"../../../node_modules/codemirror/addon/search/searchcursor.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/addon/search/jump-to-line.js */ \"../../../node_modules/codemirror/addon/search/jump-to-line.js\"))), // @ts-expect-error\n+                        Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror/keymap/sublime.js */ \"../../../node_modules/codemirror/keymap/sublime.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror-graphql/esm/results/mode.js */ \"../../codemirror-graphql/esm/results/mode.js\"))), Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! codemirror-graphql/esm/utils/info-addon.js */ \"../../codemirror-graphql/esm/utils/info-addon.js\")))\n+                    ], {\n+                        useCommonAddons: false\n                     });\n                 }\n+                const _useResponseEditor = useResponseEditor;\n \n-                function useResponseEditor({\n-                    responseTooltip,\n-                    editorTheme = DEFAULT_EDITOR_THEME,\n-                    keyMap = DEFAULT_KEY_MAP\n-                } = {}, caller) {\n+                function useResponseEditor(t0, caller) {\n+                    const $ = reactCompilerRuntime.c(19);\n+                    let t1;\n+                    if ($[0] !== t0) {\n+                        t1 = t0 === void 0 ? {} : t0;\n+                        $[0] = t0;\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n+                    const {\n+                        responseTooltip,\n+                        editorTheme: t2,\n+                        keyMap: t3\n+                    } = t1;\n+                    const editorTheme = t2 === void 0 ? DEFAULT_EDITOR_THEME : t2;\n+                    const keyMap = t3 === void 0 ? DEFAULT_KEY_MAP : t3;\n+                    const t4 = caller || _useResponseEditor;\n+                    let t5;\n+                    if ($[2] !== t4) {\n+                        t5 = {\n+                            nonNull: true,\n+                            caller: t4\n+                        };\n+                        $[2] = t4;\n+                        $[3] = t5;\n+                    } else {\n+                        t5 = $[3];\n+                    }\n                     const {\n                         fetchError,\n                         validationErrors\n-                    } = useSchemaContext({\n-                        nonNull: true,\n-                        caller: caller || useResponseEditor\n-                    });\n+                    } = useSchemaContext(t5);\n+                    const t6 = caller || _useResponseEditor;\n+                    let t7;\n+                    if ($[4] !== t6) {\n+                        t7 = {\n+                            nonNull: true,\n+                            caller: t6\n+                        };\n+                        $[4] = t6;\n+                        $[5] = t7;\n+                    } else {\n+                        t7 = $[5];\n+                    }\n                     const {\n                         initialResponse,\n                         responseEditor,\n                         setResponseEditor\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller: caller || useResponseEditor\n-                    });\n+                    } = useEditorContext(t7);\n                     const ref = React.useRef(null);\n                     const responseTooltipRef = React.useRef(responseTooltip);\n-                    React.useEffect(() => {\n-                        responseTooltipRef.current = responseTooltip;\n-                    }, [responseTooltip]);\n-                    React.useEffect(() => {\n-                        let isActive = true;\n-                        void importCodeMirror([Promise.resolve().then(() => __webpack_require__( /*! ./foldgutter.cjs.js */ \"../../graphiql-react/dist/foldgutter.cjs.js\")).then(n => n.foldgutter), Promise.resolve().then(() => __webpack_require__( /*! ./brace-fold.cjs.js */ \"../../graphiql-react/dist/brace-fold.cjs.js\")).then(n => n.braceFold), Promise.resolve().then(() => __webpack_require__( /*! ./dialog.cjs.js */ \"../../graphiql-react/dist/dialog.cjs.js\")).then(n => n.dialog), Promise.resolve().then(() => __webpack_require__( /*! ./search.cjs.js */ \"../../graphiql-react/dist/search.cjs.js\")).then(n => n.search), Promise.resolve().then(() => __webpack_require__( /*! ./searchcursor.cjs.js */ \"../../graphiql-react/dist/searchcursor.cjs.js\")).then(n => n.searchcursor), Promise.resolve().then(() => __webpack_require__( /*! ./jump-to-line.cjs.js */ \"../../graphiql-react/dist/jump-to-line.cjs.js\")).then(n => n.jumpToLine),\n-                            // @ts-expect-error\n-                            Promise.resolve().then(() => __webpack_require__( /*! ./sublime.cjs.js */ \"../../graphiql-react/dist/sublime.cjs.js\")).then(n => n.sublime), Promise.resolve().then(() => __webpack_require__( /*! ./mode.cjs3.js */ \"../../graphiql-react/dist/mode.cjs3.js\")), Promise.resolve().then(() => __webpack_require__( /*! ./info-addon.cjs.js */ \"../../graphiql-react/dist/info-addon.cjs.js\"))\n-                        ], {\n-                            useCommonAddons: false\n-                        }).then(CodeMirror => {\n-                            if (!isActive) {\n-                                return;\n-                            }\n-                            const tooltipDiv = document.createElement(\"div\");\n-                            CodeMirror.registerHelper(\"info\", \"graphql-results\", (token, _options, _cm, pos) => {\n-                                const infoElements = [];\n-                                const ResponseTooltipComponent = responseTooltipRef.current;\n-                                if (ResponseTooltipComponent) {\n-                                    infoElements.push( /* @__PURE__ */ jsxRuntime.jsx(ResponseTooltipComponent, {\n-                                        pos,\n-                                        token\n-                                    }));\n-                                }\n-                                if (ImagePreview.shouldRender(token)) {\n-                                    infoElements.push( /* @__PURE__ */ jsxRuntime.jsx(ImagePreview, {\n-                                        token\n-                                    }, \"image-preview\"));\n+                    let t8;\n+                    let t9;\n+                    if ($[6] !== responseTooltip) {\n+                        t8 = () => {\n+                            responseTooltipRef.current = responseTooltip;\n+                        };\n+                        t9 = [responseTooltip];\n+                        $[6] = responseTooltip;\n+                        $[7] = t8;\n+                        $[8] = t9;\n+                    } else {\n+                        t8 = $[7];\n+                        t9 = $[8];\n+                    }\n+                    React.useEffect(t8, t9);\n+                    let t10;\n+                    let t11;\n+                    if ($[9] !== editorTheme || $[10] !== initialResponse || $[11] !== setResponseEditor) {\n+                        t10 = () => {\n+                            let isActive;\n+                            isActive = true;\n+                            importCodeMirrorImports().then(CodeMirror => {\n+                                if (!isActive) {\n+                                    return;\n                                 }\n-                                if (!infoElements.length) {\n-                                    ReactDOM.unmountComponentAtNode(tooltipDiv);\n-                                    return null;\n+                                const tooltipDiv = document.createElement(\"div\");\n+                                CodeMirror.registerHelper(\"info\", \"graphql-results\", (token, _options, _cm, pos) => {\n+                                    const infoElements = [];\n+                                    const ResponseTooltipComponent = responseTooltipRef.current;\n+                                    if (ResponseTooltipComponent) {\n+                                        infoElements.push( /* @__PURE__ */ jsxRuntime.jsx(ResponseTooltipComponent, {\n+                                            pos,\n+                                            token\n+                                        }));\n+                                    }\n+                                    if (ImagePreview.shouldRender(token)) {\n+                                        infoElements.push( /* @__PURE__ */ jsxRuntime.jsx(ImagePreview, {\n+                                            token\n+                                        }, \"image-preview\"));\n+                                    }\n+                                    if (!infoElements.length) {\n+                                        ReactDOM.unmountComponentAtNode(tooltipDiv);\n+                                        return null;\n+                                    }\n+                                    ReactDOM.render(infoElements, tooltipDiv);\n+                                    return tooltipDiv;\n+                                });\n+                                const container = ref.current;\n+                                if (!container) {\n+                                    return;\n                                 }\n-                                ReactDOM.render(infoElements, tooltipDiv);\n-                                return tooltipDiv;\n-                            });\n-                            const container = ref.current;\n-                            if (!container) {\n-                                return;\n-                            }\n-                            const newEditor = CodeMirror(container, {\n-                                value: initialResponse,\n-                                lineWrapping: true,\n-                                readOnly: true,\n-                                theme: editorTheme,\n-                                mode: \"graphql-results\",\n-                                foldGutter: true,\n-                                gutters: [\"CodeMirror-foldgutter\"],\n-                                // @ts-expect-error\n-                                info: true,\n-                                extraKeys: commonKeys\n+                                const newEditor = CodeMirror(container, {\n+                                    value: initialResponse,\n+                                    lineWrapping: true,\n+                                    readOnly: true,\n+                                    theme: editorTheme,\n+                                    mode: \"graphql-results\",\n+                                    foldGutter: true,\n+                                    gutters: [\"CodeMirror-foldgutter\"],\n+                                    info: true,\n+                                    extraKeys: commonKeys\n+                                });\n+                                setResponseEditor(newEditor);\n                             });\n-                            setResponseEditor(newEditor);\n-                        });\n-                        return () => {\n-                            isActive = false;\n+                            return () => {\n+                                isActive = false;\n+                            };\n                         };\n-                    }, [editorTheme, initialResponse, setResponseEditor]);\n+                        t11 = [editorTheme, initialResponse, setResponseEditor];\n+                        $[9] = editorTheme;\n+                        $[10] = initialResponse;\n+                        $[11] = setResponseEditor;\n+                        $[12] = t10;\n+                        $[13] = t11;\n+                    } else {\n+                        t10 = $[12];\n+                        t11 = $[13];\n+                    }\n+                    React.useEffect(t10, t11);\n                     useSynchronizeOption(responseEditor, \"keyMap\", keyMap);\n-                    React.useEffect(() => {\n-                        if (fetchError) {\n-                            responseEditor == null ? void 0 : responseEditor.setValue(fetchError);\n-                        }\n-                        if (validationErrors.length > 0) {\n-                            responseEditor == null ? void 0 : responseEditor.setValue(toolkit.formatError(validationErrors));\n-                        }\n-                    }, [responseEditor, fetchError, validationErrors]);\n+                    let t12;\n+                    let t13;\n+                    if ($[14] !== fetchError || $[15] !== responseEditor || $[16] !== validationErrors) {\n+                        t12 = () => {\n+                            if (fetchError) {\n+                                responseEditor == null ? void 0 : responseEditor.setValue(fetchError);\n+                            }\n+                            if (validationErrors.length > 0) {\n+                                responseEditor == null ? void 0 : responseEditor.setValue(toolkit.formatError(validationErrors));\n+                            }\n+                        };\n+                        t13 = [responseEditor, fetchError, validationErrors];\n+                        $[14] = fetchError;\n+                        $[15] = responseEditor;\n+                        $[16] = validationErrors;\n+                        $[17] = t12;\n+                        $[18] = t13;\n+                    } else {\n+                        t12 = $[17];\n+                        t13 = $[18];\n+                    }\n+                    React.useEffect(t12, t13);\n                     return ref;\n                 }\n \n                 function ResponseEditor(props) {\n+                    const $ = reactCompilerRuntime.c(2);\n                     const ref = useResponseEditor(props, ResponseEditor);\n-                    return /* @__PURE__ */ jsxRuntime.jsx(\"section\", {\n-                        className: \"result-window\",\n-                        \"aria-label\": \"Result Window\",\n-                        \"aria-live\": \"polite\",\n-                        \"aria-atomic\": \"true\",\n-                        ref\n-                    });\n+                    let t0;\n+                    if ($[0] !== ref) {\n+                        t0 = /* @__PURE__ */ jsxRuntime.jsx(\"section\", {\n+                            className: \"result-window\",\n+                            \"aria-label\": \"Result Window\",\n+                            \"aria-live\": \"polite\",\n+                            \"aria-atomic\": \"true\",\n+                            ref\n+                        });\n+                        $[0] = ref;\n+                        $[1] = t0;\n+                    } else {\n+                        t0 = $[1];\n+                    }\n+                    return t0;\n                 }\n \n-                function VariableEditor({\n-                    isHidden,\n-                    ...hookArgs\n-                }) {\n+                function VariableEditor(t0) {\n+                    const $ = reactCompilerRuntime.c(13);\n+                    let hookArgs;\n+                    let isHidden;\n+                    if ($[0] !== t0) {\n+                        ({\n+                            isHidden,\n+                            ...hookArgs\n+                        } = t0);\n+                        $[0] = t0;\n+                        $[1] = hookArgs;\n+                        $[2] = isHidden;\n+                    } else {\n+                        hookArgs = $[1];\n+                        isHidden = $[2];\n+                    }\n+                    let t1;\n+                    if ($[3] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = {\n+                            nonNull: true,\n+                            caller: VariableEditor\n+                        };\n+                        $[3] = t1;\n+                    } else {\n+                        t1 = $[3];\n+                    }\n                     const {\n                         variableEditor\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller: VariableEditor\n-                    });\n+                    } = useEditorContext(t1);\n                     const ref = useVariableEditor(hookArgs, VariableEditor);\n-                    React.useEffect(() => {\n-                        if (variableEditor && !isHidden) {\n-                            variableEditor.refresh();\n-                        }\n-                    }, [variableEditor, isHidden]);\n-                    return /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n-                        className: clsx.clsx(\"graphiql-editor\", isHidden && \"hidden\"),\n-                        ref\n-                    });\n+                    let t2;\n+                    let t3;\n+                    if ($[4] !== isHidden || $[5] !== variableEditor) {\n+                        t2 = () => {\n+                            if (variableEditor && !isHidden) {\n+                                variableEditor.refresh();\n+                            }\n+                        };\n+                        t3 = [variableEditor, isHidden];\n+                        $[4] = isHidden;\n+                        $[5] = variableEditor;\n+                        $[6] = t2;\n+                        $[7] = t3;\n+                    } else {\n+                        t2 = $[6];\n+                        t3 = $[7];\n+                    }\n+                    React.useEffect(t2, t3);\n+                    const t4 = isHidden && \"hidden\";\n+                    let t5;\n+                    if ($[8] !== t4) {\n+                        t5 = clsx.clsx(\"graphiql-editor\", t4);\n+                        $[8] = t4;\n+                        $[9] = t5;\n+                    } else {\n+                        t5 = $[9];\n+                    }\n+                    let t6;\n+                    if ($[10] !== ref || $[11] !== t5) {\n+                        t6 = /* @__PURE__ */ jsxRuntime.jsx(\"div\", {\n+                            className: t5,\n+                            ref\n+                        });\n+                        $[10] = ref;\n+                        $[11] = t5;\n+                        $[12] = t6;\n+                    } else {\n+                        t6 = $[12];\n+                    }\n+                    return t6;\n                 }\n \n-                function GraphiQLProvider({\n-                    children,\n-                    dangerouslyAssumeSchemaIsValid,\n-                    defaultQuery,\n-                    defaultHeaders,\n-                    defaultTabs,\n-                    externalFragments,\n-                    fetcher,\n-                    getDefaultFieldNames,\n-                    headers,\n-                    inputValueDeprecation,\n-                    introspectionQueryName,\n-                    maxHistoryLength,\n-                    onEditOperationName,\n-                    onSchemaChange,\n-                    onTabChange,\n-                    onTogglePluginVisibility,\n-                    operationName,\n-                    plugins,\n-                    query,\n-                    response,\n-                    schema,\n-                    schemaDescription,\n-                    shouldPersistHeaders,\n-                    storage,\n-                    validationRules,\n-                    variables,\n-                    visiblePlugin\n-                }) {\n-                    return /* @__PURE__ */ jsxRuntime.jsx(StorageContextProvider, {\n+                function GraphiQLProvider(t0) {\n+                    const $ = reactCompilerRuntime.c(39);\n+                    const {\n+                        children,\n+                        dangerouslyAssumeSchemaIsValid,\n+                        defaultQuery,\n+                        defaultHeaders,\n+                        defaultTabs,\n+                        externalFragments,\n+                        fetcher,\n+                        getDefaultFieldNames,\n+                        headers,\n+                        inputValueDeprecation,\n+                        introspectionQueryName,\n+                        maxHistoryLength,\n+                        onEditOperationName,\n+                        onSchemaChange,\n+                        onTabChange,\n+                        onTogglePluginVisibility,\n+                        operationName,\n+                        plugins,\n+                        query,\n+                        response,\n+                        schema,\n+                        schemaDescription,\n+                        shouldPersistHeaders,\n                         storage,\n-                        children: /* @__PURE__ */ jsxRuntime.jsx(HistoryContextProvider, {\n-                            maxHistoryLength,\n-                            children: /* @__PURE__ */ jsxRuntime.jsx(EditorContextProvider, {\n-                                defaultQuery,\n-                                defaultHeaders,\n-                                defaultTabs,\n-                                externalFragments,\n-                                headers,\n-                                onEditOperationName,\n-                                onTabChange,\n-                                query,\n-                                response,\n-                                shouldPersistHeaders,\n-                                validationRules,\n-                                variables,\n-                                children: /* @__PURE__ */ jsxRuntime.jsx(SchemaContextProvider, {\n-                                    dangerouslyAssumeSchemaIsValid,\n-                                    fetcher,\n-                                    inputValueDeprecation,\n-                                    introspectionQueryName,\n-                                    onSchemaChange,\n-                                    schema,\n-                                    schemaDescription,\n-                                    children: /* @__PURE__ */ jsxRuntime.jsx(ExecutionContextProvider, {\n-                                        getDefaultFieldNames,\n-                                        fetcher,\n-                                        operationName,\n-                                        children: /* @__PURE__ */ jsxRuntime.jsx(ExplorerContextProvider, {\n-                                            children: /* @__PURE__ */ jsxRuntime.jsx(PluginContextProvider, {\n-                                                onTogglePluginVisibility,\n-                                                plugins,\n-                                                visiblePlugin,\n-                                                children\n-                                            })\n-                                        })\n-                                    })\n-                                })\n+                        validationRules,\n+                        variables,\n+                        visiblePlugin\n+                    } = t0;\n+                    let t1;\n+                    if ($[0] !== children || $[1] !== onTogglePluginVisibility || $[2] !== plugins || $[3] !== visiblePlugin) {\n+                        t1 = /* @__PURE__ */ jsxRuntime.jsx(ExplorerContextProvider, {\n+                            children: /* @__PURE__ */ jsxRuntime.jsx(PluginContextProvider, {\n+                                onTogglePluginVisibility,\n+                                plugins,\n+                                visiblePlugin,\n+                                children\n                             })\n-                        })\n-                    });\n+                        });\n+                        $[0] = children;\n+                        $[1] = onTogglePluginVisibility;\n+                        $[2] = plugins;\n+                        $[3] = visiblePlugin;\n+                        $[4] = t1;\n+                    } else {\n+                        t1 = $[4];\n+                    }\n+                    let t2;\n+                    if ($[5] !== fetcher || $[6] !== getDefaultFieldNames || $[7] !== operationName || $[8] !== t1) {\n+                        t2 = /* @__PURE__ */ jsxRuntime.jsx(ExecutionContextProvider, {\n+                            getDefaultFieldNames,\n+                            fetcher,\n+                            operationName,\n+                            children: t1\n+                        });\n+                        $[5] = fetcher;\n+                        $[6] = getDefaultFieldNames;\n+                        $[7] = operationName;\n+                        $[8] = t1;\n+                        $[9] = t2;\n+                    } else {\n+                        t2 = $[9];\n+                    }\n+                    let t3;\n+                    if ($[10] !== dangerouslyAssumeSchemaIsValid || $[11] !== fetcher || $[12] !== inputValueDeprecation || $[13] !== introspectionQueryName || $[14] !== onSchemaChange || $[15] !== schema || $[16] !== schemaDescription || $[17] !== t2) {\n+                        t3 = /* @__PURE__ */ jsxRuntime.jsx(SchemaContextProvider, {\n+                            dangerouslyAssumeSchemaIsValid,\n+                            fetcher,\n+                            inputValueDeprecation,\n+                            introspectionQueryName,\n+                            onSchemaChange,\n+                            schema,\n+                            schemaDescription,\n+                            children: t2\n+                        });\n+                        $[10] = dangerouslyAssumeSchemaIsValid;\n+                        $[11] = fetcher;\n+                        $[12] = inputValueDeprecation;\n+                        $[13] = introspectionQueryName;\n+                        $[14] = onSchemaChange;\n+                        $[15] = schema;\n+                        $[16] = schemaDescription;\n+                        $[17] = t2;\n+                        $[18] = t3;\n+                    } else {\n+                        t3 = $[18];\n+                    }\n+                    let t4;\n+                    if ($[19] !== defaultHeaders || $[20] !== defaultQuery || $[21] !== defaultTabs || $[22] !== externalFragments || $[23] !== headers || $[24] !== onEditOperationName || $[25] !== onTabChange || $[26] !== query || $[27] !== response || $[28] !== shouldPersistHeaders || $[29] !== t3 || $[30] !== validationRules || $[31] !== variables) {\n+                        t4 = /* @__PURE__ */ jsxRuntime.jsx(EditorContextProvider, {\n+                            defaultQuery,\n+                            defaultHeaders,\n+                            defaultTabs,\n+                            externalFragments,\n+                            headers,\n+                            onEditOperationName,\n+                            onTabChange,\n+                            query,\n+                            response,\n+                            shouldPersistHeaders,\n+                            validationRules,\n+                            variables,\n+                            children: t3\n+                        });\n+                        $[19] = defaultHeaders;\n+                        $[20] = defaultQuery;\n+                        $[21] = defaultTabs;\n+                        $[22] = externalFragments;\n+                        $[23] = headers;\n+                        $[24] = onEditOperationName;\n+                        $[25] = onTabChange;\n+                        $[26] = query;\n+                        $[27] = response;\n+                        $[28] = shouldPersistHeaders;\n+                        $[29] = t3;\n+                        $[30] = validationRules;\n+                        $[31] = variables;\n+                        $[32] = t4;\n+                    } else {\n+                        t4 = $[32];\n+                    }\n+                    let t5;\n+                    if ($[33] !== maxHistoryLength || $[34] !== t4) {\n+                        t5 = /* @__PURE__ */ jsxRuntime.jsx(HistoryContextProvider, {\n+                            maxHistoryLength,\n+                            children: t4\n+                        });\n+                        $[33] = maxHistoryLength;\n+                        $[34] = t4;\n+                        $[35] = t5;\n+                    } else {\n+                        t5 = $[35];\n+                    }\n+                    let t6;\n+                    if ($[36] !== storage || $[37] !== t5) {\n+                        t6 = /* @__PURE__ */ jsxRuntime.jsx(StorageContextProvider, {\n+                            storage,\n+                            children: t5\n+                        });\n+                        $[36] = storage;\n+                        $[37] = t5;\n+                        $[38] = t6;\n+                    } else {\n+                        t6 = $[38];\n+                    }\n+                    return t6;\n                 }\n \n-                function useTheme(defaultTheme = null) {\n+                function useTheme(t0) {\n+                    const $ = reactCompilerRuntime.c(11);\n+                    const defaultTheme = t0 === void 0 ? null : t0;\n                     const storageContext = useStorageContext();\n-                    const [theme, setThemeInternal] = React.useState(() => {\n-                        if (!storageContext) {\n-                            return null;\n-                        }\n-                        const stored = storageContext.get(STORAGE_KEY);\n-                        switch (stored) {\n-                            case \"light\":\n-                                return \"light\";\n-                            case \"dark\":\n-                                return \"dark\";\n-                            default:\n-                                if (typeof stored === \"string\") {\n-                                    storageContext.set(STORAGE_KEY, \"\");\n+                    let t1;\n+                    if ($[0] !== defaultTheme || $[1] !== storageContext) {\n+                        t1 = () => {\n+                            if (!storageContext) {\n+                                return null;\n+                            }\n+                            const stored = storageContext.get(STORAGE_KEY);\n+                            switch (stored) {\n+                                case \"light\": {\n+                                    return \"light\";\n                                 }\n-                                return defaultTheme;\n-                        }\n-                    });\n-                    React.useLayoutEffect(() => {\n-                        if (typeof window === \"undefined\") {\n-                            return;\n-                        }\n-                        document.body.classList.remove(\"graphiql-light\", \"graphiql-dark\");\n-                        if (theme) {\n-                            document.body.classList.add(`graphiql-${theme}`);\n-                        }\n-                    }, [theme]);\n-                    const setTheme = React.useCallback(newTheme => {\n-                        storageContext == null ? void 0 : storageContext.set(STORAGE_KEY, newTheme || \"\");\n-                        setThemeInternal(newTheme);\n-                    }, [storageContext]);\n-                    return React.useMemo(() => ({\n-                        theme,\n-                        setTheme\n-                    }), [theme, setTheme]);\n+                                case \"dark\": {\n+                                    return \"dark\";\n+                                }\n+                                default: {\n+                                    if (typeof stored === \"string\") {\n+                                        storageContext.set(STORAGE_KEY, \"\");\n+                                    }\n+                                    return defaultTheme;\n+                                }\n+                            }\n+                        };\n+                        $[0] = defaultTheme;\n+                        $[1] = storageContext;\n+                        $[2] = t1;\n+                    } else {\n+                        t1 = $[2];\n+                    }\n+                    const [theme, setThemeInternal] = React.useState(t1);\n+                    let t2;\n+                    let t3;\n+                    if ($[3] !== theme) {\n+                        t2 = () => {\n+                            if (typeof window === \"undefined\") {\n+                                return;\n+                            }\n+                            document.body.classList.remove(\"graphiql-light\", \"graphiql-dark\");\n+                            if (theme) {\n+                                document.body.classList.add(`graphiql-${theme}`);\n+                            }\n+                        };\n+                        t3 = [theme];\n+                        $[3] = theme;\n+                        $[4] = t2;\n+                        $[5] = t3;\n+                    } else {\n+                        t2 = $[4];\n+                        t3 = $[5];\n+                    }\n+                    React.useLayoutEffect(t2, t3);\n+                    let t4;\n+                    if ($[6] !== storageContext) {\n+                        t4 = newTheme => {\n+                            storageContext == null ? void 0 : storageContext.set(STORAGE_KEY, newTheme || \"\");\n+                            setThemeInternal(newTheme);\n+                        };\n+                        $[6] = storageContext;\n+                        $[7] = t4;\n+                    } else {\n+                        t4 = $[7];\n+                    }\n+                    const setTheme = t4;\n+                    let t5;\n+                    if ($[8] !== setTheme || $[9] !== theme) {\n+                        t5 = {\n+                            theme,\n+                            setTheme\n+                        };\n+                        $[8] = setTheme;\n+                        $[9] = theme;\n+                        $[10] = t5;\n+                    } else {\n+                        t5 = $[10];\n+                    }\n+                    return t5;\n                 }\n                 const STORAGE_KEY = \"theme\";\n \n-                function useDragResize({\n-                    defaultSizeRelation = DEFAULT_FLEX,\n-                    direction,\n-                    initiallyHidden,\n-                    onHiddenElementChange,\n-                    sizeThresholdFirst = 100,\n-                    sizeThresholdSecond = 100,\n-                    storageKey\n-                }) {\n+                function useDragResize(t0) {\n+                    const $ = reactCompilerRuntime.c(31);\n+                    const {\n+                        defaultSizeRelation: t1,\n+                        direction,\n+                        initiallyHidden,\n+                        onHiddenElementChange,\n+                        sizeThresholdFirst: t2,\n+                        sizeThresholdSecond: t3,\n+                        storageKey\n+                    } = t0;\n+                    const defaultSizeRelation = t1 === void 0 ? DEFAULT_FLEX : t1;\n+                    const sizeThresholdFirst = t2 === void 0 ? 100 : t2;\n+                    const sizeThresholdSecond = t3 === void 0 ? 100 : t3;\n                     const storage = useStorageContext();\n-                    const store = React.useMemo(() => debounce(500, value => {\n-                        if (storageKey) {\n-                            storage == null ? void 0 : storage.set(storageKey, value);\n-                        }\n-                    }), [storage, storageKey]);\n-                    const [hiddenElement, setHiddenElement] = React.useState(() => {\n-                        const storedValue = storageKey && (storage == null ? void 0 : storage.get(storageKey));\n-                        if (storedValue === HIDE_FIRST || initiallyHidden === \"first\") {\n-                            return \"first\";\n-                        }\n-                        if (storedValue === HIDE_SECOND || initiallyHidden === \"second\") {\n-                            return \"second\";\n-                        }\n-                        return null;\n-                    });\n-                    const setHiddenElementWithCallback = React.useCallback(element => {\n-                        if (element !== hiddenElement) {\n-                            setHiddenElement(element);\n-                            onHiddenElementChange == null ? void 0 : onHiddenElementChange(element);\n-                        }\n-                    }, [hiddenElement, onHiddenElementChange]);\n+                    let t4;\n+                    if ($[0] !== storage || $[1] !== storageKey) {\n+                        t4 = debounce(500, value => {\n+                            if (storageKey) {\n+                                storage == null ? void 0 : storage.set(storageKey, value);\n+                            }\n+                        });\n+                        $[0] = storage;\n+                        $[1] = storageKey;\n+                        $[2] = t4;\n+                    } else {\n+                        t4 = $[2];\n+                    }\n+                    const store = t4;\n+                    let t5;\n+                    if ($[3] !== initiallyHidden || $[4] !== storage || $[5] !== storageKey) {\n+                        t5 = () => {\n+                            const storedValue = storageKey && (storage == null ? void 0 : storage.get(storageKey));\n+                            if (storedValue === HIDE_FIRST || initiallyHidden === \"first\") {\n+                                return \"first\";\n+                            }\n+                            if (storedValue === HIDE_SECOND || initiallyHidden === \"second\") {\n+                                return \"second\";\n+                            }\n+                            return null;\n+                        };\n+                        $[3] = initiallyHidden;\n+                        $[4] = storage;\n+                        $[5] = storageKey;\n+                        $[6] = t5;\n+                    } else {\n+                        t5 = $[6];\n+                    }\n+                    const [hiddenElement, setHiddenElement] = React.useState(t5);\n+                    let t6;\n+                    if ($[7] !== hiddenElement || $[8] !== onHiddenElementChange) {\n+                        t6 = element => {\n+                            if (element !== hiddenElement) {\n+                                setHiddenElement(element);\n+                                onHiddenElementChange == null ? void 0 : onHiddenElementChange(element);\n+                            }\n+                        };\n+                        $[7] = hiddenElement;\n+                        $[8] = onHiddenElementChange;\n+                        $[9] = t6;\n+                    } else {\n+                        t6 = $[9];\n+                    }\n+                    const setHiddenElementWithCallback = t6;\n                     const firstRef = React.useRef(null);\n                     const dragBarRef = React.useRef(null);\n                     const secondRef = React.useRef(null);\n                     const defaultFlexRef = React.useRef(`${defaultSizeRelation}`);\n-                    React.useLayoutEffect(() => {\n-                        const storedValue = storageKey && (storage == null ? void 0 : storage.get(storageKey)) || defaultFlexRef.current;\n-                        if (firstRef.current) {\n-                            firstRef.current.style.display = \"flex\";\n-                            firstRef.current.style.flex = storedValue === HIDE_FIRST || storedValue === HIDE_SECOND ? defaultFlexRef.current : storedValue;\n-                        }\n-                        if (secondRef.current) {\n-                            secondRef.current.style.display = \"flex\";\n-                            secondRef.current.style.flex = \"1\";\n-                        }\n-                        if (dragBarRef.current) {\n-                            dragBarRef.current.style.display = \"flex\";\n-                        }\n-                    }, [direction, storage, storageKey]);\n-                    const hide = React.useCallback(resizableElement => {\n-                        const element = resizableElement === \"first\" ? firstRef.current : secondRef.current;\n-                        if (!element) {\n-                            return;\n-                        }\n-                        element.style.left = \"-1000px\";\n-                        element.style.position = \"absolute\";\n-                        element.style.opacity = \"0\";\n-                        element.style.height = \"500px\";\n-                        element.style.width = \"500px\";\n-                        if (firstRef.current) {\n-                            const flex = parseFloat(firstRef.current.style.flex);\n-                            if (!Number.isFinite(flex) || flex < 1) {\n-                                firstRef.current.style.flex = \"1\";\n+                    let t7;\n+                    if ($[10] !== storage || $[11] !== storageKey) {\n+                        t7 = () => {\n+                            const storedValue_0 = storageKey && (storage == null ? void 0 : storage.get(storageKey)) || defaultFlexRef.current;\n+                            if (firstRef.current) {\n+                                firstRef.current.style.display = \"flex\";\n+                                firstRef.current.style.flex = storedValue_0 === HIDE_FIRST || storedValue_0 === HIDE_SECOND ? defaultFlexRef.current : storedValue_0;\n                             }\n-                        }\n-                    }, []);\n-                    const show = React.useCallback(resizableElement => {\n-                        const element = resizableElement === \"first\" ? firstRef.current : secondRef.current;\n-                        if (!element) {\n-                            return;\n-                        }\n-                        element.style.width = \"\";\n-                        element.style.height = \"\";\n-                        element.style.opacity = \"\";\n-                        element.style.position = \"\";\n-                        element.style.left = \"\";\n-                        if (storage && storageKey) {\n-                            const storedValue = storage.get(storageKey);\n-                            if (firstRef.current && storedValue !== HIDE_FIRST && storedValue !== HIDE_SECOND) {\n-                                firstRef.current.style.flex = storedValue || defaultFlexRef.current;\n+                            if (secondRef.current) {\n+                                secondRef.current.style.display = \"flex\";\n+                                secondRef.current.style.flex = \"1\";\n                             }\n-                        }\n-                    }, [storage, storageKey]);\n-                    React.useLayoutEffect(() => {\n-                        if (hiddenElement === \"first\") {\n-                            hide(\"first\");\n-                        } else {\n-                            show(\"first\");\n-                        }\n-                        if (hiddenElement === \"second\") {\n-                            hide(\"second\");\n-                        } else {\n-                            show(\"second\");\n-                        }\n-                    }, [hiddenElement, hide, show]);\n-                    React.useEffect(() => {\n-                        if (!dragBarRef.current || !firstRef.current || !secondRef.current) {\n-                            return;\n-                        }\n-                        const dragBarContainer = dragBarRef.current;\n-                        const firstContainer = firstRef.current;\n-                        const wrapper = firstContainer.parentElement;\n-                        const eventProperty = direction === \"horizontal\" ? \"clientX\" : \"clientY\";\n-                        const rectProperty = direction === \"horizontal\" ? \"left\" : \"top\";\n-                        const adjacentRectProperty = direction === \"horizontal\" ? \"right\" : \"bottom\";\n-                        const sizeProperty = direction === \"horizontal\" ? \"clientWidth\" : \"clientHeight\";\n-\n-                        function handleMouseDown(downEvent) {\n-                            downEvent.preventDefault();\n-                            const offset = downEvent[eventProperty] - dragBarContainer.getBoundingClientRect()[rectProperty];\n-\n-                            function handleMouseMove(moveEvent) {\n-                                if (moveEvent.buttons === 0) {\n-                                    return handleMouseUp();\n-                                }\n-                                const firstSize = moveEvent[eventProperty] - wrapper.getBoundingClientRect()[rectProperty] - offset;\n-                                const secondSize = wrapper.getBoundingClientRect()[adjacentRectProperty] - moveEvent[eventProperty] + offset - dragBarContainer[sizeProperty];\n-                                if (firstSize < sizeThresholdFirst) {\n-                                    setHiddenElementWithCallback(\"first\");\n-                                    store(HIDE_FIRST);\n-                                } else if (secondSize < sizeThresholdSecond) {\n-                                    setHiddenElementWithCallback(\"second\");\n-                                    store(HIDE_SECOND);\n-                                } else {\n-                                    setHiddenElementWithCallback(null);\n-                                    const newFlex = `${firstSize / secondSize}`;\n-                                    firstContainer.style.flex = newFlex;\n-                                    store(newFlex);\n+                            if (dragBarRef.current) {\n+                                dragBarRef.current.style.display = \"flex\";\n+                            }\n+                        };\n+                        $[10] = storage;\n+                        $[11] = storageKey;\n+                        $[12] = t7;\n+                    } else {\n+                        t7 = $[12];\n+                    }\n+                    let t8;\n+                    if ($[13] !== direction || $[14] !== storage || $[15] !== storageKey) {\n+                        t8 = [direction, storage, storageKey];\n+                        $[13] = direction;\n+                        $[14] = storage;\n+                        $[15] = storageKey;\n+                        $[16] = t8;\n+                    } else {\n+                        t8 = $[16];\n+                    }\n+                    React.useLayoutEffect(t7, t8);\n+                    let t10;\n+                    let t9;\n+                    if ($[17] !== hiddenElement || $[18] !== storage || $[19] !== storageKey) {\n+                        t9 = () => {\n+                            const hide = resizableElement => {\n+                                const element_0 = resizableElement === \"first\" ? firstRef.current : secondRef.current;\n+                                if (!element_0) {\n+                                    return;\n+                                }\n+                                element_0.style.left = \"-1000px\";\n+                                element_0.style.position = \"absolute\";\n+                                element_0.style.opacity = \"0\";\n+                                element_0.style.height = \"500px\";\n+                                element_0.style.width = \"500px\";\n+                                if (firstRef.current) {\n+                                    const flex = parseFloat(firstRef.current.style.flex);\n+                                    if (!Number.isFinite(flex) || flex < 1) {\n+                                        firstRef.current.style.flex = \"1\";\n+                                    }\n+                                }\n+                            };\n+                            const show = resizableElement_0 => {\n+                                const element_1 = resizableElement_0 === \"first\" ? firstRef.current : secondRef.current;\n+                                if (!element_1) {\n+                                    return;\n+                                }\n+                                element_1.style.width = \"\";\n+                                element_1.style.height = \"\";\n+                                element_1.style.opacity = \"\";\n+                                element_1.style.position = \"\";\n+                                element_1.style.left = \"\";\n+                                if (storage && storageKey) {\n+                                    const storedValue_1 = storage.get(storageKey);\n+                                    if (firstRef.current && storedValue_1 !== HIDE_FIRST && storedValue_1 !== HIDE_SECOND) {\n+                                        firstRef.current.style.flex = storedValue_1 || defaultFlexRef.current;\n+                                    }\n                                 }\n+                            };\n+                            if (hiddenElement === \"first\") {\n+                                hide(\"first\");\n+                            } else {\n+                                show(\"first\");\n                             }\n-\n-                            function handleMouseUp() {\n-                                document.removeEventListener(\"mousemove\", handleMouseMove);\n-                                document.removeEventListener(\"mouseup\", handleMouseUp);\n+                            if (hiddenElement === \"second\") {\n+                                hide(\"second\");\n+                            } else {\n+                                show(\"second\");\n                             }\n-                            document.addEventListener(\"mousemove\", handleMouseMove);\n-                            document.addEventListener(\"mouseup\", handleMouseUp);\n-                        }\n-                        dragBarContainer.addEventListener(\"mousedown\", handleMouseDown);\n-\n-                        function reset() {\n-                            if (firstRef.current) {\n-                                firstRef.current.style.flex = defaultFlexRef.current;\n+                        };\n+                        t10 = [hiddenElement, storage, storageKey];\n+                        $[17] = hiddenElement;\n+                        $[18] = storage;\n+                        $[19] = storageKey;\n+                        $[20] = t10;\n+                        $[21] = t9;\n+                    } else {\n+                        t10 = $[20];\n+                        t9 = $[21];\n+                    }\n+                    React.useLayoutEffect(t9, t10);\n+                    let t11;\n+                    let t12;\n+                    if ($[22] !== direction || $[23] !== setHiddenElementWithCallback || $[24] !== sizeThresholdFirst || $[25] !== sizeThresholdSecond || $[26] !== store) {\n+                        t11 = () => {\n+                            if (!dragBarRef.current || !firstRef.current || !secondRef.current) {\n+                                return;\n                             }\n-                            store(defaultFlexRef.current);\n-                            setHiddenElementWithCallback(null);\n-                        }\n-                        dragBarContainer.addEventListener(\"dblclick\", reset);\n-                        return () => {\n-                            dragBarContainer.removeEventListener(\"mousedown\", handleMouseDown);\n-                            dragBarContainer.removeEventListener(\"dblclick\", reset);\n+                            const dragBarContainer = dragBarRef.current;\n+                            const firstContainer = firstRef.current;\n+                            const wrapper = firstContainer.parentElement;\n+                            const eventProperty = direction === \"horizontal\" ? \"clientX\" : \"clientY\";\n+                            const rectProperty = direction === \"horizontal\" ? \"left\" : \"top\";\n+                            const adjacentRectProperty = direction === \"horizontal\" ? \"right\" : \"bottom\";\n+                            const sizeProperty = direction === \"horizontal\" ? \"clientWidth\" : \"clientHeight\";\n+                            const handleMouseDown = function handleMouseDown2(downEvent) {\n+                                downEvent.preventDefault();\n+                                const offset = downEvent[eventProperty] - dragBarContainer.getBoundingClientRect()[rectProperty];\n+                                const handleMouseMove = function handleMouseMove2(moveEvent) {\n+                                    if (moveEvent.buttons === 0) {\n+                                        return handleMouseUp();\n+                                    }\n+                                    const firstSize = moveEvent[eventProperty] - wrapper.getBoundingClientRect()[rectProperty] - offset;\n+                                    const secondSize = wrapper.getBoundingClientRect()[adjacentRectProperty] - moveEvent[eventProperty] + offset - dragBarContainer[sizeProperty];\n+                                    if (firstSize < sizeThresholdFirst) {\n+                                        setHiddenElementWithCallback(\"first\");\n+                                        store(HIDE_FIRST);\n+                                    } else {\n+                                        if (secondSize < sizeThresholdSecond) {\n+                                            setHiddenElementWithCallback(\"second\");\n+                                            store(HIDE_SECOND);\n+                                        } else {\n+                                            setHiddenElementWithCallback(null);\n+                                            const newFlex = `${firstSize / secondSize}`;\n+                                            firstContainer.style.flex = newFlex;\n+                                            store(newFlex);\n+                                        }\n+                                    }\n+                                };\n+\n+                                function handleMouseUp() {\n+                                    document.removeEventListener(\"mousemove\", handleMouseMove);\n+                                    document.removeEventListener(\"mouseup\", handleMouseUp);\n+                                }\n+                                document.addEventListener(\"mousemove\", handleMouseMove);\n+                                document.addEventListener(\"mouseup\", handleMouseUp);\n+                            };\n+                            dragBarContainer.addEventListener(\"mousedown\", handleMouseDown);\n+                            const reset = function reset2() {\n+                                if (firstRef.current) {\n+                                    firstRef.current.style.flex = defaultFlexRef.current;\n+                                }\n+                                store(defaultFlexRef.current);\n+                                setHiddenElementWithCallback(null);\n+                            };\n+                            dragBarContainer.addEventListener(\"dblclick\", reset);\n+                            return () => {\n+                                dragBarContainer.removeEventListener(\"mousedown\", handleMouseDown);\n+                                dragBarContainer.removeEventListener(\"dblclick\", reset);\n+                            };\n                         };\n-                    }, [direction, setHiddenElementWithCallback, sizeThresholdFirst, sizeThresholdSecond, store]);\n-                    return React.useMemo(() => ({\n-                        dragBarRef,\n-                        hiddenElement,\n-                        firstRef,\n-                        setHiddenElement,\n-                        secondRef\n-                    }), [hiddenElement, setHiddenElement]);\n+                        t12 = [direction, setHiddenElementWithCallback, sizeThresholdFirst, sizeThresholdSecond, store];\n+                        $[22] = direction;\n+                        $[23] = setHiddenElementWithCallback;\n+                        $[24] = sizeThresholdFirst;\n+                        $[25] = sizeThresholdSecond;\n+                        $[26] = store;\n+                        $[27] = t11;\n+                        $[28] = t12;\n+                    } else {\n+                        t11 = $[27];\n+                        t12 = $[28];\n+                    }\n+                    React.useEffect(t11, t12);\n+                    let t13;\n+                    if ($[29] !== hiddenElement) {\n+                        t13 = {\n+                            dragBarRef,\n+                            hiddenElement,\n+                            firstRef,\n+                            setHiddenElement,\n+                            secondRef\n+                        };\n+                        $[29] = hiddenElement;\n+                        $[30] = t13;\n+                    } else {\n+                        t13 = $[30];\n+                    }\n+                    return t13;\n                 }\n                 const DEFAULT_FLEX = 1;\n                 const HIDE_FIRST = \"hide-first\";\n                 const HIDE_SECOND = \"hide-second\";\n-                const ToolbarButton = React.forwardRef(({\n-                    label,\n-                    onClick,\n-                    ...props\n-                }, ref) => {\n+                const ToolbarButton = React.forwardRef((t0, ref) => {\n+                    const $ = reactCompilerRuntime.c(19);\n+                    let label;\n+                    let onClick;\n+                    let props;\n+                    if ($[0] !== t0) {\n+                        ({\n+                            label,\n+                            onClick,\n+                            ...props\n+                        } = t0);\n+                        $[0] = t0;\n+                        $[1] = label;\n+                        $[2] = onClick;\n+                        $[3] = props;\n+                    } else {\n+                        label = $[1];\n+                        onClick = $[2];\n+                        props = $[3];\n+                    }\n                     const [error, setError] = React.useState(null);\n-                    const handleClick = React.useCallback(event => {\n-                        try {\n-                            onClick == null ? void 0 : onClick(event);\n-                            setError(null);\n-                        } catch (err) {\n-                            setError(err instanceof Error ? err : new Error(`Toolbar button click failed: ${err}`));\n-                        }\n-                    }, [onClick]);\n-                    return /* @__PURE__ */ jsxRuntime.jsx(Tooltip, {\n-                        label,\n-                        children: /* @__PURE__ */ jsxRuntime.jsx(UnStyledButton, {\n+                    let t1;\n+                    if ($[4] !== onClick) {\n+                        t1 = event => {\n+                            try {\n+                                if (onClick) {\n+                                    onClick(event);\n+                                }\n+                                setError(null);\n+                            } catch (t22) {\n+                                const err = t22;\n+                                setError(err instanceof Error ? err : new Error(`Toolbar button click failed: ${err}`));\n+                            }\n+                        };\n+                        $[4] = onClick;\n+                        $[5] = t1;\n+                    } else {\n+                        t1 = $[5];\n+                    }\n+                    const handleClick = t1;\n+                    const t2 = error && \"error\";\n+                    let t3;\n+                    if ($[6] !== props.className || $[7] !== t2) {\n+                        t3 = clsx.clsx(\"graphiql-toolbar-button\", t2, props.className);\n+                        $[6] = props.className;\n+                        $[7] = t2;\n+                        $[8] = t3;\n+                    } else {\n+                        t3 = $[8];\n+                    }\n+                    const t4 = error ? error.message : label;\n+                    const t5 = error ? \"true\" : props[\"aria-invalid\"];\n+                    let t6;\n+                    if ($[9] !== handleClick || $[10] !== props || $[11] !== ref || $[12] !== t3 || $[13] !== t4 || $[14] !== t5) {\n+                        t6 = /* @__PURE__ */ jsxRuntime.jsx(UnStyledButton, {\n                             ...props,\n                             ref,\n                             type: \"button\",\n-                            className: clsx.clsx(\"graphiql-toolbar-button\", error && \"error\", props.className),\n+                            className: t3,\n                             onClick: handleClick,\n-                            \"aria-label\": error ? error.message : label,\n-                            \"aria-invalid\": error ? \"true\" : props[\"aria-invalid\"]\n-                        })\n-                    });\n+                            \"aria-label\": t4,\n+                            \"aria-invalid\": t5\n+                        });\n+                        $[9] = handleClick;\n+                        $[10] = props;\n+                        $[11] = ref;\n+                        $[12] = t3;\n+                        $[13] = t4;\n+                        $[14] = t5;\n+                        $[15] = t6;\n+                    } else {\n+                        t6 = $[15];\n+                    }\n+                    let t7;\n+                    if ($[16] !== label || $[17] !== t6) {\n+                        t7 = /* @__PURE__ */ jsxRuntime.jsx(Tooltip, {\n+                            label,\n+                            children: t6\n+                        });\n+                        $[16] = label;\n+                        $[17] = t6;\n+                        $[18] = t7;\n+                    } else {\n+                        t7 = $[18];\n+                    }\n+                    return t7;\n                 });\n                 ToolbarButton.displayName = \"ToolbarButton\";\n \n                 function ExecuteButton() {\n+                    const $ = reactCompilerRuntime.c(19);\n+                    let t0;\n+                    if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t0 = {\n+                            nonNull: true,\n+                            caller: ExecuteButton\n+                        };\n+                        $[0] = t0;\n+                    } else {\n+                        t0 = $[0];\n+                    }\n                     const {\n                         queryEditor,\n                         setOperationName\n-                    } = useEditorContext({\n-                        nonNull: true,\n-                        caller: ExecuteButton\n-                    });\n+                    } = useEditorContext(t0);\n+                    let t1;\n+                    if ($[1] === Symbol.for(\"react.memo_cache_sentinel\")) {\n+                        t1 = {\n+                            nonNull: true,\n+                            caller: ExecuteButton\n+                        };\n+                        $[1] = t1;\n+                    } else {\n+                        t1 = $[1];\n+                    }\n                     const {\n                         isFetching,\n                         isSubscribed,\n                         operationName,\n                         run,\n                         stop\n-                    } = useExecutionContext({\n-                        nonNull: true,\n-                        caller: ExecuteButton\n-                    });\n-                    const operations = (queryEditor == null ? void 0 : queryEditor.operations) || [];\n+                    } = useExecutionContext(t1);\n+                    let t2;\n+                    if ($[2] !== (queryEditor == null ? void 0 : queryEditor.operations)) {\n+                        t2 = (queryEditor == null ? void 0 : queryEditor.operations) || [];\n+                        $[2] = queryEditor == null ? void 0 : queryEditor.operations;\n+                        $[3] = t2;\n+                    } else {\n+                        t2 = $[3];\n+                    }\n+                    const operations = t2;\n                     const hasOptions = operations.length > 1 && typeof operationName !== \"string\";\n                     const isRunning = isFetching || isSubscribed;\n                     const label = `${isRunning ? \"Stop\" : \"Execute\"} query (Ctrl-Enter)`;\n-                    const buttonProps = {\n-                        type: \"button\",\n-                        className: \"graphiql-execute-button\",\n-                        children: isRunning ? /* @__PURE__ */ jsxRuntime.jsx(StopIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(PlayIcon, {}),\n-                        \"aria-label\": label\n-                    };\n-                    return hasOptions && !isRunning ? /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, {\n-                        children: [ /* @__PURE__ */ jsxRuntime.jsx(Tooltip, {\n+                    let t3;\n+                    if ($[4] !== isRunning) {\n+                        t3 = isRunning ? /* @__PURE__ */ jsxRuntime.jsx(StopIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(PlayIcon, {});\n+                        $[4] = isRunning;\n+                        $[5] = t3;\n+                    } else {\n+                        t3 = $[5];\n+                    }\n+                    let t4;\n+                    if ($[6] !== label || $[7] !== t3) {\n+                        t4 = {\n+                            type: \"button\",\n+                            className: \"graphiql-execute-button\",\n+                            children: t3,\n+                            \"aria-label\": label\n+                        };\n+                        $[6] = label;\n+                        $[7] = t3;\n+                        $[8] = t4;\n+                    } else {\n+                        t4 = $[8];\n+                    }\n+                    const buttonProps = t4;\n+                    let t5;\n+                    if ($[9] !== buttonProps || $[10] !== hasOptions || $[11] !== isRunning || $[12] !== label || $[13] !== operations || $[14] !== queryEditor || $[15] !== run || $[16] !== setOperationName || $[17] !== stop) {\n+                        t5 = hasOptions && !isRunning ? /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, {\n+                            children: [ /* @__PURE__ */ jsxRuntime.jsx(Tooltip, {\n+                                label,\n+                                children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Button, {\n+                                    ...buttonProps\n+                                })\n+                            }), /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Content, {\n+                                children: operations.map((operation, i) => {\n+                                    const opName = operation.name ? operation.name.value : `<Unnamed ${operation.operation}>`;\n+                                    return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Item, {\n+                                        onSelect: () => {\n+                                            var _a;\n+                                            const selectedOperationName = (_a = operation.name) == null ? void 0 : _a.value;\n+                                            if (queryEditor && selectedOperationName && selectedOperationName !== queryEditor.operationName) {\n+                                                setOperationName(selectedOperationName);\n+                                            }\n+                                            run();\n+                                        },\n+                                        children: opName\n+                                    }, `${opName}-${i}`);\n+                                })\n+                            })]\n+                        }) : /* @__PURE__ */ jsxRuntime.jsx(Tooltip, {\n                             label,\n-                            children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Button, {\n-                                ...buttonProps\n-                            })\n-                        }), /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Content, {\n-                            children: operations.map((operation, i) => {\n-                                const opName = operation.name ? operation.name.value : `<Unnamed ${operation.operation}>`;\n-                                return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Item, {\n-                                    onSelect: () => {\n-                                        var _a;\n-                                        const selectedOperationName = (_a = operation.name) == null ? void 0 : _a.value;\n-                                        if (queryEditor && selectedOperationName && selectedOperationName !== queryEditor.operationName) {\n-                                            setOperationName(selectedOperationName);\n-                                        }\n+                            children: /* @__PURE__ */ jsxRuntime.jsx(\"button\", {\n+                                ...buttonProps,\n+                                onClick: () => {\n+                                    if (isRunning) {\n+                                        stop();\n+                                    } else {\n                                         run();\n-                                    },\n-                                    children: opName\n-                                }, `${opName}-${i}`);\n-                            })\n-                        })]\n-                    }) : /* @__PURE__ */ jsxRuntime.jsx(Tooltip, {\n-                        label,\n-                        children: /* @__PURE__ */ jsxRuntime.jsx(\"button\", {\n-                            ...buttonProps,\n-                            onClick: () => {\n-                                if (isRunning) {\n-                                    stop();\n-                                } else {\n-                                    run();\n+                                    }\n                                 }\n-                            }\n-                        })\n-                    });\n+                            })\n+                        });\n+                        $[9] = buttonProps;\n+                        $[10] = hasOptions;\n+                        $[11] = isRunning;\n+                        $[12] = label;\n+                        $[13] = operations;\n+                        $[14] = queryEditor;\n+                        $[15] = run;\n+                        $[16] = setOperationName;\n+                        $[17] = stop;\n+                        $[18] = t5;\n+                    } else {\n+                        t5 = $[18];\n+                    }\n+                    return t5;\n                 }\n-                const ToolbarMenuRoot = ({\n-                    button,\n-                    children,\n-                    label,\n-                    ...props\n-                }) => /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, {\n-                    ...props,\n-                    children: [ /* @__PURE__ */ jsxRuntime.jsx(Tooltip, {\n-                        label,\n-                        children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Button, {\n-                            className: clsx.clsx(\"graphiql-un-styled graphiql-toolbar-menu\", props.className),\n+                const ToolbarMenuRoot = t0 => {\n+                    const $ = reactCompilerRuntime.c(20);\n+                    let button;\n+                    let children;\n+                    let label;\n+                    let props;\n+                    if ($[0] !== t0) {\n+                        ({\n+                            button,\n+                            children,\n+                            label,\n+                            ...props\n+                        } = t0);\n+                        $[0] = t0;\n+                        $[1] = button;\n+                        $[2] = children;\n+                        $[3] = label;\n+                        $[4] = props;\n+                    } else {\n+                        button = $[1];\n+                        children = $[2];\n+                        label = $[3];\n+                        props = $[4];\n+                    }\n+                    let t1;\n+                    if ($[5] !== props.className) {\n+                        t1 = clsx.clsx(\"graphiql-un-styled graphiql-toolbar-menu\", props.className);\n+                        $[5] = props.className;\n+                        $[6] = t1;\n+                    } else {\n+                        t1 = $[6];\n+                    }\n+                    let t2;\n+                    if ($[7] !== button || $[8] !== label || $[9] !== t1) {\n+                        t2 = /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Button, {\n+                            className: t1,\n                             \"aria-label\": label,\n                             children: button\n-                        })\n-                    }), /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Content, {\n-                        children\n-                    })]\n-                });\n+                        });\n+                        $[7] = button;\n+                        $[8] = label;\n+                        $[9] = t1;\n+                        $[10] = t2;\n+                    } else {\n+                        t2 = $[10];\n+                    }\n+                    let t3;\n+                    if ($[11] !== label || $[12] !== t2) {\n+                        t3 = /* @__PURE__ */ jsxRuntime.jsx(Tooltip, {\n+                            label,\n+                            children: t2\n+                        });\n+                        $[11] = label;\n+                        $[12] = t2;\n+                        $[13] = t3;\n+                    } else {\n+                        t3 = $[13];\n+                    }\n+                    let t4;\n+                    if ($[14] !== children) {\n+                        t4 = /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Content, {\n+                            children\n+                        });\n+                        $[14] = children;\n+                        $[15] = t4;\n+                    } else {\n+                        t4 = $[15];\n+                    }\n+                    let t5;\n+                    if ($[16] !== props || $[17] !== t3 || $[18] !== t4) {\n+                        t5 = /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, {\n+                            ...props,\n+                            children: [t3, t4]\n+                        });\n+                        $[16] = props;\n+                        $[17] = t3;\n+                        $[18] = t4;\n+                        $[19] = t5;\n+                    } else {\n+                        t5 = $[19];\n+                    }\n+                    return t5;\n+                };\n                 const ToolbarMenu = createComponentGroup(ToolbarMenuRoot, {\n                     Item: DropdownMenu.Item\n                 });\n                 exports.Argument = Argument;\n                 exports.ArgumentIcon = ArgumentIcon;\n                 exports.Button = Button$1;\n                 exports.ButtonGroup = ButtonGroup;\n@@ -78565,14 +88006,15 @@\n                 exports.TooltipRoot = TooltipRoot;\n                 exports.TrashIcon = TrashIcon;\n                 exports.TypeDocumentation = TypeDocumentation;\n                 exports.TypeIcon = TypeIcon;\n                 exports.TypeLink = TypeLink;\n                 exports.UnStyledButton = UnStyledButton;\n                 exports.VariableEditor = VariableEditor;\n+                exports.isMacOs = isMacOs;\n                 exports.useAutoCompleteLeafs = useAutoCompleteLeafs;\n                 exports.useCopyQuery = useCopyQuery;\n                 exports.useDragResize = useDragResize;\n                 exports.useEditorContext = useEditorContext;\n                 exports.useEditorState = useEditorState;\n                 exports.useExecutionContext = useExecutionContext;\n                 exports.useExplorerContext = useExplorerContext;\n@@ -78592,5888 +88034,595 @@\n                 exports.useVariableEditor = useVariableEditor;\n                 exports.useVariablesEditorState = useVariablesEditorState;\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-react/dist/info-addon.cjs.js\":\n-            /*!***************************************************!*\\\n-              !*** ../../graphiql-react/dist/info-addon.cjs.js ***!\n-              \\***************************************************/\n-            /***/\n-            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs.js */ \"../../graphiql-react/dist/codemirror.cjs.js\");\n-                codemirror.CodeMirror.defineOption(\"info\", false, (cm, options, old) => {\n-                    if (old && old !== codemirror.CodeMirror.Init) {\n-                        const oldOnMouseOver = cm.state.info.onMouseOver;\n-                        codemirror.CodeMirror.off(cm.getWrapperElement(), \"mouseover\", oldOnMouseOver);\n-                        clearTimeout(cm.state.info.hoverTimeout);\n-                        delete cm.state.info;\n-                    }\n-                    if (options) {\n-                        const state = cm.state.info = createState(options);\n-                        state.onMouseOver = onMouseOver.bind(null, cm);\n-                        codemirror.CodeMirror.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n-                    }\n-                });\n-\n-                function createState(options) {\n-                    return {\n-                        options: options instanceof Function ? {\n-                            render: options\n-                        } : options === true ? {} : options\n-                    };\n-                }\n-\n-                function getHoverTime(cm) {\n-                    const {\n-                        options\n-                    } = cm.state.info;\n-                    return (options === null || options === void 0 ? void 0 : options.hoverTime) || 500;\n-                }\n-\n-                function onMouseOver(cm, e) {\n-                    const state = cm.state.info;\n-                    const target = e.target || e.srcElement;\n-                    if (!(target instanceof HTMLElement)) {\n-                        return;\n-                    }\n-                    if (target.nodeName !== \"SPAN\" || state.hoverTimeout !== void 0) {\n-                        return;\n-                    }\n-                    const box = target.getBoundingClientRect();\n-                    const onMouseMove = function() {\n-                        clearTimeout(state.hoverTimeout);\n-                        state.hoverTimeout = setTimeout(onHover, hoverTime);\n-                    };\n-                    const onMouseOut = function() {\n-                        codemirror.CodeMirror.off(document, \"mousemove\", onMouseMove);\n-                        codemirror.CodeMirror.off(cm.getWrapperElement(), \"mouseout\", onMouseOut);\n-                        clearTimeout(state.hoverTimeout);\n-                        state.hoverTimeout = void 0;\n-                    };\n-                    const onHover = function() {\n-                        codemirror.CodeMirror.off(document, \"mousemove\", onMouseMove);\n-                        codemirror.CodeMirror.off(cm.getWrapperElement(), \"mouseout\", onMouseOut);\n-                        state.hoverTimeout = void 0;\n-                        onMouseHover(cm, box);\n-                    };\n-                    const hoverTime = getHoverTime(cm);\n-                    state.hoverTimeout = setTimeout(onHover, hoverTime);\n-                    codemirror.CodeMirror.on(document, \"mousemove\", onMouseMove);\n-                    codemirror.CodeMirror.on(cm.getWrapperElement(), \"mouseout\", onMouseOut);\n-                }\n-\n-                function onMouseHover(cm, box) {\n-                    const pos = cm.coordsChar({\n-                        left: (box.left + box.right) / 2,\n-                        top: (box.top + box.bottom) / 2\n-                    }, \"window\");\n-                    const state = cm.state.info;\n-                    const {\n-                        options\n-                    } = state;\n-                    const render = options.render || cm.getHelper(pos, \"info\");\n-                    if (render) {\n-                        const token = cm.getTokenAt(pos, true);\n-                        if (token) {\n-                            const info = render(token, options, cm, pos);\n-                            if (info) {\n-                                showPopup(cm, box, info);\n-                            }\n-                        }\n-                    }\n-                }\n-\n-                function showPopup(cm, box, info) {\n-                    const popup = document.createElement(\"div\");\n-                    popup.className = \"CodeMirror-info\";\n-                    popup.append(info);\n-                    document.body.append(popup);\n-                    const popupBox = popup.getBoundingClientRect();\n-                    const popupStyle = window.getComputedStyle(popup);\n-                    const popupWidth = popupBox.right - popupBox.left + parseFloat(popupStyle.marginLeft) + parseFloat(popupStyle.marginRight);\n-                    const popupHeight = popupBox.bottom - popupBox.top + parseFloat(popupStyle.marginTop) + parseFloat(popupStyle.marginBottom);\n-                    let topPos = box.bottom;\n-                    if (popupHeight > window.innerHeight - box.bottom - 15 && box.top > window.innerHeight - box.bottom) {\n-                        topPos = box.top - popupHeight;\n-                    }\n-                    if (topPos < 0) {\n-                        topPos = box.bottom;\n-                    }\n-                    let leftPos = Math.max(0, window.innerWidth - popupWidth - 15);\n-                    if (leftPos > box.left) {\n-                        leftPos = box.left;\n-                    }\n-                    popup.style.opacity = \"1\";\n-                    popup.style.top = topPos + \"px\";\n-                    popup.style.left = leftPos + \"px\";\n-                    let popupTimeout;\n-                    const onMouseOverPopup = function() {\n-                        clearTimeout(popupTimeout);\n-                    };\n-                    const onMouseOut = function() {\n-                        clearTimeout(popupTimeout);\n-                        popupTimeout = setTimeout(hidePopup, 200);\n-                    };\n-                    const hidePopup = function() {\n-                        codemirror.CodeMirror.off(popup, \"mouseover\", onMouseOverPopup);\n-                        codemirror.CodeMirror.off(popup, \"mouseout\", onMouseOut);\n-                        codemirror.CodeMirror.off(cm.getWrapperElement(), \"mouseout\", onMouseOut);\n-                        if (popup.style.opacity) {\n-                            popup.style.opacity = \"0\";\n-                            setTimeout(() => {\n-                                if (popup.parentNode) {\n-                                    popup.remove();\n-                                }\n-                            }, 600);\n-                        } else if (popup.parentNode) {\n-                            popup.remove();\n-                        }\n-                    };\n-                    codemirror.CodeMirror.on(popup, \"mouseover\", onMouseOverPopup);\n-                    codemirror.CodeMirror.on(popup, \"mouseout\", onMouseOut);\n-                    codemirror.CodeMirror.on(cm.getWrapperElement(), \"mouseout\", onMouseOut);\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/info.cjs.js\":\n-            /*!*********************************************!*\\\n-              !*** ../../graphiql-react/dist/info.cjs.js ***!\n-              \\*********************************************/\n-            /***/\n-            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n-\n-\n-\n-                const graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs.js */ \"../../graphiql-react/dist/codemirror.cjs.js\");\n-                const SchemaReference = __webpack_require__( /*! ./SchemaReference.cjs.js */ \"../../graphiql-react/dist/SchemaReference.cjs.js\");\n-                __webpack_require__( /*! ./info-addon.cjs.js */ \"../../graphiql-react/dist/info-addon.cjs.js\");\n-                codemirror.CodeMirror.registerHelper(\"info\", \"graphql\", (token, options) => {\n-                    var _a;\n-                    if (!options.schema || !token.state) {\n-                        return;\n-                    }\n-                    const {\n-                        kind,\n-                        step\n-                    } = token.state;\n-                    const typeInfo = SchemaReference.getTypeInfo(options.schema, token.state);\n-                    if (kind === \"Field\" && step === 0 && typeInfo.fieldDef || kind === \"AliasedField\" && step === 2 && typeInfo.fieldDef || kind === \"ObjectField\" && step === 0 && typeInfo.fieldDef) {\n-                        const header = document.createElement(\"div\");\n-                        header.className = \"CodeMirror-info-header\";\n-                        renderField(header, typeInfo, options);\n-                        const into = document.createElement(\"div\");\n-                        into.append(header);\n-                        renderDescription(into, options, typeInfo.fieldDef);\n-                        return into;\n-                    }\n-                    if (kind === \"Directive\" && step === 1 && typeInfo.directiveDef) {\n-                        const header = document.createElement(\"div\");\n-                        header.className = \"CodeMirror-info-header\";\n-                        renderDirective(header, typeInfo, options);\n-                        const into = document.createElement(\"div\");\n-                        into.append(header);\n-                        renderDescription(into, options, typeInfo.directiveDef);\n-                        return into;\n-                    }\n-                    if (kind === \"Argument\" && step === 0 && typeInfo.argDef) {\n-                        const header = document.createElement(\"div\");\n-                        header.className = \"CodeMirror-info-header\";\n-                        renderArg(header, typeInfo, options);\n-                        const into = document.createElement(\"div\");\n-                        into.append(header);\n-                        renderDescription(into, options, typeInfo.argDef);\n-                        return into;\n-                    }\n-                    if (kind === \"EnumValue\" && ((_a = typeInfo.enumValue) === null || _a === void 0 ? void 0 : _a.description)) {\n-                        const header = document.createElement(\"div\");\n-                        header.className = \"CodeMirror-info-header\";\n-                        renderEnumValue(header, typeInfo, options);\n-                        const into = document.createElement(\"div\");\n-                        into.append(header);\n-                        renderDescription(into, options, typeInfo.enumValue);\n-                        return into;\n-                    }\n-                    if (kind === \"NamedType\" && typeInfo.type && typeInfo.type.description) {\n-                        const header = document.createElement(\"div\");\n-                        header.className = \"CodeMirror-info-header\";\n-                        renderType(header, typeInfo, options, typeInfo.type);\n-                        const into = document.createElement(\"div\");\n-                        into.append(header);\n-                        renderDescription(into, options, typeInfo.type);\n-                        return into;\n-                    }\n-                });\n-\n-                function renderField(into, typeInfo, options) {\n-                    renderQualifiedField(into, typeInfo, options);\n-                    renderTypeAnnotation(into, typeInfo, options, typeInfo.type);\n-                }\n-\n-                function renderQualifiedField(into, typeInfo, options) {\n-                    var _a;\n-                    const fieldName = ((_a = typeInfo.fieldDef) === null || _a === void 0 ? void 0 : _a.name) || \"\";\n-                    text(into, fieldName, \"field-name\", options, SchemaReference.getFieldReference(typeInfo));\n-                }\n-\n-                function renderDirective(into, typeInfo, options) {\n-                    var _a;\n-                    const name = \"@\" + (((_a = typeInfo.directiveDef) === null || _a === void 0 ? void 0 : _a.name) || \"\");\n-                    text(into, name, \"directive-name\", options, SchemaReference.getDirectiveReference(typeInfo));\n-                }\n-\n-                function renderArg(into, typeInfo, options) {\n-                    var _a;\n-                    const name = ((_a = typeInfo.argDef) === null || _a === void 0 ? void 0 : _a.name) || \"\";\n-                    text(into, name, \"arg-name\", options, SchemaReference.getArgumentReference(typeInfo));\n-                    renderTypeAnnotation(into, typeInfo, options, typeInfo.inputType);\n-                }\n-\n-                function renderEnumValue(into, typeInfo, options) {\n-                    var _a;\n-                    const name = ((_a = typeInfo.enumValue) === null || _a === void 0 ? void 0 : _a.name) || \"\";\n-                    renderType(into, typeInfo, options, typeInfo.inputType);\n-                    text(into, \".\");\n-                    text(into, name, \"enum-value\", options, SchemaReference.getEnumValueReference(typeInfo));\n-                }\n-\n-                function renderTypeAnnotation(into, typeInfo, options, t) {\n-                    const typeSpan = document.createElement(\"span\");\n-                    typeSpan.className = \"type-name-pill\";\n-                    if (t instanceof graphql.GraphQLNonNull) {\n-                        renderType(typeSpan, typeInfo, options, t.ofType);\n-                        text(typeSpan, \"!\");\n-                    } else if (t instanceof graphql.GraphQLList) {\n-                        text(typeSpan, \"[\");\n-                        renderType(typeSpan, typeInfo, options, t.ofType);\n-                        text(typeSpan, \"]\");\n-                    } else {\n-                        text(typeSpan, (t === null || t === void 0 ? void 0 : t.name) || \"\", \"type-name\", options, SchemaReference.getTypeReference(typeInfo, t));\n-                    }\n-                    into.append(typeSpan);\n-                }\n-\n-                function renderType(into, typeInfo, options, t) {\n-                    if (t instanceof graphql.GraphQLNonNull) {\n-                        renderType(into, typeInfo, options, t.ofType);\n-                        text(into, \"!\");\n-                    } else if (t instanceof graphql.GraphQLList) {\n-                        text(into, \"[\");\n-                        renderType(into, typeInfo, options, t.ofType);\n-                        text(into, \"]\");\n-                    } else {\n-                        text(into, (t === null || t === void 0 ? void 0 : t.name) || \"\", \"type-name\", options, SchemaReference.getTypeReference(typeInfo, t));\n-                    }\n-                }\n-\n-                function renderDescription(into, options, def) {\n-                    const {\n-                        description\n-                    } = def;\n-                    if (description) {\n-                        const descriptionDiv = document.createElement(\"div\");\n-                        descriptionDiv.className = \"info-description\";\n-                        if (options.renderDescription) {\n-                            descriptionDiv.innerHTML = options.renderDescription(description);\n-                        } else {\n-                            descriptionDiv.append(document.createTextNode(description));\n-                        }\n-                        into.append(descriptionDiv);\n-                    }\n-                    renderDeprecation(into, options, def);\n-                }\n-\n-                function renderDeprecation(into, options, def) {\n-                    const reason = def.deprecationReason;\n-                    if (reason) {\n-                        const deprecationDiv = document.createElement(\"div\");\n-                        deprecationDiv.className = \"info-deprecation\";\n-                        into.append(deprecationDiv);\n-                        const label = document.createElement(\"span\");\n-                        label.className = \"info-deprecation-label\";\n-                        label.append(document.createTextNode(\"Deprecated\"));\n-                        deprecationDiv.append(label);\n-                        const reasonDiv = document.createElement(\"div\");\n-                        reasonDiv.className = \"info-deprecation-reason\";\n-                        if (options.renderDescription) {\n-                            reasonDiv.innerHTML = options.renderDescription(reason);\n-                        } else {\n-                            reasonDiv.append(document.createTextNode(reason));\n-                        }\n-                        deprecationDiv.append(reasonDiv);\n-                    }\n-                }\n-\n-                function text(into, content, className = \"\", options = {\n-                    onClick: null\n-                }, ref = null) {\n-                    if (className) {\n-                        const {\n-                            onClick\n-                        } = options;\n-                        let node;\n-                        if (onClick) {\n-                            node = document.createElement(\"a\");\n-                            node.href = \"javascript:void 0\";\n-                            node.addEventListener(\"click\", e => {\n-                                e.preventDefault();\n-                                onClick(ref, e);\n-                            });\n-                        } else {\n-                            node = document.createElement(\"span\");\n-                        }\n-                        node.className = className;\n-                        node.append(document.createTextNode(content));\n-                        into.append(node);\n-                    } else {\n-                        into.append(document.createTextNode(content));\n-                    }\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/javascript.cjs.js\":\n-            /*!***************************************************!*\\\n-              !*** ../../graphiql-react/dist/javascript.cjs.js ***!\n-              \\***************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n-\n-                function _mergeNamespaces(n, m) {\n-                    for (var i = 0; i < m.length; i++) {\n-                        const e = m[i];\n-                        if (typeof e !== \"string\" && !Array.isArray(e)) {\n-                            for (const k in e) {\n-                                if (k !== \"default\" && !(k in n)) {\n-                                    const d = Object.getOwnPropertyDescriptor(e, k);\n-                                    if (d) {\n-                                        Object.defineProperty(n, k, d.get ? d : {\n-                                            enumerable: true,\n-                                            get: () => e[k]\n-                                        });\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    }\n-                    return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, {\n-                        value: \"Module\"\n-                    }));\n-                }\n-                var javascript$2 = {\n-                    exports: {}\n-                };\n-                (function(module2, exports2) {\n-                    (function(mod) {\n-                        mod(codemirror.requireCodemirror());\n-                    })(function(CodeMirror) {\n-                        CodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n-                            var indentUnit = config.indentUnit;\n-                            var statementIndent = parserConfig.statementIndent;\n-                            var jsonldMode = parserConfig.jsonld;\n-                            var jsonMode = parserConfig.json || jsonldMode;\n-                            var trackScope = parserConfig.trackScope !== false;\n-                            var isTS = parserConfig.typescript;\n-                            var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n-                            var keywords = function() {\n-                                function kw(type2) {\n-                                    return {\n-                                        type: type2,\n-                                        style: \"keyword\"\n-                                    };\n-                                }\n-                                var A = kw(\"keyword a\"),\n-                                    B = kw(\"keyword b\"),\n-                                    C = kw(\"keyword c\"),\n-                                    D = kw(\"keyword d\");\n-                                var operator = kw(\"operator\"),\n-                                    atom = {\n-                                        type: \"atom\",\n-                                        style: \"atom\"\n-                                    };\n-                                return {\n-                                    \"if\": kw(\"if\"),\n-                                    \"while\": A,\n-                                    \"with\": A,\n-                                    \"else\": B,\n-                                    \"do\": B,\n-                                    \"try\": B,\n-                                    \"finally\": B,\n-                                    \"return\": D,\n-                                    \"break\": D,\n-                                    \"continue\": D,\n-                                    \"new\": kw(\"new\"),\n-                                    \"delete\": C,\n-                                    \"void\": C,\n-                                    \"throw\": C,\n-                                    \"debugger\": kw(\"debugger\"),\n-                                    \"var\": kw(\"var\"),\n-                                    \"const\": kw(\"var\"),\n-                                    \"let\": kw(\"var\"),\n-                                    \"function\": kw(\"function\"),\n-                                    \"catch\": kw(\"catch\"),\n-                                    \"for\": kw(\"for\"),\n-                                    \"switch\": kw(\"switch\"),\n-                                    \"case\": kw(\"case\"),\n-                                    \"default\": kw(\"default\"),\n-                                    \"in\": operator,\n-                                    \"typeof\": operator,\n-                                    \"instanceof\": operator,\n-                                    \"true\": atom,\n-                                    \"false\": atom,\n-                                    \"null\": atom,\n-                                    \"undefined\": atom,\n-                                    \"NaN\": atom,\n-                                    \"Infinity\": atom,\n-                                    \"this\": kw(\"this\"),\n-                                    \"class\": kw(\"class\"),\n-                                    \"super\": kw(\"atom\"),\n-                                    \"yield\": C,\n-                                    \"export\": kw(\"export\"),\n-                                    \"import\": kw(\"import\"),\n-                                    \"extends\": C,\n-                                    \"await\": C\n-                                };\n-                            }();\n-                            var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n-                            var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n-\n-                            function readRegexp(stream) {\n-                                var escaped = false,\n-                                    next,\n-                                    inSet = false;\n-                                while ((next = stream.next()) != null) {\n-                                    if (!escaped) {\n-                                        if (next == \"/\" && !inSet) return;\n-                                        if (next == \"[\") inSet = true;\n-                                        else if (inSet && next == \"]\") inSet = false;\n-                                    }\n-                                    escaped = !escaped && next == \"\\\\\";\n-                                }\n-                            }\n-                            var type, content;\n-\n-                            function ret(tp, style, cont2) {\n-                                type = tp;\n-                                content = cont2;\n-                                return style;\n-                            }\n-\n-                            function tokenBase(stream, state) {\n-                                var ch = stream.next();\n-                                if (ch == '\"' || ch == \"'\") {\n-                                    state.tokenize = tokenString(ch);\n-                                    return state.tokenize(stream, state);\n-                                } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n-                                    return ret(\"number\", \"number\");\n-                                } else if (ch == \".\" && stream.match(\"..\")) {\n-                                    return ret(\"spread\", \"meta\");\n-                                } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n-                                    return ret(ch);\n-                                } else if (ch == \"=\" && stream.eat(\">\")) {\n-                                    return ret(\"=>\", \"operator\");\n-                                } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n-                                    return ret(\"number\", \"number\");\n-                                } else if (/\\d/.test(ch)) {\n-                                    stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n-                                    return ret(\"number\", \"number\");\n-                                } else if (ch == \"/\") {\n-                                    if (stream.eat(\"*\")) {\n-                                        state.tokenize = tokenComment;\n-                                        return tokenComment(stream, state);\n-                                    } else if (stream.eat(\"/\")) {\n-                                        stream.skipToEnd();\n-                                        return ret(\"comment\", \"comment\");\n-                                    } else if (expressionAllowed(stream, state, 1)) {\n-                                        readRegexp(stream);\n-                                        stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n-                                        return ret(\"regexp\", \"string-2\");\n-                                    } else {\n-                                        stream.eat(\"=\");\n-                                        return ret(\"operator\", \"operator\", stream.current());\n-                                    }\n-                                } else if (ch == \"`\") {\n-                                    state.tokenize = tokenQuasi;\n-                                    return tokenQuasi(stream, state);\n-                                } else if (ch == \"#\" && stream.peek() == \"!\") {\n-                                    stream.skipToEnd();\n-                                    return ret(\"meta\", \"meta\");\n-                                } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n-                                    return ret(\"variable\", \"property\");\n-                                } else if (ch == \"<\" && stream.match(\"!--\") || ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start))) {\n-                                    stream.skipToEnd();\n-                                    return ret(\"comment\", \"comment\");\n-                                } else if (isOperatorChar.test(ch)) {\n-                                    if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n-                                        if (stream.eat(\"=\")) {\n-                                            if (ch == \"!\" || ch == \"=\") stream.eat(\"=\");\n-                                        } else if (/[<>*+\\-|&?]/.test(ch)) {\n-                                            stream.eat(ch);\n-                                            if (ch == \">\") stream.eat(ch);\n-                                        }\n-                                    }\n-                                    if (ch == \"?\" && stream.eat(\".\")) return ret(\".\");\n-                                    return ret(\"operator\", \"operator\", stream.current());\n-                                } else if (wordRE.test(ch)) {\n-                                    stream.eatWhile(wordRE);\n-                                    var word = stream.current();\n-                                    if (state.lastType != \".\") {\n-                                        if (keywords.propertyIsEnumerable(word)) {\n-                                            var kw = keywords[word];\n-                                            return ret(kw.type, kw.style, word);\n-                                        }\n-                                        if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false)) return ret(\"async\", \"keyword\", word);\n-                                    }\n-                                    return ret(\"variable\", \"variable\", word);\n-                                }\n-                            }\n-\n-                            function tokenString(quote) {\n-                                return function(stream, state) {\n-                                    var escaped = false,\n-                                        next;\n-                                    if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)) {\n-                                        state.tokenize = tokenBase;\n-                                        return ret(\"jsonld-keyword\", \"meta\");\n-                                    }\n-                                    while ((next = stream.next()) != null) {\n-                                        if (next == quote && !escaped) break;\n-                                        escaped = !escaped && next == \"\\\\\";\n-                                    }\n-                                    if (!escaped) state.tokenize = tokenBase;\n-                                    return ret(\"string\", \"string\");\n-                                };\n-                            }\n-\n-                            function tokenComment(stream, state) {\n-                                var maybeEnd = false,\n-                                    ch;\n-                                while (ch = stream.next()) {\n-                                    if (ch == \"/\" && maybeEnd) {\n-                                        state.tokenize = tokenBase;\n-                                        break;\n-                                    }\n-                                    maybeEnd = ch == \"*\";\n-                                }\n-                                return ret(\"comment\", \"comment\");\n-                            }\n-\n-                            function tokenQuasi(stream, state) {\n-                                var escaped = false,\n-                                    next;\n-                                while ((next = stream.next()) != null) {\n-                                    if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n-                                        state.tokenize = tokenBase;\n-                                        break;\n-                                    }\n-                                    escaped = !escaped && next == \"\\\\\";\n-                                }\n-                                return ret(\"quasi\", \"string-2\", stream.current());\n-                            }\n-                            var brackets = \"([{}])\";\n-\n-                            function findFatArrow(stream, state) {\n-                                if (state.fatArrowAt) state.fatArrowAt = null;\n-                                var arrow = stream.string.indexOf(\"=>\", stream.start);\n-                                if (arrow < 0) return;\n-                                if (isTS) {\n-                                    var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow));\n-                                    if (m) arrow = m.index;\n-                                }\n-                                var depth = 0,\n-                                    sawSomething = false;\n-                                for (var pos = arrow - 1; pos >= 0; --pos) {\n-                                    var ch = stream.string.charAt(pos);\n-                                    var bracket = brackets.indexOf(ch);\n-                                    if (bracket >= 0 && bracket < 3) {\n-                                        if (!depth) {\n-                                            ++pos;\n-                                            break;\n-                                        }\n-                                        if (--depth == 0) {\n-                                            if (ch == \"(\") sawSomething = true;\n-                                            break;\n-                                        }\n-                                    } else if (bracket >= 3 && bracket < 6) {\n-                                        ++depth;\n-                                    } else if (wordRE.test(ch)) {\n-                                        sawSomething = true;\n-                                    } else if (/[\"'\\/`]/.test(ch)) {\n-                                        for (;; --pos) {\n-                                            if (pos == 0) return;\n-                                            var next = stream.string.charAt(pos - 1);\n-                                            if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") {\n-                                                pos--;\n-                                                break;\n-                                            }\n-                                        }\n-                                    } else if (sawSomething && !depth) {\n-                                        ++pos;\n-                                        break;\n-                                    }\n-                                }\n-                                if (sawSomething && !depth) state.fatArrowAt = pos;\n-                            }\n-                            var atomicTypes = {\n-                                \"atom\": true,\n-                                \"number\": true,\n-                                \"variable\": true,\n-                                \"string\": true,\n-                                \"regexp\": true,\n-                                \"this\": true,\n-                                \"import\": true,\n-                                \"jsonld-keyword\": true\n-                            };\n-\n-                            function JSLexical(indented, column, type2, align, prev, info) {\n-                                this.indented = indented;\n-                                this.column = column;\n-                                this.type = type2;\n-                                this.prev = prev;\n-                                this.info = info;\n-                                if (align != null) this.align = align;\n-                            }\n-\n-                            function inScope(state, varname) {\n-                                if (!trackScope) return false;\n-                                for (var v = state.localVars; v; v = v.next)\n-                                    if (v.name == varname) return true;\n-                                for (var cx2 = state.context; cx2; cx2 = cx2.prev) {\n-                                    for (var v = cx2.vars; v; v = v.next)\n-                                        if (v.name == varname) return true;\n-                                }\n-                            }\n-\n-                            function parseJS(state, style, type2, content2, stream) {\n-                                var cc = state.cc;\n-                                cx.state = state;\n-                                cx.stream = stream;\n-                                cx.marked = null, cx.cc = cc;\n-                                cx.style = style;\n-                                if (!state.lexical.hasOwnProperty(\"align\")) state.lexical.align = true;\n-                                while (true) {\n-                                    var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n-                                    if (combinator(type2, content2)) {\n-                                        while (cc.length && cc[cc.length - 1].lex) cc.pop()();\n-                                        if (cx.marked) return cx.marked;\n-                                        if (type2 == \"variable\" && inScope(state, content2)) return \"variable-2\";\n-                                        return style;\n-                                    }\n-                                }\n-                            }\n-                            var cx = {\n-                                state: null,\n-                                column: null,\n-                                marked: null,\n-                                cc: null\n-                            };\n-\n-                            function pass() {\n-                                for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n-                            }\n-\n-                            function cont() {\n-                                pass.apply(null, arguments);\n-                                return true;\n-                            }\n-\n-                            function inList(name, list) {\n-                                for (var v = list; v; v = v.next)\n-                                    if (v.name == name) return true;\n-                                return false;\n-                            }\n-\n-                            function register(varname) {\n-                                var state = cx.state;\n-                                cx.marked = \"def\";\n-                                if (!trackScope) return;\n-                                if (state.context) {\n-                                    if (state.lexical.info == \"var\" && state.context && state.context.block) {\n-                                        var newContext = registerVarScoped(varname, state.context);\n-                                        if (newContext != null) {\n-                                            state.context = newContext;\n-                                            return;\n-                                        }\n-                                    } else if (!inList(varname, state.localVars)) {\n-                                        state.localVars = new Var(varname, state.localVars);\n-                                        return;\n-                                    }\n-                                }\n-                                if (parserConfig.globalVars && !inList(varname, state.globalVars)) state.globalVars = new Var(varname, state.globalVars);\n-                            }\n-\n-                            function registerVarScoped(varname, context) {\n-                                if (!context) {\n-                                    return null;\n-                                } else if (context.block) {\n-                                    var inner = registerVarScoped(varname, context.prev);\n-                                    if (!inner) return null;\n-                                    if (inner == context.prev) return context;\n-                                    return new Context(inner, context.vars, true);\n-                                } else if (inList(varname, context.vars)) {\n-                                    return context;\n-                                } else {\n-                                    return new Context(context.prev, new Var(varname, context.vars), false);\n-                                }\n-                            }\n-\n-                            function isModifier(name) {\n-                                return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\";\n-                            }\n-\n-                            function Context(prev, vars, block2) {\n-                                this.prev = prev;\n-                                this.vars = vars;\n-                                this.block = block2;\n-                            }\n-\n-                            function Var(name, next) {\n-                                this.name = name;\n-                                this.next = next;\n-                            }\n-                            var defaultVars = new Var(\"this\", new Var(\"arguments\", null));\n-\n-                            function pushcontext() {\n-                                cx.state.context = new Context(cx.state.context, cx.state.localVars, false);\n-                                cx.state.localVars = defaultVars;\n-                            }\n-\n-                            function pushblockcontext() {\n-                                cx.state.context = new Context(cx.state.context, cx.state.localVars, true);\n-                                cx.state.localVars = null;\n-                            }\n-                            pushcontext.lex = pushblockcontext.lex = true;\n-\n-                            function popcontext() {\n-                                cx.state.localVars = cx.state.context.vars;\n-                                cx.state.context = cx.state.context.prev;\n-                            }\n-                            popcontext.lex = true;\n-\n-                            function pushlex(type2, info) {\n-                                var result = function() {\n-                                    var state = cx.state,\n-                                        indent = state.indented;\n-                                    if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n-                                    else\n-                                        for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev) indent = outer.indented;\n-                                    state.lexical = new JSLexical(indent, cx.stream.column(), type2, null, state.lexical, info);\n-                                };\n-                                result.lex = true;\n-                                return result;\n-                            }\n-\n-                            function poplex() {\n-                                var state = cx.state;\n-                                if (state.lexical.prev) {\n-                                    if (state.lexical.type == \")\") state.indented = state.lexical.indented;\n-                                    state.lexical = state.lexical.prev;\n-                                }\n-                            }\n-                            poplex.lex = true;\n-\n-                            function expect(wanted) {\n-                                function exp(type2) {\n-                                    if (type2 == wanted) return cont();\n-                                    else if (wanted == \";\" || type2 == \"}\" || type2 == \")\" || type2 == \"]\") return pass();\n-                                    else return cont(exp);\n-                                }\n-                                return exp;\n-                            }\n-\n-                            function statement(type2, value) {\n-                                if (type2 == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n-                                if (type2 == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n-                                if (type2 == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n-                                if (type2 == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n-                                if (type2 == \"debugger\") return cont(expect(\";\"));\n-                                if (type2 == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n-                                if (type2 == \";\") return cont();\n-                                if (type2 == \"if\") {\n-                                    if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex) cx.state.cc.pop()();\n-                                    return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n-                                }\n-                                if (type2 == \"function\") return cont(functiondef);\n-                                if (type2 == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n-                                if (type2 == \"class\" || isTS && value == \"interface\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(pushlex(\"form\", type2 == \"class\" ? type2 : value), className, poplex);\n-                                }\n-                                if (type2 == \"variable\") {\n-                                    if (isTS && value == \"declare\") {\n-                                        cx.marked = \"keyword\";\n-                                        return cont(statement);\n-                                    } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n-                                        cx.marked = \"keyword\";\n-                                        if (value == \"enum\") return cont(enumdef);\n-                                        else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n-                                        else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex);\n-                                    } else if (isTS && value == \"namespace\") {\n-                                        cx.marked = \"keyword\";\n-                                        return cont(pushlex(\"form\"), expression, statement, poplex);\n-                                    } else if (isTS && value == \"abstract\") {\n-                                        cx.marked = \"keyword\";\n-                                        return cont(statement);\n-                                    } else {\n-                                        return cont(pushlex(\"stat\"), maybelabel);\n-                                    }\n-                                }\n-                                if (type2 == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext, block, poplex, poplex, popcontext);\n-                                if (type2 == \"case\") return cont(expression, expect(\":\"));\n-                                if (type2 == \"default\") return cont(expect(\":\"));\n-                                if (type2 == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n-                                if (type2 == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n-                                if (type2 == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n-                                if (type2 == \"async\") return cont(statement);\n-                                if (value == \"@\") return cont(expression, statement);\n-                                return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n-                            }\n-\n-                            function maybeCatchBinding(type2) {\n-                                if (type2 == \"(\") return cont(funarg, expect(\")\"));\n-                            }\n-\n-                            function expression(type2, value) {\n-                                return expressionInner(type2, value, false);\n-                            }\n-\n-                            function expressionNoComma(type2, value) {\n-                                return expressionInner(type2, value, true);\n-                            }\n-\n-                            function parenExpr(type2) {\n-                                if (type2 != \"(\") return pass();\n-                                return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex);\n-                            }\n-\n-                            function expressionInner(type2, value, noComma) {\n-                                if (cx.state.fatArrowAt == cx.stream.start) {\n-                                    var body = noComma ? arrowBodyNoComma : arrowBody;\n-                                    if (type2 == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n-                                    else if (type2 == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n-                                }\n-                                var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n-                                if (atomicTypes.hasOwnProperty(type2)) return cont(maybeop);\n-                                if (type2 == \"function\") return cont(functiondef, maybeop);\n-                                if (type2 == \"class\" || isTS && value == \"interface\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(pushlex(\"form\"), classExpression, poplex);\n-                                }\n-                                if (type2 == \"keyword c\" || type2 == \"async\") return cont(noComma ? expressionNoComma : expression);\n-                                if (type2 == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n-                                if (type2 == \"operator\" || type2 == \"spread\") return cont(noComma ? expressionNoComma : expression);\n-                                if (type2 == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n-                                if (type2 == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n-                                if (type2 == \"quasi\") return pass(quasi, maybeop);\n-                                if (type2 == \"new\") return cont(maybeTarget(noComma));\n-                                return cont();\n-                            }\n-\n-                            function maybeexpression(type2) {\n-                                if (type2.match(/[;\\}\\)\\],]/)) return pass();\n-                                return pass(expression);\n-                            }\n-\n-                            function maybeoperatorComma(type2, value) {\n-                                if (type2 == \",\") return cont(maybeexpression);\n-                                return maybeoperatorNoComma(type2, value, false);\n-                            }\n-\n-                            function maybeoperatorNoComma(type2, value, noComma) {\n-                                var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n-                                var expr = noComma == false ? expression : expressionNoComma;\n-                                if (type2 == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n-                                if (type2 == \"operator\") {\n-                                    if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n-                                    if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false)) return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n-                                    if (value == \"?\") return cont(expression, expect(\":\"), expr);\n-                                    return cont(expr);\n-                                }\n-                                if (type2 == \"quasi\") {\n-                                    return pass(quasi, me);\n-                                }\n-                                if (type2 == \";\") return;\n-                                if (type2 == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n-                                if (type2 == \".\") return cont(property, me);\n-                                if (type2 == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n-                                if (isTS && value == \"as\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(typeexpr, me);\n-                                }\n-                                if (type2 == \"regexp\") {\n-                                    cx.state.lastType = cx.marked = \"operator\";\n-                                    cx.stream.backUp(cx.stream.pos - cx.stream.start - 1);\n-                                    return cont(expr);\n-                                }\n-                            }\n-\n-                            function quasi(type2, value) {\n-                                if (type2 != \"quasi\") return pass();\n-                                if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n-                                return cont(maybeexpression, continueQuasi);\n-                            }\n-\n-                            function continueQuasi(type2) {\n-                                if (type2 == \"}\") {\n-                                    cx.marked = \"string-2\";\n-                                    cx.state.tokenize = tokenQuasi;\n-                                    return cont(quasi);\n-                                }\n-                            }\n-\n-                            function arrowBody(type2) {\n-                                findFatArrow(cx.stream, cx.state);\n-                                return pass(type2 == \"{\" ? statement : expression);\n-                            }\n-\n-                            function arrowBodyNoComma(type2) {\n-                                findFatArrow(cx.stream, cx.state);\n-                                return pass(type2 == \"{\" ? statement : expressionNoComma);\n-                            }\n-\n-                            function maybeTarget(noComma) {\n-                                return function(type2) {\n-                                    if (type2 == \".\") return cont(noComma ? targetNoComma : target);\n-                                    else if (type2 == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma);\n-                                    else return pass(noComma ? expressionNoComma : expression);\n-                                };\n-                            }\n-\n-                            function target(_, value) {\n-                                if (value == \"target\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(maybeoperatorComma);\n-                                }\n-                            }\n-\n-                            function targetNoComma(_, value) {\n-                                if (value == \"target\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(maybeoperatorNoComma);\n-                                }\n-                            }\n-\n-                            function maybelabel(type2) {\n-                                if (type2 == \":\") return cont(poplex, statement);\n-                                return pass(maybeoperatorComma, expect(\";\"), poplex);\n-                            }\n-\n-                            function property(type2) {\n-                                if (type2 == \"variable\") {\n-                                    cx.marked = \"property\";\n-                                    return cont();\n-                                }\n-                            }\n-\n-                            function objprop(type2, value) {\n-                                if (type2 == \"async\") {\n-                                    cx.marked = \"property\";\n-                                    return cont(objprop);\n-                                } else if (type2 == \"variable\" || cx.style == \"keyword\") {\n-                                    cx.marked = \"property\";\n-                                    if (value == \"get\" || value == \"set\") return cont(getterSetter);\n-                                    var m;\n-                                    if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false))) cx.state.fatArrowAt = cx.stream.pos + m[0].length;\n-                                    return cont(afterprop);\n-                                } else if (type2 == \"number\" || type2 == \"string\") {\n-                                    cx.marked = jsonldMode ? \"property\" : cx.style + \" property\";\n-                                    return cont(afterprop);\n-                                } else if (type2 == \"jsonld-keyword\") {\n-                                    return cont(afterprop);\n-                                } else if (isTS && isModifier(value)) {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(objprop);\n-                                } else if (type2 == \"[\") {\n-                                    return cont(expression, maybetype, expect(\"]\"), afterprop);\n-                                } else if (type2 == \"spread\") {\n-                                    return cont(expressionNoComma, afterprop);\n-                                } else if (value == \"*\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(objprop);\n-                                } else if (type2 == \":\") {\n-                                    return pass(afterprop);\n-                                }\n-                            }\n-\n-                            function getterSetter(type2) {\n-                                if (type2 != \"variable\") return pass(afterprop);\n-                                cx.marked = \"property\";\n-                                return cont(functiondef);\n-                            }\n-\n-                            function afterprop(type2) {\n-                                if (type2 == \":\") return cont(expressionNoComma);\n-                                if (type2 == \"(\") return pass(functiondef);\n-                            }\n-\n-                            function commasep(what, end, sep) {\n-                                function proceed(type2, value) {\n-                                    if (sep ? sep.indexOf(type2) > -1 : type2 == \",\") {\n-                                        var lex = cx.state.lexical;\n-                                        if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n-                                        return cont(function(type3, value2) {\n-                                            if (type3 == end || value2 == end) return pass();\n-                                            return pass(what);\n-                                        }, proceed);\n-                                    }\n-                                    if (type2 == end || value == end) return cont();\n-                                    if (sep && sep.indexOf(\";\") > -1) return pass(what);\n-                                    return cont(expect(end));\n-                                }\n-                                return function(type2, value) {\n-                                    if (type2 == end || value == end) return cont();\n-                                    return pass(what, proceed);\n-                                };\n-                            }\n-\n-                            function contCommasep(what, end, info) {\n-                                for (var i = 3; i < arguments.length; i++) cx.cc.push(arguments[i]);\n-                                return cont(pushlex(end, info), commasep(what, end), poplex);\n-                            }\n-\n-                            function block(type2) {\n-                                if (type2 == \"}\") return cont();\n-                                return pass(statement, block);\n-                            }\n-\n-                            function maybetype(type2, value) {\n-                                if (isTS) {\n-                                    if (type2 == \":\") return cont(typeexpr);\n-                                    if (value == \"?\") return cont(maybetype);\n-                                }\n-                            }\n-\n-                            function maybetypeOrIn(type2, value) {\n-                                if (isTS && (type2 == \":\" || value == \"in\")) return cont(typeexpr);\n-                            }\n-\n-                            function mayberettype(type2) {\n-                                if (isTS && type2 == \":\") {\n-                                    if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr);\n-                                    else return cont(typeexpr);\n-                                }\n-                            }\n-\n-                            function isKW(_, value) {\n-                                if (value == \"is\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont();\n-                                }\n-                            }\n-\n-                            function typeexpr(type2, value) {\n-                                if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(value == \"typeof\" ? expressionNoComma : typeexpr);\n-                                }\n-                                if (type2 == \"variable\" || value == \"void\") {\n-                                    cx.marked = \"type\";\n-                                    return cont(afterType);\n-                                }\n-                                if (value == \"|\" || value == \"&\") return cont(typeexpr);\n-                                if (type2 == \"string\" || type2 == \"number\" || type2 == \"atom\") return cont(afterType);\n-                                if (type2 == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType);\n-                                if (type2 == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType);\n-                                if (type2 == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType);\n-                                if (type2 == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr);\n-                                if (type2 == \"quasi\") {\n-                                    return pass(quasiType, afterType);\n-                                }\n-                            }\n-\n-                            function maybeReturnType(type2) {\n-                                if (type2 == \"=>\") return cont(typeexpr);\n-                            }\n-\n-                            function typeprops(type2) {\n-                                if (type2.match(/[\\}\\)\\]]/)) return cont();\n-                                if (type2 == \",\" || type2 == \";\") return cont(typeprops);\n-                                return pass(typeprop, typeprops);\n-                            }\n-\n-                            function typeprop(type2, value) {\n-                                if (type2 == \"variable\" || cx.style == \"keyword\") {\n-                                    cx.marked = \"property\";\n-                                    return cont(typeprop);\n-                                } else if (value == \"?\" || type2 == \"number\" || type2 == \"string\") {\n-                                    return cont(typeprop);\n-                                } else if (type2 == \":\") {\n-                                    return cont(typeexpr);\n-                                } else if (type2 == \"[\") {\n-                                    return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop);\n-                                } else if (type2 == \"(\") {\n-                                    return pass(functiondecl, typeprop);\n-                                } else if (!type2.match(/[;\\}\\)\\],]/)) {\n-                                    return cont();\n-                                }\n-                            }\n-\n-                            function quasiType(type2, value) {\n-                                if (type2 != \"quasi\") return pass();\n-                                if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n-                                return cont(typeexpr, continueQuasiType);\n-                            }\n-\n-                            function continueQuasiType(type2) {\n-                                if (type2 == \"}\") {\n-                                    cx.marked = \"string-2\";\n-                                    cx.state.tokenize = tokenQuasi;\n-                                    return cont(quasiType);\n-                                }\n-                            }\n-\n-                            function typearg(type2, value) {\n-                                if (type2 == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg);\n-                                if (type2 == \":\") return cont(typeexpr);\n-                                if (type2 == \"spread\") return cont(typearg);\n-                                return pass(typeexpr);\n-                            }\n-\n-                            function afterType(type2, value) {\n-                                if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType);\n-                                if (value == \"|\" || type2 == \".\" || value == \"&\") return cont(typeexpr);\n-                                if (type2 == \"[\") return cont(typeexpr, expect(\"]\"), afterType);\n-                                if (value == \"extends\" || value == \"implements\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(typeexpr);\n-                                }\n-                                if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr);\n-                            }\n-\n-                            function maybeTypeArgs(_, value) {\n-                                if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType);\n-                            }\n-\n-                            function typeparam() {\n-                                return pass(typeexpr, maybeTypeDefault);\n-                            }\n-\n-                            function maybeTypeDefault(_, value) {\n-                                if (value == \"=\") return cont(typeexpr);\n-                            }\n-\n-                            function vardef(_, value) {\n-                                if (value == \"enum\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(enumdef);\n-                                }\n-                                return pass(pattern, maybetype, maybeAssign, vardefCont);\n-                            }\n-\n-                            function pattern(type2, value) {\n-                                if (isTS && isModifier(value)) {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(pattern);\n-                                }\n-                                if (type2 == \"variable\") {\n-                                    register(value);\n-                                    return cont();\n-                                }\n-                                if (type2 == \"spread\") return cont(pattern);\n-                                if (type2 == \"[\") return contCommasep(eltpattern, \"]\");\n-                                if (type2 == \"{\") return contCommasep(proppattern, \"}\");\n-                            }\n-\n-                            function proppattern(type2, value) {\n-                                if (type2 == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n-                                    register(value);\n-                                    return cont(maybeAssign);\n-                                }\n-                                if (type2 == \"variable\") cx.marked = \"property\";\n-                                if (type2 == \"spread\") return cont(pattern);\n-                                if (type2 == \"}\") return pass();\n-                                if (type2 == \"[\") return cont(expression, expect(\"]\"), expect(\":\"), proppattern);\n-                                return cont(expect(\":\"), pattern, maybeAssign);\n-                            }\n-\n-                            function eltpattern() {\n-                                return pass(pattern, maybeAssign);\n-                            }\n-\n-                            function maybeAssign(_type, value) {\n-                                if (value == \"=\") return cont(expressionNoComma);\n-                            }\n-\n-                            function vardefCont(type2) {\n-                                if (type2 == \",\") return cont(vardef);\n-                            }\n-\n-                            function maybeelse(type2, value) {\n-                                if (type2 == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n-                            }\n-\n-                            function forspec(type2, value) {\n-                                if (value == \"await\") return cont(forspec);\n-                                if (type2 == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n-                            }\n-\n-                            function forspec1(type2) {\n-                                if (type2 == \"var\") return cont(vardef, forspec2);\n-                                if (type2 == \"variable\") return cont(forspec2);\n-                                return pass(forspec2);\n-                            }\n-\n-                            function forspec2(type2, value) {\n-                                if (type2 == \")\") return cont();\n-                                if (type2 == \";\") return cont(forspec2);\n-                                if (value == \"in\" || value == \"of\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(expression, forspec2);\n-                                }\n-                                return pass(expression, forspec2);\n-                            }\n-\n-                            function functiondef(type2, value) {\n-                                if (value == \"*\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(functiondef);\n-                                }\n-                                if (type2 == \"variable\") {\n-                                    register(value);\n-                                    return cont(functiondef);\n-                                }\n-                                if (type2 == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n-                                if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef);\n-                            }\n-\n-                            function functiondecl(type2, value) {\n-                                if (value == \"*\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(functiondecl);\n-                                }\n-                                if (type2 == \"variable\") {\n-                                    register(value);\n-                                    return cont(functiondecl);\n-                                }\n-                                if (type2 == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n-                                if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl);\n-                            }\n-\n-                            function typename(type2, value) {\n-                                if (type2 == \"keyword\" || type2 == \"variable\") {\n-                                    cx.marked = \"type\";\n-                                    return cont(typename);\n-                                } else if (value == \"<\") {\n-                                    return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex);\n-                                }\n-                            }\n-\n-                            function funarg(type2, value) {\n-                                if (value == \"@\") cont(expression, funarg);\n-                                if (type2 == \"spread\") return cont(funarg);\n-                                if (isTS && isModifier(value)) {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(funarg);\n-                                }\n-                                if (isTS && type2 == \"this\") return cont(maybetype, maybeAssign);\n-                                return pass(pattern, maybetype, maybeAssign);\n-                            }\n-\n-                            function classExpression(type2, value) {\n-                                if (type2 == \"variable\") return className(type2, value);\n-                                return classNameAfter(type2, value);\n-                            }\n-\n-                            function className(type2, value) {\n-                                if (type2 == \"variable\") {\n-                                    register(value);\n-                                    return cont(classNameAfter);\n-                                }\n-                            }\n-\n-                            function classNameAfter(type2, value) {\n-                                if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter);\n-                                if (value == \"extends\" || value == \"implements\" || isTS && type2 == \",\") {\n-                                    if (value == \"implements\") cx.marked = \"keyword\";\n-                                    return cont(isTS ? typeexpr : expression, classNameAfter);\n-                                }\n-                                if (type2 == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n-                            }\n-\n-                            function classBody(type2, value) {\n-                                if (type2 == \"async\" || type2 == \"variable\" && (value == \"static\" || value == \"get\" || value == \"set\" || isTS && isModifier(value)) && cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false)) {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(classBody);\n-                                }\n-                                if (type2 == \"variable\" || cx.style == \"keyword\") {\n-                                    cx.marked = \"property\";\n-                                    return cont(classfield, classBody);\n-                                }\n-                                if (type2 == \"number\" || type2 == \"string\") return cont(classfield, classBody);\n-                                if (type2 == \"[\") return cont(expression, maybetype, expect(\"]\"), classfield, classBody);\n-                                if (value == \"*\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(classBody);\n-                                }\n-                                if (isTS && type2 == \"(\") return pass(functiondecl, classBody);\n-                                if (type2 == \";\" || type2 == \",\") return cont(classBody);\n-                                if (type2 == \"}\") return cont();\n-                                if (value == \"@\") return cont(expression, classBody);\n-                            }\n-\n-                            function classfield(type2, value) {\n-                                if (value == \"!\") return cont(classfield);\n-                                if (value == \"?\") return cont(classfield);\n-                                if (type2 == \":\") return cont(typeexpr, maybeAssign);\n-                                if (value == \"=\") return cont(expressionNoComma);\n-                                var context = cx.state.lexical.prev,\n-                                    isInterface = context && context.info == \"interface\";\n-                                return pass(isInterface ? functiondecl : functiondef);\n-                            }\n-\n-                            function afterExport(type2, value) {\n-                                if (value == \"*\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(maybeFrom, expect(\";\"));\n-                                }\n-                                if (value == \"default\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(expression, expect(\";\"));\n-                                }\n-                                if (type2 == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n-                                return pass(statement);\n-                            }\n-\n-                            function exportField(type2, value) {\n-                                if (value == \"as\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(expect(\"variable\"));\n-                                }\n-                                if (type2 == \"variable\") return pass(expressionNoComma, exportField);\n-                            }\n-\n-                            function afterImport(type2) {\n-                                if (type2 == \"string\") return cont();\n-                                if (type2 == \"(\") return pass(expression);\n-                                if (type2 == \".\") return pass(maybeoperatorComma);\n-                                return pass(importSpec, maybeMoreImports, maybeFrom);\n-                            }\n-\n-                            function importSpec(type2, value) {\n-                                if (type2 == \"{\") return contCommasep(importSpec, \"}\");\n-                                if (type2 == \"variable\") register(value);\n-                                if (value == \"*\") cx.marked = \"keyword\";\n-                                return cont(maybeAs);\n-                            }\n-\n-                            function maybeMoreImports(type2) {\n-                                if (type2 == \",\") return cont(importSpec, maybeMoreImports);\n-                            }\n-\n-                            function maybeAs(_type, value) {\n-                                if (value == \"as\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(importSpec);\n-                                }\n-                            }\n-\n-                            function maybeFrom(_type, value) {\n-                                if (value == \"from\") {\n-                                    cx.marked = \"keyword\";\n-                                    return cont(expression);\n-                                }\n-                            }\n-\n-                            function arrayLiteral(type2) {\n-                                if (type2 == \"]\") return cont();\n-                                return pass(commasep(expressionNoComma, \"]\"));\n-                            }\n-\n-                            function enumdef() {\n-                                return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex);\n-                            }\n-\n-                            function enummember() {\n-                                return pass(pattern, maybeAssign);\n-                            }\n-\n-                            function isContinuedStatement(state, textAfter) {\n-                                return state.lastType == \"operator\" || state.lastType == \",\" || isOperatorChar.test(textAfter.charAt(0)) || /[,.]/.test(textAfter.charAt(0));\n-                            }\n-\n-                            function expressionAllowed(stream, state, backUp) {\n-                                return state.tokenize == tokenBase && /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) || state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)));\n-                            }\n-                            return {\n-                                startState: function(basecolumn) {\n-                                    var state = {\n-                                        tokenize: tokenBase,\n-                                        lastType: \"sof\",\n-                                        cc: [],\n-                                        lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n-                                        localVars: parserConfig.localVars,\n-                                        context: parserConfig.localVars && new Context(null, null, false),\n-                                        indented: basecolumn || 0\n-                                    };\n-                                    if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\") state.globalVars = parserConfig.globalVars;\n-                                    return state;\n-                                },\n-                                token: function(stream, state) {\n-                                    if (stream.sol()) {\n-                                        if (!state.lexical.hasOwnProperty(\"align\")) state.lexical.align = false;\n-                                        state.indented = stream.indentation();\n-                                        findFatArrow(stream, state);\n-                                    }\n-                                    if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n-                                    var style = state.tokenize(stream, state);\n-                                    if (type == \"comment\") return style;\n-                                    state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n-                                    return parseJS(state, style, type, content, stream);\n-                                },\n-                                indent: function(state, textAfter) {\n-                                    if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n-                                    if (state.tokenize != tokenBase) return 0;\n-                                    var firstChar = textAfter && textAfter.charAt(0),\n-                                        lexical = state.lexical,\n-                                        top;\n-                                    if (!/^\\s*else\\b/.test(textAfter))\n-                                        for (var i = state.cc.length - 1; i >= 0; --i) {\n-                                            var c = state.cc[i];\n-                                            if (c == poplex) lexical = lexical.prev;\n-                                            else if (c != maybeelse && c != popcontext) break;\n-                                        }\n-                                    while ((lexical.type == \"stat\" || lexical.type == \"form\") && (firstChar == \"}\" || (top = state.cc[state.cc.length - 1]) && (top == maybeoperatorComma || top == maybeoperatorNoComma) && !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))) lexical = lexical.prev;\n-                                    if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\") lexical = lexical.prev;\n-                                    var type2 = lexical.type,\n-                                        closing = firstChar == type2;\n-                                    if (type2 == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n-                                    else if (type2 == \"form\" && firstChar == \"{\") return lexical.indented;\n-                                    else if (type2 == \"form\") return lexical.indented + indentUnit;\n-                                    else if (type2 == \"stat\") return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n-                                    else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false) return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n-                                    else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n-                                    else return lexical.indented + (closing ? 0 : indentUnit);\n-                                },\n-                                electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n-                                blockCommentStart: jsonMode ? null : \"/*\",\n-                                blockCommentEnd: jsonMode ? null : \"*/\",\n-                                blockCommentContinue: jsonMode ? null : \" * \",\n-                                lineComment: jsonMode ? null : \"//\",\n-                                fold: \"brace\",\n-                                closeBrackets: \"()[]{}''\\\"\\\"``\",\n-                                helperType: jsonMode ? \"json\" : \"javascript\",\n-                                jsonldMode,\n-                                jsonMode,\n-                                expressionAllowed,\n-                                skipExpression: function(state) {\n-                                    parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null));\n-                                }\n-                            };\n-                        });\n-                        CodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n-                        CodeMirror.defineMIME(\"text/javascript\", \"javascript\");\n-                        CodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\n-                        CodeMirror.defineMIME(\"application/javascript\", \"javascript\");\n-                        CodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\n-                        CodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\n-                        CodeMirror.defineMIME(\"application/json\", {\n-                            name: \"javascript\",\n-                            json: true\n-                        });\n-                        CodeMirror.defineMIME(\"application/x-json\", {\n-                            name: \"javascript\",\n-                            json: true\n-                        });\n-                        CodeMirror.defineMIME(\"application/manifest+json\", {\n-                            name: \"javascript\",\n-                            json: true\n-                        });\n-                        CodeMirror.defineMIME(\"application/ld+json\", {\n-                            name: \"javascript\",\n-                            jsonld: true\n-                        });\n-                        CodeMirror.defineMIME(\"text/typescript\", {\n-                            name: \"javascript\",\n-                            typescript: true\n-                        });\n-                        CodeMirror.defineMIME(\"application/typescript\", {\n-                            name: \"javascript\",\n-                            typescript: true\n-                        });\n-                    });\n-                })();\n-                var javascriptExports = javascript$2.exports;\n-                const javascript = /* @__PURE__ */ codemirror.getDefaultExportFromCjs(javascriptExports);\n-                const javascript$1 = /* @__PURE__ */ _mergeNamespaces({\n-                    __proto__: null,\n-                    default: javascript\n-                }, [javascriptExports]);\n-                exports.javascript = javascript$1;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/jump-to-line.cjs.js\":\n-            /*!*****************************************************!*\\\n-              !*** ../../graphiql-react/dist/jump-to-line.cjs.js ***!\n-              \\*****************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n-                const dialog = __webpack_require__( /*! ./dialog.cjs.js */ \"../../graphiql-react/dist/dialog.cjs.js\");\n-\n-                function _mergeNamespaces(n, m) {\n-                    for (var i = 0; i < m.length; i++) {\n-                        const e = m[i];\n-                        if (typeof e !== \"string\" && !Array.isArray(e)) {\n-                            for (const k in e) {\n-                                if (k !== \"default\" && !(k in n)) {\n-                                    const d = Object.getOwnPropertyDescriptor(e, k);\n-                                    if (d) {\n-                                        Object.defineProperty(n, k, d.get ? d : {\n-                                            enumerable: true,\n-                                            get: () => e[k]\n-                                        });\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    }\n-                    return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, {\n-                        value: \"Module\"\n-                    }));\n-                }\n-                var jumpToLine$2 = {\n-                    exports: {}\n-                };\n-                (function(module2, exports2) {\n-                    (function(mod) {\n-                        mod(codemirror.requireCodemirror(), dialog.dialogExports);\n-                    })(function(CodeMirror) {\n-                        CodeMirror.defineOption(\"search\", {\n-                            bottom: false\n-                        });\n-\n-                        function dialog2(cm, text, shortText, deflt, f) {\n-                            if (cm.openDialog) cm.openDialog(text, f, {\n-                                value: deflt,\n-                                selectValueOnOpen: true,\n-                                bottom: cm.options.search.bottom\n-                            });\n-                            else f(prompt(shortText, deflt));\n-                        }\n-\n-                        function getJumpDialog(cm) {\n-                            return cm.phrase(\"Jump to line:\") + ' <input type=\"text\" style=\"width: 10em\" class=\"CodeMirror-search-field\"/> <span style=\"color: #888\" class=\"CodeMirror-search-hint\">' + cm.phrase(\"(Use line:column or scroll% syntax)\") + \"</span>\";\n-                        }\n-\n-                        function interpretLine(cm, string) {\n-                            var num = Number(string);\n-                            if (/^[-+]/.test(string)) return cm.getCursor().line + num;\n-                            else return num - 1;\n-                        }\n-                        CodeMirror.commands.jumpToLine = function(cm) {\n-                            var cur = cm.getCursor();\n-                            dialog2(cm, getJumpDialog(cm), cm.phrase(\"Jump to line:\"), cur.line + 1 + \":\" + cur.ch, function(posStr) {\n-                                if (!posStr) return;\n-                                var match;\n-                                if (match = /^\\s*([\\+\\-]?\\d+)\\s*\\:\\s*(\\d+)\\s*$/.exec(posStr)) {\n-                                    cm.setCursor(interpretLine(cm, match[1]), Number(match[2]));\n-                                } else if (match = /^\\s*([\\+\\-]?\\d+(\\.\\d+)?)\\%\\s*/.exec(posStr)) {\n-                                    var line = Math.round(cm.lineCount() * Number(match[1]) / 100);\n-                                    if (/^[-+]/.test(match[1])) line = cur.line + line + 1;\n-                                    cm.setCursor(line - 1, cur.ch);\n-                                } else if (match = /^\\s*\\:?\\s*([\\+\\-]?\\d+)\\s*/.exec(posStr)) {\n-                                    cm.setCursor(interpretLine(cm, match[1]), cur.ch);\n-                                }\n-                            });\n-                        };\n-                        CodeMirror.keyMap[\"default\"][\"Alt-G\"] = \"jumpToLine\";\n-                    });\n-                })();\n-                var jumpToLineExports = jumpToLine$2.exports;\n-                const jumpToLine = /* @__PURE__ */ codemirror.getDefaultExportFromCjs(jumpToLineExports);\n-                const jumpToLine$1 = /* @__PURE__ */ _mergeNamespaces({\n-                    __proto__: null,\n-                    default: jumpToLine\n-                }, [jumpToLineExports]);\n-                exports.jumpToLine = jumpToLine$1;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/jump.cjs.js\":\n-            /*!*********************************************!*\\\n-              !*** ../../graphiql-react/dist/jump.cjs.js ***!\n-              \\*********************************************/\n-            /***/\n-            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs.js */ \"../../graphiql-react/dist/codemirror.cjs.js\");\n-                const SchemaReference = __webpack_require__( /*! ./SchemaReference.cjs.js */ \"../../graphiql-react/dist/SchemaReference.cjs.js\");\n-                codemirror.CodeMirror.defineOption(\"jump\", false, (cm, options, old) => {\n-                    if (old && old !== codemirror.CodeMirror.Init) {\n-                        const oldOnMouseOver = cm.state.jump.onMouseOver;\n-                        codemirror.CodeMirror.off(cm.getWrapperElement(), \"mouseover\", oldOnMouseOver);\n-                        const oldOnMouseOut = cm.state.jump.onMouseOut;\n-                        codemirror.CodeMirror.off(cm.getWrapperElement(), \"mouseout\", oldOnMouseOut);\n-                        codemirror.CodeMirror.off(document, \"keydown\", cm.state.jump.onKeyDown);\n-                        delete cm.state.jump;\n-                    }\n-                    if (options) {\n-                        const state = cm.state.jump = {\n-                            options,\n-                            onMouseOver: onMouseOver.bind(null, cm),\n-                            onMouseOut: onMouseOut.bind(null, cm),\n-                            onKeyDown: onKeyDown.bind(null, cm)\n-                        };\n-                        codemirror.CodeMirror.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n-                        codemirror.CodeMirror.on(cm.getWrapperElement(), \"mouseout\", state.onMouseOut);\n-                        codemirror.CodeMirror.on(document, \"keydown\", state.onKeyDown);\n-                    }\n-                });\n-\n-                function onMouseOver(cm, event) {\n-                    const target = event.target || event.srcElement;\n-                    if (!(target instanceof HTMLElement)) {\n-                        return;\n-                    }\n-                    if ((target === null || target === void 0 ? void 0 : target.nodeName) !== \"SPAN\") {\n-                        return;\n-                    }\n-                    const box = target.getBoundingClientRect();\n-                    const cursor = {\n-                        left: (box.left + box.right) / 2,\n-                        top: (box.top + box.bottom) / 2\n-                    };\n-                    cm.state.jump.cursor = cursor;\n-                    if (cm.state.jump.isHoldingModifier) {\n-                        enableJumpMode(cm);\n-                    }\n-                }\n-\n-                function onMouseOut(cm) {\n-                    if (!cm.state.jump.isHoldingModifier && cm.state.jump.cursor) {\n-                        cm.state.jump.cursor = null;\n-                        return;\n-                    }\n-                    if (cm.state.jump.isHoldingModifier && cm.state.jump.marker) {\n-                        disableJumpMode(cm);\n-                    }\n-                }\n-\n-                function onKeyDown(cm, event) {\n-                    if (cm.state.jump.isHoldingModifier || !isJumpModifier(event.key)) {\n-                        return;\n-                    }\n-                    cm.state.jump.isHoldingModifier = true;\n-                    if (cm.state.jump.cursor) {\n-                        enableJumpMode(cm);\n-                    }\n-                    const onKeyUp = upEvent => {\n-                        if (upEvent.code !== event.code) {\n-                            return;\n-                        }\n-                        cm.state.jump.isHoldingModifier = false;\n-                        if (cm.state.jump.marker) {\n-                            disableJumpMode(cm);\n-                        }\n-                        codemirror.CodeMirror.off(document, \"keyup\", onKeyUp);\n-                        codemirror.CodeMirror.off(document, \"click\", onClick);\n-                        cm.off(\"mousedown\", onMouseDown);\n-                    };\n-                    const onClick = clickEvent => {\n-                        const {\n-                            destination,\n-                            options\n-                        } = cm.state.jump;\n-                        if (destination) {\n-                            options.onClick(destination, clickEvent);\n-                        }\n-                    };\n-                    const onMouseDown = (_, downEvent) => {\n-                        if (cm.state.jump.destination) {\n-                            downEvent.codemirrorIgnore = true;\n-                        }\n-                    };\n-                    codemirror.CodeMirror.on(document, \"keyup\", onKeyUp);\n-                    codemirror.CodeMirror.on(document, \"click\", onClick);\n-                    cm.on(\"mousedown\", onMouseDown);\n-                }\n-                const isMac = typeof navigator !== \"undefined\" && (navigator === null || navigator === void 0 ? void 0 : navigator.appVersion.includes(\"Mac\"));\n-\n-                function isJumpModifier(key) {\n-                    return key === (isMac ? \"Meta\" : \"Control\");\n-                }\n-\n-                function enableJumpMode(cm) {\n-                    if (cm.state.jump.marker) {\n-                        return;\n-                    }\n-                    const {\n-                        cursor,\n-                        options\n-                    } = cm.state.jump;\n-                    const pos = cm.coordsChar(cursor);\n-                    const token = cm.getTokenAt(pos, true);\n-                    const getDestination = options.getDestination || cm.getHelper(pos, \"jump\");\n-                    if (getDestination) {\n-                        const destination = getDestination(token, options, cm);\n-                        if (destination) {\n-                            const marker = cm.markText({\n-                                line: pos.line,\n-                                ch: token.start\n-                            }, {\n-                                line: pos.line,\n-                                ch: token.end\n-                            }, {\n-                                className: \"CodeMirror-jump-token\"\n-                            });\n-                            cm.state.jump.marker = marker;\n-                            cm.state.jump.destination = destination;\n-                        }\n-                    }\n-                }\n-\n-                function disableJumpMode(cm) {\n-                    const {\n-                        marker\n-                    } = cm.state.jump;\n-                    cm.state.jump.marker = null;\n-                    cm.state.jump.destination = null;\n-                    marker.clear();\n-                }\n-                codemirror.CodeMirror.registerHelper(\"jump\", \"graphql\", (token, options) => {\n-                    if (!options.schema || !options.onClick || !token.state) {\n-                        return;\n-                    }\n-                    const {\n-                        state\n-                    } = token;\n-                    const {\n-                        kind,\n-                        step\n-                    } = state;\n-                    const typeInfo = SchemaReference.getTypeInfo(options.schema, state);\n-                    if (kind === \"Field\" && step === 0 && typeInfo.fieldDef || kind === \"AliasedField\" && step === 2 && typeInfo.fieldDef) {\n-                        return SchemaReference.getFieldReference(typeInfo);\n-                    }\n-                    if (kind === \"Directive\" && step === 1 && typeInfo.directiveDef) {\n-                        return SchemaReference.getDirectiveReference(typeInfo);\n-                    }\n-                    if (kind === \"Argument\" && step === 0 && typeInfo.argDef) {\n-                        return SchemaReference.getArgumentReference(typeInfo);\n-                    }\n-                    if (kind === \"EnumValue\" && typeInfo.enumValue) {\n-                        return SchemaReference.getEnumValueReference(typeInfo);\n-                    }\n-                    if (kind === \"NamedType\" && typeInfo.type) {\n-                        return SchemaReference.getTypeReference(typeInfo);\n-                    }\n-                });\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/lint.cjs.js\":\n-            /*!*********************************************!*\\\n-              !*** ../../graphiql-react/dist/lint.cjs.js ***!\n-              \\*********************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n-\n-                function _mergeNamespaces(n, m) {\n-                    for (var i = 0; i < m.length; i++) {\n-                        const e = m[i];\n-                        if (typeof e !== \"string\" && !Array.isArray(e)) {\n-                            for (const k in e) {\n-                                if (k !== \"default\" && !(k in n)) {\n-                                    const d = Object.getOwnPropertyDescriptor(e, k);\n-                                    if (d) {\n-                                        Object.defineProperty(n, k, d.get ? d : {\n-                                            enumerable: true,\n-                                            get: () => e[k]\n-                                        });\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    }\n-                    return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, {\n-                        value: \"Module\"\n-                    }));\n-                }\n-                var lint$2 = {\n-                    exports: {}\n-                };\n-                (function(module2, exports2) {\n-                    (function(mod) {\n-                        mod(codemirror.requireCodemirror());\n-                    })(function(CodeMirror) {\n-                        var GUTTER_ID = \"CodeMirror-lint-markers\";\n-                        var LINT_LINE_ID = \"CodeMirror-lint-line-\";\n-\n-                        function showTooltip(cm, e, content) {\n-                            var tt = document.createElement(\"div\");\n-                            tt.className = \"CodeMirror-lint-tooltip cm-s-\" + cm.options.theme;\n-                            tt.appendChild(content.cloneNode(true));\n-                            if (cm.state.lint.options.selfContain) cm.getWrapperElement().appendChild(tt);\n-                            else document.body.appendChild(tt);\n-\n-                            function position(e2) {\n-                                if (!tt.parentNode) return CodeMirror.off(document, \"mousemove\", position);\n-                                tt.style.top = Math.max(0, e2.clientY - tt.offsetHeight - 5) + \"px\";\n-                                tt.style.left = e2.clientX + 5 + \"px\";\n-                            }\n-                            CodeMirror.on(document, \"mousemove\", position);\n-                            position(e);\n-                            if (tt.style.opacity != null) tt.style.opacity = 1;\n-                            return tt;\n-                        }\n-\n-                        function rm(elt) {\n-                            if (elt.parentNode) elt.parentNode.removeChild(elt);\n-                        }\n-\n-                        function hideTooltip(tt) {\n-                            if (!tt.parentNode) return;\n-                            if (tt.style.opacity == null) rm(tt);\n-                            tt.style.opacity = 0;\n-                            setTimeout(function() {\n-                                rm(tt);\n-                            }, 600);\n-                        }\n-\n-                        function showTooltipFor(cm, e, content, node) {\n-                            var tooltip = showTooltip(cm, e, content);\n-\n-                            function hide() {\n-                                CodeMirror.off(node, \"mouseout\", hide);\n-                                if (tooltip) {\n-                                    hideTooltip(tooltip);\n-                                    tooltip = null;\n-                                }\n-                            }\n-                            var poll = setInterval(function() {\n-                                if (tooltip)\n-                                    for (var n = node;; n = n.parentNode) {\n-                                        if (n && n.nodeType == 11) n = n.host;\n-                                        if (n == document.body) return;\n-                                        if (!n) {\n-                                            hide();\n-                                            break;\n-                                        }\n-                                    }\n-                                if (!tooltip) return clearInterval(poll);\n-                            }, 400);\n-                            CodeMirror.on(node, \"mouseout\", hide);\n-                        }\n-\n-                        function LintState(cm, conf, hasGutter) {\n-                            this.marked = [];\n-                            if (conf instanceof Function) conf = {\n-                                getAnnotations: conf\n-                            };\n-                            if (!conf || conf === true) conf = {};\n-                            this.options = {};\n-                            this.linterOptions = conf.options || {};\n-                            for (var prop in defaults) this.options[prop] = defaults[prop];\n-                            for (var prop in conf) {\n-                                if (defaults.hasOwnProperty(prop)) {\n-                                    if (conf[prop] != null) this.options[prop] = conf[prop];\n-                                } else if (!conf.options) {\n-                                    this.linterOptions[prop] = conf[prop];\n-                                }\n-                            }\n-                            this.timeout = null;\n-                            this.hasGutter = hasGutter;\n-                            this.onMouseOver = function(e) {\n-                                onMouseOver(cm, e);\n-                            };\n-                            this.waitingFor = 0;\n-                        }\n-                        var defaults = {\n-                            highlightLines: false,\n-                            tooltips: true,\n-                            delay: 500,\n-                            lintOnChange: true,\n-                            getAnnotations: null,\n-                            async: false,\n-                            selfContain: null,\n-                            formatAnnotation: null,\n-                            onUpdateLinting: null\n-                        };\n-\n-                        function clearMarks(cm) {\n-                            var state = cm.state.lint;\n-                            if (state.hasGutter) cm.clearGutter(GUTTER_ID);\n-                            if (state.options.highlightLines) clearErrorLines(cm);\n-                            for (var i = 0; i < state.marked.length; ++i) state.marked[i].clear();\n-                            state.marked.length = 0;\n-                        }\n-\n-                        function clearErrorLines(cm) {\n-                            cm.eachLine(function(line) {\n-                                var has = line.wrapClass && /\\bCodeMirror-lint-line-\\w+\\b/.exec(line.wrapClass);\n-                                if (has) cm.removeLineClass(line, \"wrap\", has[0]);\n-                            });\n-                        }\n-\n-                        function makeMarker(cm, labels, severity, multiple, tooltips) {\n-                            var marker = document.createElement(\"div\"),\n-                                inner = marker;\n-                            marker.className = \"CodeMirror-lint-marker CodeMirror-lint-marker-\" + severity;\n-                            if (multiple) {\n-                                inner = marker.appendChild(document.createElement(\"div\"));\n-                                inner.className = \"CodeMirror-lint-marker CodeMirror-lint-marker-multiple\";\n-                            }\n-                            if (tooltips != false) CodeMirror.on(inner, \"mouseover\", function(e) {\n-                                showTooltipFor(cm, e, labels, inner);\n-                            });\n-                            return marker;\n-                        }\n-\n-                        function getMaxSeverity(a, b) {\n-                            if (a == \"error\") return a;\n-                            else return b;\n-                        }\n-\n-                        function groupByLine(annotations) {\n-                            var lines = [];\n-                            for (var i = 0; i < annotations.length; ++i) {\n-                                var ann = annotations[i],\n-                                    line = ann.from.line;\n-                                (lines[line] || (lines[line] = [])).push(ann);\n-                            }\n-                            return lines;\n-                        }\n-\n-                        function annotationTooltip(ann) {\n-                            var severity = ann.severity;\n-                            if (!severity) severity = \"error\";\n-                            var tip = document.createElement(\"div\");\n-                            tip.className = \"CodeMirror-lint-message CodeMirror-lint-message-\" + severity;\n-                            if (typeof ann.messageHTML != \"undefined\") {\n-                                tip.innerHTML = ann.messageHTML;\n-                            } else {\n-                                tip.appendChild(document.createTextNode(ann.message));\n-                            }\n-                            return tip;\n-                        }\n-\n-                        function lintAsync(cm, getAnnotations) {\n-                            var state = cm.state.lint;\n-                            var id = ++state.waitingFor;\n-\n-                            function abort() {\n-                                id = -1;\n-                                cm.off(\"change\", abort);\n-                            }\n-                            cm.on(\"change\", abort);\n-                            getAnnotations(cm.getValue(), function(annotations, arg2) {\n-                                cm.off(\"change\", abort);\n-                                if (state.waitingFor != id) return;\n-                                if (arg2 && annotations instanceof CodeMirror) annotations = arg2;\n-                                cm.operation(function() {\n-                                    updateLinting(cm, annotations);\n-                                });\n-                            }, state.linterOptions, cm);\n-                        }\n-\n-                        function startLinting(cm) {\n-                            var state = cm.state.lint;\n-                            if (!state) return;\n-                            var options = state.options;\n-                            var getAnnotations = options.getAnnotations || cm.getHelper(CodeMirror.Pos(0, 0), \"lint\");\n-                            if (!getAnnotations) return;\n-                            if (options.async || getAnnotations.async) {\n-                                lintAsync(cm, getAnnotations);\n-                            } else {\n-                                var annotations = getAnnotations(cm.getValue(), state.linterOptions, cm);\n-                                if (!annotations) return;\n-                                if (annotations.then) annotations.then(function(issues) {\n-                                    cm.operation(function() {\n-                                        updateLinting(cm, issues);\n-                                    });\n-                                });\n-                                else cm.operation(function() {\n-                                    updateLinting(cm, annotations);\n-                                });\n-                            }\n-                        }\n-\n-                        function updateLinting(cm, annotationsNotSorted) {\n-                            var state = cm.state.lint;\n-                            if (!state) return;\n-                            var options = state.options;\n-                            clearMarks(cm);\n-                            var annotations = groupByLine(annotationsNotSorted);\n-                            for (var line = 0; line < annotations.length; ++line) {\n-                                var anns = annotations[line];\n-                                if (!anns) continue;\n-                                var message = [];\n-                                anns = anns.filter(function(item) {\n-                                    return message.indexOf(item.message) > -1 ? false : message.push(item.message);\n-                                });\n-                                var maxSeverity = null;\n-                                var tipLabel = state.hasGutter && document.createDocumentFragment();\n-                                for (var i = 0; i < anns.length; ++i) {\n-                                    var ann = anns[i];\n-                                    var severity = ann.severity;\n-                                    if (!severity) severity = \"error\";\n-                                    maxSeverity = getMaxSeverity(maxSeverity, severity);\n-                                    if (options.formatAnnotation) ann = options.formatAnnotation(ann);\n-                                    if (state.hasGutter) tipLabel.appendChild(annotationTooltip(ann));\n-                                    if (ann.to) state.marked.push(cm.markText(ann.from, ann.to, {\n-                                        className: \"CodeMirror-lint-mark CodeMirror-lint-mark-\" + severity,\n-                                        __annotation: ann\n-                                    }));\n-                                }\n-                                if (state.hasGutter) cm.setGutterMarker(line, GUTTER_ID, makeMarker(cm, tipLabel, maxSeverity, annotations[line].length > 1, options.tooltips));\n-                                if (options.highlightLines) cm.addLineClass(line, \"wrap\", LINT_LINE_ID + maxSeverity);\n-                            }\n-                            if (options.onUpdateLinting) options.onUpdateLinting(annotationsNotSorted, annotations, cm);\n-                        }\n-\n-                        function onChange(cm) {\n-                            var state = cm.state.lint;\n-                            if (!state) return;\n-                            clearTimeout(state.timeout);\n-                            state.timeout = setTimeout(function() {\n-                                startLinting(cm);\n-                            }, state.options.delay);\n-                        }\n-\n-                        function popupTooltips(cm, annotations, e) {\n-                            var target = e.target || e.srcElement;\n-                            var tooltip = document.createDocumentFragment();\n-                            for (var i = 0; i < annotations.length; i++) {\n-                                var ann = annotations[i];\n-                                tooltip.appendChild(annotationTooltip(ann));\n-                            }\n-                            showTooltipFor(cm, e, tooltip, target);\n-                        }\n-\n-                        function onMouseOver(cm, e) {\n-                            var target = e.target || e.srcElement;\n-                            if (!/\\bCodeMirror-lint-mark-/.test(target.className)) return;\n-                            var box = target.getBoundingClientRect(),\n-                                x = (box.left + box.right) / 2,\n-                                y = (box.top + box.bottom) / 2;\n-                            var spans = cm.findMarksAt(cm.coordsChar({\n-                                left: x,\n-                                top: y\n-                            }, \"client\"));\n-                            var annotations = [];\n-                            for (var i = 0; i < spans.length; ++i) {\n-                                var ann = spans[i].__annotation;\n-                                if (ann) annotations.push(ann);\n-                            }\n-                            if (annotations.length) popupTooltips(cm, annotations, e);\n-                        }\n-                        CodeMirror.defineOption(\"lint\", false, function(cm, val, old) {\n-                            if (old && old != CodeMirror.Init) {\n-                                clearMarks(cm);\n-                                if (cm.state.lint.options.lintOnChange !== false) cm.off(\"change\", onChange);\n-                                CodeMirror.off(cm.getWrapperElement(), \"mouseover\", cm.state.lint.onMouseOver);\n-                                clearTimeout(cm.state.lint.timeout);\n-                                delete cm.state.lint;\n-                            }\n-                            if (val) {\n-                                var gutters = cm.getOption(\"gutters\"),\n-                                    hasLintGutter = false;\n-                                for (var i = 0; i < gutters.length; ++i)\n-                                    if (gutters[i] == GUTTER_ID) hasLintGutter = true;\n-                                var state = cm.state.lint = new LintState(cm, val, hasLintGutter);\n-                                if (state.options.lintOnChange) cm.on(\"change\", onChange);\n-                                if (state.options.tooltips != false && state.options.tooltips != \"gutter\") CodeMirror.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n-                                startLinting(cm);\n-                            }\n-                        });\n-                        CodeMirror.defineExtension(\"performLint\", function() {\n-                            startLinting(this);\n-                        });\n-                    });\n-                })();\n-                var lintExports = lint$2.exports;\n-                const lint = /* @__PURE__ */ codemirror.getDefaultExportFromCjs(lintExports);\n-                const lint$1 = /* @__PURE__ */ _mergeNamespaces({\n-                    __proto__: null,\n-                    default: lint\n-                }, [lintExports]);\n-                exports.lint = lint$1;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/lint.cjs2.js\":\n-            /*!**********************************************!*\\\n-              !*** ../../graphiql-react/dist/lint.cjs2.js ***!\n-              \\**********************************************/\n-            /***/\n-            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs.js */ \"../../graphiql-react/dist/codemirror.cjs.js\");\n-                const graphqlLanguageService = __webpack_require__( /*! graphql-language-service */ \"../../graphql-language-service/esm/index.js\");\n-                const SEVERITY = [\"error\", \"warning\", \"information\", \"hint\"];\n-                const TYPE = {\n-                    \"GraphQL: Validation\": \"validation\",\n-                    \"GraphQL: Deprecation\": \"deprecation\",\n-                    \"GraphQL: Syntax\": \"syntax\"\n-                };\n-                codemirror.CodeMirror.registerHelper(\"lint\", \"graphql\", (text, options) => {\n-                    const {\n-                        schema,\n-                        validationRules,\n-                        externalFragments\n-                    } = options;\n-                    const rawResults = graphqlLanguageService.getDiagnostics(text, schema, validationRules, void 0, externalFragments);\n-                    const results = rawResults.map(error => ({\n-                        message: error.message,\n-                        severity: error.severity ? SEVERITY[error.severity - 1] : SEVERITY[0],\n-                        type: error.source ? TYPE[error.source] : void 0,\n-                        from: codemirror.CodeMirror.Pos(error.range.start.line, error.range.start.character),\n-                        to: codemirror.CodeMirror.Pos(error.range.end.line, error.range.end.character)\n-                    }));\n-                    return results;\n-                });\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/lint.cjs3.js\":\n-            /*!**********************************************!*\\\n-              !*** ../../graphiql-react/dist/lint.cjs3.js ***!\n-              \\**********************************************/\n-            /***/\n-            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs.js */ \"../../graphiql-react/dist/codemirror.cjs.js\");\n-                const graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n-\n-                function jsonParse(str) {\n-                    string = str;\n-                    strLen = str.length;\n-                    start = end = lastEnd = -1;\n-                    ch();\n-                    lex();\n-                    const ast = parseObj();\n-                    expect(\"EOF\");\n-                    return ast;\n-                }\n-                let string;\n-                let strLen;\n-                let start;\n-                let end;\n-                let lastEnd;\n-                let code;\n-                let kind;\n-\n-                function parseObj() {\n-                    const nodeStart = start;\n-                    const members = [];\n-                    expect(\"{\");\n-                    if (!skip(\"}\")) {\n-                        do {\n-                            members.push(parseMember());\n-                        } while (skip(\",\"));\n-                        expect(\"}\");\n-                    }\n-                    return {\n-                        kind: \"Object\",\n-                        start: nodeStart,\n-                        end: lastEnd,\n-                        members\n-                    };\n-                }\n-\n-                function parseMember() {\n-                    const nodeStart = start;\n-                    const key = kind === \"String\" ? curToken() : null;\n-                    expect(\"String\");\n-                    expect(\":\");\n-                    const value = parseVal();\n-                    return {\n-                        kind: \"Member\",\n-                        start: nodeStart,\n-                        end: lastEnd,\n-                        key,\n-                        value\n-                    };\n-                }\n-\n-                function parseArr() {\n-                    const nodeStart = start;\n-                    const values = [];\n-                    expect(\"[\");\n-                    if (!skip(\"]\")) {\n-                        do {\n-                            values.push(parseVal());\n-                        } while (skip(\",\"));\n-                        expect(\"]\");\n-                    }\n-                    return {\n-                        kind: \"Array\",\n-                        start: nodeStart,\n-                        end: lastEnd,\n-                        values\n-                    };\n-                }\n-\n-                function parseVal() {\n-                    switch (kind) {\n-                        case \"[\":\n-                            return parseArr();\n-                        case \"{\":\n-                            return parseObj();\n-                        case \"String\":\n-                        case \"Number\":\n-                        case \"Boolean\":\n-                        case \"Null\":\n-                            const token = curToken();\n-                            lex();\n-                            return token;\n-                    }\n-                    expect(\"Value\");\n-                }\n-\n-                function curToken() {\n-                    return {\n-                        kind,\n-                        start,\n-                        end,\n-                        value: JSON.parse(string.slice(start, end))\n-                    };\n-                }\n-\n-                function expect(str) {\n-                    if (kind === str) {\n-                        lex();\n-                        return;\n-                    }\n-                    let found;\n-                    if (kind === \"EOF\") {\n-                        found = \"[end of file]\";\n-                    } else if (end - start > 1) {\n-                        found = \"`\" + string.slice(start, end) + \"`\";\n-                    } else {\n-                        const match = string.slice(start).match(/^.+?\\b/);\n-                        found = \"`\" + (match ? match[0] : string[start]) + \"`\";\n-                    }\n-                    throw syntaxError(`Expected ${str} but found ${found}.`);\n-                }\n-                class JSONSyntaxError extends Error {\n-                    constructor(message, position) {\n-                        super(message);\n-                        this.position = position;\n-                    }\n-                }\n-\n-                function syntaxError(message) {\n-                    return new JSONSyntaxError(message, {\n-                        start,\n-                        end\n-                    });\n-                }\n-\n-                function skip(k) {\n-                    if (kind === k) {\n-                        lex();\n-                        return true;\n-                    }\n-                }\n-\n-                function ch() {\n-                    if (end < strLen) {\n-                        end++;\n-                        code = end === strLen ? 0 : string.charCodeAt(end);\n-                    }\n-                    return code;\n-                }\n-\n-                function lex() {\n-                    lastEnd = end;\n-                    while (code === 9 || code === 10 || code === 13 || code === 32) {\n-                        ch();\n-                    }\n-                    if (code === 0) {\n-                        kind = \"EOF\";\n-                        return;\n-                    }\n-                    start = end;\n-                    switch (code) {\n-                        case 34:\n-                            kind = \"String\";\n-                            return readString();\n-                        case 45:\n-                        case 48:\n-                        case 49:\n-                        case 50:\n-                        case 51:\n-                        case 52:\n-                        case 53:\n-                        case 54:\n-                        case 55:\n-                        case 56:\n-                        case 57:\n-                            kind = \"Number\";\n-                            return readNumber();\n-                        case 102:\n-                            if (string.slice(start, start + 5) !== \"false\") {\n-                                break;\n-                            }\n-                            end += 4;\n-                            ch();\n-                            kind = \"Boolean\";\n-                            return;\n-                        case 110:\n-                            if (string.slice(start, start + 4) !== \"null\") {\n-                                break;\n-                            }\n-                            end += 3;\n-                            ch();\n-                            kind = \"Null\";\n-                            return;\n-                        case 116:\n-                            if (string.slice(start, start + 4) !== \"true\") {\n-                                break;\n-                            }\n-                            end += 3;\n-                            ch();\n-                            kind = \"Boolean\";\n-                            return;\n-                    }\n-                    kind = string[start];\n-                    ch();\n-                }\n-\n-                function readString() {\n-                    ch();\n-                    while (code !== 34 && code > 31) {\n-                        if (code === 92) {\n-                            code = ch();\n-                            switch (code) {\n-                                case 34:\n-                                case 47:\n-                                case 92:\n-                                case 98:\n-                                case 102:\n-                                case 110:\n-                                case 114:\n-                                case 116:\n-                                    ch();\n-                                    break;\n-                                case 117:\n-                                    ch();\n-                                    readHex();\n-                                    readHex();\n-                                    readHex();\n-                                    readHex();\n-                                    break;\n-                                default:\n-                                    throw syntaxError(\"Bad character escape sequence.\");\n-                            }\n-                        } else if (end === strLen) {\n-                            throw syntaxError(\"Unterminated string.\");\n-                        } else {\n-                            ch();\n-                        }\n-                    }\n-                    if (code === 34) {\n-                        ch();\n-                        return;\n-                    }\n-                    throw syntaxError(\"Unterminated string.\");\n-                }\n-\n-                function readHex() {\n-                    if (code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102) {\n-                        return ch();\n-                    }\n-                    throw syntaxError(\"Expected hexadecimal digit.\");\n-                }\n-\n-                function readNumber() {\n-                    if (code === 45) {\n-                        ch();\n-                    }\n-                    if (code === 48) {\n-                        ch();\n-                    } else {\n-                        readDigits();\n-                    }\n-                    if (code === 46) {\n-                        ch();\n-                        readDigits();\n-                    }\n-                    if (code === 69 || code === 101) {\n-                        code = ch();\n-                        if (code === 43 || code === 45) {\n-                            ch();\n-                        }\n-                        readDigits();\n-                    }\n-                }\n-\n-                function readDigits() {\n-                    if (code < 48 || code > 57) {\n-                        throw syntaxError(\"Expected decimal digit.\");\n-                    }\n-                    do {\n-                        ch();\n-                    } while (code >= 48 && code <= 57);\n-                }\n-                codemirror.CodeMirror.registerHelper(\"lint\", \"graphql-variables\", (text, options, editor) => {\n-                    if (!text) {\n-                        return [];\n-                    }\n-                    let ast;\n-                    try {\n-                        ast = jsonParse(text);\n-                    } catch (error) {\n-                        if (error instanceof JSONSyntaxError) {\n-                            return [lintError(editor, error.position, error.message)];\n-                        }\n-                        throw error;\n-                    }\n-                    const {\n-                        variableToType\n-                    } = options;\n-                    if (!variableToType) {\n-                        return [];\n-                    }\n-                    return validateVariables(editor, variableToType, ast);\n-                });\n-\n-                function validateVariables(editor, variableToType, variablesAST) {\n-                    var _a;\n-                    const errors = [];\n-                    for (const member of variablesAST.members) {\n-                        if (member) {\n-                            const variableName = (_a = member.key) === null || _a === void 0 ? void 0 : _a.value;\n-                            const type = variableToType[variableName];\n-                            if (type) {\n-                                for (const [node, message] of validateValue(type, member.value)) {\n-                                    errors.push(lintError(editor, node, message));\n-                                }\n-                            } else {\n-                                errors.push(lintError(editor, member.key, `Variable \"$${variableName}\" does not appear in any GraphQL query.`));\n-                            }\n-                        }\n-                    }\n-                    return errors;\n-                }\n-\n-                function validateValue(type, valueAST) {\n-                    if (!type || !valueAST) {\n-                        return [];\n-                    }\n-                    if (type instanceof graphql.GraphQLNonNull) {\n-                        if (valueAST.kind === \"Null\") {\n-                            return [\n-                                [valueAST, `Type \"${type}\" is non-nullable and cannot be null.`]\n-                            ];\n-                        }\n-                        return validateValue(type.ofType, valueAST);\n-                    }\n-                    if (valueAST.kind === \"Null\") {\n-                        return [];\n-                    }\n-                    if (type instanceof graphql.GraphQLList) {\n-                        const itemType = type.ofType;\n-                        if (valueAST.kind === \"Array\") {\n-                            const values = valueAST.values || [];\n-                            return mapCat(values, item => validateValue(itemType, item));\n-                        }\n-                        return validateValue(itemType, valueAST);\n-                    }\n-                    if (type instanceof graphql.GraphQLInputObjectType) {\n-                        if (valueAST.kind !== \"Object\") {\n-                            return [\n-                                [valueAST, `Type \"${type}\" must be an Object.`]\n-                            ];\n-                        }\n-                        const providedFields = /* @__PURE__ */ Object.create(null);\n-                        const fieldErrors = mapCat(valueAST.members, member => {\n-                            var _a;\n-                            const fieldName = (_a = member === null || member === void 0 ? void 0 : member.key) === null || _a === void 0 ? void 0 : _a.value;\n-                            providedFields[fieldName] = true;\n-                            const inputField = type.getFields()[fieldName];\n-                            if (!inputField) {\n-                                return [\n-                                    [member.key, `Type \"${type}\" does not have a field \"${fieldName}\".`]\n-                                ];\n-                            }\n-                            const fieldType = inputField ? inputField.type : void 0;\n-                            return validateValue(fieldType, member.value);\n-                        });\n-                        for (const fieldName of Object.keys(type.getFields())) {\n-                            const field = type.getFields()[fieldName];\n-                            if (!providedFields[fieldName] && field.type instanceof graphql.GraphQLNonNull && !field.defaultValue) {\n-                                fieldErrors.push([valueAST, `Object of type \"${type}\" is missing required field \"${fieldName}\".`]);\n-                            }\n-                        }\n-                        return fieldErrors;\n-                    }\n-                    if (type.name === \"Boolean\" && valueAST.kind !== \"Boolean\" || type.name === \"String\" && valueAST.kind !== \"String\" || type.name === \"ID\" && valueAST.kind !== \"Number\" && valueAST.kind !== \"String\" || type.name === \"Float\" && valueAST.kind !== \"Number\" || type.name === \"Int\" && (valueAST.kind !== \"Number\" || (valueAST.value | 0) !== valueAST.value)) {\n-                        return [\n-                            [valueAST, `Expected value of type \"${type}\".`]\n-                        ];\n-                    }\n-                    if ((type instanceof graphql.GraphQLEnumType || type instanceof graphql.GraphQLScalarType) && (valueAST.kind !== \"String\" && valueAST.kind !== \"Number\" && valueAST.kind !== \"Boolean\" && valueAST.kind !== \"Null\" || isNullish(type.parseValue(valueAST.value)))) {\n-                        return [\n-                            [valueAST, `Expected value of type \"${type}\".`]\n-                        ];\n-                    }\n-                    return [];\n-                }\n-\n-                function lintError(editor, node, message) {\n-                    return {\n-                        message,\n-                        severity: \"error\",\n-                        type: \"validation\",\n-                        from: editor.posFromIndex(node.start),\n-                        to: editor.posFromIndex(node.end)\n-                    };\n-                }\n-\n-                function isNullish(value) {\n-                    return value === null || value === void 0 || value !== value;\n-                }\n-\n-                function mapCat(array, mapper) {\n-                    return Array.prototype.concat.apply([], array.map(mapper));\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/matchbrackets.cjs.js\":\n-            /*!******************************************************!*\\\n-              !*** ../../graphiql-react/dist/matchbrackets.cjs.js ***!\n-              \\******************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n-                const matchbrackets$2 = __webpack_require__( /*! ./matchbrackets.cjs2.js */ \"../../graphiql-react/dist/matchbrackets.cjs2.js\");\n-\n-                function _mergeNamespaces(n, m) {\n-                    for (var i = 0; i < m.length; i++) {\n-                        const e = m[i];\n-                        if (typeof e !== \"string\" && !Array.isArray(e)) {\n-                            for (const k in e) {\n-                                if (k !== \"default\" && !(k in n)) {\n-                                    const d = Object.getOwnPropertyDescriptor(e, k);\n-                                    if (d) {\n-                                        Object.defineProperty(n, k, d.get ? d : {\n-                                            enumerable: true,\n-                                            get: () => e[k]\n-                                        });\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    }\n-                    return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, {\n-                        value: \"Module\"\n-                    }));\n-                }\n-                var matchbracketsExports = matchbrackets$2.requireMatchbrackets();\n-                const matchbrackets = /* @__PURE__ */ codemirror.getDefaultExportFromCjs(matchbracketsExports);\n-                const matchbrackets$1 = /* @__PURE__ */ _mergeNamespaces({\n-                    __proto__: null,\n-                    default: matchbrackets\n-                }, [matchbracketsExports]);\n-                exports.matchbrackets = matchbrackets$1;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/matchbrackets.cjs2.js\":\n-            /*!*******************************************************!*\\\n-              !*** ../../graphiql-react/dist/matchbrackets.cjs2.js ***!\n-              \\*******************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n-                var matchbrackets = {\n-                    exports: {}\n-                };\n-                var hasRequiredMatchbrackets;\n-\n-                function requireMatchbrackets() {\n-                    if (hasRequiredMatchbrackets) return matchbrackets.exports;\n-                    hasRequiredMatchbrackets = 1;\n-                    (function(module2, exports2) {\n-                        (function(mod) {\n-                            mod(codemirror.requireCodemirror());\n-                        })(function(CodeMirror) {\n-                            var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) && (document.documentMode == null || document.documentMode < 8);\n-                            var Pos = CodeMirror.Pos;\n-                            var matching = {\n-                                \"(\": \")>\",\n-                                \")\": \"(<\",\n-                                \"[\": \"]>\",\n-                                \"]\": \"[<\",\n-                                \"{\": \"}>\",\n-                                \"}\": \"{<\",\n-                                \"<\": \">>\",\n-                                \">\": \"<<\"\n-                            };\n-\n-                            function bracketRegex(config) {\n-                                return config && config.bracketRegex || /[(){}[\\]]/;\n-                            }\n-\n-                            function findMatchingBracket(cm, where, config) {\n-                                var line = cm.getLineHandle(where.line),\n-                                    pos = where.ch - 1;\n-                                var afterCursor = config && config.afterCursor;\n-                                if (afterCursor == null) afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className);\n-                                var re = bracketRegex(config);\n-                                var match = !afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)] || re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n-                                if (!match) return null;\n-                                var dir = match.charAt(1) == \">\" ? 1 : -1;\n-                                if (config && config.strict && dir > 0 != (pos == where.ch)) return null;\n-                                var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n-                                var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n-                                if (found == null) return null;\n-                                return {\n-                                    from: Pos(where.line, pos),\n-                                    to: found && found.pos,\n-                                    match: found && found.ch == match.charAt(0),\n-                                    forward: dir > 0\n-                                };\n-                            }\n-\n-                            function scanForBracket(cm, where, dir, style, config) {\n-                                var maxScanLen = config && config.maxScanLineLength || 1e4;\n-                                var maxScanLines = config && config.maxScanLines || 1e3;\n-                                var stack = [];\n-                                var re = bracketRegex(config);\n-                                var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1) : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n-                                for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n-                                    var line = cm.getLine(lineNo);\n-                                    if (!line) continue;\n-                                    var pos = dir > 0 ? 0 : line.length - 1,\n-                                        end = dir > 0 ? line.length : -1;\n-                                    if (line.length > maxScanLen) continue;\n-                                    if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n-                                    for (; pos != end; pos += dir) {\n-                                        var ch = line.charAt(pos);\n-                                        if (re.test(ch) && (style === void 0 || (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n-                                            var match = matching[ch];\n-                                            if (match && match.charAt(1) == \">\" == dir > 0) stack.push(ch);\n-                                            else if (!stack.length) return {\n-                                                pos: Pos(lineNo, pos),\n-                                                ch\n-                                            };\n-                                            else stack.pop();\n-                                        }\n-                                    }\n-                                }\n-                                return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n-                            }\n-\n-                            function matchBrackets(cm, autoclear, config) {\n-                                var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1e3,\n-                                    highlightNonMatching = config && config.highlightNonMatching;\n-                                var marks = [],\n-                                    ranges = cm.listSelections();\n-                                for (var i = 0; i < ranges.length; i++) {\n-                                    var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n-                                    if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n-                                        var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n-                                        marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {\n-                                            className: style\n-                                        }));\n-                                        if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen) marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {\n-                                            className: style\n-                                        }));\n-                                    }\n-                                }\n-                                if (marks.length) {\n-                                    if (ie_lt8 && cm.state.focused) cm.focus();\n-                                    var clear = function() {\n-                                        cm.operation(function() {\n-                                            for (var i2 = 0; i2 < marks.length; i2++) marks[i2].clear();\n-                                        });\n-                                    };\n-                                    if (autoclear) setTimeout(clear, 800);\n-                                    else return clear;\n-                                }\n-                            }\n-\n-                            function doMatchBrackets(cm) {\n-                                cm.operation(function() {\n-                                    if (cm.state.matchBrackets.currentlyHighlighted) {\n-                                        cm.state.matchBrackets.currentlyHighlighted();\n-                                        cm.state.matchBrackets.currentlyHighlighted = null;\n-                                    }\n-                                    cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n-                                });\n-                            }\n-\n-                            function clearHighlighted(cm) {\n-                                if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n-                                    cm.state.matchBrackets.currentlyHighlighted();\n-                                    cm.state.matchBrackets.currentlyHighlighted = null;\n-                                }\n-                            }\n-                            CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n-                                if (old && old != CodeMirror.Init) {\n-                                    cm.off(\"cursorActivity\", doMatchBrackets);\n-                                    cm.off(\"focus\", doMatchBrackets);\n-                                    cm.off(\"blur\", clearHighlighted);\n-                                    clearHighlighted(cm);\n-                                }\n-                                if (val) {\n-                                    cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n-                                    cm.on(\"cursorActivity\", doMatchBrackets);\n-                                    cm.on(\"focus\", doMatchBrackets);\n-                                    cm.on(\"blur\", clearHighlighted);\n-                                }\n-                            });\n-                            CodeMirror.defineExtension(\"matchBrackets\", function() {\n-                                matchBrackets(this, true);\n-                            });\n-                            CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig) {\n-                                if (oldConfig || typeof config == \"boolean\") {\n-                                    if (!oldConfig) {\n-                                        config = config ? {\n-                                            strict: true\n-                                        } : null;\n-                                    } else {\n-                                        oldConfig.strict = config;\n-                                        config = oldConfig;\n-                                    }\n-                                }\n-                                return findMatchingBracket(this, pos, config);\n-                            });\n-                            CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config) {\n-                                return scanForBracket(this, pos, dir, style, config);\n-                            });\n-                        });\n-                    })();\n-                    return matchbrackets.exports;\n-                }\n-                exports.requireMatchbrackets = requireMatchbrackets;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/mode-indent.cjs.js\":\n-            /*!****************************************************!*\\\n-              !*** ../../graphiql-react/dist/mode-indent.cjs.js ***!\n-              \\****************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports) {\n-\n-\n-\n-                function indent(state, textAfter) {\n-                    var _a, _b;\n-                    const {\n-                        levels,\n-                        indentLevel\n-                    } = state;\n-                    const level = !levels || levels.length === 0 ? indentLevel : levels.at(-1) - (((_a = this.electricInput) === null || _a === void 0 ? void 0 : _a.test(textAfter)) ? 1 : 0);\n-                    return (level || 0) * (((_b = this.config) === null || _b === void 0 ? void 0 : _b.indentUnit) || 0);\n-                }\n-                exports.indent = indent;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/mode.cjs.js\":\n-            /*!*********************************************!*\\\n-              !*** ../../graphiql-react/dist/mode.cjs.js ***!\n-              \\*********************************************/\n-            /***/\n-            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs.js */ \"../../graphiql-react/dist/codemirror.cjs.js\");\n-                const graphqlLanguageService = __webpack_require__( /*! graphql-language-service */ \"../../graphql-language-service/esm/index.js\");\n-                const modeIndent = __webpack_require__( /*! ./mode-indent.cjs.js */ \"../../graphiql-react/dist/mode-indent.cjs.js\");\n-                const graphqlModeFactory = config => {\n-                    const parser = graphqlLanguageService.onlineParser({\n-                        eatWhitespace: stream => stream.eatWhile(graphqlLanguageService.isIgnored),\n-                        lexRules: graphqlLanguageService.LexRules,\n-                        parseRules: graphqlLanguageService.ParseRules,\n-                        editorConfig: {\n-                            tabSize: config.tabSize\n-                        }\n-                    });\n-                    return {\n-                        config,\n-                        startState: parser.startState,\n-                        token: parser.token,\n-                        indent: modeIndent.indent,\n-                        electricInput: /^\\s*[})\\]]/,\n-                        fold: \"brace\",\n-                        lineComment: \"#\",\n-                        closeBrackets: {\n-                            pairs: '()[]{}\"\"',\n-                            explode: \"()[]{}\"\n-                        }\n-                    };\n-                };\n-                codemirror.CodeMirror.defineMode(\"graphql\", graphqlModeFactory);\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/mode.cjs2.js\":\n-            /*!**********************************************!*\\\n-              !*** ../../graphiql-react/dist/mode.cjs2.js ***!\n-              \\**********************************************/\n-            /***/\n-            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs.js */ \"../../graphiql-react/dist/codemirror.cjs.js\");\n-                const graphqlLanguageService = __webpack_require__( /*! graphql-language-service */ \"../../graphql-language-service/esm/index.js\");\n-                const modeIndent = __webpack_require__( /*! ./mode-indent.cjs.js */ \"../../graphiql-react/dist/mode-indent.cjs.js\");\n-                codemirror.CodeMirror.defineMode(\"graphql-variables\", config => {\n-                    const parser = graphqlLanguageService.onlineParser({\n-                        eatWhitespace: stream => stream.eatSpace(),\n-                        lexRules: LexRules,\n-                        parseRules: ParseRules,\n-                        editorConfig: {\n-                            tabSize: config.tabSize\n-                        }\n-                    });\n-                    return {\n-                        config,\n-                        startState: parser.startState,\n-                        token: parser.token,\n-                        indent: modeIndent.indent,\n-                        electricInput: /^\\s*[}\\]]/,\n-                        fold: \"brace\",\n-                        closeBrackets: {\n-                            pairs: '[]{}\"\"',\n-                            explode: \"[]{}\"\n-                        }\n-                    };\n-                });\n-                const LexRules = {\n-                    Punctuation: /^\\[|]|\\{|\\}|:|,/,\n-                    Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n-                    String: /^\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?/,\n-                    Keyword: /^true|false|null/\n-                };\n-                const ParseRules = {\n-                    Document: [graphqlLanguageService.p(\"{\"), graphqlLanguageService.list(\"Variable\", graphqlLanguageService.opt(graphqlLanguageService.p(\",\"))), graphqlLanguageService.p(\"}\")],\n-                    Variable: [namedKey(\"variable\"), graphqlLanguageService.p(\":\"), \"Value\"],\n-                    Value(token) {\n-                        switch (token.kind) {\n-                            case \"Number\":\n-                                return \"NumberValue\";\n-                            case \"String\":\n-                                return \"StringValue\";\n-                            case \"Punctuation\":\n-                                switch (token.value) {\n-                                    case \"[\":\n-                                        return \"ListValue\";\n-                                    case \"{\":\n-                                        return \"ObjectValue\";\n-                                }\n-                                return null;\n-                            case \"Keyword\":\n-                                switch (token.value) {\n-                                    case \"true\":\n-                                    case \"false\":\n-                                        return \"BooleanValue\";\n-                                    case \"null\":\n-                                        return \"NullValue\";\n-                                }\n-                                return null;\n-                        }\n-                    },\n-                    NumberValue: [graphqlLanguageService.t(\"Number\", \"number\")],\n-                    StringValue: [graphqlLanguageService.t(\"String\", \"string\")],\n-                    BooleanValue: [graphqlLanguageService.t(\"Keyword\", \"builtin\")],\n-                    NullValue: [graphqlLanguageService.t(\"Keyword\", \"keyword\")],\n-                    ListValue: [graphqlLanguageService.p(\"[\"), graphqlLanguageService.list(\"Value\", graphqlLanguageService.opt(graphqlLanguageService.p(\",\"))), graphqlLanguageService.p(\"]\")],\n-                    ObjectValue: [graphqlLanguageService.p(\"{\"), graphqlLanguageService.list(\"ObjectField\", graphqlLanguageService.opt(graphqlLanguageService.p(\",\"))), graphqlLanguageService.p(\"}\")],\n-                    ObjectField: [namedKey(\"attribute\"), graphqlLanguageService.p(\":\"), \"Value\"]\n-                };\n-\n-                function namedKey(style) {\n-                    return {\n-                        style,\n-                        match: token => token.kind === \"String\",\n-                        update(state, token) {\n-                            state.name = token.value.slice(1, -1);\n-                        }\n-                    };\n-                }\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/mode.cjs3.js\":\n-            /*!**********************************************!*\\\n-              !*** ../../graphiql-react/dist/mode.cjs3.js ***!\n-              \\**********************************************/\n-            /***/\n-            (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs.js */ \"../../graphiql-react/dist/codemirror.cjs.js\");\n-                const graphqlLanguageService = __webpack_require__( /*! graphql-language-service */ \"../../graphql-language-service/esm/index.js\");\n-                const modeIndent = __webpack_require__( /*! ./mode-indent.cjs.js */ \"../../graphiql-react/dist/mode-indent.cjs.js\");\n-                codemirror.CodeMirror.defineMode(\"graphql-results\", config => {\n-                    const parser = graphqlLanguageService.onlineParser({\n-                        eatWhitespace: stream => stream.eatSpace(),\n-                        lexRules: LexRules,\n-                        parseRules: ParseRules,\n-                        editorConfig: {\n-                            tabSize: config.tabSize\n-                        }\n-                    });\n-                    return {\n-                        config,\n-                        startState: parser.startState,\n-                        token: parser.token,\n-                        indent: modeIndent.indent,\n-                        electricInput: /^\\s*[}\\]]/,\n-                        fold: \"brace\",\n-                        closeBrackets: {\n-                            pairs: '[]{}\"\"',\n-                            explode: \"[]{}\"\n-                        }\n-                    };\n-                });\n-                const LexRules = {\n-                    Punctuation: /^\\[|]|\\{|\\}|:|,/,\n-                    Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n-                    String: /^\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?/,\n-                    Keyword: /^true|false|null/\n-                };\n-                const ParseRules = {\n-                    Document: [graphqlLanguageService.p(\"{\"), graphqlLanguageService.list(\"Entry\", graphqlLanguageService.p(\",\")), graphqlLanguageService.p(\"}\")],\n-                    Entry: [graphqlLanguageService.t(\"String\", \"def\"), graphqlLanguageService.p(\":\"), \"Value\"],\n-                    Value(token) {\n-                        switch (token.kind) {\n-                            case \"Number\":\n-                                return \"NumberValue\";\n-                            case \"String\":\n-                                return \"StringValue\";\n-                            case \"Punctuation\":\n-                                switch (token.value) {\n-                                    case \"[\":\n-                                        return \"ListValue\";\n-                                    case \"{\":\n-                                        return \"ObjectValue\";\n-                                }\n-                                return null;\n-                            case \"Keyword\":\n-                                switch (token.value) {\n-                                    case \"true\":\n-                                    case \"false\":\n-                                        return \"BooleanValue\";\n-                                    case \"null\":\n-                                        return \"NullValue\";\n-                                }\n-                                return null;\n-                        }\n-                    },\n-                    NumberValue: [graphqlLanguageService.t(\"Number\", \"number\")],\n-                    StringValue: [graphqlLanguageService.t(\"String\", \"string\")],\n-                    BooleanValue: [graphqlLanguageService.t(\"Keyword\", \"builtin\")],\n-                    NullValue: [graphqlLanguageService.t(\"Keyword\", \"keyword\")],\n-                    ListValue: [graphqlLanguageService.p(\"[\"), graphqlLanguageService.list(\"Value\", graphqlLanguageService.p(\",\")), graphqlLanguageService.p(\"]\")],\n-                    ObjectValue: [graphqlLanguageService.p(\"{\"), graphqlLanguageService.list(\"ObjectField\", graphqlLanguageService.p(\",\")), graphqlLanguageService.p(\"}\")],\n-                    ObjectField: [graphqlLanguageService.t(\"String\", \"property\"), graphqlLanguageService.p(\":\"), \"Value\"]\n-                };\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/search.cjs.js\":\n-            /*!***********************************************!*\\\n-              !*** ../../graphiql-react/dist/search.cjs.js ***!\n-              \\***********************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n-                const searchcursor = __webpack_require__( /*! ./searchcursor.cjs2.js */ \"../../graphiql-react/dist/searchcursor.cjs2.js\");\n-                const dialog = __webpack_require__( /*! ./dialog.cjs.js */ \"../../graphiql-react/dist/dialog.cjs.js\");\n-\n-                function _mergeNamespaces(n, m) {\n-                    for (var i = 0; i < m.length; i++) {\n-                        const e = m[i];\n-                        if (typeof e !== \"string\" && !Array.isArray(e)) {\n-                            for (const k in e) {\n-                                if (k !== \"default\" && !(k in n)) {\n-                                    const d = Object.getOwnPropertyDescriptor(e, k);\n-                                    if (d) {\n-                                        Object.defineProperty(n, k, d.get ? d : {\n-                                            enumerable: true,\n-                                            get: () => e[k]\n-                                        });\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    }\n-                    return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, {\n-                        value: \"Module\"\n-                    }));\n-                }\n-                var search$2 = {\n-                    exports: {}\n-                };\n-                (function(module2, exports2) {\n-                    (function(mod) {\n-                        mod(codemirror.requireCodemirror(), searchcursor.requireSearchcursor(), dialog.dialogExports);\n-                    })(function(CodeMirror) {\n-                        CodeMirror.defineOption(\"search\", {\n-                            bottom: false\n-                        });\n-\n-                        function searchOverlay(query, caseInsensitive) {\n-                            if (typeof query == \"string\") query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");\n-                            else if (!query.global) query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n-                            return {\n-                                token: function(stream) {\n-                                    query.lastIndex = stream.pos;\n-                                    var match = query.exec(stream.string);\n-                                    if (match && match.index == stream.pos) {\n-                                        stream.pos += match[0].length || 1;\n-                                        return \"searching\";\n-                                    } else if (match) {\n-                                        stream.pos = match.index;\n-                                    } else {\n-                                        stream.skipToEnd();\n-                                    }\n-                                }\n-                            };\n-                        }\n-\n-                        function SearchState() {\n-                            this.posFrom = this.posTo = this.lastQuery = this.query = null;\n-                            this.overlay = null;\n-                        }\n-\n-                        function getSearchState(cm) {\n-                            return cm.state.search || (cm.state.search = new SearchState());\n-                        }\n-\n-                        function queryCaseInsensitive(query) {\n-                            return typeof query == \"string\" && query == query.toLowerCase();\n-                        }\n-\n-                        function getSearchCursor(cm, query, pos) {\n-                            return cm.getSearchCursor(query, pos, {\n-                                caseFold: queryCaseInsensitive(query),\n-                                multiline: true\n-                            });\n-                        }\n-\n-                        function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {\n-                            cm.openDialog(text, onEnter, {\n-                                value: deflt,\n-                                selectValueOnOpen: true,\n-                                closeOnEnter: false,\n-                                onClose: function() {\n-                                    clearSearch(cm);\n-                                },\n-                                onKeyDown,\n-                                bottom: cm.options.search.bottom\n-                            });\n-                        }\n-\n-                        function dialog2(cm, text, shortText, deflt, f) {\n-                            if (cm.openDialog) cm.openDialog(text, f, {\n-                                value: deflt,\n-                                selectValueOnOpen: true,\n-                                bottom: cm.options.search.bottom\n-                            });\n-                            else f(prompt(shortText, deflt));\n-                        }\n-\n-                        function confirmDialog(cm, text, shortText, fs) {\n-                            if (cm.openConfirm) cm.openConfirm(text, fs);\n-                            else if (confirm(shortText)) fs[0]();\n-                        }\n-\n-                        function parseString(string) {\n-                            return string.replace(/\\\\([nrt\\\\])/g, function(match, ch) {\n-                                if (ch == \"n\") return \"\\n\";\n-                                if (ch == \"r\") return \"\\r\";\n-                                if (ch == \"t\") return \"\t\";\n-                                if (ch == \"\\\\\") return \"\\\\\";\n-                                return match;\n-                            });\n-                        }\n-\n-                        function parseQuery(query) {\n-                            var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n-                            if (isRE) {\n-                                try {\n-                                    query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\");\n-                                } catch (e) {}\n-                            } else {\n-                                query = parseString(query);\n-                            }\n-                            if (typeof query == \"string\" ? query == \"\" : query.test(\"\")) query = /x^/;\n-                            return query;\n-                        }\n-\n-                        function startSearch(cm, state, query) {\n-                            state.queryText = query;\n-                            state.query = parseQuery(query);\n-                            cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n-                            state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n-                            cm.addOverlay(state.overlay);\n-                            if (cm.showMatchesOnScrollbar) {\n-                                if (state.annotate) {\n-                                    state.annotate.clear();\n-                                    state.annotate = null;\n-                                }\n-                                state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n-                            }\n-                        }\n-\n-                        function doSearch(cm, rev, persistent, immediate) {\n-                            var state = getSearchState(cm);\n-                            if (state.query) return findNext(cm, rev);\n-                            var q = cm.getSelection() || state.lastQuery;\n-                            if (q instanceof RegExp && q.source == \"x^\") q = null;\n-                            if (persistent && cm.openDialog) {\n-                                var hiding = null;\n-                                var searchNext = function(query, event) {\n-                                    CodeMirror.e_stop(event);\n-                                    if (!query) return;\n-                                    if (query != state.queryText) {\n-                                        startSearch(cm, state, query);\n-                                        state.posFrom = state.posTo = cm.getCursor();\n-                                    }\n-                                    if (hiding) hiding.style.opacity = 1;\n-                                    findNext(cm, event.shiftKey, function(_, to) {\n-                                        var dialog3;\n-                                        if (to.line < 3 && document.querySelector && (dialog3 = cm.display.wrapper.querySelector(\".CodeMirror-dialog\")) && dialog3.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, \"window\").top)(hiding = dialog3).style.opacity = 0.4;\n-                                    });\n-                                };\n-                                persistentDialog(cm, getQueryDialog(cm), q, searchNext, function(event, query) {\n-                                    var keyName = CodeMirror.keyName(event);\n-                                    var extra = cm.getOption(\"extraKeys\"),\n-                                        cmd = extra && extra[keyName] || CodeMirror.keyMap[cm.getOption(\"keyMap\")][keyName];\n-                                    if (cmd == \"findNext\" || cmd == \"findPrev\" || cmd == \"findPersistentNext\" || cmd == \"findPersistentPrev\") {\n-                                        CodeMirror.e_stop(event);\n-                                        startSearch(cm, getSearchState(cm), query);\n-                                        cm.execCommand(cmd);\n-                                    } else if (cmd == \"find\" || cmd == \"findPersistent\") {\n-                                        CodeMirror.e_stop(event);\n-                                        searchNext(query, event);\n-                                    }\n-                                });\n-                                if (immediate && q) {\n-                                    startSearch(cm, state, q);\n-                                    findNext(cm, rev);\n-                                }\n-                            } else {\n-                                dialog2(cm, getQueryDialog(cm), \"Search for:\", q, function(query) {\n-                                    if (query && !state.query) cm.operation(function() {\n-                                        startSearch(cm, state, query);\n-                                        state.posFrom = state.posTo = cm.getCursor();\n-                                        findNext(cm, rev);\n-                                    });\n-                                });\n-                            }\n-                        }\n-\n-                        function findNext(cm, rev, callback) {\n-                            cm.operation(function() {\n-                                var state = getSearchState(cm);\n-                                var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n-                                if (!cursor.find(rev)) {\n-                                    cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n-                                    if (!cursor.find(rev)) return;\n-                                }\n-                                cm.setSelection(cursor.from(), cursor.to());\n-                                cm.scrollIntoView({\n-                                    from: cursor.from(),\n-                                    to: cursor.to()\n-                                }, 20);\n-                                state.posFrom = cursor.from();\n-                                state.posTo = cursor.to();\n-                                if (callback) callback(cursor.from(), cursor.to());\n-                            });\n-                        }\n-\n-                        function clearSearch(cm) {\n-                            cm.operation(function() {\n-                                var state = getSearchState(cm);\n-                                state.lastQuery = state.query;\n-                                if (!state.query) return;\n-                                state.query = state.queryText = null;\n-                                cm.removeOverlay(state.overlay);\n-                                if (state.annotate) {\n-                                    state.annotate.clear();\n-                                    state.annotate = null;\n-                                }\n-                            });\n-                        }\n-\n-                        function el(tag, attrs) {\n-                            var element = tag ? document.createElement(tag) : document.createDocumentFragment();\n-                            for (var key in attrs) {\n-                                element[key] = attrs[key];\n-                            }\n-                            for (var i = 2; i < arguments.length; i++) {\n-                                var child = arguments[i];\n-                                element.appendChild(typeof child == \"string\" ? document.createTextNode(child) : child);\n-                            }\n-                            return element;\n-                        }\n-\n-                        function getQueryDialog(cm) {\n-                            return el(\"\", null, el(\"span\", {\n-                                className: \"CodeMirror-search-label\"\n-                            }, cm.phrase(\"Search:\")), \" \", el(\"input\", {\n-                                type: \"text\",\n-                                \"style\": \"width: 10em\",\n-                                className: \"CodeMirror-search-field\"\n-                            }), \" \", el(\"span\", {\n-                                style: \"color: #888\",\n-                                className: \"CodeMirror-search-hint\"\n-                            }, cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n-                        }\n-\n-                        function getReplaceQueryDialog(cm) {\n-                            return el(\"\", null, \" \", el(\"input\", {\n-                                type: \"text\",\n-                                \"style\": \"width: 10em\",\n-                                className: \"CodeMirror-search-field\"\n-                            }), \" \", el(\"span\", {\n-                                style: \"color: #888\",\n-                                className: \"CodeMirror-search-hint\"\n-                            }, cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n-                        }\n-\n-                        function getReplacementQueryDialog(cm) {\n-                            return el(\"\", null, el(\"span\", {\n-                                className: \"CodeMirror-search-label\"\n-                            }, cm.phrase(\"With:\")), \" \", el(\"input\", {\n-                                type: \"text\",\n-                                \"style\": \"width: 10em\",\n-                                className: \"CodeMirror-search-field\"\n-                            }));\n-                        }\n-\n-                        function getDoReplaceConfirm(cm) {\n-                            return el(\"\", null, el(\"span\", {\n-                                className: \"CodeMirror-search-label\"\n-                            }, cm.phrase(\"Replace?\")), \" \", el(\"button\", {}, cm.phrase(\"Yes\")), \" \", el(\"button\", {}, cm.phrase(\"No\")), \" \", el(\"button\", {}, cm.phrase(\"All\")), \" \", el(\"button\", {}, cm.phrase(\"Stop\")));\n-                        }\n-\n-                        function replaceAll(cm, query, text) {\n-                            cm.operation(function() {\n-                                for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n-                                    if (typeof query != \"string\") {\n-                                        var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n-                                        cursor.replace(text.replace(/\\$(\\d)/g, function(_, i) {\n-                                            return match[i];\n-                                        }));\n-                                    } else cursor.replace(text);\n-                                }\n-                            });\n-                        }\n-\n-                        function replace(cm, all) {\n-                            if (cm.getOption(\"readOnly\")) return;\n-                            var query = cm.getSelection() || getSearchState(cm).lastQuery;\n-                            var dialogText = all ? cm.phrase(\"Replace all:\") : cm.phrase(\"Replace:\");\n-                            var fragment = el(\"\", null, el(\"span\", {\n-                                className: \"CodeMirror-search-label\"\n-                            }, dialogText), getReplaceQueryDialog(cm));\n-                            dialog2(cm, fragment, dialogText, query, function(query2) {\n-                                if (!query2) return;\n-                                query2 = parseQuery(query2);\n-                                dialog2(cm, getReplacementQueryDialog(cm), cm.phrase(\"Replace with:\"), \"\", function(text) {\n-                                    text = parseString(text);\n-                                    if (all) {\n-                                        replaceAll(cm, query2, text);\n-                                    } else {\n-                                        clearSearch(cm);\n-                                        var cursor = getSearchCursor(cm, query2, cm.getCursor(\"from\"));\n-                                        var advance = function() {\n-                                            var start = cursor.from(),\n-                                                match;\n-                                            if (!(match = cursor.findNext())) {\n-                                                cursor = getSearchCursor(cm, query2);\n-                                                if (!(match = cursor.findNext()) || start && cursor.from().line == start.line && cursor.from().ch == start.ch) return;\n-                                            }\n-                                            cm.setSelection(cursor.from(), cursor.to());\n-                                            cm.scrollIntoView({\n-                                                from: cursor.from(),\n-                                                to: cursor.to()\n-                                            });\n-                                            confirmDialog(cm, getDoReplaceConfirm(cm), cm.phrase(\"Replace?\"), [function() {\n-                                                doReplace(match);\n-                                            }, advance, function() {\n-                                                replaceAll(cm, query2, text);\n-                                            }]);\n-                                        };\n-                                        var doReplace = function(match) {\n-                                            cursor.replace(typeof query2 == \"string\" ? text : text.replace(/\\$(\\d)/g, function(_, i) {\n-                                                return match[i];\n-                                            }));\n-                                            advance();\n-                                        };\n-                                        advance();\n-                                    }\n-                                });\n-                            });\n-                        }\n-                        CodeMirror.commands.find = function(cm) {\n-                            clearSearch(cm);\n-                            doSearch(cm);\n-                        };\n-                        CodeMirror.commands.findPersistent = function(cm) {\n-                            clearSearch(cm);\n-                            doSearch(cm, false, true);\n-                        };\n-                        CodeMirror.commands.findPersistentNext = function(cm) {\n-                            doSearch(cm, false, true, true);\n-                        };\n-                        CodeMirror.commands.findPersistentPrev = function(cm) {\n-                            doSearch(cm, true, true, true);\n-                        };\n-                        CodeMirror.commands.findNext = doSearch;\n-                        CodeMirror.commands.findPrev = function(cm) {\n-                            doSearch(cm, true);\n-                        };\n-                        CodeMirror.commands.clearSearch = clearSearch;\n-                        CodeMirror.commands.replace = replace;\n-                        CodeMirror.commands.replaceAll = function(cm) {\n-                            replace(cm, true);\n-                        };\n-                    });\n-                })();\n-                var searchExports = search$2.exports;\n-                const search = /* @__PURE__ */ codemirror.getDefaultExportFromCjs(searchExports);\n-                const search$1 = /* @__PURE__ */ _mergeNamespaces({\n-                    __proto__: null,\n-                    default: search\n-                }, [searchExports]);\n-                exports.search = search$1;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/searchcursor.cjs.js\":\n-            /*!*****************************************************!*\\\n-              !*** ../../graphiql-react/dist/searchcursor.cjs.js ***!\n-              \\*****************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n-                const searchcursor$2 = __webpack_require__( /*! ./searchcursor.cjs2.js */ \"../../graphiql-react/dist/searchcursor.cjs2.js\");\n-\n-                function _mergeNamespaces(n, m) {\n-                    for (var i = 0; i < m.length; i++) {\n-                        const e = m[i];\n-                        if (typeof e !== \"string\" && !Array.isArray(e)) {\n-                            for (const k in e) {\n-                                if (k !== \"default\" && !(k in n)) {\n-                                    const d = Object.getOwnPropertyDescriptor(e, k);\n-                                    if (d) {\n-                                        Object.defineProperty(n, k, d.get ? d : {\n-                                            enumerable: true,\n-                                            get: () => e[k]\n-                                        });\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    }\n-                    return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, {\n-                        value: \"Module\"\n-                    }));\n-                }\n-                var searchcursorExports = searchcursor$2.requireSearchcursor();\n-                const searchcursor = /* @__PURE__ */ codemirror.getDefaultExportFromCjs(searchcursorExports);\n-                const searchcursor$1 = /* @__PURE__ */ _mergeNamespaces({\n-                    __proto__: null,\n-                    default: searchcursor\n-                }, [searchcursorExports]);\n-                exports.searchcursor = searchcursor$1;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/searchcursor.cjs2.js\":\n-            /*!******************************************************!*\\\n-              !*** ../../graphiql-react/dist/searchcursor.cjs2.js ***!\n-              \\******************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n-                var searchcursor = {\n-                    exports: {}\n-                };\n-                var hasRequiredSearchcursor;\n-\n-                function requireSearchcursor() {\n-                    if (hasRequiredSearchcursor) return searchcursor.exports;\n-                    hasRequiredSearchcursor = 1;\n-                    (function(module2, exports2) {\n-                        (function(mod) {\n-                            mod(codemirror.requireCodemirror());\n-                        })(function(CodeMirror) {\n-                            var Pos = CodeMirror.Pos;\n-\n-                            function regexpFlags(regexp) {\n-                                var flags = regexp.flags;\n-                                return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\") + (regexp.global ? \"g\" : \"\") + (regexp.multiline ? \"m\" : \"\");\n-                            }\n-\n-                            function ensureFlags(regexp, flags) {\n-                                var current = regexpFlags(regexp),\n-                                    target = current;\n-                                for (var i = 0; i < flags.length; i++)\n-                                    if (target.indexOf(flags.charAt(i)) == -1) target += flags.charAt(i);\n-                                return current == target ? regexp : new RegExp(regexp.source, target);\n-                            }\n-\n-                            function maybeMultiline(regexp) {\n-                                return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source);\n-                            }\n-\n-                            function searchRegexpForward(doc, regexp, start) {\n-                                regexp = ensureFlags(regexp, \"g\");\n-                                for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n-                                    regexp.lastIndex = ch;\n-                                    var string = doc.getLine(line),\n-                                        match = regexp.exec(string);\n-                                    if (match) return {\n-                                        from: Pos(line, match.index),\n-                                        to: Pos(line, match.index + match[0].length),\n-                                        match\n-                                    };\n-                                }\n-                            }\n-\n-                            function searchRegexpForwardMultiline(doc, regexp, start) {\n-                                if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start);\n-                                regexp = ensureFlags(regexp, \"gm\");\n-                                var string,\n-                                    chunk = 1;\n-                                for (var line = start.line, last = doc.lastLine(); line <= last;) {\n-                                    for (var i = 0; i < chunk; i++) {\n-                                        if (line > last) break;\n-                                        var curLine = doc.getLine(line++);\n-                                        string = string == null ? curLine : string + \"\\n\" + curLine;\n-                                    }\n-                                    chunk = chunk * 2;\n-                                    regexp.lastIndex = start.ch;\n-                                    var match = regexp.exec(string);\n-                                    if (match) {\n-                                        var before = string.slice(0, match.index).split(\"\\n\"),\n-                                            inside = match[0].split(\"\\n\");\n-                                        var startLine = start.line + before.length - 1,\n-                                            startCh = before[before.length - 1].length;\n-                                        return {\n-                                            from: Pos(startLine, startCh),\n-                                            to: Pos(startLine + inside.length - 1, inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n-                                            match\n-                                        };\n-                                    }\n-                                }\n-                            }\n-\n-                            function lastMatchIn(string, regexp, endMargin) {\n-                                var match,\n-                                    from = 0;\n-                                while (from <= string.length) {\n-                                    regexp.lastIndex = from;\n-                                    var newMatch = regexp.exec(string);\n-                                    if (!newMatch) break;\n-                                    var end = newMatch.index + newMatch[0].length;\n-                                    if (end > string.length - endMargin) break;\n-                                    if (!match || end > match.index + match[0].length) match = newMatch;\n-                                    from = newMatch.index + 1;\n-                                }\n-                                return match;\n-                            }\n-\n-                            function searchRegexpBackward(doc, regexp, start) {\n-                                regexp = ensureFlags(regexp, \"g\");\n-                                for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n-                                    var string = doc.getLine(line);\n-                                    var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch);\n-                                    if (match) return {\n-                                        from: Pos(line, match.index),\n-                                        to: Pos(line, match.index + match[0].length),\n-                                        match\n-                                    };\n-                                }\n-                            }\n-\n-                            function searchRegexpBackwardMultiline(doc, regexp, start) {\n-                                if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start);\n-                                regexp = ensureFlags(regexp, \"gm\");\n-                                var string,\n-                                    chunkSize = 1,\n-                                    endMargin = doc.getLine(start.line).length - start.ch;\n-                                for (var line = start.line, first = doc.firstLine(); line >= first;) {\n-                                    for (var i = 0; i < chunkSize && line >= first; i++) {\n-                                        var curLine = doc.getLine(line--);\n-                                        string = string == null ? curLine : curLine + \"\\n\" + string;\n-                                    }\n-                                    chunkSize *= 2;\n-                                    var match = lastMatchIn(string, regexp, endMargin);\n-                                    if (match) {\n-                                        var before = string.slice(0, match.index).split(\"\\n\"),\n-                                            inside = match[0].split(\"\\n\");\n-                                        var startLine = line + before.length,\n-                                            startCh = before[before.length - 1].length;\n-                                        return {\n-                                            from: Pos(startLine, startCh),\n-                                            to: Pos(startLine + inside.length - 1, inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n-                                            match\n-                                        };\n-                                    }\n-                                }\n-                            }\n-                            var doFold, noFold;\n-                            if (String.prototype.normalize) {\n-                                doFold = function(str) {\n-                                    return str.normalize(\"NFD\").toLowerCase();\n-                                };\n-                                noFold = function(str) {\n-                                    return str.normalize(\"NFD\");\n-                                };\n-                            } else {\n-                                doFold = function(str) {\n-                                    return str.toLowerCase();\n-                                };\n-                                noFold = function(str) {\n-                                    return str;\n-                                };\n-                            }\n-\n-                            function adjustPos(orig, folded, pos, foldFunc) {\n-                                if (orig.length == folded.length) return pos;\n-                                for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n-                                    if (min == max) return min;\n-                                    var mid = min + max >> 1;\n-                                    var len = foldFunc(orig.slice(0, mid)).length;\n-                                    if (len == pos) return mid;\n-                                    else if (len > pos) max = mid;\n-                                    else min = mid + 1;\n-                                }\n-                            }\n-\n-                            function searchStringForward(doc, query, start, caseFold) {\n-                                if (!query.length) return null;\n-                                var fold = caseFold ? doFold : noFold;\n-                                var lines = fold(query).split(/\\r|\\n\\r?/);\n-                                search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n-                                    var orig = doc.getLine(line).slice(ch),\n-                                        string = fold(orig);\n-                                    if (lines.length == 1) {\n-                                        var found = string.indexOf(lines[0]);\n-                                        if (found == -1) continue search;\n-                                        var start = adjustPos(orig, string, found, fold) + ch;\n-                                        return {\n-                                            from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n-                                            to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)\n-                                        };\n-                                    } else {\n-                                        var cutFrom = string.length - lines[0].length;\n-                                        if (string.slice(cutFrom) != lines[0]) continue search;\n-                                        for (var i = 1; i < lines.length - 1; i++)\n-                                            if (fold(doc.getLine(line + i)) != lines[i]) continue search;\n-                                        var end = doc.getLine(line + lines.length - 1),\n-                                            endString = fold(end),\n-                                            lastLine = lines[lines.length - 1];\n-                                        if (endString.slice(0, lastLine.length) != lastLine) continue search;\n-                                        return {\n-                                            from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n-                                            to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))\n-                                        };\n-                                    }\n-                                }\n-                            }\n-\n-                            function searchStringBackward(doc, query, start, caseFold) {\n-                                if (!query.length) return null;\n-                                var fold = caseFold ? doFold : noFold;\n-                                var lines = fold(query).split(/\\r|\\n\\r?/);\n-                                search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n-                                    var orig = doc.getLine(line);\n-                                    if (ch > -1) orig = orig.slice(0, ch);\n-                                    var string = fold(orig);\n-                                    if (lines.length == 1) {\n-                                        var found = string.lastIndexOf(lines[0]);\n-                                        if (found == -1) continue search;\n-                                        return {\n-                                            from: Pos(line, adjustPos(orig, string, found, fold)),\n-                                            to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))\n-                                        };\n-                                    } else {\n-                                        var lastLine = lines[lines.length - 1];\n-                                        if (string.slice(0, lastLine.length) != lastLine) continue search;\n-                                        for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n-                                            if (fold(doc.getLine(start + i)) != lines[i]) continue search;\n-                                        var top = doc.getLine(line + 1 - lines.length),\n-                                            topString = fold(top);\n-                                        if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search;\n-                                        return {\n-                                            from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n-                                            to: Pos(line, adjustPos(orig, string, lastLine.length, fold))\n-                                        };\n-                                    }\n-                                }\n-                            }\n-\n-                            function SearchCursor(doc, query, pos, options) {\n-                                this.atOccurrence = false;\n-                                this.afterEmptyMatch = false;\n-                                this.doc = doc;\n-                                pos = pos ? doc.clipPos(pos) : Pos(0, 0);\n-                                this.pos = {\n-                                    from: pos,\n-                                    to: pos\n-                                };\n-                                var caseFold;\n-                                if (typeof options == \"object\") {\n-                                    caseFold = options.caseFold;\n-                                } else {\n-                                    caseFold = options;\n-                                    options = null;\n-                                }\n-                                if (typeof query == \"string\") {\n-                                    if (caseFold == null) caseFold = false;\n-                                    this.matches = function(reverse, pos2) {\n-                                        return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos2, caseFold);\n-                                    };\n-                                } else {\n-                                    query = ensureFlags(query, \"gm\");\n-                                    if (!options || options.multiline !== false) this.matches = function(reverse, pos2) {\n-                                        return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos2);\n-                                    };\n-                                    else this.matches = function(reverse, pos2) {\n-                                        return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos2);\n-                                    };\n-                                }\n-                            }\n-                            SearchCursor.prototype = {\n-                                findNext: function() {\n-                                    return this.find(false);\n-                                },\n-                                findPrevious: function() {\n-                                    return this.find(true);\n-                                },\n-                                find: function(reverse) {\n-                                    var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n-                                    if (this.afterEmptyMatch && this.atOccurrence) {\n-                                        head = Pos(head.line, head.ch);\n-                                        if (reverse) {\n-                                            head.ch--;\n-                                            if (head.ch < 0) {\n-                                                head.line--;\n-                                                head.ch = (this.doc.getLine(head.line) || \"\").length;\n-                                            }\n-                                        } else {\n-                                            head.ch++;\n-                                            if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n-                                                head.ch = 0;\n-                                                head.line++;\n-                                            }\n-                                        }\n-                                        if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n-                                            return this.atOccurrence = false;\n-                                        }\n-                                    }\n-                                    var result = this.matches(reverse, head);\n-                                    this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0;\n-                                    if (result) {\n-                                        this.pos = result;\n-                                        this.atOccurrence = true;\n-                                        return this.pos.match || true;\n-                                    } else {\n-                                        var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0);\n-                                        this.pos = {\n-                                            from: end,\n-                                            to: end\n-                                        };\n-                                        return this.atOccurrence = false;\n-                                    }\n-                                },\n-                                from: function() {\n-                                    if (this.atOccurrence) return this.pos.from;\n-                                },\n-                                to: function() {\n-                                    if (this.atOccurrence) return this.pos.to;\n-                                },\n-                                replace: function(newText, origin) {\n-                                    if (!this.atOccurrence) return;\n-                                    var lines = CodeMirror.splitLines(newText);\n-                                    this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin);\n-                                    this.pos.to = Pos(this.pos.from.line + lines.length - 1, lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0));\n-                                }\n-                            };\n-                            CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n-                                return new SearchCursor(this.doc, query, pos, caseFold);\n-                            });\n-                            CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n-                                return new SearchCursor(this, query, pos, caseFold);\n-                            });\n-                            CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n-                                var ranges = [];\n-                                var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold);\n-                                while (cur.findNext()) {\n-                                    if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break;\n-                                    ranges.push({\n-                                        anchor: cur.from(),\n-                                        head: cur.to()\n-                                    });\n-                                }\n-                                if (ranges.length) this.setSelections(ranges, 0);\n-                            });\n-                        });\n-                    })();\n-                    return searchcursor.exports;\n-                }\n-                exports.requireSearchcursor = requireSearchcursor;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/show-hint.cjs.js\":\n-            /*!**************************************************!*\\\n-              !*** ../../graphiql-react/dist/show-hint.cjs.js ***!\n-              \\**************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports, __webpack_require__) {\n-\n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n-\n-                function _mergeNamespaces(n, m) {\n-                    for (var i = 0; i < m.length; i++) {\n-                        const e = m[i];\n-                        if (typeof e !== \"string\" && !Array.isArray(e)) {\n-                            for (const k in e) {\n-                                if (k !== \"default\" && !(k in n)) {\n-                                    const d = Object.getOwnPropertyDescriptor(e, k);\n-                                    if (d) {\n-                                        Object.defineProperty(n, k, d.get ? d : {\n-                                            enumerable: true,\n-                                            get: () => e[k]\n-                                        });\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    }\n-                    return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, {\n-                        value: \"Module\"\n-                    }));\n-                }\n-                var showHint$2 = {\n-                    exports: {}\n-                };\n-                (function(module2, exports2) {\n-                    (function(mod) {\n-                        mod(codemirror.requireCodemirror());\n-                    })(function(CodeMirror) {\n-                        var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n-                        var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n-                        CodeMirror.showHint = function(cm, getHints, options) {\n-                            if (!getHints) return cm.showHint(options);\n-                            if (options && options.async) getHints.async = true;\n-                            var newOpts = {\n-                                hint: getHints\n-                            };\n-                            if (options)\n-                                for (var prop in options) newOpts[prop] = options[prop];\n-                            return cm.showHint(newOpts);\n-                        };\n-                        CodeMirror.defineExtension(\"showHint\", function(options) {\n-                            options = parseOptions(this, this.getCursor(\"start\"), options);\n-                            var selections = this.listSelections();\n-                            if (selections.length > 1) return;\n-                            if (this.somethingSelected()) {\n-                                if (!options.hint.supportsSelection) return;\n-                                for (var i = 0; i < selections.length; i++)\n-                                    if (selections[i].head.line != selections[i].anchor.line) return;\n-                            }\n-                            if (this.state.completionActive) this.state.completionActive.close();\n-                            var completion = this.state.completionActive = new Completion(this, options);\n-                            if (!completion.options.hint) return;\n-                            CodeMirror.signal(this, \"startCompletion\", this);\n-                            completion.update(true);\n-                        });\n-                        CodeMirror.defineExtension(\"closeHint\", function() {\n-                            if (this.state.completionActive) this.state.completionActive.close();\n-                        });\n-\n-                        function Completion(cm, options) {\n-                            this.cm = cm;\n-                            this.options = options;\n-                            this.widget = null;\n-                            this.debounce = 0;\n-                            this.tick = 0;\n-                            this.startPos = this.cm.getCursor(\"start\");\n-                            this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n-                            if (this.options.updateOnCursorActivity) {\n-                                var self = this;\n-                                cm.on(\"cursorActivity\", this.activityFunc = function() {\n-                                    self.cursorActivity();\n-                                });\n-                            }\n-                        }\n-                        var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n-                            return setTimeout(fn, 1e3 / 60);\n-                        };\n-                        var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n-                        Completion.prototype = {\n-                            close: function() {\n-                                if (!this.active()) return;\n-                                this.cm.state.completionActive = null;\n-                                this.tick = null;\n-                                if (this.options.updateOnCursorActivity) {\n-                                    this.cm.off(\"cursorActivity\", this.activityFunc);\n-                                }\n-                                if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n-                                if (this.widget) this.widget.close();\n-                                CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n-                            },\n-                            active: function() {\n-                                return this.cm.state.completionActive == this;\n-                            },\n-                            pick: function(data, i) {\n-                                var completion = data.list[i],\n-                                    self = this;\n-                                this.cm.operation(function() {\n-                                    if (completion.hint) completion.hint(self.cm, data, completion);\n-                                    else self.cm.replaceRange(getText(completion), completion.from || data.from, completion.to || data.to, \"complete\");\n-                                    CodeMirror.signal(data, \"pick\", completion);\n-                                    self.cm.scrollIntoView();\n-                                });\n-                                if (this.options.closeOnPick) {\n-                                    this.close();\n-                                }\n-                            },\n-                            cursorActivity: function() {\n-                                if (this.debounce) {\n-                                    cancelAnimationFrame(this.debounce);\n-                                    this.debounce = 0;\n-                                }\n-                                var identStart = this.startPos;\n-                                if (this.data) {\n-                                    identStart = this.data.from;\n-                                }\n-                                var pos = this.cm.getCursor(),\n-                                    line = this.cm.getLine(pos.line);\n-                                if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch || pos.ch < identStart.ch || this.cm.somethingSelected() || !pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1))) {\n-                                    this.close();\n-                                } else {\n-                                    var self = this;\n-                                    this.debounce = requestAnimationFrame(function() {\n-                                        self.update();\n-                                    });\n-                                    if (this.widget) this.widget.disable();\n-                                }\n-                            },\n-                            update: function(first) {\n-                                if (this.tick == null) return;\n-                                var self = this,\n-                                    myTick = ++this.tick;\n-                                fetchHints(this.options.hint, this.cm, this.options, function(data) {\n-                                    if (self.tick == myTick) self.finishUpdate(data, first);\n-                                });\n-                            },\n-                            finishUpdate: function(data, first) {\n-                                if (this.data) CodeMirror.signal(this.data, \"update\");\n-                                var picked = this.widget && this.widget.picked || first && this.options.completeSingle;\n-                                if (this.widget) this.widget.close();\n-                                this.data = data;\n-                                if (data && data.list.length) {\n-                                    if (picked && data.list.length == 1) {\n-                                        this.pick(data, 0);\n-                                    } else {\n-                                        this.widget = new Widget(this, data);\n-                                        CodeMirror.signal(data, \"shown\");\n-                                    }\n-                                }\n-                            }\n-                        };\n-\n-                        function parseOptions(cm, pos, options) {\n-                            var editor = cm.options.hintOptions;\n-                            var out = {};\n-                            for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n-                            if (editor) {\n-                                for (var prop in editor)\n-                                    if (editor[prop] !== void 0) out[prop] = editor[prop];\n-                            }\n-                            if (options) {\n-                                for (var prop in options)\n-                                    if (options[prop] !== void 0) out[prop] = options[prop];\n-                            }\n-                            if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos);\n-                            return out;\n-                        }\n-\n-                        function getText(completion) {\n-                            if (typeof completion == \"string\") return completion;\n-                            else return completion.text;\n-                        }\n-\n-                        function buildKeyMap(completion, handle) {\n-                            var baseMap = {\n-                                Up: function() {\n-                                    handle.moveFocus(-1);\n-                                },\n-                                Down: function() {\n-                                    handle.moveFocus(1);\n-                                },\n-                                PageUp: function() {\n-                                    handle.moveFocus(-handle.menuSize() + 1, true);\n-                                },\n-                                PageDown: function() {\n-                                    handle.moveFocus(handle.menuSize() - 1, true);\n-                                },\n-                                Home: function() {\n-                                    handle.setFocus(0);\n-                                },\n-                                End: function() {\n-                                    handle.setFocus(handle.length - 1);\n-                                },\n-                                Enter: handle.pick,\n-                                Tab: handle.pick,\n-                                Esc: handle.close\n-                            };\n-                            var mac = /Mac/.test(navigator.platform);\n-                            if (mac) {\n-                                baseMap[\"Ctrl-P\"] = function() {\n-                                    handle.moveFocus(-1);\n-                                };\n-                                baseMap[\"Ctrl-N\"] = function() {\n-                                    handle.moveFocus(1);\n-                                };\n-                            }\n-                            var custom = completion.options.customKeys;\n-                            var ourMap = custom ? {} : baseMap;\n-\n-                            function addBinding(key2, val) {\n-                                var bound;\n-                                if (typeof val != \"string\") bound = function(cm) {\n-                                    return val(cm, handle);\n-                                };\n-                                else if (baseMap.hasOwnProperty(val)) bound = baseMap[val];\n-                                else bound = val;\n-                                ourMap[key2] = bound;\n-                            }\n-                            if (custom) {\n-                                for (var key in custom)\n-                                    if (custom.hasOwnProperty(key)) addBinding(key, custom[key]);\n-                            }\n-                            var extra = completion.options.extraKeys;\n-                            if (extra) {\n-                                for (var key in extra)\n-                                    if (extra.hasOwnProperty(key)) addBinding(key, extra[key]);\n-                            }\n-                            return ourMap;\n-                        }\n-\n-                        function getHintElement(hintsElement, el) {\n-                            while (el && el != hintsElement) {\n-                                if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n-                                el = el.parentNode;\n-                            }\n-                        }\n-\n-                        function Widget(completion, data) {\n-                            this.id = \"cm-complete-\" + Math.floor(Math.random(1e6));\n-                            this.completion = completion;\n-                            this.data = data;\n-                            this.picked = false;\n-                            var widget = this,\n-                                cm = completion.cm;\n-                            var ownerDocument = cm.getInputField().ownerDocument;\n-                            var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n-                            var hints = this.hints = ownerDocument.createElement(\"ul\");\n-                            hints.setAttribute(\"role\", \"listbox\");\n-                            hints.setAttribute(\"aria-expanded\", \"true\");\n-                            hints.id = this.id;\n-                            var theme = completion.cm.options.theme;\n-                            hints.className = \"CodeMirror-hints \" + theme;\n-                            this.selectedHint = data.selectedHint || 0;\n-                            var completions = data.list;\n-                            for (var i = 0; i < completions.length; ++i) {\n-                                var elt = hints.appendChild(ownerDocument.createElement(\"li\")),\n-                                    cur = completions[i];\n-                                var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n-                                if (cur.className != null) className = cur.className + \" \" + className;\n-                                elt.className = className;\n-                                if (i == this.selectedHint) elt.setAttribute(\"aria-selected\", \"true\");\n-                                elt.id = this.id + \"-\" + i;\n-                                elt.setAttribute(\"role\", \"option\");\n-                                if (cur.render) cur.render(elt, data, cur);\n-                                else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n-                                elt.hintId = i;\n-                            }\n-                            var container = completion.options.container || ownerDocument.body;\n-                            var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n-                            var left = pos.left,\n-                                top = pos.bottom,\n-                                below = true;\n-                            var offsetLeft = 0,\n-                                offsetTop = 0;\n-                            if (container !== ownerDocument.body) {\n-                                var isContainerPositioned = [\"absolute\", \"relative\", \"fixed\"].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n-                                var offsetParent = isContainerPositioned ? container : container.offsetParent;\n-                                var offsetParentPosition = offsetParent.getBoundingClientRect();\n-                                var bodyPosition = ownerDocument.body.getBoundingClientRect();\n-                                offsetLeft = offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft;\n-                                offsetTop = offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop;\n-                            }\n-                            hints.style.left = left - offsetLeft + \"px\";\n-                            hints.style.top = top - offsetTop + \"px\";\n-                            var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n-                            var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n-                            container.appendChild(hints);\n-                            cm.getInputField().setAttribute(\"aria-autocomplete\", \"list\");\n-                            cm.getInputField().setAttribute(\"aria-owns\", this.id);\n-                            cm.getInputField().setAttribute(\"aria-activedescendant\", this.id + \"-\" + this.selectedHint);\n-                            var box = completion.options.moveOnOverlap ? hints.getBoundingClientRect() : new DOMRect();\n-                            var scrolls = completion.options.paddingForScrollbar ? hints.scrollHeight > hints.clientHeight + 1 : false;\n-                            var startScroll;\n-                            setTimeout(function() {\n-                                startScroll = cm.getScrollInfo();\n-                            });\n-                            var overlapY = box.bottom - winH;\n-                            if (overlapY > 0) {\n-                                var height = box.bottom - box.top,\n-                                    curTop = pos.top - (pos.bottom - box.top);\n-                                if (curTop - height > 0) {\n-                                    hints.style.top = (top = pos.top - height - offsetTop) + \"px\";\n-                                    below = false;\n-                                } else if (height > winH) {\n-                                    hints.style.height = winH - 5 + \"px\";\n-                                    hints.style.top = (top = pos.bottom - box.top - offsetTop) + \"px\";\n-                                    var cursor = cm.getCursor();\n-                                    if (data.from.ch != cursor.ch) {\n-                                        pos = cm.cursorCoords(cursor);\n-                                        hints.style.left = (left = pos.left - offsetLeft) + \"px\";\n-                                        box = hints.getBoundingClientRect();\n-                                    }\n-                                }\n-                            }\n-                            var overlapX = box.right - winW;\n-                            if (scrolls) overlapX += cm.display.nativeBarWidth;\n-                            if (overlapX > 0) {\n-                                if (box.right - box.left > winW) {\n-                                    hints.style.width = winW - 5 + \"px\";\n-                                    overlapX -= box.right - box.left - winW;\n-                                }\n-                                hints.style.left = (left = pos.left - overlapX - offsetLeft) + \"px\";\n-                            }\n-                            if (scrolls)\n-                                for (var node = hints.firstChild; node; node = node.nextSibling) node.style.paddingRight = cm.display.nativeBarWidth + \"px\";\n-                            cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n-                                moveFocus: function(n, avoidWrap) {\n-                                    widget.changeActive(widget.selectedHint + n, avoidWrap);\n-                                },\n-                                setFocus: function(n) {\n-                                    widget.changeActive(n);\n-                                },\n-                                menuSize: function() {\n-                                    return widget.screenAmount();\n-                                },\n-                                length: completions.length,\n-                                close: function() {\n-                                    completion.close();\n-                                },\n-                                pick: function() {\n-                                    widget.pick();\n-                                },\n-                                data\n-                            }));\n-                            if (completion.options.closeOnUnfocus) {\n-                                var closingOnBlur;\n-                                cm.on(\"blur\", this.onBlur = function() {\n-                                    closingOnBlur = setTimeout(function() {\n-                                        completion.close();\n-                                    }, 100);\n-                                });\n-                                cm.on(\"focus\", this.onFocus = function() {\n-                                    clearTimeout(closingOnBlur);\n-                                });\n-                            }\n-                            cm.on(\"scroll\", this.onScroll = function() {\n-                                var curScroll = cm.getScrollInfo(),\n-                                    editor = cm.getWrapperElement().getBoundingClientRect();\n-                                if (!startScroll) startScroll = cm.getScrollInfo();\n-                                var newTop = top + startScroll.top - curScroll.top;\n-                                var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n-                                if (!below) point += hints.offsetHeight;\n-                                if (point <= editor.top || point >= editor.bottom) return completion.close();\n-                                hints.style.top = newTop + \"px\";\n-                                hints.style.left = left + startScroll.left - curScroll.left + \"px\";\n-                            });\n-                            CodeMirror.on(hints, \"dblclick\", function(e) {\n-                                var t = getHintElement(hints, e.target || e.srcElement);\n-                                if (t && t.hintId != null) {\n-                                    widget.changeActive(t.hintId);\n-                                    widget.pick();\n-                                }\n-                            });\n-                            CodeMirror.on(hints, \"click\", function(e) {\n-                                var t = getHintElement(hints, e.target || e.srcElement);\n-                                if (t && t.hintId != null) {\n-                                    widget.changeActive(t.hintId);\n-                                    if (completion.options.completeOnSingleClick) widget.pick();\n-                                }\n-                            });\n-                            CodeMirror.on(hints, \"mousedown\", function() {\n-                                setTimeout(function() {\n-                                    cm.focus();\n-                                }, 20);\n-                            });\n-                            var selectedHintRange = this.getSelectedHintRange();\n-                            if (selectedHintRange.from !== 0 || selectedHintRange.to !== 0) {\n-                                this.scrollToActive();\n-                            }\n-                            CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n-                            return true;\n-                        }\n-                        Widget.prototype = {\n-                            close: function() {\n-                                if (this.completion.widget != this) return;\n-                                this.completion.widget = null;\n-                                if (this.hints.parentNode) this.hints.parentNode.removeChild(this.hints);\n-                                this.completion.cm.removeKeyMap(this.keyMap);\n-                                var input = this.completion.cm.getInputField();\n-                                input.removeAttribute(\"aria-activedescendant\");\n-                                input.removeAttribute(\"aria-owns\");\n-                                var cm = this.completion.cm;\n-                                if (this.completion.options.closeOnUnfocus) {\n-                                    cm.off(\"blur\", this.onBlur);\n-                                    cm.off(\"focus\", this.onFocus);\n-                                }\n-                                cm.off(\"scroll\", this.onScroll);\n-                            },\n-                            disable: function() {\n-                                this.completion.cm.removeKeyMap(this.keyMap);\n-                                var widget = this;\n-                                this.keyMap = {\n-                                    Enter: function() {\n-                                        widget.picked = true;\n-                                    }\n-                                };\n-                                this.completion.cm.addKeyMap(this.keyMap);\n-                            },\n-                            pick: function() {\n-                                this.completion.pick(this.data, this.selectedHint);\n-                            },\n-                            changeActive: function(i, avoidWrap) {\n-                                if (i >= this.data.list.length) i = avoidWrap ? this.data.list.length - 1 : 0;\n-                                else if (i < 0) i = avoidWrap ? 0 : this.data.list.length - 1;\n-                                if (this.selectedHint == i) return;\n-                                var node = this.hints.childNodes[this.selectedHint];\n-                                if (node) {\n-                                    node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n-                                    node.removeAttribute(\"aria-selected\");\n-                                }\n-                                node = this.hints.childNodes[this.selectedHint = i];\n-                                node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n-                                node.setAttribute(\"aria-selected\", \"true\");\n-                                this.completion.cm.getInputField().setAttribute(\"aria-activedescendant\", node.id);\n-                                this.scrollToActive();\n-                                CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n-                            },\n-                            scrollToActive: function() {\n-                                var selectedHintRange = this.getSelectedHintRange();\n-                                var node1 = this.hints.childNodes[selectedHintRange.from];\n-                                var node2 = this.hints.childNodes[selectedHintRange.to];\n-                                var firstNode = this.hints.firstChild;\n-                                if (node1.offsetTop < this.hints.scrollTop) this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;\n-                                else if (node2.offsetTop + node2.offsetHeight > this.hints.scrollTop + this.hints.clientHeight) this.hints.scrollTop = node2.offsetTop + node2.offsetHeight - this.hints.clientHeight + firstNode.offsetTop;\n-                            },\n-                            screenAmount: function() {\n-                                return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n-                            },\n-                            getSelectedHintRange: function() {\n-                                var margin = this.completion.options.scrollMargin || 0;\n-                                return {\n-                                    from: Math.max(0, this.selectedHint - margin),\n-                                    to: Math.min(this.data.list.length - 1, this.selectedHint + margin)\n-                                };\n-                            }\n-                        };\n-\n-                        function applicableHelpers(cm, helpers) {\n-                            if (!cm.somethingSelected()) return helpers;\n-                            var result = [];\n-                            for (var i = 0; i < helpers.length; i++)\n-                                if (helpers[i].supportsSelection) result.push(helpers[i]);\n-                            return result;\n-                        }\n-\n-                        function fetchHints(hint, cm, options, callback) {\n-                            if (hint.async) {\n-                                hint(cm, callback, options);\n-                            } else {\n-                                var result = hint(cm, options);\n-                                if (result && result.then) result.then(callback);\n-                                else callback(result);\n-                            }\n-                        }\n-\n-                        function resolveAutoHints(cm, pos) {\n-                            var helpers = cm.getHelpers(pos, \"hint\"),\n-                                words;\n-                            if (helpers.length) {\n-                                var resolved = function(cm2, callback, options) {\n-                                    var app = applicableHelpers(cm2, helpers);\n-\n-                                    function run(i) {\n-                                        if (i == app.length) return callback(null);\n-                                        fetchHints(app[i], cm2, options, function(result) {\n-                                            if (result && result.list.length > 0) callback(result);\n-                                            else run(i + 1);\n-                                        });\n-                                    }\n-                                    run(0);\n-                                };\n-                                resolved.async = true;\n-                                resolved.supportsSelection = true;\n-                                return resolved;\n-                            } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n-                                return function(cm2) {\n-                                    return CodeMirror.hint.fromList(cm2, {\n-                                        words\n-                                    });\n-                                };\n-                            } else if (CodeMirror.hint.anyword) {\n-                                return function(cm2, options) {\n-                                    return CodeMirror.hint.anyword(cm2, options);\n-                                };\n-                            } else {\n-                                return function() {};\n-                            }\n-                        }\n-                        CodeMirror.registerHelper(\"hint\", \"auto\", {\n-                            resolve: resolveAutoHints\n-                        });\n-                        CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n-                            var cur = cm.getCursor(),\n-                                token = cm.getTokenAt(cur);\n-                            var term,\n-                                from = CodeMirror.Pos(cur.line, token.start),\n-                                to = cur;\n-                            if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n-                                term = token.string.substr(0, cur.ch - token.start);\n-                            } else {\n-                                term = \"\";\n-                                from = cur;\n-                            }\n-                            var found = [];\n-                            for (var i = 0; i < options.words.length; i++) {\n-                                var word = options.words[i];\n-                                if (word.slice(0, term.length) == term) found.push(word);\n-                            }\n-                            if (found.length) return {\n-                                list: found,\n-                                from,\n-                                to\n-                            };\n-                        });\n-                        CodeMirror.commands.autocomplete = CodeMirror.showHint;\n-                        var defaultOptions = {\n-                            hint: CodeMirror.hint.auto,\n-                            completeSingle: true,\n-                            alignWithWord: true,\n-                            closeCharacters: /[\\s()\\[\\]{};:>,]/,\n-                            closeOnPick: true,\n-                            closeOnUnfocus: true,\n-                            updateOnCursorActivity: true,\n-                            completeOnSingleClick: true,\n-                            container: null,\n-                            customKeys: null,\n-                            extraKeys: null,\n-                            paddingForScrollbar: true,\n-                            moveOnOverlap: true\n-                        };\n-                        CodeMirror.defineOption(\"hintOptions\", null);\n-                    });\n-                })();\n-                var showHintExports = showHint$2.exports;\n-                const showHint = /* @__PURE__ */ codemirror.getDefaultExportFromCjs(showHintExports);\n-                const showHint$1 = /* @__PURE__ */ _mergeNamespaces({\n-                    __proto__: null,\n-                    default: showHint\n-                }, [showHintExports]);\n-                exports.showHint = showHint$1;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-react/dist/sublime.cjs.js\":\n-            /*!************************************************!*\\\n-              !*** ../../graphiql-react/dist/sublime.cjs.js ***!\n-              \\************************************************/\n+        \"../../graphiql-toolkit/dist/esm/async-helpers/index.js\":\n+            /*!**************************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/async-helpers/index.js ***!\n+              \\**************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n-\n-\n-                const codemirror = __webpack_require__( /*! ./codemirror.cjs2.js */ \"../../graphiql-react/dist/codemirror.cjs2.js\");\n-                const searchcursor = __webpack_require__( /*! ./searchcursor.cjs2.js */ \"../../graphiql-react/dist/searchcursor.cjs2.js\");\n-                const matchbrackets = __webpack_require__( /*! ./matchbrackets.cjs2.js */ \"../../graphiql-react/dist/matchbrackets.cjs2.js\");\n-\n-                function _mergeNamespaces(n, m) {\n-                    for (var i = 0; i < m.length; i++) {\n-                        const e = m[i];\n-                        if (typeof e !== \"string\" && !Array.isArray(e)) {\n-                            for (const k in e) {\n-                                if (k !== \"default\" && !(k in n)) {\n-                                    const d = Object.getOwnPropertyDescriptor(e, k);\n-                                    if (d) {\n-                                        Object.defineProperty(n, k, d.get ? d : {\n-                                            enumerable: true,\n-                                            get: () => e[k]\n-                                        });\n-                                    }\n-                                }\n-                            }\n-                        }\n-                    }\n-                    return Object.freeze(Object.defineProperty(n, Symbol.toStringTag, {\n-                        value: \"Module\"\n-                    }));\n-                }\n-                var sublime$2 = {\n-                    exports: {}\n-                };\n-                (function(module2, exports2) {\n-                    (function(mod) {\n-                        mod(codemirror.requireCodemirror(), searchcursor.requireSearchcursor(), matchbrackets.requireMatchbrackets());\n-                    })(function(CodeMirror) {\n-                        var cmds = CodeMirror.commands;\n-                        var Pos = CodeMirror.Pos;\n-\n-                        function findPosSubword(doc, start, dir) {\n-                            if (dir < 0 && start.ch == 0) return doc.clipPos(Pos(start.line - 1));\n-                            var line = doc.getLine(start.line);\n-                            if (dir > 0 && start.ch >= line.length) return doc.clipPos(Pos(start.line + 1, 0));\n-                            var state = \"start\",\n-                                type,\n-                                startPos = start.ch;\n-                            for (var pos = startPos, e = dir < 0 ? 0 : line.length, i = 0; pos != e; pos += dir, i++) {\n-                                var next = line.charAt(dir < 0 ? pos - 1 : pos);\n-                                var cat = next != \"_\" && CodeMirror.isWordChar(next) ? \"w\" : \"o\";\n-                                if (cat == \"w\" && next.toUpperCase() == next) cat = \"W\";\n-                                if (state == \"start\") {\n-                                    if (cat != \"o\") {\n-                                        state = \"in\";\n-                                        type = cat;\n-                                    } else startPos = pos + dir;\n-                                } else if (state == \"in\") {\n-                                    if (type != cat) {\n-                                        if (type == \"w\" && cat == \"W\" && dir < 0) pos--;\n-                                        if (type == \"W\" && cat == \"w\" && dir > 0) {\n-                                            if (pos == startPos + 1) {\n-                                                type = \"w\";\n-                                                continue;\n-                                            } else pos--;\n-                                        }\n-                                        break;\n-                                    }\n-                                }\n-                            }\n-                            return Pos(start.line, pos);\n-                        }\n-\n-                        function moveSubword(cm, dir) {\n-                            cm.extendSelectionsBy(function(range) {\n-                                if (cm.display.shift || cm.doc.extend || range.empty()) return findPosSubword(cm.doc, range.head, dir);\n-                                else return dir < 0 ? range.from() : range.to();\n-                            });\n-                        }\n-                        cmds.goSubwordLeft = function(cm) {\n-                            moveSubword(cm, -1);\n-                        };\n-                        cmds.goSubwordRight = function(cm) {\n-                            moveSubword(cm, 1);\n-                        };\n-                        cmds.scrollLineUp = function(cm) {\n-                            var info = cm.getScrollInfo();\n-                            if (!cm.somethingSelected()) {\n-                                var visibleBottomLine = cm.lineAtHeight(info.top + info.clientHeight, \"local\");\n-                                if (cm.getCursor().line >= visibleBottomLine) cm.execCommand(\"goLineUp\");\n-                            }\n-                            cm.scrollTo(null, info.top - cm.defaultTextHeight());\n-                        };\n-                        cmds.scrollLineDown = function(cm) {\n-                            var info = cm.getScrollInfo();\n-                            if (!cm.somethingSelected()) {\n-                                var visibleTopLine = cm.lineAtHeight(info.top, \"local\") + 1;\n-                                if (cm.getCursor().line <= visibleTopLine) cm.execCommand(\"goLineDown\");\n-                            }\n-                            cm.scrollTo(null, info.top + cm.defaultTextHeight());\n-                        };\n-                        cmds.splitSelectionByLine = function(cm) {\n-                            var ranges = cm.listSelections(),\n-                                lineRanges = [];\n-                            for (var i = 0; i < ranges.length; i++) {\n-                                var from = ranges[i].from(),\n-                                    to = ranges[i].to();\n-                                for (var line = from.line; line <= to.line; ++line)\n-                                    if (!(to.line > from.line && line == to.line && to.ch == 0)) lineRanges.push({\n-                                        anchor: line == from.line ? from : Pos(line, 0),\n-                                        head: line == to.line ? to : Pos(line)\n-                                    });\n-                            }\n-                            cm.setSelections(lineRanges, 0);\n-                        };\n-                        cmds.singleSelectionTop = function(cm) {\n-                            var range = cm.listSelections()[0];\n-                            cm.setSelection(range.anchor, range.head, {\n-                                scroll: false\n-                            });\n-                        };\n-                        cmds.selectLine = function(cm) {\n-                            var ranges = cm.listSelections(),\n-                                extended = [];\n-                            for (var i = 0; i < ranges.length; i++) {\n-                                var range = ranges[i];\n-                                extended.push({\n-                                    anchor: Pos(range.from().line, 0),\n-                                    head: Pos(range.to().line + 1, 0)\n-                                });\n-                            }\n-                            cm.setSelections(extended);\n-                        };\n-\n-                        function insertLine(cm, above) {\n-                            if (cm.isReadOnly()) return CodeMirror.Pass;\n-                            cm.operation(function() {\n-                                var len = cm.listSelections().length,\n-                                    newSelection = [],\n-                                    last = -1;\n-                                for (var i = 0; i < len; i++) {\n-                                    var head = cm.listSelections()[i].head;\n-                                    if (head.line <= last) continue;\n-                                    var at = Pos(head.line + (above ? 0 : 1), 0);\n-                                    cm.replaceRange(\"\\n\", at, null, \"+insertLine\");\n-                                    cm.indentLine(at.line, null, true);\n-                                    newSelection.push({\n-                                        head: at,\n-                                        anchor: at\n-                                    });\n-                                    last = head.line + 1;\n-                                }\n-                                cm.setSelections(newSelection);\n-                            });\n-                            cm.execCommand(\"indentAuto\");\n-                        }\n-                        cmds.insertLineAfter = function(cm) {\n-                            return insertLine(cm, false);\n-                        };\n-                        cmds.insertLineBefore = function(cm) {\n-                            return insertLine(cm, true);\n-                        };\n-\n-                        function wordAt(cm, pos) {\n-                            var start = pos.ch,\n-                                end = start,\n-                                line = cm.getLine(pos.line);\n-                            while (start && CodeMirror.isWordChar(line.charAt(start - 1))) --start;\n-                            while (end < line.length && CodeMirror.isWordChar(line.charAt(end))) ++end;\n-                            return {\n-                                from: Pos(pos.line, start),\n-                                to: Pos(pos.line, end),\n-                                word: line.slice(start, end)\n-                            };\n-                        }\n-                        cmds.selectNextOccurrence = function(cm) {\n-                            var from = cm.getCursor(\"from\"),\n-                                to = cm.getCursor(\"to\");\n-                            var fullWord = cm.state.sublimeFindFullWord == cm.doc.sel;\n-                            if (CodeMirror.cmpPos(from, to) == 0) {\n-                                var word = wordAt(cm, from);\n-                                if (!word.word) return;\n-                                cm.setSelection(word.from, word.to);\n-                                fullWord = true;\n-                            } else {\n-                                var text = cm.getRange(from, to);\n-                                var query = fullWord ? new RegExp(\"\\\\b\" + text + \"\\\\b\") : text;\n-                                var cur = cm.getSearchCursor(query, to);\n-                                var found = cur.findNext();\n-                                if (!found) {\n-                                    cur = cm.getSearchCursor(query, Pos(cm.firstLine(), 0));\n-                                    found = cur.findNext();\n-                                }\n-                                if (!found || isSelectedRange(cm.listSelections(), cur.from(), cur.to())) return;\n-                                cm.addSelection(cur.from(), cur.to());\n-                            }\n-                            if (fullWord) cm.state.sublimeFindFullWord = cm.doc.sel;\n-                        };\n-                        cmds.skipAndSelectNextOccurrence = function(cm) {\n-                            var prevAnchor = cm.getCursor(\"anchor\"),\n-                                prevHead = cm.getCursor(\"head\");\n-                            cmds.selectNextOccurrence(cm);\n-                            if (CodeMirror.cmpPos(prevAnchor, prevHead) != 0) {\n-                                cm.doc.setSelections(cm.doc.listSelections().filter(function(sel) {\n-                                    return sel.anchor != prevAnchor || sel.head != prevHead;\n-                                }));\n-                            }\n-                        };\n-\n-                        function addCursorToSelection(cm, dir) {\n-                            var ranges = cm.listSelections(),\n-                                newRanges = [];\n-                            for (var i = 0; i < ranges.length; i++) {\n-                                var range = ranges[i];\n-                                var newAnchor = cm.findPosV(range.anchor, dir, \"line\", range.anchor.goalColumn);\n-                                var newHead = cm.findPosV(range.head, dir, \"line\", range.head.goalColumn);\n-                                newAnchor.goalColumn = range.anchor.goalColumn != null ? range.anchor.goalColumn : cm.cursorCoords(range.anchor, \"div\").left;\n-                                newHead.goalColumn = range.head.goalColumn != null ? range.head.goalColumn : cm.cursorCoords(range.head, \"div\").left;\n-                                var newRange = {\n-                                    anchor: newAnchor,\n-                                    head: newHead\n-                                };\n-                                newRanges.push(range);\n-                                newRanges.push(newRange);\n-                            }\n-                            cm.setSelections(newRanges);\n-                        }\n-                        cmds.addCursorToPrevLine = function(cm) {\n-                            addCursorToSelection(cm, -1);\n-                        };\n-                        cmds.addCursorToNextLine = function(cm) {\n-                            addCursorToSelection(cm, 1);\n-                        };\n-\n-                        function isSelectedRange(ranges, from, to) {\n-                            for (var i = 0; i < ranges.length; i++)\n-                                if (CodeMirror.cmpPos(ranges[i].from(), from) == 0 && CodeMirror.cmpPos(ranges[i].to(), to) == 0) return true;\n-                            return false;\n-                        }\n-                        var mirror = \"(){}[]\";\n-\n-                        function selectBetweenBrackets(cm) {\n-                            var ranges = cm.listSelections(),\n-                                newRanges = [];\n-                            for (var i = 0; i < ranges.length; i++) {\n-                                var range = ranges[i],\n-                                    pos = range.head,\n-                                    opening = cm.scanForBracket(pos, -1);\n-                                if (!opening) return false;\n-                                for (;;) {\n-                                    var closing = cm.scanForBracket(pos, 1);\n-                                    if (!closing) return false;\n-                                    if (closing.ch == mirror.charAt(mirror.indexOf(opening.ch) + 1)) {\n-                                        var startPos = Pos(opening.pos.line, opening.pos.ch + 1);\n-                                        if (CodeMirror.cmpPos(startPos, range.from()) == 0 && CodeMirror.cmpPos(closing.pos, range.to()) == 0) {\n-                                            opening = cm.scanForBracket(opening.pos, -1);\n-                                            if (!opening) return false;\n-                                        } else {\n-                                            newRanges.push({\n-                                                anchor: startPos,\n-                                                head: closing.pos\n-                                            });\n-                                            break;\n-                                        }\n-                                    }\n-                                    pos = Pos(closing.pos.line, closing.pos.ch + 1);\n-                                }\n-                            }\n-                            cm.setSelections(newRanges);\n-                            return true;\n-                        }\n-                        cmds.selectScope = function(cm) {\n-                            selectBetweenBrackets(cm) || cm.execCommand(\"selectAll\");\n-                        };\n-                        cmds.selectBetweenBrackets = function(cm) {\n-                            if (!selectBetweenBrackets(cm)) return CodeMirror.Pass;\n-                        };\n-\n-                        function puncType(type) {\n-                            return !type ? null : /\\bpunctuation\\b/.test(type) ? type : void 0;\n-                        }\n-                        cmds.goToBracket = function(cm) {\n-                            cm.extendSelectionsBy(function(range) {\n-                                var next = cm.scanForBracket(range.head, 1, puncType(cm.getTokenTypeAt(range.head)));\n-                                if (next && CodeMirror.cmpPos(next.pos, range.head) != 0) return next.pos;\n-                                var prev = cm.scanForBracket(range.head, -1, puncType(cm.getTokenTypeAt(Pos(range.head.line, range.head.ch + 1))));\n-                                return prev && Pos(prev.pos.line, prev.pos.ch + 1) || range.head;\n-                            });\n-                        };\n-                        cmds.swapLineUp = function(cm) {\n-                            if (cm.isReadOnly()) return CodeMirror.Pass;\n-                            var ranges = cm.listSelections(),\n-                                linesToMove = [],\n-                                at = cm.firstLine() - 1,\n-                                newSels = [];\n-                            for (var i = 0; i < ranges.length; i++) {\n-                                var range = ranges[i],\n-                                    from = range.from().line - 1,\n-                                    to = range.to().line;\n-                                newSels.push({\n-                                    anchor: Pos(range.anchor.line - 1, range.anchor.ch),\n-                                    head: Pos(range.head.line - 1, range.head.ch)\n-                                });\n-                                if (range.to().ch == 0 && !range.empty()) --to;\n-                                if (from > at) linesToMove.push(from, to);\n-                                else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n-                                at = to;\n-                            }\n-                            cm.operation(function() {\n-                                for (var i2 = 0; i2 < linesToMove.length; i2 += 2) {\n-                                    var from2 = linesToMove[i2],\n-                                        to2 = linesToMove[i2 + 1];\n-                                    var line = cm.getLine(from2);\n-                                    cm.replaceRange(\"\", Pos(from2, 0), Pos(from2 + 1, 0), \"+swapLine\");\n-                                    if (to2 > cm.lastLine()) cm.replaceRange(\"\\n\" + line, Pos(cm.lastLine()), null, \"+swapLine\");\n-                                    else cm.replaceRange(line + \"\\n\", Pos(to2, 0), null, \"+swapLine\");\n-                                }\n-                                cm.setSelections(newSels);\n-                                cm.scrollIntoView();\n-                            });\n-                        };\n-                        cmds.swapLineDown = function(cm) {\n-                            if (cm.isReadOnly()) return CodeMirror.Pass;\n-                            var ranges = cm.listSelections(),\n-                                linesToMove = [],\n-                                at = cm.lastLine() + 1;\n-                            for (var i = ranges.length - 1; i >= 0; i--) {\n-                                var range = ranges[i],\n-                                    from = range.to().line + 1,\n-                                    to = range.from().line;\n-                                if (range.to().ch == 0 && !range.empty()) from--;\n-                                if (from < at) linesToMove.push(from, to);\n-                                else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n-                                at = to;\n-                            }\n-                            cm.operation(function() {\n-                                for (var i2 = linesToMove.length - 2; i2 >= 0; i2 -= 2) {\n-                                    var from2 = linesToMove[i2],\n-                                        to2 = linesToMove[i2 + 1];\n-                                    var line = cm.getLine(from2);\n-                                    if (from2 == cm.lastLine()) cm.replaceRange(\"\", Pos(from2 - 1), Pos(from2), \"+swapLine\");\n-                                    else cm.replaceRange(\"\", Pos(from2, 0), Pos(from2 + 1, 0), \"+swapLine\");\n-                                    cm.replaceRange(line + \"\\n\", Pos(to2, 0), null, \"+swapLine\");\n-                                }\n-                                cm.scrollIntoView();\n-                            });\n-                        };\n-                        cmds.toggleCommentIndented = function(cm) {\n-                            cm.toggleComment({\n-                                indent: true\n-                            });\n-                        };\n-                        cmds.joinLines = function(cm) {\n-                            var ranges = cm.listSelections(),\n-                                joined = [];\n-                            for (var i = 0; i < ranges.length; i++) {\n-                                var range = ranges[i],\n-                                    from = range.from();\n-                                var start = from.line,\n-                                    end = range.to().line;\n-                                while (i < ranges.length - 1 && ranges[i + 1].from().line == end) end = ranges[++i].to().line;\n-                                joined.push({\n-                                    start,\n-                                    end,\n-                                    anchor: !range.empty() && from\n-                                });\n-                            }\n-                            cm.operation(function() {\n-                                var offset = 0,\n-                                    ranges2 = [];\n-                                for (var i2 = 0; i2 < joined.length; i2++) {\n-                                    var obj = joined[i2];\n-                                    var anchor = obj.anchor && Pos(obj.anchor.line - offset, obj.anchor.ch),\n-                                        head;\n-                                    for (var line = obj.start; line <= obj.end; line++) {\n-                                        var actual = line - offset;\n-                                        if (line == obj.end) head = Pos(actual, cm.getLine(actual).length + 1);\n-                                        if (actual < cm.lastLine()) {\n-                                            cm.replaceRange(\" \", Pos(actual), Pos(actual + 1, /^\\s*/.exec(cm.getLine(actual + 1))[0].length));\n-                                            ++offset;\n-                                        }\n-                                    }\n-                                    ranges2.push({\n-                                        anchor: anchor || head,\n-                                        head\n-                                    });\n-                                }\n-                                cm.setSelections(ranges2, 0);\n-                            });\n-                        };\n-                        cmds.duplicateLine = function(cm) {\n-                            cm.operation(function() {\n-                                var rangeCount = cm.listSelections().length;\n-                                for (var i = 0; i < rangeCount; i++) {\n-                                    var range = cm.listSelections()[i];\n-                                    if (range.empty()) cm.replaceRange(cm.getLine(range.head.line) + \"\\n\", Pos(range.head.line, 0));\n-                                    else cm.replaceRange(cm.getRange(range.from(), range.to()), range.from());\n-                                }\n-                                cm.scrollIntoView();\n-                            });\n-                        };\n-\n-                        function sortLines(cm, caseSensitive, direction) {\n-                            if (cm.isReadOnly()) return CodeMirror.Pass;\n-                            var ranges = cm.listSelections(),\n-                                toSort = [],\n-                                selected;\n-                            for (var i = 0; i < ranges.length; i++) {\n-                                var range = ranges[i];\n-                                if (range.empty()) continue;\n-                                var from = range.from().line,\n-                                    to = range.to().line;\n-                                while (i < ranges.length - 1 && ranges[i + 1].from().line == to) to = ranges[++i].to().line;\n-                                if (!ranges[i].to().ch) to--;\n-                                toSort.push(from, to);\n-                            }\n-                            if (toSort.length) selected = true;\n-                            else toSort.push(cm.firstLine(), cm.lastLine());\n-                            cm.operation(function() {\n-                                var ranges2 = [];\n-                                for (var i2 = 0; i2 < toSort.length; i2 += 2) {\n-                                    var from2 = toSort[i2],\n-                                        to2 = toSort[i2 + 1];\n-                                    var start = Pos(from2, 0),\n-                                        end = Pos(to2);\n-                                    var lines = cm.getRange(start, end, false);\n-                                    if (caseSensitive) lines.sort(function(a, b) {\n-                                        return a < b ? -direction : a == b ? 0 : direction;\n-                                    });\n-                                    else lines.sort(function(a, b) {\n-                                        var au = a.toUpperCase(),\n-                                            bu = b.toUpperCase();\n-                                        if (au != bu) {\n-                                            a = au;\n-                                            b = bu;\n-                                        }\n-                                        return a < b ? -direction : a == b ? 0 : direction;\n-                                    });\n-                                    cm.replaceRange(lines, start, end);\n-                                    if (selected) ranges2.push({\n-                                        anchor: start,\n-                                        head: Pos(to2 + 1, 0)\n-                                    });\n-                                }\n-                                if (selected) cm.setSelections(ranges2, 0);\n-                            });\n-                        }\n-                        cmds.sortLines = function(cm) {\n-                            sortLines(cm, true, 1);\n-                        };\n-                        cmds.reverseSortLines = function(cm) {\n-                            sortLines(cm, true, -1);\n-                        };\n-                        cmds.sortLinesInsensitive = function(cm) {\n-                            sortLines(cm, false, 1);\n-                        };\n-                        cmds.reverseSortLinesInsensitive = function(cm) {\n-                            sortLines(cm, false, -1);\n-                        };\n-                        cmds.nextBookmark = function(cm) {\n-                            var marks = cm.state.sublimeBookmarks;\n-                            if (marks)\n-                                while (marks.length) {\n-                                    var current = marks.shift();\n-                                    var found = current.find();\n-                                    if (found) {\n-                                        marks.push(current);\n-                                        return cm.setSelection(found.from, found.to);\n-                                    }\n-                                }\n-                        };\n-                        cmds.prevBookmark = function(cm) {\n-                            var marks = cm.state.sublimeBookmarks;\n-                            if (marks)\n-                                while (marks.length) {\n-                                    marks.unshift(marks.pop());\n-                                    var found = marks[marks.length - 1].find();\n-                                    if (!found) marks.pop();\n-                                    else return cm.setSelection(found.from, found.to);\n-                                }\n-                        };\n-                        cmds.toggleBookmark = function(cm) {\n-                            var ranges = cm.listSelections();\n-                            var marks = cm.state.sublimeBookmarks || (cm.state.sublimeBookmarks = []);\n-                            for (var i = 0; i < ranges.length; i++) {\n-                                var from = ranges[i].from(),\n-                                    to = ranges[i].to();\n-                                var found = ranges[i].empty() ? cm.findMarksAt(from) : cm.findMarks(from, to);\n-                                for (var j = 0; j < found.length; j++) {\n-                                    if (found[j].sublimeBookmark) {\n-                                        found[j].clear();\n-                                        for (var k = 0; k < marks.length; k++)\n-                                            if (marks[k] == found[j]) marks.splice(k--, 1);\n-                                        break;\n-                                    }\n-                                }\n-                                if (j == found.length) marks.push(cm.markText(from, to, {\n-                                    sublimeBookmark: true,\n-                                    clearWhenEmpty: false\n-                                }));\n-                            }\n-                        };\n-                        cmds.clearBookmarks = function(cm) {\n-                            var marks = cm.state.sublimeBookmarks;\n-                            if (marks)\n-                                for (var i = 0; i < marks.length; i++) marks[i].clear();\n-                            marks.length = 0;\n-                        };\n-                        cmds.selectBookmarks = function(cm) {\n-                            var marks = cm.state.sublimeBookmarks,\n-                                ranges = [];\n-                            if (marks)\n-                                for (var i = 0; i < marks.length; i++) {\n-                                    var found = marks[i].find();\n-                                    if (!found) marks.splice(i--, 0);\n-                                    else ranges.push({\n-                                        anchor: found.from,\n-                                        head: found.to\n-                                    });\n-                                }\n-                            if (ranges.length) cm.setSelections(ranges, 0);\n-                        };\n-\n-                        function modifyWordOrSelection(cm, mod) {\n-                            cm.operation(function() {\n-                                var ranges = cm.listSelections(),\n-                                    indices = [],\n-                                    replacements = [];\n-                                for (var i = 0; i < ranges.length; i++) {\n-                                    var range = ranges[i];\n-                                    if (range.empty()) {\n-                                        indices.push(i);\n-                                        replacements.push(\"\");\n-                                    } else replacements.push(mod(cm.getRange(range.from(), range.to())));\n-                                }\n-                                cm.replaceSelections(replacements, \"around\", \"case\");\n-                                for (var i = indices.length - 1, at; i >= 0; i--) {\n-                                    var range = ranges[indices[i]];\n-                                    if (at && CodeMirror.cmpPos(range.head, at) > 0) continue;\n-                                    var word = wordAt(cm, range.head);\n-                                    at = word.from;\n-                                    cm.replaceRange(mod(word.word), word.from, word.to);\n-                                }\n-                            });\n-                        }\n-                        cmds.smartBackspace = function(cm) {\n-                            if (cm.somethingSelected()) return CodeMirror.Pass;\n-                            cm.operation(function() {\n-                                var cursors = cm.listSelections();\n-                                var indentUnit = cm.getOption(\"indentUnit\");\n-                                for (var i = cursors.length - 1; i >= 0; i--) {\n-                                    var cursor = cursors[i].head;\n-                                    var toStartOfLine = cm.getRange({\n-                                        line: cursor.line,\n-                                        ch: 0\n-                                    }, cursor);\n-                                    var column = CodeMirror.countColumn(toStartOfLine, null, cm.getOption(\"tabSize\"));\n-                                    var deletePos = cm.findPosH(cursor, -1, \"char\", false);\n-                                    if (toStartOfLine && !/\\S/.test(toStartOfLine) && column % indentUnit == 0) {\n-                                        var prevIndent = new Pos(cursor.line, CodeMirror.findColumn(toStartOfLine, column - indentUnit, indentUnit));\n-                                        if (prevIndent.ch != cursor.ch) deletePos = prevIndent;\n-                                    }\n-                                    cm.replaceRange(\"\", deletePos, cursor, \"+delete\");\n-                                }\n-                            });\n-                        };\n-                        cmds.delLineRight = function(cm) {\n-                            cm.operation(function() {\n-                                var ranges = cm.listSelections();\n-                                for (var i = ranges.length - 1; i >= 0; i--) cm.replaceRange(\"\", ranges[i].anchor, Pos(ranges[i].to().line), \"+delete\");\n-                                cm.scrollIntoView();\n-                            });\n-                        };\n-                        cmds.upcaseAtCursor = function(cm) {\n-                            modifyWordOrSelection(cm, function(str) {\n-                                return str.toUpperCase();\n-                            });\n-                        };\n-                        cmds.downcaseAtCursor = function(cm) {\n-                            modifyWordOrSelection(cm, function(str) {\n-                                return str.toLowerCase();\n-                            });\n-                        };\n-                        cmds.setSublimeMark = function(cm) {\n-                            if (cm.state.sublimeMark) cm.state.sublimeMark.clear();\n-                            cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n-                        };\n-                        cmds.selectToSublimeMark = function(cm) {\n-                            var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n-                            if (found) cm.setSelection(cm.getCursor(), found);\n-                        };\n-                        cmds.deleteToSublimeMark = function(cm) {\n-                            var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n-                            if (found) {\n-                                var from = cm.getCursor(),\n-                                    to = found;\n-                                if (CodeMirror.cmpPos(from, to) > 0) {\n-                                    var tmp = to;\n-                                    to = from;\n-                                    from = tmp;\n-                                }\n-                                cm.state.sublimeKilled = cm.getRange(from, to);\n-                                cm.replaceRange(\"\", from, to);\n-                            }\n-                        };\n-                        cmds.swapWithSublimeMark = function(cm) {\n-                            var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n-                            if (found) {\n-                                cm.state.sublimeMark.clear();\n-                                cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n-                                cm.setCursor(found);\n-                            }\n-                        };\n-                        cmds.sublimeYank = function(cm) {\n-                            if (cm.state.sublimeKilled != null) cm.replaceSelection(cm.state.sublimeKilled, null, \"paste\");\n-                        };\n-                        cmds.showInCenter = function(cm) {\n-                            var pos = cm.cursorCoords(null, \"local\");\n-                            cm.scrollTo(null, (pos.top + pos.bottom) / 2 - cm.getScrollInfo().clientHeight / 2);\n-                        };\n-\n-                        function getTarget(cm) {\n-                            var from = cm.getCursor(\"from\"),\n-                                to = cm.getCursor(\"to\");\n-                            if (CodeMirror.cmpPos(from, to) == 0) {\n-                                var word = wordAt(cm, from);\n-                                if (!word.word) return;\n-                                from = word.from;\n-                                to = word.to;\n-                            }\n-                            return {\n-                                from,\n-                                to,\n-                                query: cm.getRange(from, to),\n-                                word\n-                            };\n-                        }\n-\n-                        function findAndGoTo(cm, forward) {\n-                            var target = getTarget(cm);\n-                            if (!target) return;\n-                            var query = target.query;\n-                            var cur = cm.getSearchCursor(query, forward ? target.to : target.from);\n-                            if (forward ? cur.findNext() : cur.findPrevious()) {\n-                                cm.setSelection(cur.from(), cur.to());\n-                            } else {\n-                                cur = cm.getSearchCursor(query, forward ? Pos(cm.firstLine(), 0) : cm.clipPos(Pos(cm.lastLine())));\n-                                if (forward ? cur.findNext() : cur.findPrevious()) cm.setSelection(cur.from(), cur.to());\n-                                else if (target.word) cm.setSelection(target.from, target.to);\n-                            }\n-                        }\n-                        cmds.findUnder = function(cm) {\n-                            findAndGoTo(cm, true);\n-                        };\n-                        cmds.findUnderPrevious = function(cm) {\n-                            findAndGoTo(cm, false);\n-                        };\n-                        cmds.findAllUnder = function(cm) {\n-                            var target = getTarget(cm);\n-                            if (!target) return;\n-                            var cur = cm.getSearchCursor(target.query);\n-                            var matches = [];\n-                            var primaryIndex = -1;\n-                            while (cur.findNext()) {\n-                                matches.push({\n-                                    anchor: cur.from(),\n-                                    head: cur.to()\n-                                });\n-                                if (cur.from().line <= target.from.line && cur.from().ch <= target.from.ch) primaryIndex++;\n-                            }\n-                            cm.setSelections(matches, primaryIndex);\n-                        };\n-                        var keyMap = CodeMirror.keyMap;\n-                        keyMap.macSublime = {\n-                            \"Cmd-Left\": \"goLineStartSmart\",\n-                            \"Shift-Tab\": \"indentLess\",\n-                            \"Shift-Ctrl-K\": \"deleteLine\",\n-                            \"Alt-Q\": \"wrapLines\",\n-                            \"Ctrl-Left\": \"goSubwordLeft\",\n-                            \"Ctrl-Right\": \"goSubwordRight\",\n-                            \"Ctrl-Alt-Up\": \"scrollLineUp\",\n-                            \"Ctrl-Alt-Down\": \"scrollLineDown\",\n-                            \"Cmd-L\": \"selectLine\",\n-                            \"Shift-Cmd-L\": \"splitSelectionByLine\",\n-                            \"Esc\": \"singleSelectionTop\",\n-                            \"Cmd-Enter\": \"insertLineAfter\",\n-                            \"Shift-Cmd-Enter\": \"insertLineBefore\",\n-                            \"Cmd-D\": \"selectNextOccurrence\",\n-                            \"Shift-Cmd-Space\": \"selectScope\",\n-                            \"Shift-Cmd-M\": \"selectBetweenBrackets\",\n-                            \"Cmd-M\": \"goToBracket\",\n-                            \"Cmd-Ctrl-Up\": \"swapLineUp\",\n-                            \"Cmd-Ctrl-Down\": \"swapLineDown\",\n-                            \"Cmd-/\": \"toggleCommentIndented\",\n-                            \"Cmd-J\": \"joinLines\",\n-                            \"Shift-Cmd-D\": \"duplicateLine\",\n-                            \"F5\": \"sortLines\",\n-                            \"Shift-F5\": \"reverseSortLines\",\n-                            \"Cmd-F5\": \"sortLinesInsensitive\",\n-                            \"Shift-Cmd-F5\": \"reverseSortLinesInsensitive\",\n-                            \"F2\": \"nextBookmark\",\n-                            \"Shift-F2\": \"prevBookmark\",\n-                            \"Cmd-F2\": \"toggleBookmark\",\n-                            \"Shift-Cmd-F2\": \"clearBookmarks\",\n-                            \"Alt-F2\": \"selectBookmarks\",\n-                            \"Backspace\": \"smartBackspace\",\n-                            \"Cmd-K Cmd-D\": \"skipAndSelectNextOccurrence\",\n-                            \"Cmd-K Cmd-K\": \"delLineRight\",\n-                            \"Cmd-K Cmd-U\": \"upcaseAtCursor\",\n-                            \"Cmd-K Cmd-L\": \"downcaseAtCursor\",\n-                            \"Cmd-K Cmd-Space\": \"setSublimeMark\",\n-                            \"Cmd-K Cmd-A\": \"selectToSublimeMark\",\n-                            \"Cmd-K Cmd-W\": \"deleteToSublimeMark\",\n-                            \"Cmd-K Cmd-X\": \"swapWithSublimeMark\",\n-                            \"Cmd-K Cmd-Y\": \"sublimeYank\",\n-                            \"Cmd-K Cmd-C\": \"showInCenter\",\n-                            \"Cmd-K Cmd-G\": \"clearBookmarks\",\n-                            \"Cmd-K Cmd-Backspace\": \"delLineLeft\",\n-                            \"Cmd-K Cmd-1\": \"foldAll\",\n-                            \"Cmd-K Cmd-0\": \"unfoldAll\",\n-                            \"Cmd-K Cmd-J\": \"unfoldAll\",\n-                            \"Ctrl-Shift-Up\": \"addCursorToPrevLine\",\n-                            \"Ctrl-Shift-Down\": \"addCursorToNextLine\",\n-                            \"Cmd-F3\": \"findUnder\",\n-                            \"Shift-Cmd-F3\": \"findUnderPrevious\",\n-                            \"Alt-F3\": \"findAllUnder\",\n-                            \"Shift-Cmd-[\": \"fold\",\n-                            \"Shift-Cmd-]\": \"unfold\",\n-                            \"Cmd-I\": \"findIncremental\",\n-                            \"Shift-Cmd-I\": \"findIncrementalReverse\",\n-                            \"Cmd-H\": \"replace\",\n-                            \"F3\": \"findNext\",\n-                            \"Shift-F3\": \"findPrev\",\n-                            \"fallthrough\": \"macDefault\"\n-                        };\n-                        CodeMirror.normalizeKeyMap(keyMap.macSublime);\n-                        keyMap.pcSublime = {\n-                            \"Shift-Tab\": \"indentLess\",\n-                            \"Shift-Ctrl-K\": \"deleteLine\",\n-                            \"Alt-Q\": \"wrapLines\",\n-                            \"Ctrl-T\": \"transposeChars\",\n-                            \"Alt-Left\": \"goSubwordLeft\",\n-                            \"Alt-Right\": \"goSubwordRight\",\n-                            \"Ctrl-Up\": \"scrollLineUp\",\n-                            \"Ctrl-Down\": \"scrollLineDown\",\n-                            \"Ctrl-L\": \"selectLine\",\n-                            \"Shift-Ctrl-L\": \"splitSelectionByLine\",\n-                            \"Esc\": \"singleSelectionTop\",\n-                            \"Ctrl-Enter\": \"insertLineAfter\",\n-                            \"Shift-Ctrl-Enter\": \"insertLineBefore\",\n-                            \"Ctrl-D\": \"selectNextOccurrence\",\n-                            \"Shift-Ctrl-Space\": \"selectScope\",\n-                            \"Shift-Ctrl-M\": \"selectBetweenBrackets\",\n-                            \"Ctrl-M\": \"goToBracket\",\n-                            \"Shift-Ctrl-Up\": \"swapLineUp\",\n-                            \"Shift-Ctrl-Down\": \"swapLineDown\",\n-                            \"Ctrl-/\": \"toggleCommentIndented\",\n-                            \"Ctrl-J\": \"joinLines\",\n-                            \"Shift-Ctrl-D\": \"duplicateLine\",\n-                            \"F9\": \"sortLines\",\n-                            \"Shift-F9\": \"reverseSortLines\",\n-                            \"Ctrl-F9\": \"sortLinesInsensitive\",\n-                            \"Shift-Ctrl-F9\": \"reverseSortLinesInsensitive\",\n-                            \"F2\": \"nextBookmark\",\n-                            \"Shift-F2\": \"prevBookmark\",\n-                            \"Ctrl-F2\": \"toggleBookmark\",\n-                            \"Shift-Ctrl-F2\": \"clearBookmarks\",\n-                            \"Alt-F2\": \"selectBookmarks\",\n-                            \"Backspace\": \"smartBackspace\",\n-                            \"Ctrl-K Ctrl-D\": \"skipAndSelectNextOccurrence\",\n-                            \"Ctrl-K Ctrl-K\": \"delLineRight\",\n-                            \"Ctrl-K Ctrl-U\": \"upcaseAtCursor\",\n-                            \"Ctrl-K Ctrl-L\": \"downcaseAtCursor\",\n-                            \"Ctrl-K Ctrl-Space\": \"setSublimeMark\",\n-                            \"Ctrl-K Ctrl-A\": \"selectToSublimeMark\",\n-                            \"Ctrl-K Ctrl-W\": \"deleteToSublimeMark\",\n-                            \"Ctrl-K Ctrl-X\": \"swapWithSublimeMark\",\n-                            \"Ctrl-K Ctrl-Y\": \"sublimeYank\",\n-                            \"Ctrl-K Ctrl-C\": \"showInCenter\",\n-                            \"Ctrl-K Ctrl-G\": \"clearBookmarks\",\n-                            \"Ctrl-K Ctrl-Backspace\": \"delLineLeft\",\n-                            \"Ctrl-K Ctrl-1\": \"foldAll\",\n-                            \"Ctrl-K Ctrl-0\": \"unfoldAll\",\n-                            \"Ctrl-K Ctrl-J\": \"unfoldAll\",\n-                            \"Ctrl-Alt-Up\": \"addCursorToPrevLine\",\n-                            \"Ctrl-Alt-Down\": \"addCursorToNextLine\",\n-                            \"Ctrl-F3\": \"findUnder\",\n-                            \"Shift-Ctrl-F3\": \"findUnderPrevious\",\n-                            \"Alt-F3\": \"findAllUnder\",\n-                            \"Shift-Ctrl-[\": \"fold\",\n-                            \"Shift-Ctrl-]\": \"unfold\",\n-                            \"Ctrl-I\": \"findIncremental\",\n-                            \"Shift-Ctrl-I\": \"findIncrementalReverse\",\n-                            \"Ctrl-H\": \"replace\",\n-                            \"F3\": \"findNext\",\n-                            \"Shift-F3\": \"findPrev\",\n-                            \"fallthrough\": \"pcDefault\"\n-                        };\n-                        CodeMirror.normalizeKeyMap(keyMap.pcSublime);\n-                        var mac = keyMap.default == keyMap.macDefault;\n-                        keyMap.sublime = mac ? keyMap.macSublime : keyMap.pcSublime;\n-                    });\n-                })();\n-                var sublimeExports = sublime$2.exports;\n-                const sublime = /* @__PURE__ */ codemirror.getDefaultExportFromCjs(sublimeExports);\n-                const sublime$1 = /* @__PURE__ */ _mergeNamespaces({\n-                    __proto__: null,\n-                    default: sublime\n-                }, [sublimeExports]);\n-                exports.sublime = sublime$1;\n-\n-                /***/\n-            }),\n-\n-        /***/\n-        \"../../graphiql-toolkit/esm/async-helpers/index.js\":\n-            /*!*********************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/async-helpers/index.js ***!\n-              \\*********************************************************/\n-            /***/\n-            (function(__unused_webpack_module, exports) {\n-\n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.fetcherReturnToPromise = fetcherReturnToPromise;\n                 exports.isAsyncIterable = isAsyncIterable;\n                 exports.isObservable = isObservable;\n                 exports.isPromise = isPromise;\n-                var __awaiter = void 0 && (void 0).__awaiter || function(thisArg, _arguments, P, generator) {\n-                    function adopt(value) {\n-                        return value instanceof P ? value : new P(function(resolve) {\n-                            resolve(value);\n-                        });\n-                    }\n-                    return new(P || (P = Promise))(function(resolve, reject) {\n-                        function fulfilled(value) {\n-                            try {\n-                                step(generator.next(value));\n-                            } catch (e) {\n-                                reject(e);\n-                            }\n-                        }\n-\n-                        function rejected(value) {\n-                            try {\n-                                step(generator[\"throw\"](value));\n-                            } catch (e) {\n-                                reject(e);\n-                            }\n-                        }\n-\n-                        function step(result) {\n-                            result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n-                        }\n-                        step((generator = generator.apply(thisArg, _arguments || [])).next());\n-                    });\n-                };\n+                __webpack_require__( /*! ../chunk-LMOQIXV4.js */ \"../../graphiql-toolkit/dist/esm/chunk-LMOQIXV4.js\");\n \n                 function isPromise(value) {\n-                    return typeof value === 'object' && value !== null && typeof value.then === 'function';\n+                    return typeof value == \"object\" && value !== null && typeof value.then == \"function\";\n                 }\n \n                 function observableToPromise(observable) {\n                     return new Promise((resolve, reject) => {\n                         const subscription = observable.subscribe({\n                             next(v) {\n-                                resolve(v);\n-                                subscription.unsubscribe();\n+                                resolve(v), subscription.unsubscribe();\n                             },\n                             error: reject,\n                             complete() {\n-                                reject(new Error('no value resolved'));\n+                                reject(new Error(\"no value resolved\"));\n                             }\n                         });\n                     });\n                 }\n \n                 function isObservable(value) {\n-                    return typeof value === 'object' && value !== null && 'subscribe' in value && typeof value.subscribe === 'function';\n+                    return typeof value == \"object\" && value !== null && \"subscribe\" in value && typeof value.subscribe == \"function\";\n                 }\n \n                 function isAsyncIterable(input) {\n-                    return typeof input === 'object' && input !== null && (input[Symbol.toStringTag] === 'AsyncGenerator' || Symbol.asyncIterator in input);\n+                    return typeof input == \"object\" && input !== null && (\n+                        // Some browsers still don't have Symbol.asyncIterator implemented (iOS Safari)\n+                        // That means every custom AsyncIterable must be built using a AsyncGeneratorFunction (async function * () {})\n+                        input[Symbol.toStringTag] === \"AsyncGenerator\" || Symbol.asyncIterator in input);\n                 }\n-\n-                function asyncIterableToPromise(input) {\n+                async function asyncIterableToPromise(input) {\n                     var _a;\n-                    return __awaiter(this, void 0, void 0, function*() {\n-                        const iteratorReturn = (_a = ('return' in input ? input : input[Symbol.asyncIterator]()).return) === null || _a === void 0 ? void 0 : _a.bind(input);\n-                        const iteratorNext = ('next' in input ? input : input[Symbol.asyncIterator]()).next.bind(input);\n-                        const result = yield iteratorNext();\n-                        void(iteratorReturn === null || iteratorReturn === void 0 ? void 0 : iteratorReturn());\n-                        return result.value;\n-                    });\n+                    const iteratorReturn = (_a = (\"return\" in input ? input : input[Symbol.asyncIterator]()).return) == null ? void 0 : _a.bind(input),\n+                        result = await (\"next\" in input ? input : input[Symbol.asyncIterator]()).next.bind(input)();\n+                    return iteratorReturn == null || iteratorReturn(), result.value;\n                 }\n-\n-                function fetcherReturnToPromise(fetcherResult) {\n-                    return __awaiter(this, void 0, void 0, function*() {\n-                        const result = yield fetcherResult;\n-                        if (isAsyncIterable(result)) {\n-                            return asyncIterableToPromise(result);\n-                        }\n-                        if (isObservable(result)) {\n-                            return observableToPromise(result);\n-                        }\n-                        return result;\n-                    });\n+                async function fetcherReturnToPromise(fetcherResult) {\n+                    const result = await fetcherResult;\n+                    return isAsyncIterable(result) ? asyncIterableToPromise(result) : isObservable(result) ? observableToPromise(result) : result;\n                 }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/create-fetcher/createFetcher.js\":\n-            /*!******************************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/create-fetcher/createFetcher.js ***!\n-              \\******************************************************************/\n+        \"../../graphiql-toolkit/dist/esm/chunk-LMOQIXV4.js\":\n+            /*!*********************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/chunk-LMOQIXV4.js ***!\n+              \\*********************************************************/\n+            /***/\n+            (function(__unused_webpack_module, exports) {\n+\n+                \"use strict\";\n+\n+\n+                Object.defineProperty(exports, \"__esModule\", ({\n+                    value: true\n+                }));\n+                exports.__spreadValues = exports.__spreadProps = exports.__forAwait = exports.__await = exports.__asyncGenerator = void 0;\n+                var __defProp = Object.defineProperty,\n+                    __defProps = Object.defineProperties;\n+                var __getOwnPropDescs = Object.getOwnPropertyDescriptors;\n+                var __getOwnPropSymbols = Object.getOwnPropertySymbols;\n+                var __hasOwnProp = Object.prototype.hasOwnProperty,\n+                    __propIsEnum = Object.prototype.propertyIsEnumerable;\n+                var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\n+                var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {\n+                        enumerable: !0,\n+                        configurable: !0,\n+                        writable: !0,\n+                        value\n+                    }) : obj[key] = value,\n+                    __spreadValues = (a, b) => {\n+                        for (var prop in b || (b = {})) __hasOwnProp.call(b, prop) && __defNormalProp(a, prop, b[prop]);\n+                        if (__getOwnPropSymbols)\n+                            for (var prop of __getOwnPropSymbols(b)) __propIsEnum.call(b, prop) && __defNormalProp(a, prop, b[prop]);\n+                        return a;\n+                    },\n+                    __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n+                exports.__spreadProps = __spreadProps;\n+                exports.__spreadValues = __spreadValues;\n+                var __await = function(promise, isYieldStar) {\n+                        this[0] = promise, this[1] = isYieldStar;\n+                    },\n+                    __asyncGenerator = (__this, __arguments, generator) => {\n+                        var resume = (k, v, yes, no) => {\n+                                try {\n+                                    var x = generator[k](v),\n+                                        isAwait = (v = x.value) instanceof __await,\n+                                        done = x.done;\n+                                    Promise.resolve(isAwait ? v[0] : v).then(y => isAwait ? resume(k === \"return\" ? k : \"next\", v[1] ? {\n+                                        done: y.done,\n+                                        value: y.value\n+                                    } : y, yes, no) : yes({\n+                                        value: y,\n+                                        done\n+                                    })).catch(e => resume(\"throw\", e, yes, no));\n+                                } catch (e) {\n+                                    no(e);\n+                                }\n+                            },\n+                            method = k => it[k] = x => new Promise((yes, no) => resume(k, x, yes, no)),\n+                            it = {};\n+                        return generator = generator.apply(__this, __arguments), it[__knownSymbol(\"asyncIterator\")] = () => it, method(\"next\"), method(\"throw\"), method(\"return\"), it;\n+                    };\n+                exports.__asyncGenerator = __asyncGenerator;\n+                exports.__await = __await;\n+                var __forAwait = (obj, it, method) => (it = obj[__knownSymbol(\"asyncIterator\")]) ? it.call(obj) : (obj = obj[__knownSymbol(\"iterator\")](), it = {}, method = (key, fn) => (fn = obj[key]) && (it[key] = arg => new Promise((yes, no, done) => (arg = fn.call(obj, arg), done = arg.done, Promise.resolve(arg.value).then(value => yes({\n+                    value,\n+                    done\n+                }), no)))), method(\"next\"), method(\"return\"), it);\n+                exports.__forAwait = __forAwait;\n+\n+                /***/\n+            }),\n+\n+        /***/\n+        \"../../graphiql-toolkit/dist/esm/create-fetcher/createFetcher.js\":\n+            /*!***********************************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/create-fetcher/createFetcher.js ***!\n+              \\***********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.createGraphiQLFetcher = createGraphiQLFetcher;\n-                var _lib = __webpack_require__( /*! ./lib */ \"../../graphiql-toolkit/esm/create-fetcher/lib.js\");\n+                __webpack_require__( /*! ../chunk-LMOQIXV4.js */ \"../../graphiql-toolkit/dist/esm/chunk-LMOQIXV4.js\");\n+                var _lib = __webpack_require__( /*! ./lib */ \"../../graphiql-toolkit/dist/esm/create-fetcher/lib.js\");\n \n                 function createGraphiQLFetcher(options) {\n-                    let httpFetch;\n-                    if (typeof window !== 'undefined' && window.fetch) {\n-                        httpFetch = window.fetch;\n-                    }\n-                    if ((options === null || options === void 0 ? void 0 : options.enableIncrementalDelivery) === null || options.enableIncrementalDelivery !== false) {\n-                        options.enableIncrementalDelivery = true;\n-                    }\n-                    if (options.fetch) {\n-                        httpFetch = options.fetch;\n-                    }\n-                    if (!httpFetch) {\n-                        throw new Error('No valid fetcher implementation available');\n-                    }\n-                    const simpleFetcher = (0, _lib.createSimpleFetcher)(options, httpFetch);\n-                    const httpFetcher = options.enableIncrementalDelivery ? (0, _lib.createMultipartFetcher)(options, httpFetch) : simpleFetcher;\n-                    return (graphQLParams, fetcherOpts) => {\n-                        if (graphQLParams.operationName === 'IntrospectionQuery') {\n-                            return (options.schemaFetcher || simpleFetcher)(graphQLParams, fetcherOpts);\n-                        }\n-                        const isSubscription = (fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.documentAST) ? (0, _lib.isSubscriptionWithName)(fetcherOpts.documentAST, graphQLParams.operationName || undefined) : false;\n-                        if (isSubscription) {\n-                            const wsFetcher = (0, _lib.getWsFetcher)(options, fetcherOpts);\n-                            if (!wsFetcher) {\n-                                throw new Error(`Your GraphiQL createFetcher is not properly configured for websocket subscriptions yet. ${options.subscriptionUrl ? `Provided URL ${options.subscriptionUrl} failed` : 'Please provide subscriptionUrl, wsClient or legacyClient option first.'}`);\n-                            }\n+                    const httpFetch = options.fetch || typeof window != \"undefined\" && window.fetch;\n+                    if (!httpFetch) throw new Error(\"No valid fetcher implementation available\");\n+                    options.enableIncrementalDelivery = options.enableIncrementalDelivery !== !1;\n+                    const simpleFetcher = (0, _lib.createSimpleFetcher)(options, httpFetch),\n+                        httpFetcher = options.enableIncrementalDelivery ? (0, _lib.createMultipartFetcher)(options, httpFetch) : simpleFetcher;\n+                    return async (graphQLParams, fetcherOpts) => {\n+                        if (graphQLParams.operationName === \"IntrospectionQuery\") return (options.schemaFetcher || simpleFetcher)(graphQLParams, fetcherOpts);\n+                        if (fetcherOpts != null && fetcherOpts.documentAST ? (0, _lib.isSubscriptionWithName)(fetcherOpts.documentAST, graphQLParams.operationName || void 0) : !1) {\n+                            const wsFetcher = await (0, _lib.getWsFetcher)(options, fetcherOpts);\n+                            if (!wsFetcher) throw new Error(`Your GraphiQL createFetcher is not properly configured for websocket subscriptions yet. ${options.subscriptionUrl ? `Provided URL ${options.subscriptionUrl} failed` : \"Please provide subscriptionUrl, wsClient or legacyClient option first.\"}`);\n                             return wsFetcher(graphQLParams);\n                         }\n                         return httpFetcher(graphQLParams, fetcherOpts);\n                     };\n                 }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/create-fetcher/index.js\":\n-            /*!**********************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/create-fetcher/index.js ***!\n-              \\**********************************************************/\n+        \"../../graphiql-toolkit/dist/esm/create-fetcher/index.js\":\n+            /*!***************************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/create-fetcher/index.js ***!\n+              \\***************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 var _exportNames = {\n                     createGraphiQLFetcher: true\n                 };\n                 Object.defineProperty(exports, \"createGraphiQLFetcher\", ({\n                     enumerable: true,\n                     get: function() {\n                         return _createFetcher.createGraphiQLFetcher;\n                     }\n                 }));\n-                var _types = __webpack_require__( /*! ./types */ \"../../graphiql-toolkit/esm/create-fetcher/types.js\");\n+                __webpack_require__( /*! ../chunk-LMOQIXV4.js */ \"../../graphiql-toolkit/dist/esm/chunk-LMOQIXV4.js\");\n+                var _types = __webpack_require__( /*! ./types */ \"../../graphiql-toolkit/dist/esm/create-fetcher/types.js\");\n                 Object.keys(_types).forEach(function(key) {\n                     if (key === \"default\" || key === \"__esModule\") return;\n                     if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n                     if (key in exports && exports[key] === _types[key]) return;\n                     Object.defineProperty(exports, key, {\n                         enumerable: true,\n                         get: function() {\n                             return _types[key];\n                         }\n                     });\n                 });\n-                var _createFetcher = __webpack_require__( /*! ./createFetcher */ \"../../graphiql-toolkit/esm/create-fetcher/createFetcher.js\");\n+                var _createFetcher = __webpack_require__( /*! ./createFetcher */ \"../../graphiql-toolkit/dist/esm/create-fetcher/createFetcher.js\");\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/create-fetcher/lib.js\":\n-            /*!********************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/create-fetcher/lib.js ***!\n-              \\********************************************************/\n+        \"../../graphiql-toolkit/dist/esm/create-fetcher/lib.js\":\n+            /*!*************************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/create-fetcher/lib.js ***!\n+              \\*************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n-                exports.isSubscriptionWithName = exports.getWsFetcher = exports.createWebsocketsFetcherFromUrl = exports.createWebsocketsFetcherFromClient = exports.createSimpleFetcher = exports.createMultipartFetcher = exports.createLegacyWebsocketsFetcher = void 0;\n+                exports.createWebsocketsFetcherFromClient = exports.createSimpleFetcher = exports.createMultipartFetcher = exports.createLegacyWebsocketsFetcher = void 0;\n+                exports.createWebsocketsFetcherFromUrl = createWebsocketsFetcherFromUrl;\n+                exports.getWsFetcher = getWsFetcher;\n+                exports.isSubscriptionWithName = void 0;\n+                var _chunkLMOQIXV = __webpack_require__( /*! ../chunk-LMOQIXV4.js */ \"../../graphiql-toolkit/dist/esm/chunk-LMOQIXV4.js\");\n                 var _graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n                 var _meros = __webpack_require__( /*! meros */ \"../../../node_modules/meros/browser/index.js\");\n                 var _pushPullAsyncIterableIterator = __webpack_require__( /*! @n1ru4l/push-pull-async-iterable-iterator */ \"../../../node_modules/@n1ru4l/push-pull-async-iterable-iterator/index.js\");\n-                var __awaiter = void 0 && (void 0).__awaiter || function(thisArg, _arguments, P, generator) {\n-                    function adopt(value) {\n-                        return value instanceof P ? value : new P(function(resolve) {\n-                            resolve(value);\n-                        });\n-                    }\n-                    return new(P || (P = Promise))(function(resolve, reject) {\n-                        function fulfilled(value) {\n-                            try {\n-                                step(generator.next(value));\n-                            } catch (e) {\n-                                reject(e);\n-                            }\n-                        }\n-\n-                        function rejected(value) {\n-                            try {\n-                                step(generator[\"throw\"](value));\n-                            } catch (e) {\n-                                reject(e);\n-                            }\n-                        }\n-\n-                        function step(result) {\n-                            result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n-                        }\n-                        step((generator = generator.apply(thisArg, _arguments || [])).next());\n-                    });\n-                };\n-                var __await = void 0 && (void 0).__await || function(v) {\n-                    return this instanceof __await ? (this.v = v, this) : new __await(v);\n-                };\n-                var __asyncValues = void 0 && (void 0).__asyncValues || function(o) {\n-                    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n-                    var m = o[Symbol.asyncIterator],\n-                        i;\n-                    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function() {\n-                        return this;\n-                    }, i);\n-\n-                    function verb(n) {\n-                        i[n] = o[n] && function(v) {\n-                            return new Promise(function(resolve, reject) {\n-                                v = o[n](v), settle(resolve, reject, v.done, v.value);\n-                            });\n-                        };\n-                    }\n-\n-                    function settle(resolve, reject, d, v) {\n-                        Promise.resolve(v).then(function(v) {\n-                            resolve({\n-                                value: v,\n-                                done: d\n-                            });\n-                        }, reject);\n-                    }\n-                };\n-                var __asyncGenerator = void 0 && (void 0).__asyncGenerator || function(thisArg, _arguments, generator) {\n-                    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n-                    var g = generator.apply(thisArg, _arguments || []),\n-                        i,\n-                        q = [];\n-                    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function() {\n-                        return this;\n-                    }, i;\n-\n-                    function verb(n) {\n-                        if (g[n]) i[n] = function(v) {\n-                            return new Promise(function(a, b) {\n-                                q.push([n, v, a, b]) > 1 || resume(n, v);\n-                            });\n-                        };\n-                    }\n-\n-                    function resume(n, v) {\n-                        try {\n-                            step(g[n](v));\n-                        } catch (e) {\n-                            settle(q[0][3], e);\n-                        }\n-                    }\n-\n-                    function step(r) {\n-                        r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n-                    }\n-\n-                    function fulfill(value) {\n-                        resume(\"next\", value);\n-                    }\n \n-                    function reject(value) {\n-                        resume(\"throw\", value);\n-                    }\n+                function _getRequireWildcardCache(e) {\n+                    if (\"function\" != typeof WeakMap) return null;\n+                    var r = new WeakMap(),\n+                        t = new WeakMap();\n+                    return (_getRequireWildcardCache = function(e) {\n+                        return e ? t : r;\n+                    })(e);\n+                }\n \n-                    function settle(f, v) {\n-                        if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n-                    }\n-                };\n-                const errorHasCode = err => {\n-                    return typeof err === 'object' && err !== null && 'code' in err;\n-                };\n-                const isSubscriptionWithName = (document, name) => {\n-                    let isSubscription = false;\n-                    (0, _graphql.visit)(document, {\n-                        OperationDefinition(node) {\n-                            var _a;\n-                            if (name === ((_a = node.name) === null || _a === void 0 ? void 0 : _a.value) && node.operation === 'subscription') {\n-                                isSubscription = true;\n+                function _interopRequireWildcard(e, r) {\n+                    if (!r && e && e.__esModule) return e;\n+                    if (null === e || \"object\" != typeof e && \"function\" != typeof e) return {\n+                        default: e\n+                    };\n+                    var t = _getRequireWildcardCache(r);\n+                    if (t && t.has(e)) return t.get(e);\n+                    var n = {\n+                            __proto__: null\n+                        },\n+                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;\n+                    for (var u in e)\n+                        if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) {\n+                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;\n+                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];\n+                        } return n.default = e, t && t.set(e, n), n;\n+                }\n+                const errorHasCode = err => typeof err == \"object\" && err !== null && \"code\" in err,\n+                    isSubscriptionWithName = (document, name) => {\n+                        let isSubscription = !1;\n+                        return (0, _graphql.visit)(document, {\n+                            OperationDefinition(node) {\n+                                var _a;\n+                                name === ((_a = node.name) == null ? void 0 : _a.value) && node.operation === \"subscription\" && (isSubscription = !0);\n                             }\n-                        }\n-                    });\n-                    return isSubscription;\n-                };\n-                exports.isSubscriptionWithName = isSubscriptionWithName;\n-                const createSimpleFetcher = (options, httpFetch) => (graphQLParams, fetcherOpts) => __awaiter(void 0, void 0, void 0, function*() {\n-                    const data = yield httpFetch(options.url, {\n-                        method: 'POST',\n+                        }), isSubscription;\n+                    },\n+                    createSimpleFetcher = (options, httpFetch) => async (graphQLParams, fetcherOpts) => (await httpFetch(options.url, {\n+                        method: \"POST\",\n                         body: JSON.stringify(graphQLParams),\n-                        headers: Object.assign(Object.assign({\n-                            'content-type': 'application/json'\n-                        }, options.headers), fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.headers)\n-                    });\n-                    return data.json();\n-                });\n+                        headers: (0, _chunkLMOQIXV.__spreadValues)((0, _chunkLMOQIXV.__spreadValues)({\n+                            \"content-type\": \"application/json\"\n+                        }, options.headers), fetcherOpts == null ? void 0 : fetcherOpts.headers)\n+                    })).json();\n                 exports.createSimpleFetcher = createSimpleFetcher;\n-                const createWebsocketsFetcherFromUrl = (url, connectionParams) => {\n+                exports.isSubscriptionWithName = isSubscriptionWithName;\n+                async function createWebsocketsFetcherFromUrl(url, connectionParams) {\n                     let wsClient;\n                     try {\n                         const {\n                             createClient\n-                        } = __webpack_require__( /*! graphql-ws */ \"../../../node_modules/graphql-ws/lib/index.js\");\n-                        wsClient = createClient({\n+                        } = await Promise.resolve().then(() => _interopRequireWildcard(__webpack_require__( /*! graphql-ws */ \"../../../node_modules/graphql-ws/lib/index.js\")));\n+                        return wsClient = createClient({\n                             url,\n                             connectionParams\n-                        });\n-                        return createWebsocketsFetcherFromClient(wsClient);\n+                        }), createWebsocketsFetcherFromClient(wsClient);\n                     } catch (err) {\n-                        if (errorHasCode(err) && err.code === 'MODULE_NOT_FOUND') {\n-                            throw new Error(\"You need to install the 'graphql-ws' package to use websockets when passing a 'subscriptionUrl'\");\n-                        }\n+                        if (errorHasCode(err) && err.code === \"MODULE_NOT_FOUND\") throw new Error(\"You need to install the 'graphql-ws' package to use websockets when passing a 'subscriptionUrl'\");\n                         console.error(`Error creating websocket client for ${url}`, err);\n                     }\n-                };\n-                exports.createWebsocketsFetcherFromUrl = createWebsocketsFetcherFromUrl;\n-                const createWebsocketsFetcherFromClient = wsClient => graphQLParams => (0, _pushPullAsyncIterableIterator.makeAsyncIterableIteratorFromSink)(sink => wsClient.subscribe(graphQLParams, Object.assign(Object.assign({}, sink), {\n-                    error(err) {\n-                        if (err instanceof CloseEvent) {\n-                            sink.error(new Error(`Socket closed with event ${err.code} ${err.reason || ''}`.trim()));\n-                        } else {\n-                            sink.error(err);\n-                        }\n-                    }\n-                })));\n-                exports.createWebsocketsFetcherFromClient = createWebsocketsFetcherFromClient;\n-                const createLegacyWebsocketsFetcher = legacyWsClient => graphQLParams => {\n-                    const observable = legacyWsClient.request(graphQLParams);\n-                    return (0, _pushPullAsyncIterableIterator.makeAsyncIterableIteratorFromSink)(sink => observable.subscribe(sink).unsubscribe);\n-                };\n-                exports.createLegacyWebsocketsFetcher = createLegacyWebsocketsFetcher;\n-                const createMultipartFetcher = (options, httpFetch) => function(graphQLParams, fetcherOpts) {\n-                    return __asyncGenerator(this, arguments, function*() {\n-                        var e_1, _a;\n-                        const response = yield __await(httpFetch(options.url, {\n-                            method: 'POST',\n-                            body: JSON.stringify(graphQLParams),\n-                            headers: Object.assign(Object.assign({\n-                                'content-type': 'application/json',\n-                                accept: 'application/json, multipart/mixed'\n-                            }, options.headers), fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.headers)\n-                        }).then(r => (0, _meros.meros)(r, {\n-                            multiple: true\n-                        })));\n-                        if (!(0, _pushPullAsyncIterableIterator.isAsyncIterable)(response)) {\n-                            return yield __await(yield yield __await(response.json()));\n-                        }\n-                        try {\n-                            for (var response_1 = __asyncValues(response), response_1_1; response_1_1 = yield __await(response_1.next()), !response_1_1.done;) {\n-                                const chunk = response_1_1.value;\n-                                if (chunk.some(part => !part.json)) {\n-                                    const message = chunk.map(part => `Headers::\\n${part.headers}\\n\\nBody::\\n${part.body}`);\n-                                    throw new Error(`Expected multipart chunks to be of json type. got:\\n${message}`);\n-                                }\n-                                yield yield __await(chunk.map(part => part.body));\n-                            }\n-                        } catch (e_1_1) {\n-                            e_1 = {\n-                                error: e_1_1\n-                            };\n-                        } finally {\n+                }\n+                const createWebsocketsFetcherFromClient = wsClient => graphQLParams => (0, _pushPullAsyncIterableIterator.makeAsyncIterableIteratorFromSink)(sink => wsClient.subscribe(graphQLParams, (0, _chunkLMOQIXV.__spreadProps)((0, _chunkLMOQIXV.__spreadValues)({}, sink), {\n+                        error(err) {\n+                            err instanceof CloseEvent ? sink.error(new Error(`Socket closed with event ${err.code} ${err.reason || \"\"}`.trim())) : sink.error(err);\n+                        }\n+                    }))),\n+                    createLegacyWebsocketsFetcher = legacyWsClient => graphQLParams => {\n+                        const observable = legacyWsClient.request(graphQLParams);\n+                        return (0, _pushPullAsyncIterableIterator.makeAsyncIterableIteratorFromSink)(\n+                            // @ts-ignore\n+                            sink => observable.subscribe(sink).unsubscribe);\n+                    },\n+                    createMultipartFetcher = (options, httpFetch) => function(graphQLParams, fetcherOpts) {\n+                        return (0, _chunkLMOQIXV.__asyncGenerator)(this, null, function*() {\n+                            const response = yield new _chunkLMOQIXV.__await(httpFetch(options.url, {\n+                                method: \"POST\",\n+                                body: JSON.stringify(graphQLParams),\n+                                headers: (0, _chunkLMOQIXV.__spreadValues)((0, _chunkLMOQIXV.__spreadValues)({\n+                                    \"content-type\": \"application/json\",\n+                                    accept: \"application/json, multipart/mixed\"\n+                                }, options.headers), fetcherOpts == null ? void 0 : fetcherOpts.headers)\n+                            }).then(r => (0, _meros.meros)(r, {\n+                                multiple: !0\n+                            })));\n+                            if (!(0, _pushPullAsyncIterableIterator.isAsyncIterable)(response)) return yield response.json();\n                             try {\n-                                if (response_1_1 && !response_1_1.done && (_a = response_1.return)) yield __await(_a.call(response_1));\n+                                for (var iter = (0, _chunkLMOQIXV.__forAwait)(response), more, temp, error; more = !(temp = yield new _chunkLMOQIXV.__await(iter.next())).done; more = !1) {\n+                                    const chunk = temp.value;\n+                                    if (chunk.some(part => !part.json)) {\n+                                        const message = chunk.map(part => `Headers::\n+${part.headers}\n+\n+Body::\n+${part.body}`);\n+                                        throw new Error(`Expected multipart chunks to be of json type. got:\n+${message}`);\n+                                    }\n+                                    yield chunk.map(part => part.body);\n+                                }\n+                            } catch (temp) {\n+                                error = [temp];\n                             } finally {\n-                                if (e_1) throw e_1.error;\n+                                try {\n+                                    more && (temp = iter.return) && (yield new _chunkLMOQIXV.__await(temp.call(iter)));\n+                                } finally {\n+                                    if (error) throw error[0];\n+                                }\n                             }\n-                        }\n-                    });\n-                };\n+                        });\n+                    };\n                 exports.createMultipartFetcher = createMultipartFetcher;\n-                const getWsFetcher = (options, fetcherOpts) => {\n-                    if (options.wsClient) {\n-                        return createWebsocketsFetcherFromClient(options.wsClient);\n-                    }\n-                    if (options.subscriptionUrl) {\n-                        return createWebsocketsFetcherFromUrl(options.subscriptionUrl, Object.assign(Object.assign({}, options.wsConnectionParams), fetcherOpts === null || fetcherOpts === void 0 ? void 0 : fetcherOpts.headers));\n-                    }\n+                exports.createLegacyWebsocketsFetcher = createLegacyWebsocketsFetcher;\n+                exports.createWebsocketsFetcherFromClient = createWebsocketsFetcherFromClient;\n+                async function getWsFetcher(options, fetcherOpts) {\n+                    if (options.wsClient) return createWebsocketsFetcherFromClient(options.wsClient);\n+                    if (options.subscriptionUrl) return createWebsocketsFetcherFromUrl(options.subscriptionUrl, (0, _chunkLMOQIXV.__spreadValues)((0, _chunkLMOQIXV.__spreadValues)({}, options.wsConnectionParams), fetcherOpts == null ? void 0 : fetcherOpts.headers));\n                     const legacyWebsocketsClient = options.legacyClient || options.legacyWsClient;\n-                    if (legacyWebsocketsClient) {\n-                        return createLegacyWebsocketsFetcher(legacyWebsocketsClient);\n-                    }\n-                };\n-                exports.getWsFetcher = getWsFetcher;\n+                    if (legacyWebsocketsClient) return createLegacyWebsocketsFetcher(legacyWebsocketsClient);\n+                }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/create-fetcher/types.js\":\n-            /*!**********************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/create-fetcher/types.js ***!\n-              \\**********************************************************/\n+        \"../../graphiql-toolkit/dist/esm/create-fetcher/types.js\":\n+            /*!***************************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/create-fetcher/types.js ***!\n+              \\***************************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports) {\n-\n+            (function() {\n \n+                \"use strict\";\n \n-                Object.defineProperty(exports, \"__esModule\", ({\n-                    value: true\n-                }));\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/format/index.js\":\n-            /*!**************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/format/index.js ***!\n-              \\**************************************************/\n+        \"../../graphiql-toolkit/dist/esm/format/index.js\":\n+            /*!*******************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/format/index.js ***!\n+              \\*******************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports) {\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.formatError = formatError;\n                 exports.formatResult = formatResult;\n+                var _chunkLMOQIXV = __webpack_require__( /*! ../chunk-LMOQIXV4.js */ \"../../graphiql-toolkit/dist/esm/chunk-LMOQIXV4.js\");\n \n                 function stringify(obj) {\n                     return JSON.stringify(obj, null, 2);\n                 }\n \n                 function formatSingleError(error) {\n-                    return Object.assign(Object.assign({}, error), {\n+                    return (0, _chunkLMOQIXV.__spreadProps)((0, _chunkLMOQIXV.__spreadValues)({}, error), {\n+                        // Raise these details even if they're non-enumerable\n                         message: error.message,\n                         stack: error.stack\n                     });\n                 }\n \n                 function handleSingleError(error) {\n-                    if (error instanceof Error) {\n-                        return formatSingleError(error);\n-                    }\n-                    return error;\n+                    return error instanceof Error ? formatSingleError(error) : error;\n                 }\n \n                 function formatError(error) {\n-                    if (Array.isArray(error)) {\n-                        return stringify({\n-                            errors: error.map(e => handleSingleError(e))\n-                        });\n-                    }\n-                    return stringify({\n+                    return Array.isArray(error) ? stringify({\n+                        errors: error.map(e => handleSingleError(e))\n+                    }) : stringify({\n                         errors: [handleSingleError(error)]\n                     });\n                 }\n \n                 function formatResult(result) {\n                     return stringify(result);\n                 }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/graphql-helpers/auto-complete.js\":\n-            /*!*******************************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/graphql-helpers/auto-complete.js ***!\n-              \\*******************************************************************/\n+        \"../../graphiql-toolkit/dist/esm/graphql-helpers/auto-complete.js\":\n+            /*!************************************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/graphql-helpers/auto-complete.js ***!\n+              \\************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.fillLeafs = fillLeafs;\n+                __webpack_require__( /*! ../chunk-LMOQIXV4.js */ \"../../graphiql-toolkit/dist/esm/chunk-LMOQIXV4.js\");\n                 var _graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n \n                 function fillLeafs(schema, docString, getDefaultFieldNames) {\n                     const insertions = [];\n-                    if (!schema || !docString) {\n-                        return {\n-                            insertions,\n-                            result: docString\n-                        };\n-                    }\n+                    if (!schema || !docString) return {\n+                        insertions,\n+                        result: docString\n+                    };\n                     let ast;\n                     try {\n                         ast = (0, _graphql.parse)(docString);\n-                    } catch (_a) {\n+                    } catch (e) {\n                         return {\n                             insertions,\n                             result: docString\n                         };\n                     }\n-                    const fieldNameFn = getDefaultFieldNames || defaultGetDefaultFieldNames;\n-                    const typeInfo = new _graphql.TypeInfo(schema);\n-                    (0, _graphql.visit)(ast, {\n+                    const fieldNameFn = getDefaultFieldNames || defaultGetDefaultFieldNames,\n+                        typeInfo = new _graphql.TypeInfo(schema);\n+                    return (0, _graphql.visit)(ast, {\n                         leave(node) {\n                             typeInfo.leave(node);\n                         },\n                         enter(node) {\n-                            typeInfo.enter(node);\n-                            if (node.kind === 'Field' && !node.selectionSet) {\n-                                const fieldType = typeInfo.getType();\n-                                const selectionSet = buildSelectionSet(isFieldType(fieldType), fieldNameFn);\n+                            if (typeInfo.enter(node), node.kind === \"Field\" && !node.selectionSet) {\n+                                const fieldType = typeInfo.getType(),\n+                                    selectionSet = buildSelectionSet(isFieldType(fieldType), fieldNameFn);\n                                 if (selectionSet && node.loc) {\n                                     const indent = getIndentation(docString, node.loc.start);\n                                     insertions.push({\n                                         index: node.loc.end,\n-                                        string: ' ' + (0, _graphql.print)(selectionSet).replaceAll('\\n', '\\n' + indent)\n+                                        string: \" \" + (0, _graphql.print)(selectionSet).replaceAll(`\n+`, `\n+` + indent)\n                                     });\n                                 }\n                             }\n                         }\n-                    });\n-                    return {\n+                    }), {\n                         insertions,\n                         result: withInsertions(docString, insertions)\n                     };\n                 }\n \n                 function defaultGetDefaultFieldNames(type) {\n-                    if (!('getFields' in type)) {\n-                        return [];\n-                    }\n+                    if (!(\"getFields\" in type)) return [];\n                     const fields = type.getFields();\n-                    if (fields.id) {\n-                        return ['id'];\n-                    }\n-                    if (fields.edges) {\n-                        return ['edges'];\n-                    }\n-                    if (fields.node) {\n-                        return ['node'];\n-                    }\n+                    if (fields.id) return [\"id\"];\n+                    if (fields.edges) return [\"edges\"];\n+                    if (fields.node) return [\"node\"];\n                     const leafFieldNames = [];\n-                    for (const fieldName of Object.keys(fields)) {\n-                        if ((0, _graphql.isLeafType)(fields[fieldName].type)) {\n-                            leafFieldNames.push(fieldName);\n-                        }\n-                    }\n+                    for (const fieldName of Object.keys(fields))(0, _graphql.isLeafType)(fields[fieldName].type) && leafFieldNames.push(fieldName);\n                     return leafFieldNames;\n                 }\n \n                 function buildSelectionSet(type, getDefaultFieldNames) {\n                     const namedType = (0, _graphql.getNamedType)(type);\n-                    if (!type || (0, _graphql.isLeafType)(type)) {\n-                        return;\n-                    }\n+                    if (!type || (0, _graphql.isLeafType)(type)) return;\n                     const fieldNames = getDefaultFieldNames(namedType);\n-                    if (!Array.isArray(fieldNames) || fieldNames.length === 0 || !('getFields' in namedType)) {\n-                        return;\n-                    }\n-                    return {\n+                    if (!(!Array.isArray(fieldNames) || fieldNames.length === 0 || !(\"getFields\" in namedType))) return {\n                         kind: _graphql.Kind.SELECTION_SET,\n                         selections: fieldNames.map(fieldName => {\n-                            const fieldDef = namedType.getFields()[fieldName];\n-                            const fieldType = fieldDef ? fieldDef.type : null;\n+                            const fieldDef = namedType.getFields()[fieldName],\n+                                fieldType = fieldDef ? fieldDef.type : null;\n                             return {\n                                 kind: _graphql.Kind.FIELD,\n                                 name: {\n                                     kind: _graphql.Kind.NAME,\n                                     value: fieldName\n                                 },\n+                                // we can use as here, because we already know that fieldType\n+                                // comes from an origin parameter\n                                 selectionSet: buildSelectionSet(fieldType, getDefaultFieldNames)\n                             };\n                         })\n                     };\n                 }\n \n                 function withInsertions(initial, insertions) {\n-                    if (insertions.length === 0) {\n-                        return initial;\n-                    }\n-                    let edited = '';\n-                    let prevIndex = 0;\n+                    if (insertions.length === 0) return initial;\n+                    let edited = \"\",\n+                        prevIndex = 0;\n                     for (const {\n                             index,\n                             string\n                         }\n-                        of insertions) {\n-                        edited += initial.slice(prevIndex, index) + string;\n-                        prevIndex = index;\n-                    }\n-                    edited += initial.slice(prevIndex);\n-                    return edited;\n+                        of insertions) edited += initial.slice(prevIndex, index) + string, prevIndex = index;\n+                    return edited += initial.slice(prevIndex), edited;\n                 }\n \n                 function getIndentation(str, index) {\n-                    let indentStart = index;\n-                    let indentEnd = index;\n-                    while (indentStart) {\n+                    let indentStart = index,\n+                        indentEnd = index;\n+                    for (; indentStart;) {\n                         const c = str.charCodeAt(indentStart - 1);\n-                        if (c === 10 || c === 13 || c === 0x2028 || c === 0x2029) {\n-                            break;\n-                        }\n-                        indentStart--;\n-                        if (c !== 9 && c !== 11 && c !== 12 && c !== 32 && c !== 160) {\n-                            indentEnd = indentStart;\n-                        }\n+                        if (c === 10 || c === 13 || c === 8232 || c === 8233) break;\n+                        indentStart--, c !== 9 && c !== 11 && c !== 12 && c !== 32 && c !== 160 && (indentEnd = indentStart);\n                     }\n                     return str.slice(indentStart, indentEnd);\n                 }\n \n                 function isFieldType(fieldType) {\n-                    if (fieldType) {\n-                        return fieldType;\n-                    }\n+                    if (fieldType) return fieldType;\n                 }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/graphql-helpers/index.js\":\n-            /*!***********************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/graphql-helpers/index.js ***!\n-              \\***********************************************************/\n+        \"../../graphiql-toolkit/dist/esm/graphql-helpers/index.js\":\n+            /*!****************************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/graphql-helpers/index.js ***!\n+              \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n-                var _autoComplete = __webpack_require__( /*! ./auto-complete */ \"../../graphiql-toolkit/esm/graphql-helpers/auto-complete.js\");\n+                var _autoComplete = __webpack_require__( /*! ./auto-complete */ \"../../graphiql-toolkit/dist/esm/graphql-helpers/auto-complete.js\");\n                 Object.keys(_autoComplete).forEach(function(key) {\n                     if (key === \"default\" || key === \"__esModule\") return;\n                     if (key in exports && exports[key] === _autoComplete[key]) return;\n                     Object.defineProperty(exports, key, {\n                         enumerable: true,\n                         get: function() {\n                             return _autoComplete[key];\n                         }\n                     });\n                 });\n-                var _mergeAst = __webpack_require__( /*! ./merge-ast */ \"../../graphiql-toolkit/esm/graphql-helpers/merge-ast.js\");\n+                var _mergeAst = __webpack_require__( /*! ./merge-ast */ \"../../graphiql-toolkit/dist/esm/graphql-helpers/merge-ast.js\");\n                 Object.keys(_mergeAst).forEach(function(key) {\n                     if (key === \"default\" || key === \"__esModule\") return;\n                     if (key in exports && exports[key] === _mergeAst[key]) return;\n                     Object.defineProperty(exports, key, {\n                         enumerable: true,\n                         get: function() {\n                             return _mergeAst[key];\n                         }\n                     });\n                 });\n-                var _operationName = __webpack_require__( /*! ./operation-name */ \"../../graphiql-toolkit/esm/graphql-helpers/operation-name.js\");\n+                var _operationName = __webpack_require__( /*! ./operation-name */ \"../../graphiql-toolkit/dist/esm/graphql-helpers/operation-name.js\");\n                 Object.keys(_operationName).forEach(function(key) {\n                     if (key === \"default\" || key === \"__esModule\") return;\n                     if (key in exports && exports[key] === _operationName[key]) return;\n                     Object.defineProperty(exports, key, {\n                         enumerable: true,\n                         get: function() {\n                             return _operationName[key];\n@@ -84481,68 +88630,62 @@\n                     });\n                 });\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/graphql-helpers/merge-ast.js\":\n-            /*!***************************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/graphql-helpers/merge-ast.js ***!\n-              \\***************************************************************/\n+        \"../../graphiql-toolkit/dist/esm/graphql-helpers/merge-ast.js\":\n+            /*!********************************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/graphql-helpers/merge-ast.js ***!\n+              \\********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.mergeAst = mergeAst;\n+                var _chunkLMOQIXV = __webpack_require__( /*! ../chunk-LMOQIXV4.js */ \"../../graphiql-toolkit/dist/esm/chunk-LMOQIXV4.js\");\n                 var _graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n \n                 function uniqueBy(array, iteratee) {\n                     var _a;\n-                    const FilteredMap = new Map();\n-                    const result = [];\n-                    for (const item of array) {\n-                        if (item.kind === 'Field') {\n-                            const uniqueValue = iteratee(item);\n-                            const existing = FilteredMap.get(uniqueValue);\n-                            if ((_a = item.directives) === null || _a === void 0 ? void 0 : _a.length) {\n-                                const itemClone = Object.assign({}, item);\n-                                result.push(itemClone);\n-                            } else if ((existing === null || existing === void 0 ? void 0 : existing.selectionSet) && item.selectionSet) {\n-                                existing.selectionSet.selections = [...existing.selectionSet.selections, ...item.selectionSet.selections];\n-                            } else if (!existing) {\n-                                const itemClone = Object.assign({}, item);\n-                                FilteredMap.set(uniqueValue, itemClone);\n+                    const FilteredMap = /* @__PURE__ */ new Map(),\n+                        result = [];\n+                    for (const item of array)\n+                        if (item.kind === \"Field\") {\n+                            const uniqueValue = iteratee(item),\n+                                existing = FilteredMap.get(uniqueValue);\n+                            if ((_a = item.directives) != null && _a.length) {\n+                                const itemClone = (0, _chunkLMOQIXV.__spreadValues)({}, item);\n                                 result.push(itemClone);\n+                            } else if (existing != null && existing.selectionSet && item.selectionSet) existing.selectionSet.selections = [...existing.selectionSet.selections, ...item.selectionSet.selections];\n+                            else if (!existing) {\n+                                const itemClone = (0, _chunkLMOQIXV.__spreadValues)({}, item);\n+                                FilteredMap.set(uniqueValue, itemClone), result.push(itemClone);\n                             }\n-                        } else {\n-                            result.push(item);\n-                        }\n-                    }\n+                        } else result.push(item);\n                     return result;\n                 }\n \n                 function inlineRelevantFragmentSpreads(fragmentDefinitions, selections, selectionSetType) {\n                     var _a;\n-                    const selectionSetTypeName = selectionSetType ? (0, _graphql.getNamedType)(selectionSetType).name : null;\n-                    const outputSelections = [];\n-                    const seenSpreads = [];\n+                    const selectionSetTypeName = selectionSetType ? (0, _graphql.getNamedType)(selectionSetType).name : null,\n+                        outputSelections = [],\n+                        seenSpreads = [];\n                     for (let selection of selections) {\n-                        if (selection.kind === 'FragmentSpread') {\n+                        if (selection.kind === \"FragmentSpread\") {\n                             const fragmentName = selection.name.value;\n                             if (!selection.directives || selection.directives.length === 0) {\n-                                if (seenSpreads.includes(fragmentName)) {\n-                                    continue;\n-                                } else {\n-                                    seenSpreads.push(fragmentName);\n-                                }\n+                                if (seenSpreads.includes(fragmentName)) continue;\n+                                seenSpreads.push(fragmentName);\n                             }\n                             const fragmentDefinition = fragmentDefinitions[selection.name.value];\n                             if (fragmentDefinition) {\n                                 const {\n                                     typeCondition,\n                                     directives,\n                                     selectionSet\n@@ -84551,170 +88694,161 @@\n                                     kind: _graphql.Kind.INLINE_FRAGMENT,\n                                     typeCondition,\n                                     directives,\n                                     selectionSet\n                                 };\n                             }\n                         }\n-                        if (selection.kind === _graphql.Kind.INLINE_FRAGMENT && (!selection.directives || ((_a = selection.directives) === null || _a === void 0 ? void 0 : _a.length) === 0)) {\n+                        if (selection.kind === _graphql.Kind.INLINE_FRAGMENT && (\n+                                // Cannot inline if there are directives\n+                                !selection.directives || ((_a = selection.directives) == null ? void 0 : _a.length) === 0)) {\n                             const fragmentTypeName = selection.typeCondition ? selection.typeCondition.name.value : null;\n                             if (!fragmentTypeName || fragmentTypeName === selectionSetTypeName) {\n                                 outputSelections.push(...inlineRelevantFragmentSpreads(fragmentDefinitions, selection.selectionSet.selections, selectionSetType));\n                                 continue;\n                             }\n                         }\n                         outputSelections.push(selection);\n                     }\n                     return outputSelections;\n                 }\n \n                 function mergeAst(documentAST, schema) {\n-                    const typeInfo = schema ? new _graphql.TypeInfo(schema) : null;\n-                    const fragmentDefinitions = Object.create(null);\n-                    for (const definition of documentAST.definitions) {\n-                        if (definition.kind === _graphql.Kind.FRAGMENT_DEFINITION) {\n-                            fragmentDefinitions[definition.name.value] = definition;\n-                        }\n-                    }\n+                    const typeInfo = schema ? new _graphql.TypeInfo(schema) : null,\n+                        fragmentDefinitions = /* @__PURE__ */ Object.create(null);\n+                    for (const definition of documentAST.definitions) definition.kind === _graphql.Kind.FRAGMENT_DEFINITION && (fragmentDefinitions[definition.name.value] = definition);\n                     const flattenVisitors = {\n-                        SelectionSet(node) {\n-                            const selectionSetType = typeInfo ? typeInfo.getParentType() : null;\n-                            let {\n-                                selections\n-                            } = node;\n-                            selections = inlineRelevantFragmentSpreads(fragmentDefinitions, selections, selectionSetType);\n-                            return Object.assign(Object.assign({}, node), {\n-                                selections\n-                            });\n+                            SelectionSet(node) {\n+                                const selectionSetType = typeInfo ? typeInfo.getParentType() : null;\n+                                let {\n+                                    selections\n+                                } = node;\n+                                return selections = inlineRelevantFragmentSpreads(fragmentDefinitions, selections, selectionSetType), (0, _chunkLMOQIXV.__spreadProps)((0, _chunkLMOQIXV.__spreadValues)({}, node), {\n+                                    selections\n+                                });\n+                            },\n+                            FragmentDefinition() {\n+                                return null;\n+                            }\n                         },\n-                        FragmentDefinition() {\n-                            return null;\n-                        }\n-                    };\n-                    const flattenedAST = (0, _graphql.visit)(documentAST, typeInfo ? (0, _graphql.visitWithTypeInfo)(typeInfo, flattenVisitors) : flattenVisitors);\n-                    const deduplicateVisitors = {\n+                        flattenedAST = (0, _graphql.visit)(documentAST, typeInfo ? (0, _graphql.visitWithTypeInfo)(typeInfo, flattenVisitors) : flattenVisitors);\n+                    return (0, _graphql.visit)(flattenedAST, {\n                         SelectionSet(node) {\n                             let {\n                                 selections\n                             } = node;\n-                            selections = uniqueBy(selections, selection => selection.alias ? selection.alias.value : selection.name.value);\n-                            return Object.assign(Object.assign({}, node), {\n+                            return selections = uniqueBy(selections, selection => selection.alias ? selection.alias.value : selection.name.value), (0, _chunkLMOQIXV.__spreadProps)((0, _chunkLMOQIXV.__spreadValues)({}, node), {\n                                 selections\n                             });\n                         },\n                         FragmentDefinition() {\n                             return null;\n                         }\n-                    };\n-                    return (0, _graphql.visit)(flattenedAST, deduplicateVisitors);\n+                    });\n                 }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/graphql-helpers/operation-name.js\":\n-            /*!********************************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/graphql-helpers/operation-name.js ***!\n-              \\********************************************************************/\n+        \"../../graphiql-toolkit/dist/esm/graphql-helpers/operation-name.js\":\n+            /*!*************************************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/graphql-helpers/operation-name.js ***!\n+              \\*************************************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports) {\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getSelectedOperationName = getSelectedOperationName;\n+                __webpack_require__( /*! ../chunk-LMOQIXV4.js */ \"../../graphiql-toolkit/dist/esm/chunk-LMOQIXV4.js\");\n \n                 function getSelectedOperationName(prevOperations, prevSelectedOperationName, operations) {\n-                    if (!operations || operations.length < 1) {\n-                        return;\n-                    }\n+                    if (!operations || operations.length < 1) return;\n                     const names = operations.map(op => {\n                         var _a;\n-                        return (_a = op.name) === null || _a === void 0 ? void 0 : _a.value;\n+                        return (_a = op.name) == null ? void 0 : _a.value;\n                     });\n-                    if (prevSelectedOperationName && names.includes(prevSelectedOperationName)) {\n-                        return prevSelectedOperationName;\n-                    }\n+                    if (prevSelectedOperationName && names.includes(prevSelectedOperationName)) return prevSelectedOperationName;\n                     if (prevSelectedOperationName && prevOperations) {\n-                        const prevNames = prevOperations.map(op => {\n+                        const prevIndex = prevOperations.map(op => {\n                             var _a;\n-                            return (_a = op.name) === null || _a === void 0 ? void 0 : _a.value;\n-                        });\n-                        const prevIndex = prevNames.indexOf(prevSelectedOperationName);\n-                        if (prevIndex !== -1 && prevIndex < names.length) {\n-                            return names[prevIndex];\n-                        }\n+                            return (_a = op.name) == null ? void 0 : _a.value;\n+                        }).indexOf(prevSelectedOperationName);\n+                        if (prevIndex !== -1 && prevIndex < names.length) return names[prevIndex];\n                     }\n                     return names[0];\n                 }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/index.js\":\n-            /*!*******************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/index.js ***!\n-              \\*******************************************/\n+        \"../../graphiql-toolkit/dist/esm/index.js\":\n+            /*!************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/index.js ***!\n+              \\************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n-                var _asyncHelpers = __webpack_require__( /*! ./async-helpers */ \"../../graphiql-toolkit/esm/async-helpers/index.js\");\n+                var _asyncHelpers = __webpack_require__( /*! ./async-helpers */ \"../../graphiql-toolkit/dist/esm/async-helpers/index.js\");\n                 Object.keys(_asyncHelpers).forEach(function(key) {\n                     if (key === \"default\" || key === \"__esModule\") return;\n                     if (key in exports && exports[key] === _asyncHelpers[key]) return;\n                     Object.defineProperty(exports, key, {\n                         enumerable: true,\n                         get: function() {\n                             return _asyncHelpers[key];\n                         }\n                     });\n                 });\n-                var _createFetcher = __webpack_require__( /*! ./create-fetcher */ \"../../graphiql-toolkit/esm/create-fetcher/index.js\");\n+                var _createFetcher = __webpack_require__( /*! ./create-fetcher */ \"../../graphiql-toolkit/dist/esm/create-fetcher/index.js\");\n                 Object.keys(_createFetcher).forEach(function(key) {\n                     if (key === \"default\" || key === \"__esModule\") return;\n                     if (key in exports && exports[key] === _createFetcher[key]) return;\n                     Object.defineProperty(exports, key, {\n                         enumerable: true,\n                         get: function() {\n                             return _createFetcher[key];\n                         }\n                     });\n                 });\n-                var _format = __webpack_require__( /*! ./format */ \"../../graphiql-toolkit/esm/format/index.js\");\n+                var _format = __webpack_require__( /*! ./format */ \"../../graphiql-toolkit/dist/esm/format/index.js\");\n                 Object.keys(_format).forEach(function(key) {\n                     if (key === \"default\" || key === \"__esModule\") return;\n                     if (key in exports && exports[key] === _format[key]) return;\n                     Object.defineProperty(exports, key, {\n                         enumerable: true,\n                         get: function() {\n                             return _format[key];\n                         }\n                     });\n                 });\n-                var _graphqlHelpers = __webpack_require__( /*! ./graphql-helpers */ \"../../graphiql-toolkit/esm/graphql-helpers/index.js\");\n+                var _graphqlHelpers = __webpack_require__( /*! ./graphql-helpers */ \"../../graphiql-toolkit/dist/esm/graphql-helpers/index.js\");\n                 Object.keys(_graphqlHelpers).forEach(function(key) {\n                     if (key === \"default\" || key === \"__esModule\") return;\n                     if (key in exports && exports[key] === _graphqlHelpers[key]) return;\n                     Object.defineProperty(exports, key, {\n                         enumerable: true,\n                         get: function() {\n                             return _graphqlHelpers[key];\n                         }\n                     });\n                 });\n-                var _storage = __webpack_require__( /*! ./storage */ \"../../graphiql-toolkit/esm/storage/index.js\");\n+                var _storage = __webpack_require__( /*! ./storage */ \"../../graphiql-toolkit/dist/esm/storage/index.js\");\n                 Object.keys(_storage).forEach(function(key) {\n                     if (key === \"default\" || key === \"__esModule\") return;\n                     if (key in exports && exports[key] === _storage[key]) return;\n                     Object.defineProperty(exports, key, {\n                         enumerable: true,\n                         get: function() {\n                             return _storage[key];\n@@ -84722,249 +88856,195 @@\n                     });\n                 });\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/storage/base.js\":\n-            /*!**************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/storage/base.js ***!\n-              \\**************************************************/\n+        \"../../graphiql-toolkit/dist/esm/storage/base.js\":\n+            /*!*******************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/storage/base.js ***!\n+              \\*******************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports) {\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.StorageAPI = void 0;\n+                __webpack_require__( /*! ../chunk-LMOQIXV4.js */ \"../../graphiql-toolkit/dist/esm/chunk-LMOQIXV4.js\");\n \n                 function isQuotaError(storage, e) {\n-                    return e instanceof DOMException && (e.code === 22 || e.code === 1014 || e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') && storage.length !== 0;\n+                    return e instanceof DOMException && (\n+                            // everything except Firefox\n+                            e.code === 22 ||\n+                            // Firefox\n+                            e.code === 1014 ||\n+                            // test name field too, because code might not be present\n+                            // everything except Firefox\n+                            e.name === \"QuotaExceededError\" ||\n+                            // Firefox\n+                            e.name === \"NS_ERROR_DOM_QUOTA_REACHED\") &&\n+                        // acknowledge QuotaExceededError only if there's something already stored\n+                        storage.length !== 0;\n                 }\n                 class StorageAPI {\n                     constructor(storage) {\n-                        if (storage) {\n-                            this.storage = storage;\n-                        } else if (storage === null) {\n-                            this.storage = null;\n-                        } else if (typeof window === 'undefined') {\n-                            this.storage = null;\n-                        } else {\n-                            this.storage = {\n-                                getItem: localStorage.getItem.bind(localStorage),\n-                                setItem: localStorage.setItem.bind(localStorage),\n-                                removeItem: localStorage.removeItem.bind(localStorage),\n-                                get length() {\n-                                    let keys = 0;\n-                                    for (const key in localStorage) {\n-                                        if (key.indexOf(`${STORAGE_NAMESPACE}:`) === 0) {\n-                                            keys += 1;\n-                                        }\n-                                    }\n-                                    return keys;\n-                                },\n-                                clear() {\n-                                    for (const key in localStorage) {\n-                                        if (key.indexOf(`${STORAGE_NAMESPACE}:`) === 0) {\n-                                            localStorage.removeItem(key);\n-                                        }\n-                                    }\n-                                }\n-                            };\n-                        }\n+                        storage ? this.storage = storage : storage === null ? this.storage = null : typeof window == \"undefined\" ? this.storage = null : this.storage = {\n+                            getItem: localStorage.getItem.bind(localStorage),\n+                            setItem: localStorage.setItem.bind(localStorage),\n+                            removeItem: localStorage.removeItem.bind(localStorage),\n+                            get length() {\n+                                let keys = 0;\n+                                for (const key in localStorage) key.indexOf(`${STORAGE_NAMESPACE}:`) === 0 && (keys += 1);\n+                                return keys;\n+                            },\n+                            clear() {\n+                                for (const key in localStorage) key.indexOf(`${STORAGE_NAMESPACE}:`) === 0 && localStorage.removeItem(key);\n+                            }\n+                        };\n                     }\n                     get(name) {\n-                        if (!this.storage) {\n-                            return null;\n-                        }\n-                        const key = `${STORAGE_NAMESPACE}:${name}`;\n-                        const value = this.storage.getItem(key);\n-                        if (value === 'null' || value === 'undefined') {\n-                            this.storage.removeItem(key);\n-                            return null;\n-                        }\n-                        return value || null;\n+                        if (!this.storage) return null;\n+                        const key = `${STORAGE_NAMESPACE}:${name}`,\n+                            value = this.storage.getItem(key);\n+                        return value === \"null\" || value === \"undefined\" ? (this.storage.removeItem(key), null) : value || null;\n                     }\n                     set(name, value) {\n-                        let quotaError = false;\n-                        let error = null;\n+                        let quotaError = !1,\n+                            error = null;\n                         if (this.storage) {\n                             const key = `${STORAGE_NAMESPACE}:${name}`;\n-                            if (value) {\n-                                try {\n-                                    this.storage.setItem(key, value);\n-                                } catch (e) {\n-                                    error = e instanceof Error ? e : new Error(`${e}`);\n-                                    quotaError = isQuotaError(this.storage, e);\n-                                }\n-                            } else {\n-                                this.storage.removeItem(key);\n-                            }\n+                            if (value) try {\n+                                this.storage.setItem(key, value);\n+                            } catch (e) {\n+                                error = e instanceof Error ? e : new Error(`${e}`), quotaError = isQuotaError(this.storage, e);\n+                            } else this.storage.removeItem(key);\n                         }\n                         return {\n                             isQuotaError: quotaError,\n                             error\n                         };\n                     }\n                     clear() {\n-                        if (this.storage) {\n-                            this.storage.clear();\n-                        }\n+                        this.storage && this.storage.clear();\n                     }\n                 }\n                 exports.StorageAPI = StorageAPI;\n-                const STORAGE_NAMESPACE = 'graphiql';\n+                const STORAGE_NAMESPACE = \"graphiql\";\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/storage/custom.js\":\n-            /*!****************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/storage/custom.js ***!\n-              \\****************************************************/\n+        \"../../graphiql-toolkit/dist/esm/storage/custom.js\":\n+            /*!*********************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/storage/custom.js ***!\n+              \\*********************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports) {\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.createLocalStorage = createLocalStorage;\n+                __webpack_require__( /*! ../chunk-LMOQIXV4.js */ \"../../graphiql-toolkit/dist/esm/chunk-LMOQIXV4.js\");\n \n                 function createLocalStorage({\n                     namespace\n                 }) {\n-                    const storageKeyPrefix = `${namespace}:`;\n-                    const getStorageKey = key => `${storageKeyPrefix}${key}`;\n-                    const storage = {\n+                    const storageKeyPrefix = `${namespace}:`,\n+                        getStorageKey = key => `${storageKeyPrefix}${key}`;\n+                    return {\n                         setItem: (key, value) => localStorage.setItem(getStorageKey(key), value),\n                         getItem: key => localStorage.getItem(getStorageKey(key)),\n                         removeItem: key => localStorage.removeItem(getStorageKey(key)),\n                         get length() {\n                             let keys = 0;\n-                            for (const key in localStorage) {\n-                                if (key.indexOf(storageKeyPrefix) === 0) {\n-                                    keys += 1;\n-                                }\n-                            }\n+                            for (const key in localStorage) key.indexOf(storageKeyPrefix) === 0 && (keys += 1);\n                             return keys;\n                         },\n                         clear() {\n-                            for (const key in localStorage) {\n-                                if (key.indexOf(storageKeyPrefix) === 0) {\n-                                    localStorage.removeItem(key);\n-                                }\n-                            }\n+                            for (const key in localStorage) key.indexOf(storageKeyPrefix) === 0 && localStorage.removeItem(key);\n                         }\n                     };\n-                    return storage;\n                 }\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/storage/history.js\":\n-            /*!*****************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/storage/history.js ***!\n-              \\*****************************************************/\n+        \"../../graphiql-toolkit/dist/esm/storage/history.js\":\n+            /*!**********************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/storage/history.js ***!\n+              \\**********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.HistoryStore = void 0;\n+                var _chunkLMOQIXV = __webpack_require__( /*! ../chunk-LMOQIXV4.js */ \"../../graphiql-toolkit/dist/esm/chunk-LMOQIXV4.js\");\n                 var _graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n-                var _query = __webpack_require__( /*! ./query */ \"../../graphiql-toolkit/esm/storage/query.js\");\n-                const MAX_QUERY_SIZE = 100000;\n+                var _query = __webpack_require__( /*! ./query */ \"../../graphiql-toolkit/dist/esm/storage/query.js\");\n+                const MAX_QUERY_SIZE = 1e5;\n                 class HistoryStore {\n                     constructor(storage, maxHistoryLength) {\n                         this.storage = storage;\n                         this.maxHistoryLength = maxHistoryLength;\n                         this.updateHistory = ({\n                             query,\n                             variables,\n                             headers,\n                             operationName\n                         }) => {\n-                            if (!this.shouldSaveQuery(query, variables, headers, this.history.fetchRecent())) {\n-                                return;\n-                            }\n+                            if (!this.shouldSaveQuery(query, variables, headers, this.history.fetchRecent())) return;\n                             this.history.push({\n                                 query,\n                                 variables,\n                                 headers,\n                                 operationName\n                             });\n-                            const historyQueries = this.history.items;\n-                            const favoriteQueries = this.favorite.items;\n+                            const historyQueries = this.history.items,\n+                                favoriteQueries = this.favorite.items;\n                             this.queries = historyQueries.concat(favoriteQueries);\n                         };\n                         this.deleteHistory = ({\n                             query,\n                             variables,\n                             headers,\n                             operationName,\n                             favorite\n-                        }, clearFavorites = false) => {\n+                        }, clearFavorites = !1) => {\n                             function deleteFromStore(store) {\n                                 const found = store.items.find(x => x.query === query && x.variables === variables && x.headers === headers && x.operationName === operationName);\n-                                if (found) {\n-                                    store.delete(found);\n-                                }\n-                            }\n-                            if (favorite || clearFavorites) {\n-                                deleteFromStore(this.favorite);\n-                            }\n-                            if (!favorite || clearFavorites) {\n-                                deleteFromStore(this.history);\n+                                found && store.delete(found);\n                             }\n-                            this.queries = [...this.history.items, ...this.favorite.items];\n+                            (favorite || clearFavorites) && deleteFromStore(this.favorite), (!favorite || clearFavorites) && deleteFromStore(this.history), this.queries = [...this.history.items, ...this.favorite.items];\n                         };\n-                        this.history = new _query.QueryStore('queries', this.storage, this.maxHistoryLength);\n-                        this.favorite = new _query.QueryStore('favorites', this.storage, null);\n-                        this.queries = [...this.history.fetchAll(), ...this.favorite.fetchAll()];\n+                        this.history = new _query.QueryStore(\"queries\", this.storage, this.maxHistoryLength), this.favorite = new _query.QueryStore(\"favorites\", this.storage, null), this.queries = [...this.history.fetchAll(), ...this.favorite.fetchAll()];\n                     }\n                     shouldSaveQuery(query, variables, headers, lastQuerySaved) {\n-                        if (!query) {\n-                            return false;\n-                        }\n+                        if (!query) return !1;\n                         try {\n                             (0, _graphql.parse)(query);\n-                        } catch (_a) {\n-                            return false;\n-                        }\n-                        if (query.length > MAX_QUERY_SIZE) {\n-                            return false;\n-                        }\n-                        if (!lastQuerySaved) {\n-                            return true;\n-                        }\n-                        if (JSON.stringify(query) === JSON.stringify(lastQuerySaved.query)) {\n-                            if (JSON.stringify(variables) === JSON.stringify(lastQuerySaved.variables)) {\n-                                if (JSON.stringify(headers) === JSON.stringify(lastQuerySaved.headers)) {\n-                                    return false;\n-                                }\n-                                if (headers && !lastQuerySaved.headers) {\n-                                    return false;\n-                                }\n-                            }\n-                            if (variables && !lastQuerySaved.variables) {\n-                                return false;\n-                            }\n+                        } catch (e) {\n+                            return !1;\n                         }\n-                        return true;\n+                        return query.length > MAX_QUERY_SIZE ? !1 : lastQuerySaved ? !(JSON.stringify(query) === JSON.stringify(lastQuerySaved.query) && (JSON.stringify(variables) === JSON.stringify(lastQuerySaved.variables) && (JSON.stringify(headers) === JSON.stringify(lastQuerySaved.headers) || headers && !lastQuerySaved.headers) || variables && !lastQuerySaved.variables)) : !0;\n                     }\n                     toggleFavorite({\n                         query,\n                         variables,\n                         headers,\n                         operationName,\n                         label,\n@@ -84973,24 +89053,15 @@\n                         const item = {\n                             query,\n                             variables,\n                             headers,\n                             operationName,\n                             label\n                         };\n-                        if (favorite) {\n-                            item.favorite = false;\n-                            this.favorite.delete(item);\n-                            this.history.push(item);\n-                        } else {\n-                            item.favorite = true;\n-                            this.favorite.push(item);\n-                            this.history.delete(item);\n-                        }\n-                        this.queries = [...this.history.items, ...this.favorite.items];\n+                        favorite ? (item.favorite = !1, this.favorite.delete(item), this.history.push(item)) : (item.favorite = !0, this.favorite.push(item), this.history.delete(item)), this.queries = [...this.history.items, ...this.favorite.items];\n                     }\n                     editLabel({\n                         query,\n                         variables,\n                         headers,\n                         operationName,\n                         label,\n@@ -84999,76 +89070,72 @@\n                         const item = {\n                             query,\n                             variables,\n                             headers,\n                             operationName,\n                             label\n                         };\n-                        if (favorite) {\n-                            this.favorite.edit(Object.assign(Object.assign({}, item), {\n-                                favorite\n-                            }), index);\n-                        } else {\n-                            this.history.edit(item, index);\n-                        }\n-                        this.queries = [...this.history.items, ...this.favorite.items];\n+                        favorite ? this.favorite.edit((0, _chunkLMOQIXV.__spreadProps)((0, _chunkLMOQIXV.__spreadValues)({}, item), {\n+                            favorite\n+                        }), index) : this.history.edit(item, index), this.queries = [...this.history.items, ...this.favorite.items];\n                     }\n                 }\n                 exports.HistoryStore = HistoryStore;\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/storage/index.js\":\n-            /*!***************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/storage/index.js ***!\n-              \\***************************************************/\n+        \"../../graphiql-toolkit/dist/esm/storage/index.js\":\n+            /*!********************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/storage/index.js ***!\n+              \\********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n-                var _base = __webpack_require__( /*! ./base */ \"../../graphiql-toolkit/esm/storage/base.js\");\n+                var _base = __webpack_require__( /*! ./base */ \"../../graphiql-toolkit/dist/esm/storage/base.js\");\n                 Object.keys(_base).forEach(function(key) {\n                     if (key === \"default\" || key === \"__esModule\") return;\n                     if (key in exports && exports[key] === _base[key]) return;\n                     Object.defineProperty(exports, key, {\n                         enumerable: true,\n                         get: function() {\n                             return _base[key];\n                         }\n                     });\n                 });\n-                var _history = __webpack_require__( /*! ./history */ \"../../graphiql-toolkit/esm/storage/history.js\");\n+                var _history = __webpack_require__( /*! ./history */ \"../../graphiql-toolkit/dist/esm/storage/history.js\");\n                 Object.keys(_history).forEach(function(key) {\n                     if (key === \"default\" || key === \"__esModule\") return;\n                     if (key in exports && exports[key] === _history[key]) return;\n                     Object.defineProperty(exports, key, {\n                         enumerable: true,\n                         get: function() {\n                             return _history[key];\n                         }\n                     });\n                 });\n-                var _query = __webpack_require__( /*! ./query */ \"../../graphiql-toolkit/esm/storage/query.js\");\n+                var _query = __webpack_require__( /*! ./query */ \"../../graphiql-toolkit/dist/esm/storage/query.js\");\n                 Object.keys(_query).forEach(function(key) {\n                     if (key === \"default\" || key === \"__esModule\") return;\n                     if (key in exports && exports[key] === _query[key]) return;\n                     Object.defineProperty(exports, key, {\n                         enumerable: true,\n                         get: function() {\n                             return _query[key];\n                         }\n                     });\n                 });\n-                var _custom = __webpack_require__( /*! ./custom */ \"../../graphiql-toolkit/esm/storage/custom.js\");\n+                var _custom = __webpack_require__( /*! ./custom */ \"../../graphiql-toolkit/dist/esm/storage/custom.js\");\n                 Object.keys(_custom).forEach(function(key) {\n                     if (key === \"default\" || key === \"__esModule\") return;\n                     if (key in exports && exports[key] === _custom[key]) return;\n                     Object.defineProperty(exports, key, {\n                         enumerable: true,\n                         get: function() {\n                             return _custom[key];\n@@ -85076,109 +89143,96 @@\n                     });\n                 });\n \n                 /***/\n             }),\n \n         /***/\n-        \"../../graphiql-toolkit/esm/storage/query.js\":\n-            /*!***************************************************!*\\\n-              !*** ../../graphiql-toolkit/esm/storage/query.js ***!\n-              \\***************************************************/\n+        \"../../graphiql-toolkit/dist/esm/storage/query.js\":\n+            /*!********************************************************!*\\\n+              !*** ../../graphiql-toolkit/dist/esm/storage/query.js ***!\n+              \\********************************************************/\n             /***/\n-            (function(__unused_webpack_module, exports) {\n+            (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.QueryStore = void 0;\n+                __webpack_require__( /*! ../chunk-LMOQIXV4.js */ \"../../graphiql-toolkit/dist/esm/chunk-LMOQIXV4.js\");\n                 class QueryStore {\n                     constructor(key, storage, maxSize = null) {\n                         this.key = key;\n                         this.storage = storage;\n                         this.maxSize = maxSize;\n                         this.items = this.fetchAll();\n                     }\n                     get length() {\n                         return this.items.length;\n                     }\n                     contains(item) {\n                         return this.items.some(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName);\n                     }\n                     edit(item, index) {\n-                        if (typeof index === 'number' && this.items[index]) {\n+                        if (typeof index == \"number\" && this.items[index]) {\n                             const found = this.items[index];\n                             if (found.query === item.query && found.variables === item.variables && found.headers === item.headers && found.operationName === item.operationName) {\n-                                this.items.splice(index, 1, item);\n-                                this.save();\n+                                this.items.splice(index, 1, item), this.save();\n                                 return;\n                             }\n                         }\n                         const itemIndex = this.items.findIndex(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName);\n-                        if (itemIndex !== -1) {\n-                            this.items.splice(itemIndex, 1, item);\n-                            this.save();\n-                        }\n+                        itemIndex !== -1 && (this.items.splice(itemIndex, 1, item), this.save());\n                     }\n                     delete(item) {\n                         const itemIndex = this.items.findIndex(x => x.query === item.query && x.variables === item.variables && x.headers === item.headers && x.operationName === item.operationName);\n-                        if (itemIndex !== -1) {\n-                            this.items.splice(itemIndex, 1);\n-                            this.save();\n-                        }\n+                        itemIndex !== -1 && (this.items.splice(itemIndex, 1), this.save());\n                     }\n                     fetchRecent() {\n                         return this.items.at(-1);\n                     }\n                     fetchAll() {\n                         const raw = this.storage.get(this.key);\n-                        if (raw) {\n-                            return JSON.parse(raw)[this.key];\n-                        }\n-                        return [];\n+                        return raw ? JSON.parse(raw)[this.key] : [];\n                     }\n                     push(item) {\n                         const items = [...this.items, item];\n-                        if (this.maxSize && items.length > this.maxSize) {\n-                            items.shift();\n-                        }\n+                        this.maxSize && items.length > this.maxSize && items.shift();\n                         for (let attempts = 0; attempts < 5; attempts++) {\n                             const response = this.storage.set(this.key, JSON.stringify({\n                                 [this.key]: items\n                             }));\n-                            if (!(response === null || response === void 0 ? void 0 : response.error)) {\n-                                this.items = items;\n-                            } else if (response.isQuotaError && this.maxSize) {\n-                                items.shift();\n-                            } else {\n-                                return;\n-                            }\n+                            if (!(response != null && response.error)) this.items = items;\n+                            else if (response.isQuotaError && this.maxSize) items.shift();\n+                            else return;\n                         }\n                     }\n                     save() {\n                         this.storage.set(this.key, JSON.stringify({\n                             [this.key]: this.items\n                         }));\n                     }\n                 }\n                 exports.QueryStore = QueryStore;\n \n                 /***/\n             }),\n \n         /***/\n-        \"./components/GraphiQL.tsx\":\n-            /*!*********************************!*\\\n-              !*** ./components/GraphiQL.tsx ***!\n-              \\*********************************/\n+        \"./GraphiQL.tsx\":\n+            /*!**********************!*\\\n+              !*** ./GraphiQL.tsx ***!\n+              \\**********************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.GraphiQL = GraphiQL;\n                 exports.GraphiQLInterface = GraphiQLInterface;\n@@ -85756,15 +89810,15 @@\n                         disabled: clearStorageStatus === 'success',\n                         onClick: handleClearData\n                     }, {\n                         success: 'Cleared data',\n                         error: 'Failed'\n                     } [clearStorageStatus] || 'Clear data')) : null)));\n                 }\n-                const modifier = typeof window !== 'undefined' && window.navigator.platform.toLowerCase().indexOf('mac') === 0 ? 'Cmd' : 'Ctrl';\n+                const modifier = _react2.isMacOs ? '\u2318' : 'Ctrl';\n                 const SHORT_KEYS = Object.entries({\n                     'Search in editor': [modifier, 'F'],\n                     'Search in documentation': [modifier, 'K'],\n                     'Execute query': [modifier, 'Enter'],\n                     'Prettify editors': ['Ctrl', 'Shift', 'P'],\n                     'Merge fragments definitions into operation definition': ['Ctrl', 'Shift', 'M'],\n                     'Copy query': ['Ctrl', 'Shift', 'C'],\n@@ -85833,14 +89887,15 @@\n         \"../../graphql-language-service/esm/index.js\":\n             /*!***************************************************!*\\\n               !*** ../../graphql-language-service/esm/index.js ***!\n               \\***************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"CharacterStream\", ({\n                     enumerable: true,\n@@ -86136,14 +90191,15 @@\n         \"../../graphql-language-service/esm/interface/autocompleteUtils.js\":\n             /*!*************************************************************************!*\\\n               !*** ../../graphql-language-service/esm/interface/autocompleteUtils.js ***!\n               \\*************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getInsertText = exports.getInputInsertText = exports.getFieldInsertText = void 0;\n                 exports.hintList = hintList;\n@@ -86252,14 +90308,15 @@\n         \"../../graphql-language-service/esm/interface/getAutocompleteSuggestions.js\":\n             /*!**********************************************************************************!*\\\n               !*** ../../graphql-language-service/esm/interface/getAutocompleteSuggestions.js ***!\n               \\**********************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.SuggestionCommand = void 0;\n                 exports.canUseDirective = canUseDirective;\n@@ -86912,14 +90969,15 @@\n         \"../../graphql-language-service/esm/interface/getDefinition.js\":\n             /*!*********************************************************************!*\\\n               !*** ../../graphql-language-service/esm/interface/getDefinition.js ***!\n               \\*********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.LANGUAGE = void 0;\n                 exports.getDefinitionQueryResultForArgument = getDefinitionQueryResultForArgument;\n@@ -87153,14 +91211,15 @@\n         \"../../graphql-language-service/esm/interface/getDiagnostics.js\":\n             /*!**********************************************************************!*\\\n               !*** ../../graphql-language-service/esm/interface/getDiagnostics.js ***!\n               \\**********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.SEVERITY = exports.DIAGNOSTIC_SEVERITY = void 0;\n                 exports.getDiagnostics = getDiagnostics;\n@@ -87283,14 +91342,15 @@\n         \"../../graphql-language-service/esm/interface/getHoverInformation.js\":\n             /*!***************************************************************************!*\\\n               !*** ../../graphql-language-service/esm/interface/getHoverInformation.js ***!\n               \\***************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getHoverInformation = getHoverInformation;\n                 exports.renderArg = renderArg;\n@@ -87492,14 +91552,15 @@\n         \"../../graphql-language-service/esm/interface/getOutline.js\":\n             /*!******************************************************************!*\\\n               !*** ../../graphql-language-service/esm/interface/getOutline.js ***!\n               \\******************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getOutline = getOutline;\n                 var _graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n@@ -87634,14 +91695,15 @@\n         \"../../graphql-language-service/esm/interface/index.js\":\n             /*!*************************************************************!*\\\n               !*** ../../graphql-language-service/esm/interface/index.js ***!\n               \\*************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 var _exportNames = {\n                     getOutline: true,\n@@ -87717,14 +91779,15 @@\n         \"../../graphql-language-service/esm/parser/CharacterStream.js\":\n             /*!********************************************************************!*\\\n               !*** ../../graphql-language-service/esm/parser/CharacterStream.js ***!\n               \\********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports[\"default\"] = void 0;\n                 class CharacterStream {\n@@ -87839,14 +91902,15 @@\n         \"../../graphql-language-service/esm/parser/RuleHelpers.js\":\n             /*!****************************************************************!*\\\n               !*** ../../graphql-language-service/esm/parser/RuleHelpers.js ***!\n               \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.butNot = butNot;\n                 exports.list = list;\n@@ -87901,14 +91965,15 @@\n         \"../../graphql-language-service/esm/parser/Rules.js\":\n             /*!**********************************************************!*\\\n               !*** ../../graphql-language-service/esm/parser/Rules.js ***!\n               \\**********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.isIgnored = exports.ParseRules = exports.LexRules = void 0;\n                 var _RuleHelpers = __webpack_require__( /*! ./RuleHelpers */ \"../../graphql-language-service/esm/parser/RuleHelpers.js\");\n@@ -88111,14 +92176,15 @@\n         \"../../graphql-language-service/esm/parser/api.js\":\n             /*!********************************************************!*\\\n               !*** ../../graphql-language-service/esm/parser/api.js ***!\n               \\********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.TYPE_SYSTEM_KINDS = exports.GraphQLDocumentMode = void 0;\n                 exports.getContextAtPosition = getContextAtPosition;\n@@ -88242,14 +92308,15 @@\n         \"../../graphql-language-service/esm/parser/getTypeInfo.js\":\n             /*!****************************************************************!*\\\n               !*** ../../graphql-language-service/esm/parser/getTypeInfo.js ***!\n               \\****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.forEachState = forEachState;\n                 exports.getDefinitionState = getDefinitionState;\n@@ -88463,14 +92530,15 @@\n         \"../../graphql-language-service/esm/parser/index.js\":\n             /*!**********************************************************!*\\\n               !*** ../../graphql-language-service/esm/parser/index.js ***!\n               \\**********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 var _exportNames = {\n                     CharacterStream: true,\n@@ -88632,14 +92700,15 @@\n         \"../../graphql-language-service/esm/parser/onlineParser.js\":\n             /*!*****************************************************************!*\\\n               !*** ../../graphql-language-service/esm/parser/onlineParser.js ***!\n               \\*****************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports[\"default\"] = onlineParser;\n                 var _Rules = __webpack_require__( /*! ./Rules */ \"../../graphql-language-service/esm/parser/Rules.js\");\n@@ -88865,14 +92934,15 @@\n         \"../../graphql-language-service/esm/parser/types.js\":\n             /*!**********************************************************!*\\\n               !*** ../../graphql-language-service/esm/parser/types.js ***!\n               \\**********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.RuleKinds = exports.AdditionalRuleKinds = void 0;\n                 var _graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n@@ -88916,14 +92986,15 @@\n         \"../../graphql-language-service/esm/types.js\":\n             /*!***************************************************!*\\\n               !*** ../../graphql-language-service/esm/types.js ***!\n               \\***************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.FileChangeTypeKind = exports.CompletionItemKind = void 0;\n                 Object.defineProperty(exports, \"GraphQLDocumentMode\", ({\n@@ -88981,14 +93052,15 @@\n         \"../../graphql-language-service/esm/utils/Range.js\":\n             /*!*********************************************************!*\\\n               !*** ../../graphql-language-service/esm/utils/Range.js ***!\n               \\*********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.Range = exports.Position = void 0;\n                 exports.locToRange = locToRange;\n@@ -89051,14 +93123,15 @@\n         \"../../graphql-language-service/esm/utils/collectVariables.js\":\n             /*!********************************************************************!*\\\n               !*** ../../graphql-language-service/esm/utils/collectVariables.js ***!\n               \\********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.collectVariables = collectVariables;\n                 var _graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n@@ -89096,14 +93169,15 @@\n         \"../../graphql-language-service/esm/utils/fragmentDependencies.js\":\n             /*!************************************************************************!*\\\n               !*** ../../graphql-language-service/esm/utils/fragmentDependencies.js ***!\n               \\************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getFragmentDependenciesForAST = exports.getFragmentDependencies = void 0;\n                 var _graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n@@ -89174,14 +93248,15 @@\n         \"../../graphql-language-service/esm/utils/getASTNodeAtPosition.js\":\n             /*!************************************************************************!*\\\n               !*** ../../graphql-language-service/esm/utils/getASTNodeAtPosition.js ***!\n               \\************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.getASTNodeAtPosition = getASTNodeAtPosition;\n                 exports.pointToOffset = pointToOffset;\n@@ -89219,14 +93294,15 @@\n         \"../../graphql-language-service/esm/utils/getOperationFacts.js\":\n             /*!*********************************************************************!*\\\n               !*** ../../graphql-language-service/esm/utils/getOperationFacts.js ***!\n               \\*********************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports[\"default\"] = getOperationFacts;\n                 exports.getOperationASTFacts = getOperationASTFacts;\n@@ -89270,14 +93346,15 @@\n         \"../../graphql-language-service/esm/utils/getVariablesJSONSchema.js\":\n             /*!**************************************************************************!*\\\n               !*** ../../graphql-language-service/esm/utils/getVariablesJSONSchema.js ***!\n               \\**************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.defaultJSONSchemaOptions = void 0;\n                 exports.getVariablesJSONSchema = getVariablesJSONSchema;\n@@ -89518,14 +93595,15 @@\n         \"../../graphql-language-service/esm/utils/index.js\":\n             /*!*********************************************************!*\\\n               !*** ../../graphql-language-service/esm/utils/index.js ***!\n               \\*********************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 Object.defineProperty(exports, \"Position\", ({\n                     enumerable: true,\n@@ -89653,14 +93731,15 @@\n         \"../../graphql-language-service/esm/utils/validateWithCustomRules.js\":\n             /*!***************************************************************************!*\\\n               !*** ../../graphql-language-service/esm/utils/validateWithCustomRules.js ***!\n               \\***************************************************************************/\n             /***/\n             (function(__unused_webpack_module, exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 Object.defineProperty(exports, \"__esModule\", ({\n                     value: true\n                 }));\n                 exports.validateWithCustomRules = validateWithCustomRules;\n                 var _graphql = __webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\");\n@@ -89704,14 +93783,15 @@\n         \"./style.css\":\n             /*!*******************!*\\\n               !*** ./style.css ***!\n               \\*******************/\n             /***/\n             (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n \n+                \"use strict\";\n                 __webpack_require__.r(__webpack_exports__);\n                 // extracted by mini-css-extract-plugin\n \n \n                 /***/\n             }),\n \n@@ -89719,14 +93799,15 @@\n         \"../../graphiql-react/dist/style.css\":\n             /*!*******************************************!*\\\n               !*** ../../graphiql-react/dist/style.css ***!\n               \\*******************************************/\n             /***/\n             (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n \n+                \"use strict\";\n                 __webpack_require__.r(__webpack_exports__);\n                 // extracted by mini-css-extract-plugin\n \n \n                 /***/\n             }),\n \n@@ -89734,14 +93815,15 @@\n         \"../../graphiql-react/font/fira-code.css\":\n             /*!***********************************************!*\\\n               !*** ../../graphiql-react/font/fira-code.css ***!\n               \\***********************************************/\n             /***/\n             (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n \n+                \"use strict\";\n                 __webpack_require__.r(__webpack_exports__);\n                 // extracted by mini-css-extract-plugin\n \n \n                 /***/\n             }),\n \n@@ -89749,14 +93831,15 @@\n         \"../../graphiql-react/font/roboto.css\":\n             /*!********************************************!*\\\n               !*** ../../graphiql-react/font/roboto.css ***!\n               \\********************************************/\n             /***/\n             (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n \n+                \"use strict\";\n                 __webpack_require__.r(__webpack_exports__);\n                 // extracted by mini-css-extract-plugin\n \n \n                 /***/\n             }),\n \n@@ -89764,40 +93847,43 @@\n         \"react\":\n             /*!************************!*\\\n               !*** external \"React\" ***!\n               \\************************/\n             /***/\n             (function(module) {\n \n+                \"use strict\";\n                 module.exports = window[\"React\"];\n \n                 /***/\n             }),\n \n         /***/\n         \"react-dom\":\n             /*!***************************!*\\\n               !*** external \"ReactDOM\" ***!\n               \\***************************/\n             /***/\n             (function(module) {\n \n+                \"use strict\";\n                 module.exports = window[\"ReactDOM\"];\n \n                 /***/\n             }),\n \n         /***/\n         \"../../../node_modules/@headlessui/react/dist/headlessui.dev.cjs\":\n             /*!***********************************************************************!*\\\n               !*** ../../../node_modules/@headlessui/react/dist/headlessui.dev.cjs ***!\n               \\***********************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n                 var __create = Object.create;\n                 var __defProp = Object.defineProperty;\n                 var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n                 var __getOwnPropNames = Object.getOwnPropertyNames;\n                 var __getProtoOf = Object.getPrototypeOf;\n                 var __hasOwnProp = Object.prototype.hasOwnProperty;\n@@ -98104,14 +102190,15 @@\n         \"../../../node_modules/@headlessui/react/dist/index.cjs\":\n             /*!**************************************************************!*\\\n               !*** ../../../node_modules/@headlessui/react/dist/index.cjs ***!\n               \\**************************************************************/\n             /***/\n             (function(module, __unused_webpack_exports, __webpack_require__) {\n \n+                \"use strict\";\n \n \n                 if (false) {} else {\n                     module.exports = __webpack_require__( /*! ./headlessui.dev.cjs */ \"../../../node_modules/@headlessui/react/dist/headlessui.dev.cjs\")\n                 }\n \n \n@@ -98122,14 +102209,15 @@\n         \"../../../node_modules/@babel/runtime/helpers/extends.js\":\n             /*!***************************************************************!*\\\n               !*** ../../../node_modules/@babel/runtime/helpers/extends.js ***!\n               \\***************************************************************/\n             /***/\n             (function(module) {\n \n+                \"use strict\";\n \n \n                 function _extends() {\n                     module.exports = _extends = Object.assign ? Object.assign.bind() : function(target) {\n                         for (var i = 1; i < arguments.length; i++) {\n                             var source = arguments[i];\n                             for (var key in source) {\n@@ -98241,30 +102329,31 @@\n         /******/\n         __webpack_require__.nc = undefined;\n         /******/\n     }();\n     /******/\n     /************************************************************************/\n     var __webpack_exports__ = {};\n-    // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n+    // This entry need to be wrapped in an IIFE because it need to be in strict mode.\n     ! function() {\n+        \"use strict\";\n         var exports = __webpack_exports__;\n         /*!****************!*\\\n           !*** ./cdn.ts ***!\n           \\****************/\n \n \n         Object.defineProperty(exports, \"__esModule\", ({\n             value: true\n         }));\n         exports[\"default\"] = void 0;\n         var GraphiQLReact = _interopRequireWildcard(__webpack_require__( /*! @graphiql/react */ \"../../graphiql-react/dist/index.js\"));\n-        var _toolkit = __webpack_require__( /*! @graphiql/toolkit */ \"../../graphiql-toolkit/esm/index.js\");\n+        var _toolkit = __webpack_require__( /*! @graphiql/toolkit */ \"../../graphiql-toolkit/dist/esm/index.js\");\n         var GraphQL = _interopRequireWildcard(__webpack_require__( /*! graphql */ \"../../../node_modules/graphql/index.mjs\"));\n-        var _GraphiQL = __webpack_require__( /*! ./components/GraphiQL */ \"./components/GraphiQL.tsx\");\n+        var _GraphiQL = __webpack_require__( /*! ./GraphiQL */ \"./GraphiQL.tsx\");\n         __webpack_require__( /*! @graphiql/react/font/roboto.css */ \"../../graphiql-react/font/roboto.css\");\n         __webpack_require__( /*! @graphiql/react/font/fira-code.css */ \"../../graphiql-react/font/fira-code.css\");\n         __webpack_require__( /*! @graphiql/react/dist/style.css */ \"../../graphiql-react/dist/style.css\");\n         __webpack_require__( /*! ./style.css */ \"./style.css\");\n \n         function _getRequireWildcardCache(e) {\n             if (\"function\" != typeof WeakMap) return null;\n"}]}]}
