@zenuml/core 3.48.0 → 3.48.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/zenuml.mjs +13529 -0
- package/dist/cli/zenuml.mjs.map +1 -0
- package/dist/zenuml.esm.mjs +3 -3
- package/dist/zenuml.js +3 -3
- package/package.json +12 -9
- package/src/cli/zenuml.ts +0 -1164
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zenuml.mjs","sources":["../../src/generated-parser/sequenceLexer.js","../../src/generated-parser/sequenceParserListener.js","../../src/generated-parser/sequenceParser.js","../../src/parser/Participants.ts","../../src/parser/ToCollector.js","../../src/parser/ChildFragmentDetecotr.js","../../src/parser/TitleContext.js","../../src/parser/IsCurrent.js","../../src/parser/Owner.js","../../src/parser/ProgContext.js","../../src/parser/RetContext.js","../../src/parser/RefContext.ts","../../src/parser/Origin.js","../../src/parser/Divider/DividerContext.ts","../../src/parser/SignatureText.ts","../../src/parser/Messages/Assignment.ts","../../src/parser/Messages/MessageContext.ts","../../src/parser/From.ts","../../src/parser/key/Key.ts","../../src/parser/utils/cloest-ancestor/ClosestAncestor.ts","../../src/parser/AncestorPath.ts","../../src/utils/StringUtil.ts","../../src/parser/index.js","../../src/positioning/Constants.ts","../../src/positioning/Coordinate.ts","../../src/parser/OwnableMessage.ts","../../src/parser/MessageCollector.ts","../../src/parser/OrderedParticipants.ts","../../src/logger/logger.ts","../../src/positioning/david/DavidEisenstat.ts","../../src/utils/RenderingCache.ts","../../src/positioning/Coordinates.ts","../../src/positioning/vertical/StatementIdentifier.ts","../../src/positioning/vertical/vm/NodeVM.ts","../../src/positioning/LocalParticipants.ts","../../src/utils/messageStyling.ts","../../src/emoji/builtinEmojis.ts","../../src/emoji/resolveEmoji.ts","../../src/components/Comment/Comment.ts","../../src/positioning/vertical/MarkdownMeasurer.ts","../../src/positioning/vertical/vm/StatementVM.ts","../../src/positioning/vertical/vm/AsyncMessageStatementVM.ts","../../src/positioning/vertical/vm/CreationStatementVM.ts","../../src/positioning/vertical/vm/DividerStatementVM.ts","../../src/positioning/vertical/vm/EmptyStatementVM.ts","../../src/positioning/vertical/vm/FragmentVM.ts","../../src/positioning/vertical/vm/FragmentAltVM.ts","../../src/positioning/vertical/vm/FragmentSingleBlockVM.ts","../../src/positioning/vertical/vm/FragmentCriticalVM.ts","../../src/positioning/vertical/vm/FragmentLoopVM.ts","../../src/positioning/vertical/vm/FragmentOptVM.ts","../../src/positioning/vertical/vm/FragmentParVM.ts","../../src/positioning/vertical/vm/FragmentRefVM.ts","../../src/positioning/vertical/vm/FragmentSectionVM.ts","../../src/positioning/vertical/vm/FragmentTryCatchVM.ts","../../src/positioning/vertical/vm/ReturnStatementVM.ts","../../src/positioning/vertical/vm/SyncMessageStatementVM.ts","../../src/positioning/vertical/vm/createStatementVM.ts","../../src/positioning/vertical/vm/BlockVM.ts","../../src/positioning/vertical/LayoutMetrics.ts","../../src/positioning/VerticalCoordinates.ts","../../src/positioning/WidthProviderFunc.ts","../../src/parser/FrameBuilder.ts","../../src/positioning/FrameBorder.ts","../../src/svg/svgConstants.ts","../../src/svg/buildParticipantGeometry.ts","../../src/svg/buildFragmentGeometry.ts","../../src/svg/walkStatements.ts","../../src/svg/computeReturnDebt.ts","../../src/svg/buildStatementGeometry.ts","../../src/svg/buildGeometry.ts","../../src/assets/actor.svg?raw","../../src/assets/Robustness_Diagram_Boundary.svg?raw","../../src/assets/Robustness_Diagram_Control.svg?raw","../../src/assets/database.svg?raw","../../src/assets/Robustness_Diagram_Entity.svg?raw","../../src/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Compute/Res_Amazon-EC2_Instance_48.svg?raw","../../src/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Security-Identity-Compliance/Res_AWS-Identity-Access-Management_IAM-Access-Analyzer_48.svg?raw","../../src/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Compute/Res_AWS-Lambda_Lambda-Function_48.svg?raw","../../src/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Application-Integration/Res_Amazon-Simple-Notification-Service_Topic_48.svg?raw","../../src/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Application-Integration/Res_Amazon-Simple-Queue-Service_Queue_48.svg?raw","../../src/assets/Azure_Public_Service_Icons/Icons/Compute/10029-icon-service-Function-Apps.svg?raw","../../src/svg/icons.ts","../../src/svg/components/svgUtils.ts","../../src/svg/components/participant.ts","../../src/svg/components/lifeline.ts","../../src/svg/components/message.ts","../../src/svg/components/occurrence.ts","../../src/svg/components/fragment.ts","../../src/svg/components/creation.ts","../../src/svg/components/return.ts","../../src/svg/components/divider.ts","../../src/svg/components/comment.ts","../../src/svg/components/group.ts","../../src/svg/renderToSvg.ts","../../src/cli/zenuml.ts"],"sourcesContent":["// Generated from java-escape by ANTLR 4.11.1\n// jshint ignore: start\nimport antlr4 from 'antlr4';\n\n\nconst serializedATN = [4,0,75,612,6,-1,6,-1,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,\n2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,\n11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,\n2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,\n26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,\n7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,\n40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,\n2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,\n55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,\n7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,\n69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,\n2,77,7,77,2,78,7,78,1,0,1,0,1,1,4,1,165,8,1,11,1,12,1,166,1,1,1,1,1,2,1,\n2,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,\n4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,\n6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,9,1,9,1,9,1,\n10,1,10,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,13,1,13,4,13,237,8,13,11,13,\n12,13,238,1,14,1,14,1,14,4,14,244,8,14,11,14,12,14,245,1,14,1,14,1,14,1,\n15,1,15,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1,19,1,19,1,19,1,20,1,20,\n1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,26,1,\n26,1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,32,1,32,1,33,1,33,\n1,34,1,34,1,35,1,35,1,36,1,36,1,37,1,37,1,38,1,38,1,39,1,39,1,39,1,39,1,\n39,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,3,41,\n323,8,41,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,\n1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,\n44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,359,8,44,1,45,1,45,1,45,1,45,1,45,\n1,45,1,45,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,\n48,1,48,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,\n1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,3,51,407,8,51,\n1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,\n55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,58,\n1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,\n58,3,58,453,8,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,\n1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,\n59,3,59,481,8,59,1,60,1,60,5,60,485,8,60,10,60,12,60,488,9,60,1,61,1,61,\n1,62,1,62,5,62,494,8,62,10,62,12,62,497,9,62,1,63,4,63,500,8,63,11,63,12,\n63,501,1,64,1,64,1,65,4,65,507,8,65,11,65,12,65,508,1,66,4,66,512,8,66,11,\n66,12,66,513,1,66,1,66,5,66,518,8,66,10,66,12,66,521,9,66,1,66,1,66,4,66,\n525,8,66,11,66,12,66,526,3,66,529,8,66,1,67,1,67,1,67,3,67,534,8,67,1,68,\n1,68,3,68,538,8,68,1,68,1,68,1,69,1,69,1,69,1,69,5,69,546,8,69,10,69,12,\n69,549,9,69,1,69,1,69,1,70,1,70,1,70,1,70,5,70,557,8,70,10,70,12,70,560,\n9,70,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,5,72,570,8,72,10,72,12,72,573,\n9,72,1,72,1,72,1,73,1,73,1,74,1,74,5,74,581,8,74,10,74,12,74,584,9,74,1,\n74,1,74,1,74,1,74,5,74,590,8,74,10,74,12,74,593,9,74,1,75,4,75,596,8,75,\n11,75,12,75,597,1,76,1,76,1,76,1,76,1,77,4,77,605,8,77,11,77,12,77,606,1,\n78,1,78,1,78,1,78,0,0,79,3,0,5,1,7,2,9,3,11,4,13,5,15,6,17,7,19,8,21,9,23,\n10,25,11,27,0,29,12,31,13,33,14,35,15,37,16,39,17,41,18,43,19,45,20,47,21,\n49,22,51,23,53,24,55,25,57,26,59,27,61,28,63,29,65,30,67,31,69,32,71,33,\n73,34,75,35,77,36,79,37,81,38,83,39,85,40,87,41,89,42,91,43,93,44,95,45,\n97,46,99,47,101,48,103,49,105,50,107,51,109,52,111,53,113,54,115,55,117,\n56,119,57,121,58,123,59,125,60,127,61,129,0,131,0,133,62,135,63,137,64,139,\n65,141,66,143,67,145,68,147,69,149,70,151,71,153,72,155,73,157,74,159,75,\n3,0,1,2,10,2,0,9,9,32,32,3,0,48,57,65,70,97,102,4,0,10,10,13,13,58,58,93,\n93,4,0,48,57,65,90,95,95,97,122,649,0,65,90,95,95,97,122,170,170,181,181,\n186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,\n886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,\n1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519,1522,1568,1610,1646,\n1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,\n1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,\n2074,2084,2084,2088,2088,2112,2136,2144,2154,2160,2183,2185,2190,2208,2249,\n2308,2361,2365,2365,2384,2384,2392,2401,2417,2432,2437,2444,2447,2448,2451,\n2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,\n2544,2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,\n2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,\n2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2809,2809,2821,\n2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,\n2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,\n2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,\n3090,3112,3114,3129,3133,3133,3160,3162,3165,3165,3168,3169,3200,3200,3205,\n3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3293,3294,3296,3297,\n3313,3314,3332,3340,3342,3344,3346,3386,3389,3389,3406,3406,3412,3414,3423,\n3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,\n3634,3635,3648,3654,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,\n3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,\n3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,\n4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,\n4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,\n4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,\n4888,4954,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,\n5866,5873,5880,5888,5905,5919,5937,5952,5969,5984,5996,5998,6000,6016,6067,\n6103,6103,6108,6108,6176,6264,6272,6276,6279,6312,6314,6314,6320,6389,6400,\n6430,6480,6509,6512,6516,6528,6571,6576,6601,6656,6678,6688,6740,6823,6823,\n6917,6963,6981,6988,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,\n7293,7296,7304,7312,7354,7357,7359,7401,7404,7406,7411,7413,7414,7418,7418,\n7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,\n8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,\n8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,\n8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,\n8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8579,8580,11264,\n11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,\n11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,\n11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,\n12294,12337,12341,12347,12348,12353,12438,12445,12447,12449,12538,12540,\n12543,12549,12591,12593,12686,12704,12735,12784,12799,13312,19903,19968,\n42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,\n42653,42656,42725,42775,42783,42786,42888,42891,42954,42960,42961,42963,\n42963,42965,42969,42994,43009,43011,43013,43015,43018,43020,43042,43072,\n43123,43138,43187,43250,43255,43259,43259,43261,43262,43274,43301,43312,\n43334,43360,43388,43396,43442,43471,43471,43488,43492,43494,43503,43514,\n43518,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43646,\n43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,\n43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,\n43814,43816,43822,43824,43866,43868,43881,43888,44002,44032,55203,55216,\n55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,\n64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,\n64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,\n65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,\n65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594,65596,\n65597,65599,65613,65616,65629,65664,65786,66176,66204,66208,66256,66304,\n66335,66349,66368,66370,66377,66384,66421,66432,66461,66464,66499,66504,\n66511,66560,66717,66736,66771,66776,66811,66816,66855,66864,66915,66928,\n66938,66940,66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,\n67001,67003,67004,67072,67382,67392,67413,67424,67431,67456,67461,67463,\n67504,67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,\n67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,\n67861,67872,67897,67968,68023,68030,68031,68096,68096,68112,68115,68117,\n68119,68121,68149,68192,68220,68224,68252,68288,68295,68297,68324,68352,\n68405,68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,\n68850,68864,68899,69248,69289,69296,69297,69376,69404,69415,69415,69424,\n69445,69488,69505,69552,69572,69600,69622,69635,69687,69745,69746,69749,\n69749,69763,69807,69840,69864,69891,69926,69956,69956,69959,69959,69968,\n70002,70006,70006,70019,70066,70081,70084,70106,70106,70108,70108,70144,\n70161,70163,70187,70272,70278,70280,70280,70282,70285,70287,70301,70303,\n70312,70320,70366,70405,70412,70415,70416,70419,70440,70442,70448,70450,\n70451,70453,70457,70461,70461,70480,70480,70493,70497,70656,70708,70727,\n70730,70751,70753,70784,70831,70852,70853,70855,70855,71040,71086,71128,\n71131,71168,71215,71236,71236,71296,71338,71352,71352,71424,71450,71488,\n71494,71680,71723,71840,71903,71935,71942,71945,71945,71948,71955,71957,\n71958,71960,71983,71999,71999,72001,72001,72096,72103,72106,72144,72161,\n72161,72163,72163,72192,72192,72203,72242,72250,72250,72272,72272,72284,\n72329,72349,72349,72368,72440,72704,72712,72714,72750,72768,72768,72818,\n72847,72960,72966,72968,72969,72971,73008,73030,73030,73056,73061,73063,\n73064,73066,73097,73112,73112,73440,73458,73648,73648,73728,74649,74880,\n75075,77712,77808,77824,78894,82944,83526,92160,92728,92736,92766,92784,\n92862,92880,92909,92928,92975,92992,92995,93027,93047,93053,93071,93760,\n93823,93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94208,\n100343,100352,101589,101632,101640,110576,110579,110581,110587,110589,110590,\n110592,110882,110928,110930,110948,110951,110960,111355,113664,113770,113776,\n113788,113792,113800,113808,113817,119808,119892,119894,119964,119966,119967,\n119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,\n120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,\n120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,\n120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,\n120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,122624,\n122654,123136,123180,123191,123197,123214,123214,123536,123565,123584,123627,\n124896,124902,124904,124907,124909,124910,124912,124926,124928,125124,125184,\n125251,125259,125259,126464,126467,126469,126495,126497,126498,126500,126500,\n126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,\n126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,\n126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,\n126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,\n126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,\n126633,126635,126651,131072,173791,173824,177976,177984,178205,178208,183969,\n183984,191456,194560,195101,196608,201546,693,0,48,57,65,90,95,95,97,122,\n170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,\n750,750,880,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,\n931,1013,1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519,\n1522,1568,1610,1632,1641,1646,1647,1649,1747,1749,1749,1765,1766,1774,1788,\n1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1984,2026,2036,2037,2042,\n2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2144,2154,2160,2183,\n2185,2190,2208,2249,2308,2361,2365,2365,2384,2384,2392,2401,2406,2415,2417,\n2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,\n2510,2510,2524,2525,2527,2529,2534,2545,2556,2556,2565,2570,2575,2576,2579,\n2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2662,2671,\n2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,\n2749,2768,2768,2784,2785,2790,2799,2809,2809,2821,2828,2831,2832,2835,2856,\n2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2918,2927,2929,\n2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,\n2979,2980,2984,2986,2990,3001,3024,3024,3046,3055,3077,3084,3086,3088,3090,\n3112,3114,3129,3133,3133,3160,3162,3165,3165,3168,3169,3174,3183,3200,3200,\n3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3293,3294,3296,\n3297,3302,3311,3313,3314,3332,3340,3342,3344,3346,3386,3389,3389,3406,3406,\n3412,3414,3423,3425,3430,3439,3450,3455,3461,3478,3482,3505,3507,3515,3517,\n3517,3520,3526,3558,3567,3585,3632,3634,3635,3648,3654,3664,3673,3713,3714,\n3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,3773,3773,3776,\n3780,3782,3782,3792,3801,3804,3807,3840,3840,3872,3881,3904,3911,3913,3948,\n3976,3980,4096,4138,4159,4169,4176,4181,4186,4189,4193,4193,4197,4198,4206,\n4208,4213,4225,4238,4238,4240,4249,4256,4293,4295,4295,4301,4301,4304,4346,\n4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,\n4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,\n4888,4954,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,\n5866,5873,5880,5888,5905,5919,5937,5952,5969,5984,5996,5998,6000,6016,6067,\n6103,6103,6108,6108,6112,6121,6160,6169,6176,6264,6272,6276,6279,6312,6314,\n6314,6320,6389,6400,6430,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,\n6656,6678,6688,6740,6784,6793,6800,6809,6823,6823,6917,6963,6981,6988,6992,\n7001,7043,7072,7086,7141,7168,7203,7232,7241,7245,7293,7296,7304,7312,7354,\n7357,7359,7401,7404,7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,\n7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,\n8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,\n8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,\n8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,\n8505,8508,8511,8517,8521,8526,8526,8579,8580,11264,11492,11499,11502,11506,\n11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,\n11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,\n11726,11728,11734,11736,11742,11823,11823,12293,12294,12337,12341,12347,\n12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12591,12593,\n12686,12704,12735,12784,12799,13312,19903,19968,42124,42192,42237,42240,\n42508,42512,42539,42560,42606,42623,42653,42656,42725,42775,42783,42786,\n42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,43009,43011,\n43013,43015,43018,43020,43042,43072,43123,43138,43187,43216,43225,43250,\n43255,43259,43259,43261,43262,43264,43301,43312,43334,43360,43388,43396,\n43442,43471,43481,43488,43492,43494,43518,43520,43560,43584,43586,43588,\n43595,43600,43609,43616,43638,43642,43642,43646,43695,43697,43697,43701,\n43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,\n43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,\n43866,43868,43881,43888,44002,44016,44025,44032,55203,55216,55238,55243,\n55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,\n64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,\n64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,\n65276,65296,65305,65313,65338,65345,65370,65382,65470,65474,65479,65482,\n65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594,65596,\n65597,65599,65613,65616,65629,65664,65786,66176,66204,66208,66256,66304,\n66335,66349,66368,66370,66377,66384,66421,66432,66461,66464,66499,66504,\n66511,66560,66717,66720,66729,66736,66771,66776,66811,66816,66855,66864,\n66915,66928,66938,66940,66954,66956,66962,66964,66965,66967,66977,66979,\n66993,66995,67001,67003,67004,67072,67382,67392,67413,67424,67431,67456,\n67461,67463,67504,67506,67514,67584,67589,67592,67592,67594,67637,67639,\n67640,67644,67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,\n67829,67840,67861,67872,67897,67968,68023,68030,68031,68096,68096,68112,\n68115,68117,68119,68121,68149,68192,68220,68224,68252,68288,68295,68297,\n68324,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,68736,\n68786,68800,68850,68864,68899,68912,68921,69248,69289,69296,69297,69376,\n69404,69415,69415,69424,69445,69488,69505,69552,69572,69600,69622,69635,\n69687,69734,69743,69745,69746,69749,69749,69763,69807,69840,69864,69872,\n69881,69891,69926,69942,69951,69956,69956,69959,69959,69968,70002,70006,\n70006,70019,70066,70081,70084,70096,70106,70108,70108,70144,70161,70163,\n70187,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,\n70366,70384,70393,70405,70412,70415,70416,70419,70440,70442,70448,70450,\n70451,70453,70457,70461,70461,70480,70480,70493,70497,70656,70708,70727,\n70730,70736,70745,70751,70753,70784,70831,70852,70853,70855,70855,70864,\n70873,71040,71086,71128,71131,71168,71215,71236,71236,71248,71257,71296,\n71338,71352,71352,71360,71369,71424,71450,71472,71481,71488,71494,71680,\n71723,71840,71913,71935,71942,71945,71945,71948,71955,71957,71958,71960,\n71983,71999,71999,72001,72001,72016,72025,72096,72103,72106,72144,72161,\n72161,72163,72163,72192,72192,72203,72242,72250,72250,72272,72272,72284,\n72329,72349,72349,72368,72440,72704,72712,72714,72750,72768,72768,72784,\n72793,72818,72847,72960,72966,72968,72969,72971,73008,73030,73030,73040,\n73049,73056,73061,73063,73064,73066,73097,73112,73112,73120,73129,73440,\n73458,73648,73648,73728,74649,74880,75075,77712,77808,77824,78894,82944,\n83526,92160,92728,92736,92766,92768,92777,92784,92862,92864,92873,92880,\n92909,92928,92975,92992,92995,93008,93017,93027,93047,93053,93071,93760,\n93823,93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94208,\n100343,100352,101589,101632,101640,110576,110579,110581,110587,110589,110590,\n110592,110882,110928,110930,110948,110951,110960,111355,113664,113770,113776,\n113788,113792,113800,113808,113817,119808,119892,119894,119964,119966,119967,\n119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,\n120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,\n120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,\n120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,\n120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,120782,\n120831,122624,122654,123136,123180,123191,123197,123200,123209,123214,123214,\n123536,123565,123584,123627,123632,123641,124896,124902,124904,124907,124909,\n124910,124912,124926,124928,125124,125184,125251,125259,125259,125264,125273,\n126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,\n126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,\n126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,\n126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,\n126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,\n126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,\n130032,130041,131072,173791,173824,177976,177984,178205,178208,183969,183984,\n191456,194560,195101,196608,201546,2,0,65,90,97,122,1,0,48,57,3,0,10,10,\n13,13,34,34,2,0,10,10,13,13,637,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,\n1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,\n0,23,1,0,0,0,0,25,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,\n0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,\n47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,\n0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,\n1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,\n0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,\n0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,\n0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,\n113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,\n1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,\n0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,\n0,0,0,149,1,0,0,0,0,151,1,0,0,0,1,153,1,0,0,0,1,155,1,0,0,0,2,157,1,0,0,\n0,2,159,1,0,0,0,3,161,1,0,0,0,5,164,1,0,0,0,7,170,1,0,0,0,9,178,1,0,0,0,\n11,189,1,0,0,0,13,198,1,0,0,0,15,206,1,0,0,0,17,215,1,0,0,0,19,219,1,0,0,\n0,21,222,1,0,0,0,23,225,1,0,0,0,25,229,1,0,0,0,27,232,1,0,0,0,29,234,1,0,\n0,0,31,240,1,0,0,0,33,250,1,0,0,0,35,252,1,0,0,0,37,254,1,0,0,0,39,257,1,\n0,0,0,41,260,1,0,0,0,43,263,1,0,0,0,45,266,1,0,0,0,47,268,1,0,0,0,49,270,\n1,0,0,0,51,273,1,0,0,0,53,276,1,0,0,0,55,278,1,0,0,0,57,280,1,0,0,0,59,282,\n1,0,0,0,61,284,1,0,0,0,63,286,1,0,0,0,65,288,1,0,0,0,67,290,1,0,0,0,69,292,\n1,0,0,0,71,294,1,0,0,0,73,296,1,0,0,0,75,298,1,0,0,0,77,300,1,0,0,0,79,302,\n1,0,0,0,81,304,1,0,0,0,83,309,1,0,0,0,85,322,1,0,0,0,87,324,1,0,0,0,89,327,\n1,0,0,0,91,358,1,0,0,0,93,360,1,0,0,0,95,367,1,0,0,0,97,371,1,0,0,0,99,375,\n1,0,0,0,101,381,1,0,0,0,103,385,1,0,0,0,105,406,1,0,0,0,107,408,1,0,0,0,\n109,412,1,0,0,0,111,415,1,0,0,0,113,419,1,0,0,0,115,425,1,0,0,0,117,433,\n1,0,0,0,119,452,1,0,0,0,121,480,1,0,0,0,123,482,1,0,0,0,125,489,1,0,0,0,\n127,491,1,0,0,0,129,499,1,0,0,0,131,503,1,0,0,0,133,506,1,0,0,0,135,528,\n1,0,0,0,137,530,1,0,0,0,139,537,1,0,0,0,141,541,1,0,0,0,143,552,1,0,0,0,\n145,561,1,0,0,0,147,565,1,0,0,0,149,576,1,0,0,0,151,578,1,0,0,0,153,595,\n1,0,0,0,155,599,1,0,0,0,157,604,1,0,0,0,159,608,1,0,0,0,161,162,7,0,0,0,\n162,4,1,0,0,0,163,165,3,3,0,0,164,163,1,0,0,0,165,166,1,0,0,0,166,164,1,\n0,0,0,166,167,1,0,0,0,167,168,1,0,0,0,168,169,6,1,0,0,169,6,1,0,0,0,170,\n171,5,99,0,0,171,172,5,111,0,0,172,173,5,110,0,0,173,174,5,115,0,0,174,175,\n5,116,0,0,175,176,1,0,0,0,176,177,6,2,1,0,177,8,1,0,0,0,178,179,5,114,0,\n0,179,180,5,101,0,0,180,181,5,97,0,0,181,182,5,100,0,0,182,183,5,111,0,0,\n183,184,5,110,0,0,184,185,5,108,0,0,185,186,5,121,0,0,186,187,1,0,0,0,187,\n188,6,3,1,0,188,10,1,0,0,0,189,190,5,115,0,0,190,191,5,116,0,0,191,192,5,\n97,0,0,192,193,5,116,0,0,193,194,5,105,0,0,194,195,5,99,0,0,195,196,1,0,\n0,0,196,197,6,4,1,0,197,12,1,0,0,0,198,199,5,97,0,0,199,200,5,119,0,0,200,\n201,5,97,0,0,201,202,5,105,0,0,202,203,5,116,0,0,203,204,1,0,0,0,204,205,\n6,5,1,0,205,14,1,0,0,0,206,207,4,6,0,0,207,208,5,116,0,0,208,209,5,105,0,\n0,209,210,5,116,0,0,210,211,5,108,0,0,211,212,5,101,0,0,212,213,1,0,0,0,\n213,214,6,6,2,0,214,16,1,0,0,0,215,216,5,58,0,0,216,217,1,0,0,0,217,218,\n6,7,3,0,218,18,1,0,0,0,219,220,5,60,0,0,220,221,5,60,0,0,221,20,1,0,0,0,\n222,223,5,62,0,0,223,224,5,62,0,0,224,22,1,0,0,0,225,226,5,45,0,0,226,227,\n5,45,0,0,227,228,5,62,0,0,228,24,1,0,0,0,229,230,5,45,0,0,230,231,5,62,0,\n0,231,26,1,0,0,0,232,233,7,1,0,0,233,28,1,0,0,0,234,236,5,35,0,0,235,237,\n3,27,12,0,236,235,1,0,0,0,237,238,1,0,0,0,238,236,1,0,0,0,238,239,1,0,0,\n0,239,30,1,0,0,0,240,241,5,91,0,0,241,243,5,58,0,0,242,244,8,2,0,0,243,242,\n1,0,0,0,244,245,1,0,0,0,245,243,1,0,0,0,245,246,1,0,0,0,246,247,1,0,0,0,\n247,248,5,58,0,0,248,249,5,93,0,0,249,32,1,0,0,0,250,251,5,91,0,0,251,34,\n1,0,0,0,252,253,5,93,0,0,253,36,1,0,0,0,254,255,5,124,0,0,255,256,5,124,\n0,0,256,38,1,0,0,0,257,258,5,38,0,0,258,259,5,38,0,0,259,40,1,0,0,0,260,\n261,5,61,0,0,261,262,5,61,0,0,262,42,1,0,0,0,263,264,5,33,0,0,264,265,5,\n61,0,0,265,44,1,0,0,0,266,267,5,62,0,0,267,46,1,0,0,0,268,269,5,60,0,0,269,\n48,1,0,0,0,270,271,5,62,0,0,271,272,5,61,0,0,272,50,1,0,0,0,273,274,5,60,\n0,0,274,275,5,61,0,0,275,52,1,0,0,0,276,277,5,43,0,0,277,54,1,0,0,0,278,\n279,5,45,0,0,279,56,1,0,0,0,280,281,5,42,0,0,281,58,1,0,0,0,282,283,5,47,\n0,0,283,60,1,0,0,0,284,285,5,37,0,0,285,62,1,0,0,0,286,287,5,94,0,0,287,\n64,1,0,0,0,288,289,5,33,0,0,289,66,1,0,0,0,290,291,5,59,0,0,291,68,1,0,0,\n0,292,293,5,44,0,0,293,70,1,0,0,0,294,295,5,61,0,0,295,72,1,0,0,0,296,297,\n5,40,0,0,297,74,1,0,0,0,298,299,5,41,0,0,299,76,1,0,0,0,300,301,5,123,0,\n0,301,78,1,0,0,0,302,303,5,125,0,0,303,80,1,0,0,0,304,305,5,116,0,0,305,\n306,5,114,0,0,306,307,5,117,0,0,307,308,5,101,0,0,308,82,1,0,0,0,309,310,\n5,102,0,0,310,311,5,97,0,0,311,312,5,108,0,0,312,313,5,115,0,0,313,314,5,\n101,0,0,314,84,1,0,0,0,315,316,5,110,0,0,316,317,5,105,0,0,317,323,5,108,\n0,0,318,319,5,110,0,0,319,320,5,117,0,0,320,321,5,108,0,0,321,323,5,108,\n0,0,322,315,1,0,0,0,322,318,1,0,0,0,323,86,1,0,0,0,324,325,5,105,0,0,325,\n326,5,102,0,0,326,88,1,0,0,0,327,328,5,101,0,0,328,329,5,108,0,0,329,330,\n5,115,0,0,330,331,5,101,0,0,331,90,1,0,0,0,332,333,5,119,0,0,333,334,5,104,\n0,0,334,335,5,105,0,0,335,336,5,108,0,0,336,359,5,101,0,0,337,338,5,102,\n0,0,338,339,5,111,0,0,339,359,5,114,0,0,340,341,5,102,0,0,341,342,5,111,\n0,0,342,343,5,114,0,0,343,344,5,101,0,0,344,345,5,97,0,0,345,346,5,99,0,\n0,346,359,5,104,0,0,347,348,5,102,0,0,348,349,5,111,0,0,349,350,5,114,0,\n0,350,351,5,69,0,0,351,352,5,97,0,0,352,353,5,99,0,0,353,359,5,104,0,0,354,\n355,5,108,0,0,355,356,5,111,0,0,356,357,5,111,0,0,357,359,5,112,0,0,358,\n332,1,0,0,0,358,337,1,0,0,0,358,340,1,0,0,0,358,347,1,0,0,0,358,354,1,0,\n0,0,359,92,1,0,0,0,360,361,5,114,0,0,361,362,5,101,0,0,362,363,5,116,0,0,\n363,364,5,117,0,0,364,365,5,114,0,0,365,366,5,110,0,0,366,94,1,0,0,0,367,\n368,5,110,0,0,368,369,5,101,0,0,369,370,5,119,0,0,370,96,1,0,0,0,371,372,\n5,112,0,0,372,373,5,97,0,0,373,374,5,114,0,0,374,98,1,0,0,0,375,376,5,103,\n0,0,376,377,5,114,0,0,377,378,5,111,0,0,378,379,5,117,0,0,379,380,5,112,\n0,0,380,100,1,0,0,0,381,382,5,111,0,0,382,383,5,112,0,0,383,384,5,116,0,\n0,384,102,1,0,0,0,385,386,5,99,0,0,386,387,5,114,0,0,387,388,5,105,0,0,388,\n389,5,116,0,0,389,390,5,105,0,0,390,391,5,99,0,0,391,392,5,97,0,0,392,393,\n5,108,0,0,393,104,1,0,0,0,394,395,5,115,0,0,395,396,5,101,0,0,396,397,5,\n99,0,0,397,398,5,116,0,0,398,399,5,105,0,0,399,400,5,111,0,0,400,407,5,110,\n0,0,401,402,5,102,0,0,402,403,5,114,0,0,403,404,5,97,0,0,404,405,5,109,0,\n0,405,407,5,101,0,0,406,394,1,0,0,0,406,401,1,0,0,0,407,106,1,0,0,0,408,\n409,5,114,0,0,409,410,5,101,0,0,410,411,5,102,0,0,411,108,1,0,0,0,412,413,\n5,97,0,0,413,414,5,115,0,0,414,110,1,0,0,0,415,416,5,116,0,0,416,417,5,114,\n0,0,417,418,5,121,0,0,418,112,1,0,0,0,419,420,5,99,0,0,420,421,5,97,0,0,\n421,422,5,116,0,0,422,423,5,99,0,0,423,424,5,104,0,0,424,114,1,0,0,0,425,\n426,5,102,0,0,426,427,5,105,0,0,427,428,5,110,0,0,428,429,5,97,0,0,429,430,\n5,108,0,0,430,431,5,108,0,0,431,432,5,121,0,0,432,116,1,0,0,0,433,434,5,\n105,0,0,434,435,5,110,0,0,435,118,1,0,0,0,436,437,5,64,0,0,437,438,5,83,\n0,0,438,439,5,116,0,0,439,440,5,97,0,0,440,441,5,114,0,0,441,442,5,116,0,\n0,442,443,5,101,0,0,443,453,5,114,0,0,444,445,5,64,0,0,445,446,5,115,0,0,\n446,447,5,116,0,0,447,448,5,97,0,0,448,449,5,114,0,0,449,450,5,116,0,0,450,\n451,5,101,0,0,451,453,5,114,0,0,452,436,1,0,0,0,452,444,1,0,0,0,453,120,\n1,0,0,0,454,455,5,64,0,0,455,456,5,82,0,0,456,457,5,101,0,0,457,458,5,116,\n0,0,458,459,5,117,0,0,459,460,5,114,0,0,460,481,5,110,0,0,461,462,5,64,0,\n0,462,463,5,114,0,0,463,464,5,101,0,0,464,465,5,116,0,0,465,466,5,117,0,\n0,466,467,5,114,0,0,467,481,5,110,0,0,468,469,5,64,0,0,469,470,5,82,0,0,\n470,471,5,101,0,0,471,472,5,112,0,0,472,473,5,108,0,0,473,481,5,121,0,0,\n474,475,5,64,0,0,475,476,5,114,0,0,476,477,5,101,0,0,477,478,5,112,0,0,478,\n479,5,108,0,0,479,481,5,121,0,0,480,454,1,0,0,0,480,461,1,0,0,0,480,468,\n1,0,0,0,480,474,1,0,0,0,481,122,1,0,0,0,482,486,5,64,0,0,483,485,7,3,0,0,\n484,483,1,0,0,0,485,488,1,0,0,0,486,484,1,0,0,0,486,487,1,0,0,0,487,124,\n1,0,0,0,488,486,1,0,0,0,489,490,5,46,0,0,490,126,1,0,0,0,491,495,7,4,0,0,\n492,494,7,5,0,0,493,492,1,0,0,0,494,497,1,0,0,0,495,493,1,0,0,0,495,496,\n1,0,0,0,496,128,1,0,0,0,497,495,1,0,0,0,498,500,7,6,0,0,499,498,1,0,0,0,\n500,501,1,0,0,0,501,499,1,0,0,0,501,502,1,0,0,0,502,130,1,0,0,0,503,504,\n7,7,0,0,504,132,1,0,0,0,505,507,3,131,64,0,506,505,1,0,0,0,507,508,1,0,0,\n0,508,506,1,0,0,0,508,509,1,0,0,0,509,134,1,0,0,0,510,512,3,131,64,0,511,\n510,1,0,0,0,512,513,1,0,0,0,513,511,1,0,0,0,513,514,1,0,0,0,514,515,1,0,\n0,0,515,519,5,46,0,0,516,518,3,131,64,0,517,516,1,0,0,0,518,521,1,0,0,0,\n519,517,1,0,0,0,519,520,1,0,0,0,520,529,1,0,0,0,521,519,1,0,0,0,522,524,\n5,46,0,0,523,525,3,131,64,0,524,523,1,0,0,0,525,526,1,0,0,0,526,524,1,0,\n0,0,526,527,1,0,0,0,527,529,1,0,0,0,528,511,1,0,0,0,528,522,1,0,0,0,529,\n136,1,0,0,0,530,533,5,36,0,0,531,534,3,133,65,0,532,534,3,135,66,0,533,531,\n1,0,0,0,533,532,1,0,0,0,534,138,1,0,0,0,535,538,3,133,65,0,536,538,3,135,\n66,0,537,535,1,0,0,0,537,536,1,0,0,0,538,539,1,0,0,0,539,540,3,129,63,0,\n540,140,1,0,0,0,541,547,5,34,0,0,542,543,5,34,0,0,543,546,5,34,0,0,544,546,\n8,8,0,0,545,542,1,0,0,0,545,544,1,0,0,0,546,549,1,0,0,0,547,545,1,0,0,0,\n547,548,1,0,0,0,548,550,1,0,0,0,549,547,1,0,0,0,550,551,5,34,0,0,551,142,\n1,0,0,0,552,558,5,34,0,0,553,554,5,34,0,0,554,557,5,34,0,0,555,557,8,8,0,\n0,556,553,1,0,0,0,556,555,1,0,0,0,557,560,1,0,0,0,558,556,1,0,0,0,558,559,\n1,0,0,0,559,144,1,0,0,0,560,558,1,0,0,0,561,562,7,9,0,0,562,563,1,0,0,0,\n563,564,6,71,0,0,564,146,1,0,0,0,565,566,5,47,0,0,566,567,5,47,0,0,567,571,\n1,0,0,0,568,570,8,9,0,0,569,568,1,0,0,0,570,573,1,0,0,0,571,569,1,0,0,0,\n571,572,1,0,0,0,572,574,1,0,0,0,573,571,1,0,0,0,574,575,6,72,4,0,575,148,\n1,0,0,0,576,577,9,0,0,0,577,150,1,0,0,0,578,582,4,74,1,0,579,581,3,3,0,0,\n580,579,1,0,0,0,581,584,1,0,0,0,582,580,1,0,0,0,582,583,1,0,0,0,583,585,\n1,0,0,0,584,582,1,0,0,0,585,586,5,61,0,0,586,587,5,61,0,0,587,591,1,0,0,\n0,588,590,8,9,0,0,589,588,1,0,0,0,590,593,1,0,0,0,591,589,1,0,0,0,591,592,\n1,0,0,0,592,152,1,0,0,0,593,591,1,0,0,0,594,596,8,9,0,0,595,594,1,0,0,0,\n596,597,1,0,0,0,597,595,1,0,0,0,597,598,1,0,0,0,598,154,1,0,0,0,599,600,\n7,9,0,0,600,601,1,0,0,0,601,602,6,76,5,0,602,156,1,0,0,0,603,605,8,9,0,0,\n604,603,1,0,0,0,605,606,1,0,0,0,606,604,1,0,0,0,606,607,1,0,0,0,607,158,\n1,0,0,0,608,609,7,9,0,0,609,610,1,0,0,0,610,611,6,78,5,0,611,160,1,0,0,0,\n30,0,1,2,166,238,245,322,358,406,452,480,486,495,501,508,513,519,526,528,\n533,537,545,547,556,558,571,582,591,597,606,6,0,1,0,0,3,0,5,2,0,5,1,0,0,\n2,0,4,0,0];\n\n\nconst atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nconst decisionsToDFA = atn.decisionToState.map( (ds, index) => new antlr4.dfa.DFA(ds, index) );\n\nexport default class sequenceLexer extends antlr4.Lexer {\n\n static grammarFileName = \"sequenceLexer.g4\";\n static channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\", \"COMMENT_CHANNEL\", \n \"MODIFIER_CHANNEL\" ];\n\tstatic modeNames = [ \"DEFAULT_MODE\", \"EVENT\", \"TITLE_MODE\" ];\n\tstatic literalNames = [ null, null, \"'const'\", \"'readonly'\", \"'static'\", \n \"'await'\", null, \"':'\", \"'<<'\", \"'>>'\", \"'-->'\", \n \"'->'\", null, null, \"'['\", \"']'\", \"'||'\", \"'&&'\", \n \"'=='\", \"'!='\", \"'>'\", \"'<'\", \"'>='\", \"'<='\", \"'+'\", \n \"'-'\", \"'*'\", \"'/'\", \"'%'\", \"'^'\", \"'!'\", \"';'\", \n \"','\", \"'='\", \"'('\", \"')'\", \"'{'\", \"'}'\", \"'true'\", \n \"'false'\", null, \"'if'\", \"'else'\", null, \"'return'\", \n \"'new'\", \"'par'\", \"'group'\", \"'opt'\", \"'critical'\", \n null, \"'ref'\", \"'as'\", \"'try'\", \"'catch'\", \"'finally'\", \n \"'in'\", null, null, null, \"'.'\" ];\n\tstatic symbolicNames = [ null, \"WS\", \"CONSTANT\", \"READONLY\", \"STATIC\", \n \"AWAIT\", \"TITLE\", \"COL\", \"SOPEN\", \"SCLOSE\", \"RETURN_ARROW\", \n \"ARROW\", \"COLOR\", \"EMOJI_SHORTCODE\", \"LBRACKET\", \n \"RBRACKET\", \"OR\", \"AND\", \"EQ\", \"NEQ\", \"GT\", \"LT\", \n \"GTEQ\", \"LTEQ\", \"PLUS\", \"MINUS\", \"MULT\", \"DIV\", \n \"MOD\", \"POW\", \"NOT\", \"SCOL\", \"COMMA\", \"ASSIGN\", \n \"OPAR\", \"CPAR\", \"OBRACE\", \"CBRACE\", \"TRUE\", \"FALSE\", \n \"NIL\", \"IF\", \"ELSE\", \"WHILE\", \"RETURN\", \"NEW\", \n \"PAR\", \"GROUP\", \"OPT\", \"CRITICAL\", \"SECTION\", \n \"REF\", \"AS\", \"TRY\", \"CATCH\", \"FINALLY\", \"IN\", \n \"STARTER_LXR\", \"ANNOTATION_RET\", \"ANNOTATION\", \n \"DOT\", \"ID\", \"INT\", \"FLOAT\", \"MONEY\", \"NUMBER_UNIT\", \n \"CSTRING\", \"USTRING\", \"CR\", \"COMMENT\", \"OTHER\", \n \"DIVIDER\", \"EVENT_PAYLOAD_LXR\", \"EVENT_END\", \"TITLE_CONTENT\", \n \"TITLE_END\" ];\n\tstatic ruleNames = [ \"HWS\", \"WS\", \"CONSTANT\", \"READONLY\", \"STATIC\", \"AWAIT\", \n \"TITLE\", \"COL\", \"SOPEN\", \"SCLOSE\", \"RETURN_ARROW\", \n \"ARROW\", \"HEX\", \"COLOR\", \"EMOJI_SHORTCODE\", \"LBRACKET\", \n \"RBRACKET\", \"OR\", \"AND\", \"EQ\", \"NEQ\", \"GT\", \"LT\", \n \"GTEQ\", \"LTEQ\", \"PLUS\", \"MINUS\", \"MULT\", \"DIV\", \"MOD\", \n \"POW\", \"NOT\", \"SCOL\", \"COMMA\", \"ASSIGN\", \"OPAR\", \"CPAR\", \n \"OBRACE\", \"CBRACE\", \"TRUE\", \"FALSE\", \"NIL\", \"IF\", \n \"ELSE\", \"WHILE\", \"RETURN\", \"NEW\", \"PAR\", \"GROUP\", \n \"OPT\", \"CRITICAL\", \"SECTION\", \"REF\", \"AS\", \"TRY\", \n \"CATCH\", \"FINALLY\", \"IN\", \"STARTER_LXR\", \"ANNOTATION_RET\", \n \"ANNOTATION\", \"DOT\", \"ID\", \"UNIT\", \"DIGIT\", \"INT\", \n \"FLOAT\", \"MONEY\", \"NUMBER_UNIT\", \"CSTRING\", \"USTRING\", \n \"CR\", \"COMMENT\", \"OTHER\", \"DIVIDER\", \"EVENT_PAYLOAD_LXR\", \n \"EVENT_END\", \"TITLE_CONTENT\", \"TITLE_END\" ];\n\n constructor(input) {\n super(input)\n this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n\n // 1. title must be at the beginning\n // 2. title must not be followed by '.', '(', '='\n this.isTitle = function() {\n // Check if 'title' appears at the beginning (only whitespace/comments before it)\n const currentPos = this._tokenStartCharIndex;\n const preceding = this._input.getText(0, currentPos - 1)\n .replace(/\\/\\/[^\\n]*(?:\\n|$)/g, '')\n .trim();\n if (preceding.length) return false;\n\n // Look ahead past 'title' and any whitespace to check what follows\n const SPACE = 32, TAB = 9, EOF = -1, DOT = 46, EQUALS = 61, OPEN_PAREN = 40;\n let pos = 6, next = this._input.LA(pos);\n\n // Skip past any whitespace\n while (next === SPACE || next === TAB) {\n ++pos;\n next = this._input.LA(pos);\n }\n\n // Title directive if EOF or not followed by '.', '(', '='\n return next === EOF || (next !== DOT && next !== EQUALS && next !== OPEN_PAREN);\n };\n\n }\n\n get atn() {\n return atn;\n }\n}\n\nsequenceLexer.EOF = antlr4.Token.EOF;\nsequenceLexer.WS = 1;\nsequenceLexer.CONSTANT = 2;\nsequenceLexer.READONLY = 3;\nsequenceLexer.STATIC = 4;\nsequenceLexer.AWAIT = 5;\nsequenceLexer.TITLE = 6;\nsequenceLexer.COL = 7;\nsequenceLexer.SOPEN = 8;\nsequenceLexer.SCLOSE = 9;\nsequenceLexer.RETURN_ARROW = 10;\nsequenceLexer.ARROW = 11;\nsequenceLexer.COLOR = 12;\nsequenceLexer.EMOJI_SHORTCODE = 13;\nsequenceLexer.LBRACKET = 14;\nsequenceLexer.RBRACKET = 15;\nsequenceLexer.OR = 16;\nsequenceLexer.AND = 17;\nsequenceLexer.EQ = 18;\nsequenceLexer.NEQ = 19;\nsequenceLexer.GT = 20;\nsequenceLexer.LT = 21;\nsequenceLexer.GTEQ = 22;\nsequenceLexer.LTEQ = 23;\nsequenceLexer.PLUS = 24;\nsequenceLexer.MINUS = 25;\nsequenceLexer.MULT = 26;\nsequenceLexer.DIV = 27;\nsequenceLexer.MOD = 28;\nsequenceLexer.POW = 29;\nsequenceLexer.NOT = 30;\nsequenceLexer.SCOL = 31;\nsequenceLexer.COMMA = 32;\nsequenceLexer.ASSIGN = 33;\nsequenceLexer.OPAR = 34;\nsequenceLexer.CPAR = 35;\nsequenceLexer.OBRACE = 36;\nsequenceLexer.CBRACE = 37;\nsequenceLexer.TRUE = 38;\nsequenceLexer.FALSE = 39;\nsequenceLexer.NIL = 40;\nsequenceLexer.IF = 41;\nsequenceLexer.ELSE = 42;\nsequenceLexer.WHILE = 43;\nsequenceLexer.RETURN = 44;\nsequenceLexer.NEW = 45;\nsequenceLexer.PAR = 46;\nsequenceLexer.GROUP = 47;\nsequenceLexer.OPT = 48;\nsequenceLexer.CRITICAL = 49;\nsequenceLexer.SECTION = 50;\nsequenceLexer.REF = 51;\nsequenceLexer.AS = 52;\nsequenceLexer.TRY = 53;\nsequenceLexer.CATCH = 54;\nsequenceLexer.FINALLY = 55;\nsequenceLexer.IN = 56;\nsequenceLexer.STARTER_LXR = 57;\nsequenceLexer.ANNOTATION_RET = 58;\nsequenceLexer.ANNOTATION = 59;\nsequenceLexer.DOT = 60;\nsequenceLexer.ID = 61;\nsequenceLexer.INT = 62;\nsequenceLexer.FLOAT = 63;\nsequenceLexer.MONEY = 64;\nsequenceLexer.NUMBER_UNIT = 65;\nsequenceLexer.CSTRING = 66;\nsequenceLexer.USTRING = 67;\nsequenceLexer.CR = 68;\nsequenceLexer.COMMENT = 69;\nsequenceLexer.OTHER = 70;\nsequenceLexer.DIVIDER = 71;\nsequenceLexer.EVENT_PAYLOAD_LXR = 72;\nsequenceLexer.EVENT_END = 73;\nsequenceLexer.TITLE_CONTENT = 74;\nsequenceLexer.TITLE_END = 75;\n\nsequenceLexer.COMMENT_CHANNEL = 2;\nsequenceLexer.MODIFIER_CHANNEL = 3;\n\nsequenceLexer.EVENT = 1;\nsequenceLexer.TITLE_MODE = 2;\n\n\nsequenceLexer.prototype.sempred = function(localctx, ruleIndex, predIndex) {\n\tswitch (ruleIndex) {\n\t\tcase 6:\n\t\t\treturn this.TITLE_sempred(localctx, predIndex);\n\t\tcase 74:\n\t\t\treturn this.DIVIDER_sempred(localctx, predIndex);\n \tdefault:\n \t\tthrow \"No registered predicate for:\" + ruleIndex;\n }\n};\n\nsequenceLexer.prototype.TITLE_sempred = function(localctx, predIndex) {\n\tswitch(predIndex) {\n\t\tcase 0:\n\t\t\treturn this.isTitle();\n\t\tdefault:\n\t\t\tthrow \"No predicate with index:\" + predIndex;\n\t}\n};\n\nsequenceLexer.prototype.DIVIDER_sempred = function(localctx, predIndex) {\n\tswitch(predIndex) {\n\t\tcase 1:\n\t\t\treturn this.column === 0;\n\t\tdefault:\n\t\t\tthrow \"No predicate with index:\" + predIndex;\n\t}\n};\n\n\n\n\n","// Generated from java-escape by ANTLR 4.11.1\n// jshint ignore: start\nimport antlr4 from 'antlr4';\n\n// This class defines a complete listener for a parse tree produced by sequenceParser.\nexport default class sequenceParserListener extends antlr4.tree.ParseTreeListener {\n\n\t// Enter a parse tree produced by sequenceParser#prog.\n\tenterProg(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#prog.\n\texitProg(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#title.\n\tenterTitle(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#title.\n\texitTitle(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#head.\n\tenterHead(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#head.\n\texitHead(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#group.\n\tenterGroup(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#group.\n\texitGroup(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#starterExp.\n\tenterStarterExp(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#starterExp.\n\texitStarterExp(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#starter.\n\tenterStarter(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#starter.\n\texitStarter(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#participant.\n\tenterParticipant(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#participant.\n\texitParticipant(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#stereotype.\n\tenterStereotype(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#stereotype.\n\texitStereotype(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#label.\n\tenterLabel(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#label.\n\texitLabel(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#participantType.\n\tenterParticipantType(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#participantType.\n\texitParticipantType(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#name.\n\tenterName(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#name.\n\texitName(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#width.\n\tenterWidth(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#width.\n\texitWidth(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#emoji.\n\tenterEmoji(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#emoji.\n\texitEmoji(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#block.\n\tenterBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#block.\n\texitBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#ret.\n\tenterRet(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#ret.\n\texitRet(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#returnAsyncMessage.\n\tenterReturnAsyncMessage(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#returnAsyncMessage.\n\texitReturnAsyncMessage(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#divider.\n\tenterDivider(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#divider.\n\texitDivider(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#dividerNote.\n\tenterDividerNote(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#dividerNote.\n\texitDividerNote(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#stat.\n\tenterStat(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#stat.\n\texitStat(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#par.\n\tenterPar(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#par.\n\texitPar(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#opt.\n\tenterOpt(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#opt.\n\texitOpt(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#critical.\n\tenterCritical(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#critical.\n\texitCritical(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#section.\n\tenterSection(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#section.\n\texitSection(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#creation.\n\tenterCreation(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#creation.\n\texitCreation(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#ref.\n\tenterRef(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#ref.\n\texitRef(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#creationBody.\n\tenterCreationBody(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#creationBody.\n\texitCreationBody(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#message.\n\tenterMessage(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#message.\n\texitMessage(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#messageBody.\n\tenterMessageBody(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#messageBody.\n\texitMessageBody(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#fromTo.\n\tenterFromTo(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#fromTo.\n\texitFromTo(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#func.\n\tenterFunc(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#func.\n\texitFunc(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#from.\n\tenterFrom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#from.\n\texitFrom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#to.\n\tenterTo(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#to.\n\texitTo(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#signature.\n\tenterSignature(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#signature.\n\texitSignature(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#invocation.\n\tenterInvocation(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#invocation.\n\texitInvocation(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#assignment.\n\tenterAssignment(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#assignment.\n\texitAssignment(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#asyncMessage.\n\tenterAsyncMessage(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#asyncMessage.\n\texitAsyncMessage(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#content.\n\tenterContent(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#content.\n\texitContent(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#construct.\n\tenterConstruct(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#construct.\n\texitConstruct(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#type.\n\tenterType(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#type.\n\texitType(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#assignee.\n\tenterAssignee(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#assignee.\n\texitAssignee(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#methodName.\n\tenterMethodName(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#methodName.\n\texitMethodName(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#parameters.\n\tenterParameters(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#parameters.\n\texitParameters(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#parameter.\n\tenterParameter(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#parameter.\n\texitParameter(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#namedParameter.\n\tenterNamedParameter(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#namedParameter.\n\texitNamedParameter(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#declaration.\n\tenterDeclaration(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#declaration.\n\texitDeclaration(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#tcf.\n\tenterTcf(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#tcf.\n\texitTcf(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#tryBlock.\n\tenterTryBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#tryBlock.\n\texitTryBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#catchBlock.\n\tenterCatchBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#catchBlock.\n\texitCatchBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#finallyBlock.\n\tenterFinallyBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#finallyBlock.\n\texitFinallyBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#alt.\n\tenterAlt(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#alt.\n\texitAlt(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#ifBlock.\n\tenterIfBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#ifBlock.\n\texitIfBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#elseIfBlock.\n\tenterElseIfBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#elseIfBlock.\n\texitElseIfBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#elseBlock.\n\tenterElseBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#elseBlock.\n\texitElseBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#braceBlock.\n\tenterBraceBlock(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#braceBlock.\n\texitBraceBlock(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#loop.\n\tenterLoop(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#loop.\n\texitLoop(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#assignmentExpr.\n\tenterAssignmentExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#assignmentExpr.\n\texitAssignmentExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#funcExpr.\n\tenterFuncExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#funcExpr.\n\texitFuncExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#atomExpr.\n\tenterAtomExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#atomExpr.\n\texitAtomExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#orExpr.\n\tenterOrExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#orExpr.\n\texitOrExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#additiveExpr.\n\tenterAdditiveExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#additiveExpr.\n\texitAdditiveExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#relationalExpr.\n\tenterRelationalExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#relationalExpr.\n\texitRelationalExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#plusExpr.\n\tenterPlusExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#plusExpr.\n\texitPlusExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#notExpr.\n\tenterNotExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#notExpr.\n\texitNotExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#unaryMinusExpr.\n\tenterUnaryMinusExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#unaryMinusExpr.\n\texitUnaryMinusExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#creationExpr.\n\tenterCreationExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#creationExpr.\n\texitCreationExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#parenthesizedExpr.\n\tenterParenthesizedExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#parenthesizedExpr.\n\texitParenthesizedExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#multiplicationExpr.\n\tenterMultiplicationExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#multiplicationExpr.\n\texitMultiplicationExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#equalityExpr.\n\tenterEqualityExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#equalityExpr.\n\texitEqualityExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#andExpr.\n\tenterAndExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#andExpr.\n\texitAndExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#numberAtom.\n\tenterNumberAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#numberAtom.\n\texitNumberAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#numberUnitAtom.\n\tenterNumberUnitAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#numberUnitAtom.\n\texitNumberUnitAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#moneyAtom.\n\tenterMoneyAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#moneyAtom.\n\texitMoneyAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#booleanAtom.\n\tenterBooleanAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#booleanAtom.\n\texitBooleanAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#idAtom.\n\tenterIdAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#idAtom.\n\texitIdAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#stringAtom.\n\tenterStringAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#stringAtom.\n\texitStringAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#nilAtom.\n\tenterNilAtom(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#nilAtom.\n\texitNilAtom(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#parExpr.\n\tenterParExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#parExpr.\n\texitParExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#condition.\n\tenterCondition(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#condition.\n\texitCondition(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#inExpr.\n\tenterInExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#inExpr.\n\texitInExpr(ctx) {\n\t}\n\n\n\t// Enter a parse tree produced by sequenceParser#textExpr.\n\tenterTextExpr(ctx) {\n\t}\n\n\t// Exit a parse tree produced by sequenceParser#textExpr.\n\texitTextExpr(ctx) {\n\t}\n\n\n\n}","// Generated from java-escape by ANTLR 4.11.1\n// jshint ignore: start\nimport antlr4 from 'antlr4';\nimport sequenceParserListener from './sequenceParserListener.js';\nconst serializedATN = [4,1,75,654,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,\n4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,\n2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,\n20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,\n7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,\n34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,\n2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,\n49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,\n7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,1,0,3,0,124,8,0,1,0,1,0,3,0,\n128,8,0,1,0,1,0,1,0,1,0,3,0,134,8,0,1,0,3,0,137,8,0,1,0,1,0,1,0,3,0,142,\n8,0,1,1,1,1,3,1,146,8,1,1,1,3,1,149,8,1,1,2,1,2,4,2,153,8,2,11,2,12,2,154,\n1,2,1,2,5,2,159,8,2,10,2,12,2,162,9,2,1,2,3,2,165,8,2,1,3,1,3,3,3,169,8,\n3,1,3,1,3,5,3,173,8,3,10,3,12,3,176,9,3,1,3,3,3,179,8,3,3,3,181,8,3,1,4,\n1,4,1,4,3,4,186,8,4,1,4,3,4,189,8,4,1,4,3,4,192,8,4,1,5,1,5,1,6,3,6,197,\n8,6,1,6,3,6,200,8,6,1,6,3,6,203,8,6,1,6,1,6,3,6,207,8,6,1,6,3,6,210,8,6,\n1,6,3,6,213,8,6,1,6,1,6,3,6,217,8,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,226,\n8,7,1,7,1,7,3,7,230,8,7,3,7,232,8,7,1,8,1,8,1,8,3,8,237,8,8,1,9,1,9,1,10,\n1,10,1,11,1,11,1,12,1,12,1,12,1,12,1,12,3,12,250,8,12,1,13,4,13,253,8,13,\n11,13,12,13,254,1,14,1,14,3,14,259,8,14,1,14,3,14,262,8,14,1,14,1,14,1,14,\n3,14,267,8,14,1,14,1,14,3,14,271,8,14,3,14,273,8,14,1,15,1,15,1,15,1,15,\n1,15,3,15,280,8,15,1,15,1,15,1,15,3,15,285,8,15,3,15,287,8,15,1,16,1,16,\n1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,3,18,304,\n8,18,1,18,1,18,1,18,3,18,309,8,18,1,19,1,19,3,19,313,8,19,1,19,1,19,3,19,\n317,8,19,1,20,1,20,3,20,321,8,20,1,20,1,20,3,20,325,8,20,1,21,1,21,3,21,\n329,8,21,1,21,1,21,3,21,333,8,21,1,22,1,22,1,22,3,22,338,8,22,1,22,3,22,\n341,8,22,1,22,1,22,1,22,3,22,346,8,22,1,23,1,23,1,23,3,23,351,8,23,1,24,\n1,24,1,24,1,24,1,24,5,24,358,8,24,10,24,12,24,361,9,24,5,24,363,8,24,10,\n24,12,24,366,9,24,1,24,1,24,3,24,370,8,24,1,25,3,25,373,8,25,1,25,1,25,1,\n25,1,25,3,25,379,8,25,1,25,3,25,382,8,25,1,25,3,25,385,8,25,1,25,3,25,388,\n8,25,1,26,1,26,1,26,3,26,393,8,26,1,27,1,27,1,27,3,27,398,8,27,1,27,3,27,\n401,8,27,1,27,1,27,3,27,405,8,27,1,27,3,27,408,8,27,1,28,1,28,1,28,3,28,\n413,8,28,1,28,1,28,1,28,1,29,1,29,1,29,5,29,421,8,29,10,29,12,29,424,9,29,\n1,30,3,30,427,8,30,1,30,1,30,1,31,3,31,432,8,31,1,31,1,31,1,32,1,32,3,32,\n438,8,32,1,33,1,33,3,33,442,8,33,1,33,1,33,1,34,3,34,447,8,34,1,34,1,34,\n1,34,1,35,1,35,1,35,3,35,455,8,35,1,35,1,35,1,35,3,35,460,8,35,1,35,1,35,\n1,35,3,35,465,8,35,3,35,467,8,35,1,36,1,36,1,37,1,37,1,38,1,38,1,39,1,39,\n1,39,1,39,5,39,479,8,39,10,39,12,39,482,9,39,1,39,1,39,1,39,3,39,487,8,39,\n1,40,3,40,490,8,40,1,40,1,40,1,41,1,41,1,41,5,41,497,8,41,10,41,12,41,500,\n9,41,1,41,3,41,503,8,41,1,42,1,42,1,42,3,42,508,8,42,1,43,1,43,1,43,3,43,\n513,8,43,1,44,1,44,1,44,1,45,1,45,5,45,520,8,45,10,45,12,45,523,9,45,1,45,\n3,45,526,8,45,1,46,1,46,1,46,1,47,1,47,3,47,533,8,47,1,47,1,47,1,48,1,48,\n1,48,1,49,1,49,5,49,542,8,49,10,49,12,49,545,9,49,1,49,3,49,548,8,49,1,50,\n1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,53,1,53,3,53,564,\n8,53,1,53,1,53,1,54,1,54,3,54,570,8,54,1,54,3,54,573,8,54,1,55,1,55,1,55,\n1,55,1,55,1,55,1,55,1,55,1,55,3,55,584,8,55,1,55,1,55,1,55,1,55,1,55,1,55,\n1,55,1,55,1,55,3,55,595,8,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,\n1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,5,55,618,8,55,\n10,55,12,55,621,9,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,630,8,56,1,\n57,1,57,3,57,634,8,57,1,57,3,57,637,8,57,1,58,1,58,1,58,1,58,3,58,643,8,\n58,1,59,1,59,1,59,1,59,1,60,4,60,650,8,60,11,60,12,60,651,1,60,0,1,110,61,\n0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,\n52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,\n100,102,104,106,108,110,112,114,116,118,120,0,11,2,0,8,8,21,21,2,0,9,9,20,\n20,2,0,61,61,66,67,2,0,11,11,25,25,1,0,26,28,1,0,24,25,1,0,20,23,1,0,18,\n19,1,0,62,63,1,0,38,39,1,0,66,67,733,0,141,1,0,0,0,2,143,1,0,0,0,4,164,1,\n0,0,0,6,166,1,0,0,0,8,191,1,0,0,0,10,193,1,0,0,0,12,216,1,0,0,0,14,231,1,\n0,0,0,16,236,1,0,0,0,18,238,1,0,0,0,20,240,1,0,0,0,22,242,1,0,0,0,24,249,\n1,0,0,0,26,252,1,0,0,0,28,272,1,0,0,0,30,286,1,0,0,0,32,288,1,0,0,0,34,290,\n1,0,0,0,36,308,1,0,0,0,38,316,1,0,0,0,40,324,1,0,0,0,42,332,1,0,0,0,44,345,\n1,0,0,0,46,347,1,0,0,0,48,352,1,0,0,0,50,387,1,0,0,0,52,389,1,0,0,0,54,407,\n1,0,0,0,56,412,1,0,0,0,58,417,1,0,0,0,60,426,1,0,0,0,62,431,1,0,0,0,64,435,\n1,0,0,0,66,439,1,0,0,0,68,446,1,0,0,0,70,466,1,0,0,0,72,468,1,0,0,0,74,470,\n1,0,0,0,76,472,1,0,0,0,78,486,1,0,0,0,80,489,1,0,0,0,82,493,1,0,0,0,84,507,\n1,0,0,0,86,509,1,0,0,0,88,514,1,0,0,0,90,517,1,0,0,0,92,527,1,0,0,0,94,530,\n1,0,0,0,96,536,1,0,0,0,98,539,1,0,0,0,100,549,1,0,0,0,102,553,1,0,0,0,104,\n558,1,0,0,0,106,561,1,0,0,0,108,567,1,0,0,0,110,594,1,0,0,0,112,629,1,0,\n0,0,114,631,1,0,0,0,116,642,1,0,0,0,118,644,1,0,0,0,120,649,1,0,0,0,122,\n124,3,2,1,0,123,122,1,0,0,0,123,124,1,0,0,0,124,125,1,0,0,0,125,142,5,0,\n0,1,126,128,3,2,1,0,127,126,1,0,0,0,127,128,1,0,0,0,128,129,1,0,0,0,129,\n130,3,4,2,0,130,131,5,0,0,1,131,142,1,0,0,0,132,134,3,2,1,0,133,132,1,0,\n0,0,133,134,1,0,0,0,134,136,1,0,0,0,135,137,3,4,2,0,136,135,1,0,0,0,136,\n137,1,0,0,0,137,138,1,0,0,0,138,139,3,26,13,0,139,140,5,0,0,1,140,142,1,\n0,0,0,141,123,1,0,0,0,141,127,1,0,0,0,141,133,1,0,0,0,142,1,1,0,0,0,143,\n145,5,6,0,0,144,146,5,74,0,0,145,144,1,0,0,0,145,146,1,0,0,0,146,148,1,0,\n0,0,147,149,5,75,0,0,148,147,1,0,0,0,148,149,1,0,0,0,149,3,1,0,0,0,150,153,\n3,6,3,0,151,153,3,12,6,0,152,150,1,0,0,0,152,151,1,0,0,0,153,154,1,0,0,0,\n154,152,1,0,0,0,154,155,1,0,0,0,155,165,1,0,0,0,156,159,3,6,3,0,157,159,\n3,12,6,0,158,156,1,0,0,0,158,157,1,0,0,0,159,162,1,0,0,0,160,158,1,0,0,0,\n160,161,1,0,0,0,161,163,1,0,0,0,162,160,1,0,0,0,163,165,3,8,4,0,164,152,\n1,0,0,0,164,160,1,0,0,0,165,5,1,0,0,0,166,168,5,47,0,0,167,169,3,20,10,0,\n168,167,1,0,0,0,168,169,1,0,0,0,169,180,1,0,0,0,170,174,5,36,0,0,171,173,\n3,12,6,0,172,171,1,0,0,0,173,176,1,0,0,0,174,172,1,0,0,0,174,175,1,0,0,0,\n175,178,1,0,0,0,176,174,1,0,0,0,177,179,5,37,0,0,178,177,1,0,0,0,178,179,\n1,0,0,0,179,181,1,0,0,0,180,170,1,0,0,0,180,181,1,0,0,0,181,7,1,0,0,0,182,\n188,5,57,0,0,183,185,5,34,0,0,184,186,3,10,5,0,185,184,1,0,0,0,185,186,1,\n0,0,0,186,187,1,0,0,0,187,189,5,35,0,0,188,183,1,0,0,0,188,189,1,0,0,0,189,\n192,1,0,0,0,190,192,5,59,0,0,191,182,1,0,0,0,191,190,1,0,0,0,192,9,1,0,0,\n0,193,194,3,20,10,0,194,11,1,0,0,0,195,197,3,18,9,0,196,195,1,0,0,0,196,\n197,1,0,0,0,197,199,1,0,0,0,198,200,3,14,7,0,199,198,1,0,0,0,199,200,1,0,\n0,0,200,202,1,0,0,0,201,203,3,24,12,0,202,201,1,0,0,0,202,203,1,0,0,0,203,\n204,1,0,0,0,204,206,3,20,10,0,205,207,3,22,11,0,206,205,1,0,0,0,206,207,\n1,0,0,0,207,209,1,0,0,0,208,210,3,16,8,0,209,208,1,0,0,0,209,210,1,0,0,0,\n210,212,1,0,0,0,211,213,5,12,0,0,212,211,1,0,0,0,212,213,1,0,0,0,213,217,\n1,0,0,0,214,217,3,14,7,0,215,217,3,18,9,0,216,196,1,0,0,0,216,214,1,0,0,\n0,216,215,1,0,0,0,217,13,1,0,0,0,218,219,5,8,0,0,219,220,3,20,10,0,220,221,\n5,9,0,0,221,232,1,0,0,0,222,223,5,8,0,0,223,225,3,20,10,0,224,226,5,20,0,\n0,225,224,1,0,0,0,225,226,1,0,0,0,226,232,1,0,0,0,227,229,7,0,0,0,228,230,\n7,1,0,0,229,228,1,0,0,0,229,230,1,0,0,0,230,232,1,0,0,0,231,218,1,0,0,0,\n231,222,1,0,0,0,231,227,1,0,0,0,232,15,1,0,0,0,233,234,5,52,0,0,234,237,\n3,20,10,0,235,237,5,52,0,0,236,233,1,0,0,0,236,235,1,0,0,0,237,17,1,0,0,\n0,238,239,5,59,0,0,239,19,1,0,0,0,240,241,7,2,0,0,241,21,1,0,0,0,242,243,\n5,62,0,0,243,23,1,0,0,0,244,245,5,14,0,0,245,246,3,20,10,0,246,247,5,15,\n0,0,247,250,1,0,0,0,248,250,5,13,0,0,249,244,1,0,0,0,249,248,1,0,0,0,250,\n25,1,0,0,0,251,253,3,36,18,0,252,251,1,0,0,0,253,254,1,0,0,0,254,252,1,0,\n0,0,254,255,1,0,0,0,255,27,1,0,0,0,256,258,5,44,0,0,257,259,3,110,55,0,258,\n257,1,0,0,0,258,259,1,0,0,0,259,261,1,0,0,0,260,262,5,31,0,0,261,260,1,0,\n0,0,261,262,1,0,0,0,262,273,1,0,0,0,263,264,5,58,0,0,264,266,3,70,35,0,265,\n267,5,73,0,0,266,265,1,0,0,0,266,267,1,0,0,0,267,273,1,0,0,0,268,270,3,30,\n15,0,269,271,5,73,0,0,270,269,1,0,0,0,270,271,1,0,0,0,271,273,1,0,0,0,272,\n256,1,0,0,0,272,263,1,0,0,0,272,268,1,0,0,0,273,29,1,0,0,0,274,275,3,60,\n30,0,275,276,5,10,0,0,276,277,3,62,31,0,277,279,5,7,0,0,278,280,3,72,36,\n0,279,278,1,0,0,0,279,280,1,0,0,0,280,287,1,0,0,0,281,282,3,60,30,0,282,\n284,5,10,0,0,283,285,3,62,31,0,284,283,1,0,0,0,284,285,1,0,0,0,285,287,1,\n0,0,0,286,274,1,0,0,0,286,281,1,0,0,0,287,31,1,0,0,0,288,289,3,34,17,0,289,\n33,1,0,0,0,290,291,5,71,0,0,291,35,1,0,0,0,292,309,3,98,49,0,293,309,3,38,\n19,0,294,309,3,40,20,0,295,309,3,42,21,0,296,309,3,44,22,0,297,309,3,48,\n24,0,298,309,3,108,54,0,299,309,3,46,23,0,300,309,3,52,26,0,301,303,3,70,\n35,0,302,304,5,73,0,0,303,302,1,0,0,0,303,304,1,0,0,0,304,309,1,0,0,0,305,\n309,3,28,14,0,306,309,3,32,16,0,307,309,3,90,45,0,308,292,1,0,0,0,308,293,\n1,0,0,0,308,294,1,0,0,0,308,295,1,0,0,0,308,296,1,0,0,0,308,297,1,0,0,0,\n308,298,1,0,0,0,308,299,1,0,0,0,308,300,1,0,0,0,308,301,1,0,0,0,308,305,\n1,0,0,0,308,306,1,0,0,0,308,307,1,0,0,0,309,37,1,0,0,0,310,312,5,46,0,0,\n311,313,3,114,57,0,312,311,1,0,0,0,312,313,1,0,0,0,313,314,1,0,0,0,314,317,\n3,106,53,0,315,317,5,46,0,0,316,310,1,0,0,0,316,315,1,0,0,0,317,39,1,0,0,\n0,318,320,5,48,0,0,319,321,3,114,57,0,320,319,1,0,0,0,320,321,1,0,0,0,321,\n322,1,0,0,0,322,325,3,106,53,0,323,325,5,48,0,0,324,318,1,0,0,0,324,323,\n1,0,0,0,325,41,1,0,0,0,326,328,5,49,0,0,327,329,3,114,57,0,328,327,1,0,0,\n0,328,329,1,0,0,0,329,330,1,0,0,0,330,333,3,106,53,0,331,333,5,49,0,0,332,\n326,1,0,0,0,332,331,1,0,0,0,333,43,1,0,0,0,334,340,5,50,0,0,335,337,5,34,\n0,0,336,338,3,112,56,0,337,336,1,0,0,0,337,338,1,0,0,0,338,339,1,0,0,0,339,\n341,5,35,0,0,340,335,1,0,0,0,340,341,1,0,0,0,341,342,1,0,0,0,342,346,3,106,\n53,0,343,346,3,106,53,0,344,346,5,50,0,0,345,334,1,0,0,0,345,343,1,0,0,0,\n345,344,1,0,0,0,346,45,1,0,0,0,347,350,3,50,25,0,348,351,5,31,0,0,349,351,\n3,106,53,0,350,348,1,0,0,0,350,349,1,0,0,0,350,351,1,0,0,0,351,47,1,0,0,\n0,352,353,5,51,0,0,353,354,5,34,0,0,354,364,3,20,10,0,355,359,5,32,0,0,356,\n358,3,20,10,0,357,356,1,0,0,0,358,361,1,0,0,0,359,357,1,0,0,0,359,360,1,\n0,0,0,360,363,1,0,0,0,361,359,1,0,0,0,362,355,1,0,0,0,363,366,1,0,0,0,364,\n362,1,0,0,0,364,365,1,0,0,0,365,367,1,0,0,0,366,364,1,0,0,0,367,369,5,35,\n0,0,368,370,5,31,0,0,369,368,1,0,0,0,369,370,1,0,0,0,370,49,1,0,0,0,371,\n373,3,68,34,0,372,371,1,0,0,0,372,373,1,0,0,0,373,374,1,0,0,0,374,375,5,\n45,0,0,375,381,3,74,37,0,376,378,5,34,0,0,377,379,3,82,41,0,378,377,1,0,\n0,0,378,379,1,0,0,0,379,380,1,0,0,0,380,382,5,35,0,0,381,376,1,0,0,0,381,\n382,1,0,0,0,382,388,1,0,0,0,383,385,3,68,34,0,384,383,1,0,0,0,384,385,1,\n0,0,0,385,386,1,0,0,0,386,388,5,45,0,0,387,372,1,0,0,0,387,384,1,0,0,0,388,\n51,1,0,0,0,389,392,3,54,27,0,390,393,5,31,0,0,391,393,3,106,53,0,392,390,\n1,0,0,0,392,391,1,0,0,0,392,393,1,0,0,0,393,53,1,0,0,0,394,400,3,68,34,0,\n395,397,3,56,28,0,396,398,3,58,29,0,397,396,1,0,0,0,397,398,1,0,0,0,398,\n401,1,0,0,0,399,401,3,58,29,0,400,395,1,0,0,0,400,399,1,0,0,0,400,401,1,\n0,0,0,401,408,1,0,0,0,402,404,3,56,28,0,403,405,3,58,29,0,404,403,1,0,0,\n0,404,405,1,0,0,0,405,408,1,0,0,0,406,408,3,58,29,0,407,394,1,0,0,0,407,\n402,1,0,0,0,407,406,1,0,0,0,408,55,1,0,0,0,409,410,3,60,30,0,410,411,5,11,\n0,0,411,413,1,0,0,0,412,409,1,0,0,0,412,413,1,0,0,0,413,414,1,0,0,0,414,\n415,3,62,31,0,415,416,5,60,0,0,416,57,1,0,0,0,417,422,3,64,32,0,418,419,\n5,60,0,0,419,421,3,64,32,0,420,418,1,0,0,0,421,424,1,0,0,0,422,420,1,0,0,\n0,422,423,1,0,0,0,423,59,1,0,0,0,424,422,1,0,0,0,425,427,3,24,12,0,426,425,\n1,0,0,0,426,427,1,0,0,0,427,428,1,0,0,0,428,429,3,20,10,0,429,61,1,0,0,0,\n430,432,3,24,12,0,431,430,1,0,0,0,431,432,1,0,0,0,432,433,1,0,0,0,433,434,\n3,20,10,0,434,63,1,0,0,0,435,437,3,80,40,0,436,438,3,66,33,0,437,436,1,0,\n0,0,437,438,1,0,0,0,438,65,1,0,0,0,439,441,5,34,0,0,440,442,3,82,41,0,441,\n440,1,0,0,0,441,442,1,0,0,0,442,443,1,0,0,0,443,444,5,35,0,0,444,67,1,0,\n0,0,445,447,3,76,38,0,446,445,1,0,0,0,446,447,1,0,0,0,447,448,1,0,0,0,448,\n449,3,78,39,0,449,450,5,33,0,0,450,69,1,0,0,0,451,452,3,60,30,0,452,453,\n5,11,0,0,453,455,1,0,0,0,454,451,1,0,0,0,454,455,1,0,0,0,455,456,1,0,0,0,\n456,457,3,62,31,0,457,459,5,7,0,0,458,460,3,72,36,0,459,458,1,0,0,0,459,\n460,1,0,0,0,460,467,1,0,0,0,461,462,3,60,30,0,462,464,7,3,0,0,463,465,3,\n62,31,0,464,463,1,0,0,0,464,465,1,0,0,0,465,467,1,0,0,0,466,454,1,0,0,0,\n466,461,1,0,0,0,467,71,1,0,0,0,468,469,5,72,0,0,469,73,1,0,0,0,470,471,3,\n20,10,0,471,75,1,0,0,0,472,473,3,20,10,0,473,77,1,0,0,0,474,487,3,112,56,\n0,475,480,5,61,0,0,476,477,5,32,0,0,477,479,5,61,0,0,478,476,1,0,0,0,479,\n482,1,0,0,0,480,478,1,0,0,0,480,481,1,0,0,0,481,487,1,0,0,0,482,480,1,0,\n0,0,483,487,5,66,0,0,484,487,5,67,0,0,485,487,5,45,0,0,486,474,1,0,0,0,486,\n475,1,0,0,0,486,483,1,0,0,0,486,484,1,0,0,0,486,485,1,0,0,0,487,79,1,0,0,\n0,488,490,3,24,12,0,489,488,1,0,0,0,489,490,1,0,0,0,490,491,1,0,0,0,491,\n492,3,20,10,0,492,81,1,0,0,0,493,498,3,84,42,0,494,495,5,32,0,0,495,497,\n3,84,42,0,496,494,1,0,0,0,497,500,1,0,0,0,498,496,1,0,0,0,498,499,1,0,0,\n0,499,502,1,0,0,0,500,498,1,0,0,0,501,503,5,32,0,0,502,501,1,0,0,0,502,503,\n1,0,0,0,503,83,1,0,0,0,504,508,3,86,43,0,505,508,3,88,44,0,506,508,3,110,\n55,0,507,504,1,0,0,0,507,505,1,0,0,0,507,506,1,0,0,0,508,85,1,0,0,0,509,\n510,5,61,0,0,510,512,5,33,0,0,511,513,3,110,55,0,512,511,1,0,0,0,512,513,\n1,0,0,0,513,87,1,0,0,0,514,515,3,76,38,0,515,516,5,61,0,0,516,89,1,0,0,0,\n517,521,3,92,46,0,518,520,3,94,47,0,519,518,1,0,0,0,520,523,1,0,0,0,521,\n519,1,0,0,0,521,522,1,0,0,0,522,525,1,0,0,0,523,521,1,0,0,0,524,526,3,96,\n48,0,525,524,1,0,0,0,525,526,1,0,0,0,526,91,1,0,0,0,527,528,5,53,0,0,528,\n529,3,106,53,0,529,93,1,0,0,0,530,532,5,54,0,0,531,533,3,66,33,0,532,531,\n1,0,0,0,532,533,1,0,0,0,533,534,1,0,0,0,534,535,3,106,53,0,535,95,1,0,0,\n0,536,537,5,55,0,0,537,538,3,106,53,0,538,97,1,0,0,0,539,543,3,100,50,0,\n540,542,3,102,51,0,541,540,1,0,0,0,542,545,1,0,0,0,543,541,1,0,0,0,543,544,\n1,0,0,0,544,547,1,0,0,0,545,543,1,0,0,0,546,548,3,104,52,0,547,546,1,0,0,\n0,547,548,1,0,0,0,548,99,1,0,0,0,549,550,5,41,0,0,550,551,3,114,57,0,551,\n552,3,106,53,0,552,101,1,0,0,0,553,554,5,42,0,0,554,555,5,41,0,0,555,556,\n3,114,57,0,556,557,3,106,53,0,557,103,1,0,0,0,558,559,5,42,0,0,559,560,3,\n106,53,0,560,105,1,0,0,0,561,563,5,36,0,0,562,564,3,26,13,0,563,562,1,0,\n0,0,563,564,1,0,0,0,564,565,1,0,0,0,565,566,5,37,0,0,566,107,1,0,0,0,567,\n569,5,43,0,0,568,570,3,114,57,0,569,568,1,0,0,0,569,570,1,0,0,0,570,572,\n1,0,0,0,571,573,3,106,53,0,572,571,1,0,0,0,572,573,1,0,0,0,573,109,1,0,0,\n0,574,575,6,55,-1,0,575,595,3,112,56,0,576,577,5,25,0,0,577,595,3,110,55,\n13,578,579,5,30,0,0,579,595,3,110,55,12,580,581,3,62,31,0,581,582,5,60,0,\n0,582,584,1,0,0,0,583,580,1,0,0,0,583,584,1,0,0,0,584,585,1,0,0,0,585,595,\n3,58,29,0,586,595,3,46,23,0,587,588,5,34,0,0,588,589,3,110,55,0,589,590,\n5,35,0,0,590,595,1,0,0,0,591,592,3,68,34,0,592,593,3,110,55,1,593,595,1,\n0,0,0,594,574,1,0,0,0,594,576,1,0,0,0,594,578,1,0,0,0,594,583,1,0,0,0,594,\n586,1,0,0,0,594,587,1,0,0,0,594,591,1,0,0,0,595,619,1,0,0,0,596,597,10,11,\n0,0,597,598,7,4,0,0,598,618,3,110,55,12,599,600,10,10,0,0,600,601,7,5,0,\n0,601,618,3,110,55,11,602,603,10,9,0,0,603,604,7,6,0,0,604,618,3,110,55,\n10,605,606,10,8,0,0,606,607,7,7,0,0,607,618,3,110,55,9,608,609,10,7,0,0,\n609,610,5,17,0,0,610,618,3,110,55,8,611,612,10,6,0,0,612,613,5,16,0,0,613,\n618,3,110,55,7,614,615,10,5,0,0,615,616,5,24,0,0,616,618,3,110,55,6,617,\n596,1,0,0,0,617,599,1,0,0,0,617,602,1,0,0,0,617,605,1,0,0,0,617,608,1,0,\n0,0,617,611,1,0,0,0,617,614,1,0,0,0,618,621,1,0,0,0,619,617,1,0,0,0,619,\n620,1,0,0,0,620,111,1,0,0,0,621,619,1,0,0,0,622,630,7,8,0,0,623,630,5,65,\n0,0,624,630,5,64,0,0,625,630,7,9,0,0,626,630,5,61,0,0,627,630,7,10,0,0,628,\n630,5,40,0,0,629,622,1,0,0,0,629,623,1,0,0,0,629,624,1,0,0,0,629,625,1,0,\n0,0,629,626,1,0,0,0,629,627,1,0,0,0,629,628,1,0,0,0,630,113,1,0,0,0,631,\n633,5,34,0,0,632,634,3,116,58,0,633,632,1,0,0,0,633,634,1,0,0,0,634,636,\n1,0,0,0,635,637,5,35,0,0,636,635,1,0,0,0,636,637,1,0,0,0,637,115,1,0,0,0,\n638,643,3,112,56,0,639,643,3,110,55,0,640,643,3,118,59,0,641,643,3,120,60,\n0,642,638,1,0,0,0,642,639,1,0,0,0,642,640,1,0,0,0,642,641,1,0,0,0,643,117,\n1,0,0,0,644,645,5,61,0,0,645,646,5,56,0,0,646,647,5,61,0,0,647,119,1,0,0,\n0,648,650,5,61,0,0,649,648,1,0,0,0,650,651,1,0,0,0,651,649,1,0,0,0,651,652,\n1,0,0,0,652,121,1,0,0,0,100,123,127,133,136,141,145,148,152,154,158,160,\n164,168,174,178,180,185,188,191,196,199,202,206,209,212,216,225,229,231,\n236,249,254,258,261,266,270,272,279,284,286,303,308,312,316,320,324,328,\n332,337,340,345,350,359,364,369,372,378,381,384,387,392,397,400,404,407,\n412,422,426,431,437,441,446,454,459,464,466,480,486,489,498,502,507,512,\n521,525,532,543,547,563,569,572,583,594,617,619,629,633,636,642,651];\n\n\nconst atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nconst decisionsToDFA = atn.decisionToState.map( (ds, index) => new antlr4.dfa.DFA(ds, index) );\n\nconst sharedContextCache = new antlr4.PredictionContextCache();\n\nexport default class sequenceParser extends antlr4.Parser {\n\n static grammarFileName = \"java-escape\";\n static literalNames = [ null, null, \"'const'\", \"'readonly'\", \"'static'\", \n \"'await'\", null, \"':'\", \"'<<'\", \"'>>'\", \"'-->'\", \n \"'->'\", null, null, \"'['\", \"']'\", \"'||'\", \"'&&'\", \n \"'=='\", \"'!='\", \"'>'\", \"'<'\", \"'>='\", \"'<='\", \n \"'+'\", \"'-'\", \"'*'\", \"'/'\", \"'%'\", \"'^'\", \"'!'\", \n \"';'\", \"','\", \"'='\", \"'('\", \"')'\", \"'{'\", \"'}'\", \n \"'true'\", \"'false'\", null, \"'if'\", \"'else'\", \n null, \"'return'\", \"'new'\", \"'par'\", \"'group'\", \n \"'opt'\", \"'critical'\", null, \"'ref'\", \"'as'\", \n \"'try'\", \"'catch'\", \"'finally'\", \"'in'\", null, \n null, null, \"'.'\" ];\n static symbolicNames = [ null, \"WS\", \"CONSTANT\", \"READONLY\", \"STATIC\", \n \"AWAIT\", \"TITLE\", \"COL\", \"SOPEN\", \"SCLOSE\", \n \"RETURN_ARROW\", \"ARROW\", \"COLOR\", \"EMOJI_SHORTCODE\", \n \"LBRACKET\", \"RBRACKET\", \"OR\", \"AND\", \"EQ\", \n \"NEQ\", \"GT\", \"LT\", \"GTEQ\", \"LTEQ\", \"PLUS\", \n \"MINUS\", \"MULT\", \"DIV\", \"MOD\", \"POW\", \"NOT\", \n \"SCOL\", \"COMMA\", \"ASSIGN\", \"OPAR\", \"CPAR\", \n \"OBRACE\", \"CBRACE\", \"TRUE\", \"FALSE\", \"NIL\", \n \"IF\", \"ELSE\", \"WHILE\", \"RETURN\", \"NEW\", \"PAR\", \n \"GROUP\", \"OPT\", \"CRITICAL\", \"SECTION\", \"REF\", \n \"AS\", \"TRY\", \"CATCH\", \"FINALLY\", \"IN\", \"STARTER_LXR\", \n \"ANNOTATION_RET\", \"ANNOTATION\", \"DOT\", \"ID\", \n \"INT\", \"FLOAT\", \"MONEY\", \"NUMBER_UNIT\", \"CSTRING\", \n \"USTRING\", \"CR\", \"COMMENT\", \"OTHER\", \"DIVIDER\", \n \"EVENT_PAYLOAD_LXR\", \"EVENT_END\", \"TITLE_CONTENT\", \n \"TITLE_END\" ];\n static ruleNames = [ \"prog\", \"title\", \"head\", \"group\", \"starterExp\", \n \"starter\", \"participant\", \"stereotype\", \"label\", \n \"participantType\", \"name\", \"width\", \"emoji\", \"block\", \n \"ret\", \"returnAsyncMessage\", \"divider\", \"dividerNote\", \n \"stat\", \"par\", \"opt\", \"critical\", \"section\", \"creation\", \n \"ref\", \"creationBody\", \"message\", \"messageBody\", \n \"fromTo\", \"func\", \"from\", \"to\", \"signature\", \"invocation\", \n \"assignment\", \"asyncMessage\", \"content\", \"construct\", \n \"type\", \"assignee\", \"methodName\", \"parameters\", \n \"parameter\", \"namedParameter\", \"declaration\", \"tcf\", \n \"tryBlock\", \"catchBlock\", \"finallyBlock\", \"alt\", \n \"ifBlock\", \"elseIfBlock\", \"elseBlock\", \"braceBlock\", \n \"loop\", \"expr\", \"atom\", \"parExpr\", \"condition\", \n \"inExpr\", \"textExpr\" ];\n\n constructor(input) {\n super(input);\n this._interp = new antlr4.atn.ParserATNSimulator(this, atn, decisionsToDFA, sharedContextCache);\n this.ruleNames = sequenceParser.ruleNames;\n this.literalNames = sequenceParser.literalNames;\n this.symbolicNames = sequenceParser.symbolicNames;\n }\n\n get atn() {\n return atn;\n }\n\n sempred(localctx, ruleIndex, predIndex) {\n \tswitch(ruleIndex) {\n \tcase 55:\n \t \t\treturn this.expr_sempred(localctx, predIndex);\n default:\n throw \"No predicate with index:\" + ruleIndex;\n }\n }\n\n expr_sempred(localctx, predIndex) {\n \tswitch(predIndex) {\n \t\tcase 0:\n \t\t\treturn this.precpred(this._ctx, 11);\n \t\tcase 1:\n \t\t\treturn this.precpred(this._ctx, 10);\n \t\tcase 2:\n \t\t\treturn this.precpred(this._ctx, 9);\n \t\tcase 3:\n \t\t\treturn this.precpred(this._ctx, 8);\n \t\tcase 4:\n \t\t\treturn this.precpred(this._ctx, 7);\n \t\tcase 5:\n \t\t\treturn this.precpred(this._ctx, 6);\n \t\tcase 6:\n \t\t\treturn this.precpred(this._ctx, 5);\n \t\tdefault:\n \t\t\tthrow \"No predicate with index:\" + predIndex;\n \t}\n };\n\n\n\n\n\tprog() {\n\t let localctx = new ProgContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 0, sequenceParser.RULE_prog);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 141;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,4,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 123;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===6) {\n\t this.state = 122;\n\t this.title();\n\t }\n\n\t this.state = 125;\n\t this.match(sequenceParser.EOF);\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 127;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===6) {\n\t this.state = 126;\n\t this.title();\n\t }\n\n\t this.state = 129;\n\t this.head();\n\t this.state = 130;\n\t this.match(sequenceParser.EOF);\n\t break;\n\n\t case 3:\n\t this.enterOuterAlt(localctx, 3);\n\t this.state = 133;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===6) {\n\t this.state = 132;\n\t this.title();\n\t }\n\n\t this.state = 136;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,3,this._ctx);\n\t if(la_===1) {\n\t this.state = 135;\n\t this.head();\n\n\t }\n\t this.state = 138;\n\t this.block();\n\t this.state = 139;\n\t this.match(sequenceParser.EOF);\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\ttitle() {\n\t let localctx = new TitleContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 2, sequenceParser.RULE_title);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 143;\n\t this.match(sequenceParser.TITLE);\n\t this.state = 145;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===74) {\n\t this.state = 144;\n\t this.match(sequenceParser.TITLE_CONTENT);\n\t }\n\n\t this.state = 148;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===75) {\n\t this.state = 147;\n\t this.match(sequenceParser.TITLE_END);\n\t }\n\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\thead() {\n\t let localctx = new HeadContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 4, sequenceParser.RULE_head);\n\t try {\n\t this.state = 164;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,11,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 152; \n\t this._errHandler.sync(this);\n\t var _alt = 1;\n\t do {\n\t \tswitch (_alt) {\n\t \tcase 1:\n\t \t\tthis.state = 152;\n\t \t\tthis._errHandler.sync(this);\n\t \t\tswitch(this._input.LA(1)) {\n\t \t\tcase 47:\n\t \t\t this.state = 150;\n\t \t\t this.group();\n\t \t\t break;\n\t \t\tcase 8:\n\t \t\tcase 13:\n\t \t\tcase 14:\n\t \t\tcase 21:\n\t \t\tcase 59:\n\t \t\tcase 61:\n\t \t\tcase 66:\n\t \t\tcase 67:\n\t \t\t this.state = 151;\n\t \t\t this.participant();\n\t \t\t break;\n\t \t\tdefault:\n\t \t\t throw new antlr4.error.NoViableAltException(this);\n\t \t\t}\n\t \t\tbreak;\n\t \tdefault:\n\t \t\tthrow new antlr4.error.NoViableAltException(this);\n\t \t}\n\t \tthis.state = 154; \n\t \tthis._errHandler.sync(this);\n\t \t_alt = this._interp.adaptivePredict(this._input,8, this._ctx);\n\t } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 160;\n\t this._errHandler.sync(this);\n\t var _alt = this._interp.adaptivePredict(this._input,10,this._ctx)\n\t while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n\t if(_alt===1) {\n\t this.state = 158;\n\t this._errHandler.sync(this);\n\t switch(this._input.LA(1)) {\n\t case 47:\n\t this.state = 156;\n\t this.group();\n\t break;\n\t case 8:\n\t case 13:\n\t case 14:\n\t case 21:\n\t case 59:\n\t case 61:\n\t case 66:\n\t case 67:\n\t this.state = 157;\n\t this.participant();\n\t break;\n\t default:\n\t throw new antlr4.error.NoViableAltException(this);\n\t } \n\t }\n\t this.state = 162;\n\t this._errHandler.sync(this);\n\t _alt = this._interp.adaptivePredict(this._input,10,this._ctx);\n\t }\n\n\t this.state = 163;\n\t this.starterExp();\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tgroup() {\n\t let localctx = new GroupContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 6, sequenceParser.RULE_group);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 166;\n\t this.match(sequenceParser.GROUP);\n\t this.state = 168;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,12,this._ctx);\n\t if(la_===1) {\n\t this.state = 167;\n\t this.name();\n\n\t }\n\t this.state = 180;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,15,this._ctx);\n\t if(la_===1) {\n\t this.state = 170;\n\t this.match(sequenceParser.OBRACE);\n\t this.state = 174;\n\t this._errHandler.sync(this);\n\t var _alt = this._interp.adaptivePredict(this._input,13,this._ctx)\n\t while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n\t if(_alt===1) {\n\t this.state = 171;\n\t this.participant(); \n\t }\n\t this.state = 176;\n\t this._errHandler.sync(this);\n\t _alt = this._interp.adaptivePredict(this._input,13,this._ctx);\n\t }\n\n\t this.state = 178;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===37) {\n\t this.state = 177;\n\t this.match(sequenceParser.CBRACE);\n\t }\n\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tstarterExp() {\n\t let localctx = new StarterExpContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 8, sequenceParser.RULE_starterExp);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 191;\n\t this._errHandler.sync(this);\n\t switch(this._input.LA(1)) {\n\t case 57:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 182;\n\t this.match(sequenceParser.STARTER_LXR);\n\t this.state = 188;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===34) {\n\t this.state = 183;\n\t this.match(sequenceParser.OPAR);\n\t this.state = 185;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(((((_la - 61)) & ~0x1f) == 0 && ((1 << (_la - 61)) & 97) !== 0)) {\n\t this.state = 184;\n\t this.starter();\n\t }\n\n\t this.state = 187;\n\t this.match(sequenceParser.CPAR);\n\t }\n\n\t break;\n\t case 59:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 190;\n\t this.match(sequenceParser.ANNOTATION);\n\t break;\n\t default:\n\t throw new antlr4.error.NoViableAltException(this);\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tstarter() {\n\t let localctx = new StarterContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 10, sequenceParser.RULE_starter);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 193;\n\t this.name();\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tparticipant() {\n\t let localctx = new ParticipantContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 12, sequenceParser.RULE_participant);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 216;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,25,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 196;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===59) {\n\t this.state = 195;\n\t this.participantType();\n\t }\n\n\t this.state = 199;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===8 || _la===21) {\n\t this.state = 198;\n\t this.stereotype();\n\t }\n\n\t this.state = 202;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===13 || _la===14) {\n\t this.state = 201;\n\t this.emoji();\n\t }\n\n\t this.state = 204;\n\t this.name();\n\t this.state = 206;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,22,this._ctx);\n\t if(la_===1) {\n\t this.state = 205;\n\t this.width();\n\n\t }\n\t this.state = 209;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===52) {\n\t this.state = 208;\n\t this.label();\n\t }\n\n\t this.state = 212;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===12) {\n\t this.state = 211;\n\t this.match(sequenceParser.COLOR);\n\t }\n\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 214;\n\t this.stereotype();\n\t break;\n\n\t case 3:\n\t this.enterOuterAlt(localctx, 3);\n\t this.state = 215;\n\t this.participantType();\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tstereotype() {\n\t let localctx = new StereotypeContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 14, sequenceParser.RULE_stereotype);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 231;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,28,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 218;\n\t this.match(sequenceParser.SOPEN);\n\t this.state = 219;\n\t this.name();\n\t this.state = 220;\n\t this.match(sequenceParser.SCLOSE);\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 222;\n\t this.match(sequenceParser.SOPEN);\n\t this.state = 223;\n\t this.name();\n\t this.state = 225;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===20) {\n\t this.state = 224;\n\t this.match(sequenceParser.GT);\n\t }\n\n\t break;\n\n\t case 3:\n\t this.enterOuterAlt(localctx, 3);\n\t this.state = 227;\n\t _la = this._input.LA(1);\n\t if(!(_la===8 || _la===21)) {\n\t this._errHandler.recoverInline(this);\n\t }\n\t else {\n\t \tthis._errHandler.reportMatch(this);\n\t this.consume();\n\t }\n\t this.state = 229;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===9 || _la===20) {\n\t this.state = 228;\n\t _la = this._input.LA(1);\n\t if(!(_la===9 || _la===20)) {\n\t this._errHandler.recoverInline(this);\n\t }\n\t else {\n\t \tthis._errHandler.reportMatch(this);\n\t this.consume();\n\t }\n\t }\n\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tlabel() {\n\t let localctx = new LabelContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 16, sequenceParser.RULE_label);\n\t try {\n\t this.state = 236;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,29,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 233;\n\t this.match(sequenceParser.AS);\n\t this.state = 234;\n\t this.name();\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 235;\n\t this.match(sequenceParser.AS);\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tparticipantType() {\n\t let localctx = new ParticipantTypeContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 18, sequenceParser.RULE_participantType);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 238;\n\t this.match(sequenceParser.ANNOTATION);\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tname() {\n\t let localctx = new NameContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 20, sequenceParser.RULE_name);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 240;\n\t _la = this._input.LA(1);\n\t if(!(((((_la - 61)) & ~0x1f) == 0 && ((1 << (_la - 61)) & 97) !== 0))) {\n\t this._errHandler.recoverInline(this);\n\t }\n\t else {\n\t \tthis._errHandler.reportMatch(this);\n\t this.consume();\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\twidth() {\n\t let localctx = new WidthContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 22, sequenceParser.RULE_width);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 242;\n\t this.match(sequenceParser.INT);\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\temoji() {\n\t let localctx = new EmojiContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 24, sequenceParser.RULE_emoji);\n\t try {\n\t this.state = 249;\n\t this._errHandler.sync(this);\n\t switch(this._input.LA(1)) {\n\t case 14:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 244;\n\t this.match(sequenceParser.LBRACKET);\n\t this.state = 245;\n\t this.name();\n\t this.state = 246;\n\t this.match(sequenceParser.RBRACKET);\n\t break;\n\t case 13:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 248;\n\t this.match(sequenceParser.EMOJI_SHORTCODE);\n\t break;\n\t default:\n\t throw new antlr4.error.NoViableAltException(this);\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tblock() {\n\t let localctx = new BlockContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 26, sequenceParser.RULE_block);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 252; \n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t do {\n\t this.state = 251;\n\t this.stat();\n\t this.state = 254; \n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t } while(((((_la - 13)) & ~0x1f) == 0 && ((1 << (_la - 13)) & 3732930563) !== 0) || ((((_la - 45)) & ~0x1f) == 0 && ((1 << (_la - 45)) & 75440507) !== 0));\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tret() {\n\t let localctx = new RetContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 28, sequenceParser.RULE_ret);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 272;\n\t this._errHandler.sync(this);\n\t switch(this._input.LA(1)) {\n\t case 44:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 256;\n\t this.match(sequenceParser.RETURN);\n\t this.state = 258;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,32,this._ctx);\n\t if(la_===1) {\n\t this.state = 257;\n\t this.expr(0);\n\n\t }\n\t this.state = 261;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===31) {\n\t this.state = 260;\n\t this.match(sequenceParser.SCOL);\n\t }\n\n\t break;\n\t case 58:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 263;\n\t this.match(sequenceParser.ANNOTATION_RET);\n\t this.state = 264;\n\t this.asyncMessage();\n\t this.state = 266;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===73) {\n\t this.state = 265;\n\t this.match(sequenceParser.EVENT_END);\n\t }\n\n\t break;\n\t case 13:\n\t case 14:\n\t case 61:\n\t case 66:\n\t case 67:\n\t this.enterOuterAlt(localctx, 3);\n\t this.state = 268;\n\t this.returnAsyncMessage();\n\t this.state = 270;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===73) {\n\t this.state = 269;\n\t this.match(sequenceParser.EVENT_END);\n\t }\n\n\t break;\n\t default:\n\t throw new antlr4.error.NoViableAltException(this);\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\treturnAsyncMessage() {\n\t let localctx = new ReturnAsyncMessageContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 30, sequenceParser.RULE_returnAsyncMessage);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 286;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,39,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 274;\n\t this.from();\n\t this.state = 275;\n\t this.match(sequenceParser.RETURN_ARROW);\n\t this.state = 276;\n\t this.to();\n\t this.state = 277;\n\t this.match(sequenceParser.COL);\n\t this.state = 279;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===72) {\n\t this.state = 278;\n\t this.content();\n\t }\n\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 281;\n\t this.from();\n\t this.state = 282;\n\t this.match(sequenceParser.RETURN_ARROW);\n\t this.state = 284;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,38,this._ctx);\n\t if(la_===1) {\n\t this.state = 283;\n\t this.to();\n\n\t }\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tdivider() {\n\t let localctx = new DividerContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 32, sequenceParser.RULE_divider);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 288;\n\t this.dividerNote();\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tdividerNote() {\n\t let localctx = new DividerNoteContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 34, sequenceParser.RULE_dividerNote);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 290;\n\t this.match(sequenceParser.DIVIDER);\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tstat() {\n\t let localctx = new StatContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 36, sequenceParser.RULE_stat);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 308;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,41,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 292;\n\t this.alt();\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 293;\n\t this.par();\n\t break;\n\n\t case 3:\n\t this.enterOuterAlt(localctx, 3);\n\t this.state = 294;\n\t this.opt();\n\t break;\n\n\t case 4:\n\t this.enterOuterAlt(localctx, 4);\n\t this.state = 295;\n\t this.critical();\n\t break;\n\n\t case 5:\n\t this.enterOuterAlt(localctx, 5);\n\t this.state = 296;\n\t this.section();\n\t break;\n\n\t case 6:\n\t this.enterOuterAlt(localctx, 6);\n\t this.state = 297;\n\t this.ref();\n\t break;\n\n\t case 7:\n\t this.enterOuterAlt(localctx, 7);\n\t this.state = 298;\n\t this.loop();\n\t break;\n\n\t case 8:\n\t this.enterOuterAlt(localctx, 8);\n\t this.state = 299;\n\t this.creation();\n\t break;\n\n\t case 9:\n\t this.enterOuterAlt(localctx, 9);\n\t this.state = 300;\n\t this.message();\n\t break;\n\n\t case 10:\n\t this.enterOuterAlt(localctx, 10);\n\t this.state = 301;\n\t this.asyncMessage();\n\t this.state = 303;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===73) {\n\t this.state = 302;\n\t this.match(sequenceParser.EVENT_END);\n\t }\n\n\t break;\n\n\t case 11:\n\t this.enterOuterAlt(localctx, 11);\n\t this.state = 305;\n\t this.ret();\n\t break;\n\n\t case 12:\n\t this.enterOuterAlt(localctx, 12);\n\t this.state = 306;\n\t this.divider();\n\t break;\n\n\t case 13:\n\t this.enterOuterAlt(localctx, 13);\n\t this.state = 307;\n\t this.tcf();\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tpar() {\n\t let localctx = new ParContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 38, sequenceParser.RULE_par);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 316;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,43,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 310;\n\t this.match(sequenceParser.PAR);\n\t this.state = 312;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===34) {\n\t this.state = 311;\n\t this.parExpr();\n\t }\n\n\t this.state = 314;\n\t this.braceBlock();\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 315;\n\t this.match(sequenceParser.PAR);\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\topt() {\n\t let localctx = new OptContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 40, sequenceParser.RULE_opt);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 324;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,45,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 318;\n\t this.match(sequenceParser.OPT);\n\t this.state = 320;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===34) {\n\t this.state = 319;\n\t this.parExpr();\n\t }\n\n\t this.state = 322;\n\t this.braceBlock();\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 323;\n\t this.match(sequenceParser.OPT);\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tcritical() {\n\t let localctx = new CriticalContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 42, sequenceParser.RULE_critical);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 332;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,47,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 326;\n\t this.match(sequenceParser.CRITICAL);\n\t this.state = 328;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===34) {\n\t this.state = 327;\n\t this.parExpr();\n\t }\n\n\t this.state = 330;\n\t this.braceBlock();\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 331;\n\t this.match(sequenceParser.CRITICAL);\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tsection() {\n\t let localctx = new SectionContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 44, sequenceParser.RULE_section);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 345;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,50,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 334;\n\t this.match(sequenceParser.SECTION);\n\t this.state = 340;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===34) {\n\t this.state = 335;\n\t this.match(sequenceParser.OPAR);\n\t this.state = 337;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(((((_la - 38)) & ~0x1f) == 0 && ((1 << (_la - 38)) & 1065353223) !== 0)) {\n\t this.state = 336;\n\t this.atom();\n\t }\n\n\t this.state = 339;\n\t this.match(sequenceParser.CPAR);\n\t }\n\n\t this.state = 342;\n\t this.braceBlock();\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 343;\n\t this.braceBlock();\n\t break;\n\n\t case 3:\n\t this.enterOuterAlt(localctx, 3);\n\t this.state = 344;\n\t this.match(sequenceParser.SECTION);\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tcreation() {\n\t let localctx = new CreationContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 46, sequenceParser.RULE_creation);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 347;\n\t this.creationBody();\n\t this.state = 350;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,51,this._ctx);\n\t if(la_===1) {\n\t this.state = 348;\n\t this.match(sequenceParser.SCOL);\n\n\t } else if(la_===2) {\n\t this.state = 349;\n\t this.braceBlock();\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tref() {\n\t let localctx = new RefContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 48, sequenceParser.RULE_ref);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 352;\n\t this.match(sequenceParser.REF);\n\t this.state = 353;\n\t this.match(sequenceParser.OPAR);\n\n\t this.state = 354;\n\t this.name();\n\t this.state = 364;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t while(_la===32) {\n\t this.state = 355;\n\t this.match(sequenceParser.COMMA);\n\t this.state = 359;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t while(((((_la - 61)) & ~0x1f) == 0 && ((1 << (_la - 61)) & 97) !== 0)) {\n\t this.state = 356;\n\t this.name();\n\t this.state = 361;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t }\n\t this.state = 366;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t }\n\t this.state = 367;\n\t this.match(sequenceParser.CPAR);\n\t this.state = 369;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===31) {\n\t this.state = 368;\n\t this.match(sequenceParser.SCOL);\n\t }\n\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tcreationBody() {\n\t let localctx = new CreationBodyContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 50, sequenceParser.RULE_creationBody);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 387;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,59,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 372;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,55,this._ctx);\n\t if(la_===1) {\n\t this.state = 371;\n\t this.assignment();\n\n\t }\n\t this.state = 374;\n\t this.match(sequenceParser.NEW);\n\t this.state = 375;\n\t this.construct();\n\t this.state = 381;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,57,this._ctx);\n\t if(la_===1) {\n\t this.state = 376;\n\t this.match(sequenceParser.OPAR);\n\t this.state = 378;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(((((_la - 13)) & ~0x1f) == 0 && ((1 << (_la - 13)) & 237113347) !== 0) || ((((_la - 45)) & ~0x1f) == 0 && ((1 << (_la - 45)) & 8323073) !== 0)) {\n\t this.state = 377;\n\t this.parameters();\n\t }\n\n\t this.state = 380;\n\t this.match(sequenceParser.CPAR);\n\n\t }\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 384;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,58,this._ctx);\n\t if(la_===1) {\n\t this.state = 383;\n\t this.assignment();\n\n\t }\n\t this.state = 386;\n\t this.match(sequenceParser.NEW);\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tmessage() {\n\t let localctx = new MessageContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 52, sequenceParser.RULE_message);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 389;\n\t this.messageBody();\n\t this.state = 392;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,60,this._ctx);\n\t if(la_===1) {\n\t this.state = 390;\n\t this.match(sequenceParser.SCOL);\n\n\t } else if(la_===2) {\n\t this.state = 391;\n\t this.braceBlock();\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tmessageBody() {\n\t let localctx = new MessageBodyContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 54, sequenceParser.RULE_messageBody);\n\t try {\n\t this.state = 407;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,64,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 394;\n\t this.assignment();\n\t this.state = 400;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,62,this._ctx);\n\t if(la_===1) {\n\t this.state = 395;\n\t this.fromTo();\n\t this.state = 397;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,61,this._ctx);\n\t if(la_===1) {\n\t this.state = 396;\n\t this.func();\n\n\t }\n\n\t } else if(la_===2) {\n\t this.state = 399;\n\t this.func();\n\n\t }\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 402;\n\t this.fromTo();\n\t this.state = 404;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,63,this._ctx);\n\t if(la_===1) {\n\t this.state = 403;\n\t this.func();\n\n\t }\n\t break;\n\n\t case 3:\n\t this.enterOuterAlt(localctx, 3);\n\t this.state = 406;\n\t this.func();\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tfromTo() {\n\t let localctx = new FromToContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 56, sequenceParser.RULE_fromTo);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 412;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,65,this._ctx);\n\t if(la_===1) {\n\t this.state = 409;\n\t this.from();\n\t this.state = 410;\n\t this.match(sequenceParser.ARROW);\n\n\t }\n\t this.state = 414;\n\t this.to();\n\t this.state = 415;\n\t this.match(sequenceParser.DOT);\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tfunc() {\n\t let localctx = new FuncContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 58, sequenceParser.RULE_func);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 417;\n\t this.signature();\n\t this.state = 422;\n\t this._errHandler.sync(this);\n\t var _alt = this._interp.adaptivePredict(this._input,66,this._ctx)\n\t while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n\t if(_alt===1) {\n\t this.state = 418;\n\t this.match(sequenceParser.DOT);\n\t this.state = 419;\n\t this.signature(); \n\t }\n\t this.state = 424;\n\t this._errHandler.sync(this);\n\t _alt = this._interp.adaptivePredict(this._input,66,this._ctx);\n\t }\n\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tfrom() {\n\t let localctx = new FromContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 60, sequenceParser.RULE_from);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 426;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===13 || _la===14) {\n\t this.state = 425;\n\t this.emoji();\n\t }\n\n\t this.state = 428;\n\t this.name();\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tto() {\n\t let localctx = new ToContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 62, sequenceParser.RULE_to);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 431;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===13 || _la===14) {\n\t this.state = 430;\n\t this.emoji();\n\t }\n\n\t this.state = 433;\n\t this.name();\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tsignature() {\n\t let localctx = new SignatureContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 64, sequenceParser.RULE_signature);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 435;\n\t this.methodName();\n\t this.state = 437;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,69,this._ctx);\n\t if(la_===1) {\n\t this.state = 436;\n\t this.invocation();\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tinvocation() {\n\t let localctx = new InvocationContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 66, sequenceParser.RULE_invocation);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 439;\n\t this.match(sequenceParser.OPAR);\n\t this.state = 441;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(((((_la - 13)) & ~0x1f) == 0 && ((1 << (_la - 13)) & 237113347) !== 0) || ((((_la - 45)) & ~0x1f) == 0 && ((1 << (_la - 45)) & 8323073) !== 0)) {\n\t this.state = 440;\n\t this.parameters();\n\t }\n\n\t this.state = 443;\n\t this.match(sequenceParser.CPAR);\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tassignment() {\n\t let localctx = new AssignmentContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 68, sequenceParser.RULE_assignment);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 446;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,71,this._ctx);\n\t if(la_===1) {\n\t this.state = 445;\n\t this.type();\n\n\t }\n\t this.state = 448;\n\t this.assignee();\n\t this.state = 449;\n\t this.match(sequenceParser.ASSIGN);\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tasyncMessage() {\n\t let localctx = new AsyncMessageContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 70, sequenceParser.RULE_asyncMessage);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 466;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,75,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 454;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,72,this._ctx);\n\t if(la_===1) {\n\t this.state = 451;\n\t this.from();\n\t this.state = 452;\n\t this.match(sequenceParser.ARROW);\n\n\t }\n\t this.state = 456;\n\t this.to();\n\t this.state = 457;\n\t this.match(sequenceParser.COL);\n\t this.state = 459;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===72) {\n\t this.state = 458;\n\t this.content();\n\t }\n\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 461;\n\t this.from();\n\t this.state = 462;\n\t _la = this._input.LA(1);\n\t if(!(_la===11 || _la===25)) {\n\t this._errHandler.recoverInline(this);\n\t }\n\t else {\n\t \tthis._errHandler.reportMatch(this);\n\t this.consume();\n\t }\n\t this.state = 464;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,74,this._ctx);\n\t if(la_===1) {\n\t this.state = 463;\n\t this.to();\n\n\t }\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tcontent() {\n\t let localctx = new ContentContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 72, sequenceParser.RULE_content);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 468;\n\t this.match(sequenceParser.EVENT_PAYLOAD_LXR);\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tconstruct() {\n\t let localctx = new ConstructContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 74, sequenceParser.RULE_construct);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 470;\n\t this.name();\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\ttype() {\n\t let localctx = new TypeContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 76, sequenceParser.RULE_type);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 472;\n\t this.name();\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tassignee() {\n\t let localctx = new AssigneeContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 78, sequenceParser.RULE_assignee);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 486;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,77,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 474;\n\t this.atom();\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 475;\n\t this.match(sequenceParser.ID);\n\t this.state = 480;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t while(_la===32) {\n\t this.state = 476;\n\t this.match(sequenceParser.COMMA);\n\t this.state = 477;\n\t this.match(sequenceParser.ID);\n\t this.state = 482;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t }\n\t break;\n\n\t case 3:\n\t this.enterOuterAlt(localctx, 3);\n\t this.state = 483;\n\t this.match(sequenceParser.CSTRING);\n\t break;\n\n\t case 4:\n\t this.enterOuterAlt(localctx, 4);\n\t this.state = 484;\n\t this.match(sequenceParser.USTRING);\n\t break;\n\n\t case 5:\n\t this.enterOuterAlt(localctx, 5);\n\t this.state = 485;\n\t this.match(sequenceParser.NEW);\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tmethodName() {\n\t let localctx = new MethodNameContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 80, sequenceParser.RULE_methodName);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 489;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===13 || _la===14) {\n\t this.state = 488;\n\t this.emoji();\n\t }\n\n\t this.state = 491;\n\t this.name();\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tparameters() {\n\t let localctx = new ParametersContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 82, sequenceParser.RULE_parameters);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 493;\n\t this.parameter();\n\t this.state = 498;\n\t this._errHandler.sync(this);\n\t var _alt = this._interp.adaptivePredict(this._input,79,this._ctx)\n\t while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n\t if(_alt===1) {\n\t this.state = 494;\n\t this.match(sequenceParser.COMMA);\n\t this.state = 495;\n\t this.parameter(); \n\t }\n\t this.state = 500;\n\t this._errHandler.sync(this);\n\t _alt = this._interp.adaptivePredict(this._input,79,this._ctx);\n\t }\n\n\t this.state = 502;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===32) {\n\t this.state = 501;\n\t this.match(sequenceParser.COMMA);\n\t }\n\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tparameter() {\n\t let localctx = new ParameterContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 84, sequenceParser.RULE_parameter);\n\t try {\n\t this.state = 507;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,81,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 504;\n\t this.namedParameter();\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 505;\n\t this.declaration();\n\t break;\n\n\t case 3:\n\t this.enterOuterAlt(localctx, 3);\n\t this.state = 506;\n\t this.expr(0);\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tnamedParameter() {\n\t let localctx = new NamedParameterContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 86, sequenceParser.RULE_namedParameter);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 509;\n\t this.match(sequenceParser.ID);\n\t this.state = 510;\n\t this.match(sequenceParser.ASSIGN);\n\t this.state = 512;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(((((_la - 13)) & ~0x1f) == 0 && ((1 << (_la - 13)) & 237113347) !== 0) || ((((_la - 45)) & ~0x1f) == 0 && ((1 << (_la - 45)) & 8323073) !== 0)) {\n\t this.state = 511;\n\t this.expr(0);\n\t }\n\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tdeclaration() {\n\t let localctx = new DeclarationContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 88, sequenceParser.RULE_declaration);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 514;\n\t this.type();\n\t this.state = 515;\n\t this.match(sequenceParser.ID);\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\ttcf() {\n\t let localctx = new TcfContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 90, sequenceParser.RULE_tcf);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 517;\n\t this.tryBlock();\n\t this.state = 521;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t while(_la===54) {\n\t this.state = 518;\n\t this.catchBlock();\n\t this.state = 523;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t }\n\t this.state = 525;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===55) {\n\t this.state = 524;\n\t this.finallyBlock();\n\t }\n\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\ttryBlock() {\n\t let localctx = new TryBlockContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 92, sequenceParser.RULE_tryBlock);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 527;\n\t this.match(sequenceParser.TRY);\n\t this.state = 528;\n\t this.braceBlock();\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tcatchBlock() {\n\t let localctx = new CatchBlockContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 94, sequenceParser.RULE_catchBlock);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 530;\n\t this.match(sequenceParser.CATCH);\n\t this.state = 532;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===34) {\n\t this.state = 531;\n\t this.invocation();\n\t }\n\n\t this.state = 534;\n\t this.braceBlock();\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tfinallyBlock() {\n\t let localctx = new FinallyBlockContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 96, sequenceParser.RULE_finallyBlock);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 536;\n\t this.match(sequenceParser.FINALLY);\n\t this.state = 537;\n\t this.braceBlock();\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\talt() {\n\t let localctx = new AltContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 98, sequenceParser.RULE_alt);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 539;\n\t this.ifBlock();\n\t this.state = 543;\n\t this._errHandler.sync(this);\n\t var _alt = this._interp.adaptivePredict(this._input,86,this._ctx)\n\t while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n\t if(_alt===1) {\n\t this.state = 540;\n\t this.elseIfBlock(); \n\t }\n\t this.state = 545;\n\t this._errHandler.sync(this);\n\t _alt = this._interp.adaptivePredict(this._input,86,this._ctx);\n\t }\n\n\t this.state = 547;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===42) {\n\t this.state = 546;\n\t this.elseBlock();\n\t }\n\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tifBlock() {\n\t let localctx = new IfBlockContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 100, sequenceParser.RULE_ifBlock);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 549;\n\t this.match(sequenceParser.IF);\n\t this.state = 550;\n\t this.parExpr();\n\t this.state = 551;\n\t this.braceBlock();\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\telseIfBlock() {\n\t let localctx = new ElseIfBlockContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 102, sequenceParser.RULE_elseIfBlock);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 553;\n\t this.match(sequenceParser.ELSE);\n\t this.state = 554;\n\t this.match(sequenceParser.IF);\n\t this.state = 555;\n\t this.parExpr();\n\t this.state = 556;\n\t this.braceBlock();\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\telseBlock() {\n\t let localctx = new ElseBlockContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 104, sequenceParser.RULE_elseBlock);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 558;\n\t this.match(sequenceParser.ELSE);\n\t this.state = 559;\n\t this.braceBlock();\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tbraceBlock() {\n\t let localctx = new BraceBlockContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 106, sequenceParser.RULE_braceBlock);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 561;\n\t this.match(sequenceParser.OBRACE);\n\t this.state = 563;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(((((_la - 13)) & ~0x1f) == 0 && ((1 << (_la - 13)) & 3732930563) !== 0) || ((((_la - 45)) & ~0x1f) == 0 && ((1 << (_la - 45)) & 75440507) !== 0)) {\n\t this.state = 562;\n\t this.block();\n\t }\n\n\t this.state = 565;\n\t this.match(sequenceParser.CBRACE);\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tloop() {\n\t let localctx = new LoopContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 108, sequenceParser.RULE_loop);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 567;\n\t this.match(sequenceParser.WHILE);\n\t this.state = 569;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===34) {\n\t this.state = 568;\n\t this.parExpr();\n\t }\n\n\t this.state = 572;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,90,this._ctx);\n\t if(la_===1) {\n\t this.state = 571;\n\t this.braceBlock();\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\texpr(_p) {\n\t\tif(_p===undefined) {\n\t\t _p = 0;\n\t\t}\n\t const _parentctx = this._ctx;\n\t const _parentState = this.state;\n\t let localctx = new ExprContext(this, this._ctx, _parentState);\n\t let _prevctx = localctx;\n\t const _startState = 110;\n\t this.enterRecursionRule(localctx, 110, sequenceParser.RULE_expr, _p);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 594;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,92,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t localctx = new AtomExprContext(this, localctx);\n\t this._ctx = localctx;\n\t _prevctx = localctx;\n\n\t this.state = 575;\n\t this.atom();\n\t break;\n\n\t case 2:\n\t localctx = new UnaryMinusExprContext(this, localctx);\n\t this._ctx = localctx;\n\t _prevctx = localctx;\n\t this.state = 576;\n\t this.match(sequenceParser.MINUS);\n\t this.state = 577;\n\t this.expr(13);\n\t break;\n\n\t case 3:\n\t localctx = new NotExprContext(this, localctx);\n\t this._ctx = localctx;\n\t _prevctx = localctx;\n\t this.state = 578;\n\t this.match(sequenceParser.NOT);\n\t this.state = 579;\n\t this.expr(12);\n\t break;\n\n\t case 4:\n\t localctx = new FuncExprContext(this, localctx);\n\t this._ctx = localctx;\n\t _prevctx = localctx;\n\t this.state = 583;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,91,this._ctx);\n\t if(la_===1) {\n\t this.state = 580;\n\t this.to();\n\t this.state = 581;\n\t this.match(sequenceParser.DOT);\n\n\t }\n\t this.state = 585;\n\t this.func();\n\t break;\n\n\t case 5:\n\t localctx = new CreationExprContext(this, localctx);\n\t this._ctx = localctx;\n\t _prevctx = localctx;\n\t this.state = 586;\n\t this.creation();\n\t break;\n\n\t case 6:\n\t localctx = new ParenthesizedExprContext(this, localctx);\n\t this._ctx = localctx;\n\t _prevctx = localctx;\n\t this.state = 587;\n\t this.match(sequenceParser.OPAR);\n\t this.state = 588;\n\t this.expr(0);\n\t this.state = 589;\n\t this.match(sequenceParser.CPAR);\n\t break;\n\n\t case 7:\n\t localctx = new AssignmentExprContext(this, localctx);\n\t this._ctx = localctx;\n\t _prevctx = localctx;\n\t this.state = 591;\n\t this.assignment();\n\t this.state = 592;\n\t this.expr(1);\n\t break;\n\n\t }\n\t this._ctx.stop = this._input.LT(-1);\n\t this.state = 619;\n\t this._errHandler.sync(this);\n\t var _alt = this._interp.adaptivePredict(this._input,94,this._ctx)\n\t while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n\t if(_alt===1) {\n\t if(this._parseListeners!==null) {\n\t this.triggerExitRuleEvent();\n\t }\n\t _prevctx = localctx;\n\t this.state = 617;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,93,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t localctx = new MultiplicationExprContext(this, new ExprContext(this, _parentctx, _parentState));\n\t this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n\t this.state = 596;\n\t if (!( this.precpred(this._ctx, 11))) {\n\t throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 11)\");\n\t }\n\t this.state = 597;\n\t localctx.op = this._input.LT(1);\n\t _la = this._input.LA(1);\n\t if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & 469762048) !== 0))) {\n\t localctx.op = this._errHandler.recoverInline(this);\n\t }\n\t else {\n\t \tthis._errHandler.reportMatch(this);\n\t this.consume();\n\t }\n\t this.state = 598;\n\t this.expr(12);\n\t break;\n\n\t case 2:\n\t localctx = new AdditiveExprContext(this, new ExprContext(this, _parentctx, _parentState));\n\t this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n\t this.state = 599;\n\t if (!( this.precpred(this._ctx, 10))) {\n\t throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 10)\");\n\t }\n\t this.state = 600;\n\t localctx.op = this._input.LT(1);\n\t _la = this._input.LA(1);\n\t if(!(_la===24 || _la===25)) {\n\t localctx.op = this._errHandler.recoverInline(this);\n\t }\n\t else {\n\t \tthis._errHandler.reportMatch(this);\n\t this.consume();\n\t }\n\t this.state = 601;\n\t this.expr(11);\n\t break;\n\n\t case 3:\n\t localctx = new RelationalExprContext(this, new ExprContext(this, _parentctx, _parentState));\n\t this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n\t this.state = 602;\n\t if (!( this.precpred(this._ctx, 9))) {\n\t throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 9)\");\n\t }\n\t this.state = 603;\n\t localctx.op = this._input.LT(1);\n\t _la = this._input.LA(1);\n\t if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & 15728640) !== 0))) {\n\t localctx.op = this._errHandler.recoverInline(this);\n\t }\n\t else {\n\t \tthis._errHandler.reportMatch(this);\n\t this.consume();\n\t }\n\t this.state = 604;\n\t this.expr(10);\n\t break;\n\n\t case 4:\n\t localctx = new EqualityExprContext(this, new ExprContext(this, _parentctx, _parentState));\n\t this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n\t this.state = 605;\n\t if (!( this.precpred(this._ctx, 8))) {\n\t throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 8)\");\n\t }\n\t this.state = 606;\n\t localctx.op = this._input.LT(1);\n\t _la = this._input.LA(1);\n\t if(!(_la===18 || _la===19)) {\n\t localctx.op = this._errHandler.recoverInline(this);\n\t }\n\t else {\n\t \tthis._errHandler.reportMatch(this);\n\t this.consume();\n\t }\n\t this.state = 607;\n\t this.expr(9);\n\t break;\n\n\t case 5:\n\t localctx = new AndExprContext(this, new ExprContext(this, _parentctx, _parentState));\n\t this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n\t this.state = 608;\n\t if (!( this.precpred(this._ctx, 7))) {\n\t throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 7)\");\n\t }\n\t this.state = 609;\n\t this.match(sequenceParser.AND);\n\t this.state = 610;\n\t this.expr(8);\n\t break;\n\n\t case 6:\n\t localctx = new OrExprContext(this, new ExprContext(this, _parentctx, _parentState));\n\t this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n\t this.state = 611;\n\t if (!( this.precpred(this._ctx, 6))) {\n\t throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 6)\");\n\t }\n\t this.state = 612;\n\t this.match(sequenceParser.OR);\n\t this.state = 613;\n\t this.expr(7);\n\t break;\n\n\t case 7:\n\t localctx = new PlusExprContext(this, new ExprContext(this, _parentctx, _parentState));\n\t this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n\t this.state = 614;\n\t if (!( this.precpred(this._ctx, 5))) {\n\t throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 5)\");\n\t }\n\t this.state = 615;\n\t this.match(sequenceParser.PLUS);\n\t this.state = 616;\n\t this.expr(6);\n\t break;\n\n\t } \n\t }\n\t this.state = 621;\n\t this._errHandler.sync(this);\n\t _alt = this._interp.adaptivePredict(this._input,94,this._ctx);\n\t }\n\n\t } catch( error) {\n\t if(error instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = error;\n\t\t this._errHandler.reportError(this, error);\n\t\t this._errHandler.recover(this, error);\n\t\t } else {\n\t\t \tthrow error;\n\t\t }\n\t } finally {\n\t this.unrollRecursionContexts(_parentctx)\n\t }\n\t return localctx;\n\t}\n\n\n\n\tatom() {\n\t let localctx = new AtomContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 112, sequenceParser.RULE_atom);\n\t var _la = 0; // Token type\n\t try {\n\t this.state = 629;\n\t this._errHandler.sync(this);\n\t switch(this._input.LA(1)) {\n\t case 62:\n\t case 63:\n\t localctx = new NumberAtomContext(this, localctx);\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 622;\n\t _la = this._input.LA(1);\n\t if(!(_la===62 || _la===63)) {\n\t this._errHandler.recoverInline(this);\n\t }\n\t else {\n\t \tthis._errHandler.reportMatch(this);\n\t this.consume();\n\t }\n\t break;\n\t case 65:\n\t localctx = new NumberUnitAtomContext(this, localctx);\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 623;\n\t this.match(sequenceParser.NUMBER_UNIT);\n\t break;\n\t case 64:\n\t localctx = new MoneyAtomContext(this, localctx);\n\t this.enterOuterAlt(localctx, 3);\n\t this.state = 624;\n\t this.match(sequenceParser.MONEY);\n\t break;\n\t case 38:\n\t case 39:\n\t localctx = new BooleanAtomContext(this, localctx);\n\t this.enterOuterAlt(localctx, 4);\n\t this.state = 625;\n\t _la = this._input.LA(1);\n\t if(!(_la===38 || _la===39)) {\n\t this._errHandler.recoverInline(this);\n\t }\n\t else {\n\t \tthis._errHandler.reportMatch(this);\n\t this.consume();\n\t }\n\t break;\n\t case 61:\n\t localctx = new IdAtomContext(this, localctx);\n\t this.enterOuterAlt(localctx, 5);\n\t this.state = 626;\n\t this.match(sequenceParser.ID);\n\t break;\n\t case 66:\n\t case 67:\n\t localctx = new StringAtomContext(this, localctx);\n\t this.enterOuterAlt(localctx, 6);\n\t this.state = 627;\n\t _la = this._input.LA(1);\n\t if(!(_la===66 || _la===67)) {\n\t this._errHandler.recoverInline(this);\n\t }\n\t else {\n\t \tthis._errHandler.reportMatch(this);\n\t this.consume();\n\t }\n\t break;\n\t case 40:\n\t localctx = new NilAtomContext(this, localctx);\n\t this.enterOuterAlt(localctx, 7);\n\t this.state = 628;\n\t this.match(sequenceParser.NIL);\n\t break;\n\t default:\n\t throw new antlr4.error.NoViableAltException(this);\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tparExpr() {\n\t let localctx = new ParExprContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 114, sequenceParser.RULE_parExpr);\n\t var _la = 0; // Token type\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 631;\n\t this.match(sequenceParser.OPAR);\n\t this.state = 633;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,96,this._ctx);\n\t if(la_===1) {\n\t this.state = 632;\n\t this.condition();\n\n\t }\n\t this.state = 636;\n\t this._errHandler.sync(this);\n\t _la = this._input.LA(1);\n\t if(_la===35) {\n\t this.state = 635;\n\t this.match(sequenceParser.CPAR);\n\t }\n\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tcondition() {\n\t let localctx = new ConditionContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 116, sequenceParser.RULE_condition);\n\t try {\n\t this.state = 642;\n\t this._errHandler.sync(this);\n\t var la_ = this._interp.adaptivePredict(this._input,98,this._ctx);\n\t switch(la_) {\n\t case 1:\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 638;\n\t this.atom();\n\t break;\n\n\t case 2:\n\t this.enterOuterAlt(localctx, 2);\n\t this.state = 639;\n\t this.expr(0);\n\t break;\n\n\t case 3:\n\t this.enterOuterAlt(localctx, 3);\n\t this.state = 640;\n\t this.inExpr();\n\t break;\n\n\t case 4:\n\t this.enterOuterAlt(localctx, 4);\n\t this.state = 641;\n\t this.textExpr();\n\t break;\n\n\t }\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\tinExpr() {\n\t let localctx = new InExprContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 118, sequenceParser.RULE_inExpr);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 644;\n\t this.match(sequenceParser.ID);\n\t this.state = 645;\n\t this.match(sequenceParser.IN);\n\t this.state = 646;\n\t this.match(sequenceParser.ID);\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n\n\ttextExpr() {\n\t let localctx = new TextExprContext(this, this._ctx, this.state);\n\t this.enterRule(localctx, 120, sequenceParser.RULE_textExpr);\n\t try {\n\t this.enterOuterAlt(localctx, 1);\n\t this.state = 649; \n\t this._errHandler.sync(this);\n\t var _alt = 1;\n\t do {\n\t \tswitch (_alt) {\n\t \tcase 1:\n\t \t\tthis.state = 648;\n\t \t\tthis.match(sequenceParser.ID);\n\t \t\tbreak;\n\t \tdefault:\n\t \t\tthrow new antlr4.error.NoViableAltException(this);\n\t \t}\n\t \tthis.state = 651; \n\t \tthis._errHandler.sync(this);\n\t \t_alt = this._interp.adaptivePredict(this._input,99, this._ctx);\n\t } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );\n\t } catch (re) {\n\t \tif(re instanceof antlr4.error.RecognitionException) {\n\t\t localctx.exception = re;\n\t\t this._errHandler.reportError(this, re);\n\t\t this._errHandler.recover(this, re);\n\t\t } else {\n\t\t \tthrow re;\n\t\t }\n\t } finally {\n\t this.exitRule();\n\t }\n\t return localctx;\n\t}\n\n\n}\n\nsequenceParser.EOF = antlr4.Token.EOF;\nsequenceParser.WS = 1;\nsequenceParser.CONSTANT = 2;\nsequenceParser.READONLY = 3;\nsequenceParser.STATIC = 4;\nsequenceParser.AWAIT = 5;\nsequenceParser.TITLE = 6;\nsequenceParser.COL = 7;\nsequenceParser.SOPEN = 8;\nsequenceParser.SCLOSE = 9;\nsequenceParser.RETURN_ARROW = 10;\nsequenceParser.ARROW = 11;\nsequenceParser.COLOR = 12;\nsequenceParser.EMOJI_SHORTCODE = 13;\nsequenceParser.LBRACKET = 14;\nsequenceParser.RBRACKET = 15;\nsequenceParser.OR = 16;\nsequenceParser.AND = 17;\nsequenceParser.EQ = 18;\nsequenceParser.NEQ = 19;\nsequenceParser.GT = 20;\nsequenceParser.LT = 21;\nsequenceParser.GTEQ = 22;\nsequenceParser.LTEQ = 23;\nsequenceParser.PLUS = 24;\nsequenceParser.MINUS = 25;\nsequenceParser.MULT = 26;\nsequenceParser.DIV = 27;\nsequenceParser.MOD = 28;\nsequenceParser.POW = 29;\nsequenceParser.NOT = 30;\nsequenceParser.SCOL = 31;\nsequenceParser.COMMA = 32;\nsequenceParser.ASSIGN = 33;\nsequenceParser.OPAR = 34;\nsequenceParser.CPAR = 35;\nsequenceParser.OBRACE = 36;\nsequenceParser.CBRACE = 37;\nsequenceParser.TRUE = 38;\nsequenceParser.FALSE = 39;\nsequenceParser.NIL = 40;\nsequenceParser.IF = 41;\nsequenceParser.ELSE = 42;\nsequenceParser.WHILE = 43;\nsequenceParser.RETURN = 44;\nsequenceParser.NEW = 45;\nsequenceParser.PAR = 46;\nsequenceParser.GROUP = 47;\nsequenceParser.OPT = 48;\nsequenceParser.CRITICAL = 49;\nsequenceParser.SECTION = 50;\nsequenceParser.REF = 51;\nsequenceParser.AS = 52;\nsequenceParser.TRY = 53;\nsequenceParser.CATCH = 54;\nsequenceParser.FINALLY = 55;\nsequenceParser.IN = 56;\nsequenceParser.STARTER_LXR = 57;\nsequenceParser.ANNOTATION_RET = 58;\nsequenceParser.ANNOTATION = 59;\nsequenceParser.DOT = 60;\nsequenceParser.ID = 61;\nsequenceParser.INT = 62;\nsequenceParser.FLOAT = 63;\nsequenceParser.MONEY = 64;\nsequenceParser.NUMBER_UNIT = 65;\nsequenceParser.CSTRING = 66;\nsequenceParser.USTRING = 67;\nsequenceParser.CR = 68;\nsequenceParser.COMMENT = 69;\nsequenceParser.OTHER = 70;\nsequenceParser.DIVIDER = 71;\nsequenceParser.EVENT_PAYLOAD_LXR = 72;\nsequenceParser.EVENT_END = 73;\nsequenceParser.TITLE_CONTENT = 74;\nsequenceParser.TITLE_END = 75;\n\nsequenceParser.RULE_prog = 0;\nsequenceParser.RULE_title = 1;\nsequenceParser.RULE_head = 2;\nsequenceParser.RULE_group = 3;\nsequenceParser.RULE_starterExp = 4;\nsequenceParser.RULE_starter = 5;\nsequenceParser.RULE_participant = 6;\nsequenceParser.RULE_stereotype = 7;\nsequenceParser.RULE_label = 8;\nsequenceParser.RULE_participantType = 9;\nsequenceParser.RULE_name = 10;\nsequenceParser.RULE_width = 11;\nsequenceParser.RULE_emoji = 12;\nsequenceParser.RULE_block = 13;\nsequenceParser.RULE_ret = 14;\nsequenceParser.RULE_returnAsyncMessage = 15;\nsequenceParser.RULE_divider = 16;\nsequenceParser.RULE_dividerNote = 17;\nsequenceParser.RULE_stat = 18;\nsequenceParser.RULE_par = 19;\nsequenceParser.RULE_opt = 20;\nsequenceParser.RULE_critical = 21;\nsequenceParser.RULE_section = 22;\nsequenceParser.RULE_creation = 23;\nsequenceParser.RULE_ref = 24;\nsequenceParser.RULE_creationBody = 25;\nsequenceParser.RULE_message = 26;\nsequenceParser.RULE_messageBody = 27;\nsequenceParser.RULE_fromTo = 28;\nsequenceParser.RULE_func = 29;\nsequenceParser.RULE_from = 30;\nsequenceParser.RULE_to = 31;\nsequenceParser.RULE_signature = 32;\nsequenceParser.RULE_invocation = 33;\nsequenceParser.RULE_assignment = 34;\nsequenceParser.RULE_asyncMessage = 35;\nsequenceParser.RULE_content = 36;\nsequenceParser.RULE_construct = 37;\nsequenceParser.RULE_type = 38;\nsequenceParser.RULE_assignee = 39;\nsequenceParser.RULE_methodName = 40;\nsequenceParser.RULE_parameters = 41;\nsequenceParser.RULE_parameter = 42;\nsequenceParser.RULE_namedParameter = 43;\nsequenceParser.RULE_declaration = 44;\nsequenceParser.RULE_tcf = 45;\nsequenceParser.RULE_tryBlock = 46;\nsequenceParser.RULE_catchBlock = 47;\nsequenceParser.RULE_finallyBlock = 48;\nsequenceParser.RULE_alt = 49;\nsequenceParser.RULE_ifBlock = 50;\nsequenceParser.RULE_elseIfBlock = 51;\nsequenceParser.RULE_elseBlock = 52;\nsequenceParser.RULE_braceBlock = 53;\nsequenceParser.RULE_loop = 54;\nsequenceParser.RULE_expr = 55;\nsequenceParser.RULE_atom = 56;\nsequenceParser.RULE_parExpr = 57;\nsequenceParser.RULE_condition = 58;\nsequenceParser.RULE_inExpr = 59;\nsequenceParser.RULE_textExpr = 60;\n\nclass ProgContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_prog;\n }\n\n\tEOF() {\n\t return this.getToken(sequenceParser.EOF, 0);\n\t};\n\n\ttitle() {\n\t return this.getTypedRuleContext(TitleContext,0);\n\t};\n\n\thead() {\n\t return this.getTypedRuleContext(HeadContext,0);\n\t};\n\n\tblock() {\n\t return this.getTypedRuleContext(BlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterProg(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitProg(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass TitleContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_title;\n }\n\n\tTITLE() {\n\t return this.getToken(sequenceParser.TITLE, 0);\n\t};\n\n\tTITLE_CONTENT() {\n\t return this.getToken(sequenceParser.TITLE_CONTENT, 0);\n\t};\n\n\tTITLE_END() {\n\t return this.getToken(sequenceParser.TITLE_END, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterTitle(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitTitle(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass HeadContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_head;\n }\n\n\tgroup = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(GroupContext);\n\t } else {\n\t return this.getTypedRuleContext(GroupContext,i);\n\t }\n\t};\n\n\tparticipant = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(ParticipantContext);\n\t } else {\n\t return this.getTypedRuleContext(ParticipantContext,i);\n\t }\n\t};\n\n\tstarterExp() {\n\t return this.getTypedRuleContext(StarterExpContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterHead(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitHead(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass GroupContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_group;\n }\n\n\tGROUP() {\n\t return this.getToken(sequenceParser.GROUP, 0);\n\t};\n\n\tname() {\n\t return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tOBRACE() {\n\t return this.getToken(sequenceParser.OBRACE, 0);\n\t};\n\n\tparticipant = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(ParticipantContext);\n\t } else {\n\t return this.getTypedRuleContext(ParticipantContext,i);\n\t }\n\t};\n\n\tCBRACE() {\n\t return this.getToken(sequenceParser.CBRACE, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterGroup(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitGroup(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass StarterExpContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_starterExp;\n }\n\n\tSTARTER_LXR() {\n\t return this.getToken(sequenceParser.STARTER_LXR, 0);\n\t};\n\n\tOPAR() {\n\t return this.getToken(sequenceParser.OPAR, 0);\n\t};\n\n\tCPAR() {\n\t return this.getToken(sequenceParser.CPAR, 0);\n\t};\n\n\tstarter() {\n\t return this.getTypedRuleContext(StarterContext,0);\n\t};\n\n\tANNOTATION() {\n\t return this.getToken(sequenceParser.ANNOTATION, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterStarterExp(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitStarterExp(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass StarterContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_starter;\n }\n\n\tname() {\n\t return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterStarter(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitStarter(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ParticipantContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_participant;\n }\n\n\tname() {\n\t return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tparticipantType() {\n\t return this.getTypedRuleContext(ParticipantTypeContext,0);\n\t};\n\n\tstereotype() {\n\t return this.getTypedRuleContext(StereotypeContext,0);\n\t};\n\n\temoji() {\n\t return this.getTypedRuleContext(EmojiContext,0);\n\t};\n\n\twidth() {\n\t return this.getTypedRuleContext(WidthContext,0);\n\t};\n\n\tlabel() {\n\t return this.getTypedRuleContext(LabelContext,0);\n\t};\n\n\tCOLOR() {\n\t return this.getToken(sequenceParser.COLOR, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterParticipant(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitParticipant(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass StereotypeContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_stereotype;\n }\n\n\tSOPEN() {\n\t return this.getToken(sequenceParser.SOPEN, 0);\n\t};\n\n\tname() {\n\t return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tSCLOSE() {\n\t return this.getToken(sequenceParser.SCLOSE, 0);\n\t};\n\n\tGT() {\n\t return this.getToken(sequenceParser.GT, 0);\n\t};\n\n\tLT() {\n\t return this.getToken(sequenceParser.LT, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterStereotype(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitStereotype(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass LabelContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_label;\n }\n\n\tAS() {\n\t return this.getToken(sequenceParser.AS, 0);\n\t};\n\n\tname() {\n\t return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterLabel(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitLabel(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ParticipantTypeContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_participantType;\n }\n\n\tANNOTATION() {\n\t return this.getToken(sequenceParser.ANNOTATION, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterParticipantType(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitParticipantType(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass NameContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_name;\n }\n\n\tID() {\n\t return this.getToken(sequenceParser.ID, 0);\n\t};\n\n\tCSTRING() {\n\t return this.getToken(sequenceParser.CSTRING, 0);\n\t};\n\n\tUSTRING() {\n\t return this.getToken(sequenceParser.USTRING, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterName(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitName(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass WidthContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_width;\n }\n\n\tINT() {\n\t return this.getToken(sequenceParser.INT, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterWidth(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitWidth(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass EmojiContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_emoji;\n }\n\n\tLBRACKET() {\n\t return this.getToken(sequenceParser.LBRACKET, 0);\n\t};\n\n\tname() {\n\t return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tRBRACKET() {\n\t return this.getToken(sequenceParser.RBRACKET, 0);\n\t};\n\n\tEMOJI_SHORTCODE() {\n\t return this.getToken(sequenceParser.EMOJI_SHORTCODE, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterEmoji(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitEmoji(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass BlockContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_block;\n }\n\n\tstat = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(StatContext);\n\t } else {\n\t return this.getTypedRuleContext(StatContext,i);\n\t }\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass RetContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_ret;\n }\n\n\tRETURN() {\n\t return this.getToken(sequenceParser.RETURN, 0);\n\t};\n\n\texpr() {\n\t return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tSCOL() {\n\t return this.getToken(sequenceParser.SCOL, 0);\n\t};\n\n\tANNOTATION_RET() {\n\t return this.getToken(sequenceParser.ANNOTATION_RET, 0);\n\t};\n\n\tasyncMessage() {\n\t return this.getTypedRuleContext(AsyncMessageContext,0);\n\t};\n\n\tEVENT_END() {\n\t return this.getToken(sequenceParser.EVENT_END, 0);\n\t};\n\n\treturnAsyncMessage() {\n\t return this.getTypedRuleContext(ReturnAsyncMessageContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterRet(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitRet(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ReturnAsyncMessageContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_returnAsyncMessage;\n }\n\n\tfrom() {\n\t return this.getTypedRuleContext(FromContext,0);\n\t};\n\n\tRETURN_ARROW() {\n\t return this.getToken(sequenceParser.RETURN_ARROW, 0);\n\t};\n\n\tto() {\n\t return this.getTypedRuleContext(ToContext,0);\n\t};\n\n\tCOL() {\n\t return this.getToken(sequenceParser.COL, 0);\n\t};\n\n\tcontent() {\n\t return this.getTypedRuleContext(ContentContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterReturnAsyncMessage(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitReturnAsyncMessage(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass DividerContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_divider;\n }\n\n\tdividerNote() {\n\t return this.getTypedRuleContext(DividerNoteContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterDivider(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitDivider(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass DividerNoteContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_dividerNote;\n }\n\n\tDIVIDER() {\n\t return this.getToken(sequenceParser.DIVIDER, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterDividerNote(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitDividerNote(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass StatContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_stat;\n }\n\n\talt() {\n\t return this.getTypedRuleContext(AltContext,0);\n\t};\n\n\tpar() {\n\t return this.getTypedRuleContext(ParContext,0);\n\t};\n\n\topt() {\n\t return this.getTypedRuleContext(OptContext,0);\n\t};\n\n\tcritical() {\n\t return this.getTypedRuleContext(CriticalContext,0);\n\t};\n\n\tsection() {\n\t return this.getTypedRuleContext(SectionContext,0);\n\t};\n\n\tref() {\n\t return this.getTypedRuleContext(RefContext,0);\n\t};\n\n\tloop() {\n\t return this.getTypedRuleContext(LoopContext,0);\n\t};\n\n\tcreation() {\n\t return this.getTypedRuleContext(CreationContext,0);\n\t};\n\n\tmessage() {\n\t return this.getTypedRuleContext(MessageContext,0);\n\t};\n\n\tasyncMessage() {\n\t return this.getTypedRuleContext(AsyncMessageContext,0);\n\t};\n\n\tEVENT_END() {\n\t return this.getToken(sequenceParser.EVENT_END, 0);\n\t};\n\n\tret() {\n\t return this.getTypedRuleContext(RetContext,0);\n\t};\n\n\tdivider() {\n\t return this.getTypedRuleContext(DividerContext,0);\n\t};\n\n\ttcf() {\n\t return this.getTypedRuleContext(TcfContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterStat(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitStat(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ParContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_par;\n }\n\n\tPAR() {\n\t return this.getToken(sequenceParser.PAR, 0);\n\t};\n\n\tbraceBlock() {\n\t return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tparExpr() {\n\t return this.getTypedRuleContext(ParExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterPar(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitPar(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass OptContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_opt;\n }\n\n\tOPT() {\n\t return this.getToken(sequenceParser.OPT, 0);\n\t};\n\n\tbraceBlock() {\n\t return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tparExpr() {\n\t return this.getTypedRuleContext(ParExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterOpt(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitOpt(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass CriticalContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_critical;\n }\n\n\tCRITICAL() {\n\t return this.getToken(sequenceParser.CRITICAL, 0);\n\t};\n\n\tbraceBlock() {\n\t return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tparExpr() {\n\t return this.getTypedRuleContext(ParExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterCritical(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitCritical(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass SectionContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_section;\n }\n\n\tSECTION() {\n\t return this.getToken(sequenceParser.SECTION, 0);\n\t};\n\n\tbraceBlock() {\n\t return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tOPAR() {\n\t return this.getToken(sequenceParser.OPAR, 0);\n\t};\n\n\tCPAR() {\n\t return this.getToken(sequenceParser.CPAR, 0);\n\t};\n\n\tatom() {\n\t return this.getTypedRuleContext(AtomContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterSection(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitSection(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass CreationContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_creation;\n }\n\n\tcreationBody() {\n\t return this.getTypedRuleContext(CreationBodyContext,0);\n\t};\n\n\tSCOL() {\n\t return this.getToken(sequenceParser.SCOL, 0);\n\t};\n\n\tbraceBlock() {\n\t return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterCreation(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitCreation(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass RefContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_ref;\n }\n\n\tREF() {\n\t return this.getToken(sequenceParser.REF, 0);\n\t};\n\n\tOPAR() {\n\t return this.getToken(sequenceParser.OPAR, 0);\n\t};\n\n\tCPAR() {\n\t return this.getToken(sequenceParser.CPAR, 0);\n\t};\n\n\tname = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(NameContext);\n\t } else {\n\t return this.getTypedRuleContext(NameContext,i);\n\t }\n\t};\n\n\tSCOL() {\n\t return this.getToken(sequenceParser.SCOL, 0);\n\t};\n\n\tCOMMA = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t if(i===null) {\n\t return this.getTokens(sequenceParser.COMMA);\n\t } else {\n\t return this.getToken(sequenceParser.COMMA, i);\n\t }\n\t};\n\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterRef(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitRef(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass CreationBodyContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_creationBody;\n }\n\n\tNEW() {\n\t return this.getToken(sequenceParser.NEW, 0);\n\t};\n\n\tconstruct() {\n\t return this.getTypedRuleContext(ConstructContext,0);\n\t};\n\n\tassignment() {\n\t return this.getTypedRuleContext(AssignmentContext,0);\n\t};\n\n\tOPAR() {\n\t return this.getToken(sequenceParser.OPAR, 0);\n\t};\n\n\tCPAR() {\n\t return this.getToken(sequenceParser.CPAR, 0);\n\t};\n\n\tparameters() {\n\t return this.getTypedRuleContext(ParametersContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterCreationBody(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitCreationBody(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass MessageContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_message;\n }\n\n\tmessageBody() {\n\t return this.getTypedRuleContext(MessageBodyContext,0);\n\t};\n\n\tSCOL() {\n\t return this.getToken(sequenceParser.SCOL, 0);\n\t};\n\n\tbraceBlock() {\n\t return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterMessage(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitMessage(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass MessageBodyContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_messageBody;\n }\n\n\tassignment() {\n\t return this.getTypedRuleContext(AssignmentContext,0);\n\t};\n\n\tfromTo() {\n\t return this.getTypedRuleContext(FromToContext,0);\n\t};\n\n\tfunc() {\n\t return this.getTypedRuleContext(FuncContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterMessageBody(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitMessageBody(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass FromToContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_fromTo;\n }\n\n\tto() {\n\t return this.getTypedRuleContext(ToContext,0);\n\t};\n\n\tDOT() {\n\t return this.getToken(sequenceParser.DOT, 0);\n\t};\n\n\tfrom() {\n\t return this.getTypedRuleContext(FromContext,0);\n\t};\n\n\tARROW() {\n\t return this.getToken(sequenceParser.ARROW, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterFromTo(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitFromTo(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass FuncContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_func;\n }\n\n\tsignature = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(SignatureContext);\n\t } else {\n\t return this.getTypedRuleContext(SignatureContext,i);\n\t }\n\t};\n\n\tDOT = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t if(i===null) {\n\t return this.getTokens(sequenceParser.DOT);\n\t } else {\n\t return this.getToken(sequenceParser.DOT, i);\n\t }\n\t};\n\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterFunc(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitFunc(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass FromContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_from;\n }\n\n\tname() {\n\t return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\temoji() {\n\t return this.getTypedRuleContext(EmojiContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterFrom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitFrom(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ToContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_to;\n }\n\n\tname() {\n\t return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\temoji() {\n\t return this.getTypedRuleContext(EmojiContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterTo(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitTo(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass SignatureContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_signature;\n }\n\n\tmethodName() {\n\t return this.getTypedRuleContext(MethodNameContext,0);\n\t};\n\n\tinvocation() {\n\t return this.getTypedRuleContext(InvocationContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterSignature(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitSignature(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass InvocationContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_invocation;\n }\n\n\tOPAR() {\n\t return this.getToken(sequenceParser.OPAR, 0);\n\t};\n\n\tCPAR() {\n\t return this.getToken(sequenceParser.CPAR, 0);\n\t};\n\n\tparameters() {\n\t return this.getTypedRuleContext(ParametersContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterInvocation(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitInvocation(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass AssignmentContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_assignment;\n }\n\n\tassignee() {\n\t return this.getTypedRuleContext(AssigneeContext,0);\n\t};\n\n\tASSIGN() {\n\t return this.getToken(sequenceParser.ASSIGN, 0);\n\t};\n\n\ttype() {\n\t return this.getTypedRuleContext(TypeContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterAssignment(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitAssignment(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass AsyncMessageContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_asyncMessage;\n }\n\n\tto() {\n\t return this.getTypedRuleContext(ToContext,0);\n\t};\n\n\tCOL() {\n\t return this.getToken(sequenceParser.COL, 0);\n\t};\n\n\tfrom() {\n\t return this.getTypedRuleContext(FromContext,0);\n\t};\n\n\tARROW() {\n\t return this.getToken(sequenceParser.ARROW, 0);\n\t};\n\n\tcontent() {\n\t return this.getTypedRuleContext(ContentContext,0);\n\t};\n\n\tMINUS() {\n\t return this.getToken(sequenceParser.MINUS, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterAsyncMessage(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitAsyncMessage(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ContentContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_content;\n }\n\n\tEVENT_PAYLOAD_LXR() {\n\t return this.getToken(sequenceParser.EVENT_PAYLOAD_LXR, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterContent(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitContent(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ConstructContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_construct;\n }\n\n\tname() {\n\t return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterConstruct(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitConstruct(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass TypeContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_type;\n }\n\n\tname() {\n\t return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterType(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitType(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass AssigneeContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_assignee;\n }\n\n\tatom() {\n\t return this.getTypedRuleContext(AtomContext,0);\n\t};\n\n\tID = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t if(i===null) {\n\t return this.getTokens(sequenceParser.ID);\n\t } else {\n\t return this.getToken(sequenceParser.ID, i);\n\t }\n\t};\n\n\n\tCOMMA = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t if(i===null) {\n\t return this.getTokens(sequenceParser.COMMA);\n\t } else {\n\t return this.getToken(sequenceParser.COMMA, i);\n\t }\n\t};\n\n\n\tCSTRING() {\n\t return this.getToken(sequenceParser.CSTRING, 0);\n\t};\n\n\tUSTRING() {\n\t return this.getToken(sequenceParser.USTRING, 0);\n\t};\n\n\tNEW() {\n\t return this.getToken(sequenceParser.NEW, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterAssignee(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitAssignee(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass MethodNameContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_methodName;\n }\n\n\tname() {\n\t return this.getTypedRuleContext(NameContext,0);\n\t};\n\n\temoji() {\n\t return this.getTypedRuleContext(EmojiContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterMethodName(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitMethodName(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ParametersContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_parameters;\n }\n\n\tparameter = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(ParameterContext);\n\t } else {\n\t return this.getTypedRuleContext(ParameterContext,i);\n\t }\n\t};\n\n\tCOMMA = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t if(i===null) {\n\t return this.getTokens(sequenceParser.COMMA);\n\t } else {\n\t return this.getToken(sequenceParser.COMMA, i);\n\t }\n\t};\n\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterParameters(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitParameters(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ParameterContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_parameter;\n }\n\n\tnamedParameter() {\n\t return this.getTypedRuleContext(NamedParameterContext,0);\n\t};\n\n\tdeclaration() {\n\t return this.getTypedRuleContext(DeclarationContext,0);\n\t};\n\n\texpr() {\n\t return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterParameter(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitParameter(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass NamedParameterContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_namedParameter;\n }\n\n\tID() {\n\t return this.getToken(sequenceParser.ID, 0);\n\t};\n\n\tASSIGN() {\n\t return this.getToken(sequenceParser.ASSIGN, 0);\n\t};\n\n\texpr() {\n\t return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterNamedParameter(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitNamedParameter(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass DeclarationContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_declaration;\n }\n\n\ttype() {\n\t return this.getTypedRuleContext(TypeContext,0);\n\t};\n\n\tID() {\n\t return this.getToken(sequenceParser.ID, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterDeclaration(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitDeclaration(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass TcfContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_tcf;\n }\n\n\ttryBlock() {\n\t return this.getTypedRuleContext(TryBlockContext,0);\n\t};\n\n\tcatchBlock = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(CatchBlockContext);\n\t } else {\n\t return this.getTypedRuleContext(CatchBlockContext,i);\n\t }\n\t};\n\n\tfinallyBlock() {\n\t return this.getTypedRuleContext(FinallyBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterTcf(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitTcf(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass TryBlockContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_tryBlock;\n }\n\n\tTRY() {\n\t return this.getToken(sequenceParser.TRY, 0);\n\t};\n\n\tbraceBlock() {\n\t return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterTryBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitTryBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass CatchBlockContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_catchBlock;\n }\n\n\tCATCH() {\n\t return this.getToken(sequenceParser.CATCH, 0);\n\t};\n\n\tbraceBlock() {\n\t return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tinvocation() {\n\t return this.getTypedRuleContext(InvocationContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterCatchBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitCatchBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass FinallyBlockContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_finallyBlock;\n }\n\n\tFINALLY() {\n\t return this.getToken(sequenceParser.FINALLY, 0);\n\t};\n\n\tbraceBlock() {\n\t return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterFinallyBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitFinallyBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass AltContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_alt;\n }\n\n\tifBlock() {\n\t return this.getTypedRuleContext(IfBlockContext,0);\n\t};\n\n\telseIfBlock = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(ElseIfBlockContext);\n\t } else {\n\t return this.getTypedRuleContext(ElseIfBlockContext,i);\n\t }\n\t};\n\n\telseBlock() {\n\t return this.getTypedRuleContext(ElseBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterAlt(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitAlt(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass IfBlockContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_ifBlock;\n }\n\n\tIF() {\n\t return this.getToken(sequenceParser.IF, 0);\n\t};\n\n\tparExpr() {\n\t return this.getTypedRuleContext(ParExprContext,0);\n\t};\n\n\tbraceBlock() {\n\t return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterIfBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitIfBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ElseIfBlockContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_elseIfBlock;\n }\n\n\tELSE() {\n\t return this.getToken(sequenceParser.ELSE, 0);\n\t};\n\n\tIF() {\n\t return this.getToken(sequenceParser.IF, 0);\n\t};\n\n\tparExpr() {\n\t return this.getTypedRuleContext(ParExprContext,0);\n\t};\n\n\tbraceBlock() {\n\t return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterElseIfBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitElseIfBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ElseBlockContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_elseBlock;\n }\n\n\tELSE() {\n\t return this.getToken(sequenceParser.ELSE, 0);\n\t};\n\n\tbraceBlock() {\n\t return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterElseBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitElseBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass BraceBlockContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_braceBlock;\n }\n\n\tOBRACE() {\n\t return this.getToken(sequenceParser.OBRACE, 0);\n\t};\n\n\tCBRACE() {\n\t return this.getToken(sequenceParser.CBRACE, 0);\n\t};\n\n\tblock() {\n\t return this.getTypedRuleContext(BlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterBraceBlock(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitBraceBlock(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass LoopContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_loop;\n }\n\n\tWHILE() {\n\t return this.getToken(sequenceParser.WHILE, 0);\n\t};\n\n\tparExpr() {\n\t return this.getTypedRuleContext(ParExprContext,0);\n\t};\n\n\tbraceBlock() {\n\t return this.getTypedRuleContext(BraceBlockContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterLoop(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitLoop(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ExprContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_expr;\n }\n\n\n\t \n\t\tcopyFrom(ctx) {\n\t\t\tsuper.copyFrom(ctx);\n\t\t}\n\n}\n\n\nclass AssignmentExprContext extends ExprContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\tassignment() {\n\t return this.getTypedRuleContext(AssignmentContext,0);\n\t};\n\n\texpr() {\n\t return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterAssignmentExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitAssignmentExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.AssignmentExprContext = AssignmentExprContext;\n\nclass FuncExprContext extends ExprContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\tfunc() {\n\t return this.getTypedRuleContext(FuncContext,0);\n\t};\n\n\tto() {\n\t return this.getTypedRuleContext(ToContext,0);\n\t};\n\n\tDOT() {\n\t return this.getToken(sequenceParser.DOT, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterFuncExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitFuncExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.FuncExprContext = FuncExprContext;\n\nclass AtomExprContext extends ExprContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\tatom() {\n\t return this.getTypedRuleContext(AtomContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterAtomExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitAtomExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.AtomExprContext = AtomExprContext;\n\nclass OrExprContext extends ExprContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\texpr = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(ExprContext);\n\t } else {\n\t return this.getTypedRuleContext(ExprContext,i);\n\t }\n\t};\n\n\tOR() {\n\t return this.getToken(sequenceParser.OR, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterOrExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitOrExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.OrExprContext = OrExprContext;\n\nclass AdditiveExprContext extends ExprContext {\n\n constructor(parser, ctx) {\n super(parser);\n this.op = null; // Token;\n super.copyFrom(ctx);\n }\n\n\texpr = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(ExprContext);\n\t } else {\n\t return this.getTypedRuleContext(ExprContext,i);\n\t }\n\t};\n\n\tPLUS() {\n\t return this.getToken(sequenceParser.PLUS, 0);\n\t};\n\n\tMINUS() {\n\t return this.getToken(sequenceParser.MINUS, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterAdditiveExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitAdditiveExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.AdditiveExprContext = AdditiveExprContext;\n\nclass RelationalExprContext extends ExprContext {\n\n constructor(parser, ctx) {\n super(parser);\n this.op = null; // Token;\n super.copyFrom(ctx);\n }\n\n\texpr = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(ExprContext);\n\t } else {\n\t return this.getTypedRuleContext(ExprContext,i);\n\t }\n\t};\n\n\tLTEQ() {\n\t return this.getToken(sequenceParser.LTEQ, 0);\n\t};\n\n\tGTEQ() {\n\t return this.getToken(sequenceParser.GTEQ, 0);\n\t};\n\n\tLT() {\n\t return this.getToken(sequenceParser.LT, 0);\n\t};\n\n\tGT() {\n\t return this.getToken(sequenceParser.GT, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterRelationalExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitRelationalExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.RelationalExprContext = RelationalExprContext;\n\nclass PlusExprContext extends ExprContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\texpr = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(ExprContext);\n\t } else {\n\t return this.getTypedRuleContext(ExprContext,i);\n\t }\n\t};\n\n\tPLUS() {\n\t return this.getToken(sequenceParser.PLUS, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterPlusExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitPlusExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.PlusExprContext = PlusExprContext;\n\nclass NotExprContext extends ExprContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\tNOT() {\n\t return this.getToken(sequenceParser.NOT, 0);\n\t};\n\n\texpr() {\n\t return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterNotExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitNotExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.NotExprContext = NotExprContext;\n\nclass UnaryMinusExprContext extends ExprContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\tMINUS() {\n\t return this.getToken(sequenceParser.MINUS, 0);\n\t};\n\n\texpr() {\n\t return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterUnaryMinusExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitUnaryMinusExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.UnaryMinusExprContext = UnaryMinusExprContext;\n\nclass CreationExprContext extends ExprContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\tcreation() {\n\t return this.getTypedRuleContext(CreationContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterCreationExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitCreationExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.CreationExprContext = CreationExprContext;\n\nclass ParenthesizedExprContext extends ExprContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\tOPAR() {\n\t return this.getToken(sequenceParser.OPAR, 0);\n\t};\n\n\texpr() {\n\t return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tCPAR() {\n\t return this.getToken(sequenceParser.CPAR, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterParenthesizedExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitParenthesizedExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.ParenthesizedExprContext = ParenthesizedExprContext;\n\nclass MultiplicationExprContext extends ExprContext {\n\n constructor(parser, ctx) {\n super(parser);\n this.op = null; // Token;\n super.copyFrom(ctx);\n }\n\n\texpr = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(ExprContext);\n\t } else {\n\t return this.getTypedRuleContext(ExprContext,i);\n\t }\n\t};\n\n\tMULT() {\n\t return this.getToken(sequenceParser.MULT, 0);\n\t};\n\n\tDIV() {\n\t return this.getToken(sequenceParser.DIV, 0);\n\t};\n\n\tMOD() {\n\t return this.getToken(sequenceParser.MOD, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterMultiplicationExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitMultiplicationExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.MultiplicationExprContext = MultiplicationExprContext;\n\nclass EqualityExprContext extends ExprContext {\n\n constructor(parser, ctx) {\n super(parser);\n this.op = null; // Token;\n super.copyFrom(ctx);\n }\n\n\texpr = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(ExprContext);\n\t } else {\n\t return this.getTypedRuleContext(ExprContext,i);\n\t }\n\t};\n\n\tEQ() {\n\t return this.getToken(sequenceParser.EQ, 0);\n\t};\n\n\tNEQ() {\n\t return this.getToken(sequenceParser.NEQ, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterEqualityExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitEqualityExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.EqualityExprContext = EqualityExprContext;\n\nclass AndExprContext extends ExprContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\texpr = function(i) {\n\t if(i===undefined) {\n\t i = null;\n\t }\n\t if(i===null) {\n\t return this.getTypedRuleContexts(ExprContext);\n\t } else {\n\t return this.getTypedRuleContext(ExprContext,i);\n\t }\n\t};\n\n\tAND() {\n\t return this.getToken(sequenceParser.AND, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterAndExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitAndExpr(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.AndExprContext = AndExprContext;\n\nclass AtomContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_atom;\n }\n\n\n\t \n\t\tcopyFrom(ctx) {\n\t\t\tsuper.copyFrom(ctx);\n\t\t}\n\n}\n\n\nclass BooleanAtomContext extends AtomContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\tTRUE() {\n\t return this.getToken(sequenceParser.TRUE, 0);\n\t};\n\n\tFALSE() {\n\t return this.getToken(sequenceParser.FALSE, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterBooleanAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitBooleanAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.BooleanAtomContext = BooleanAtomContext;\n\nclass IdAtomContext extends AtomContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\tID() {\n\t return this.getToken(sequenceParser.ID, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterIdAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitIdAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.IdAtomContext = IdAtomContext;\n\nclass MoneyAtomContext extends AtomContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\tMONEY() {\n\t return this.getToken(sequenceParser.MONEY, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterMoneyAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitMoneyAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.MoneyAtomContext = MoneyAtomContext;\n\nclass StringAtomContext extends AtomContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\tCSTRING() {\n\t return this.getToken(sequenceParser.CSTRING, 0);\n\t};\n\n\tUSTRING() {\n\t return this.getToken(sequenceParser.USTRING, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterStringAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitStringAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.StringAtomContext = StringAtomContext;\n\nclass NilAtomContext extends AtomContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\tNIL() {\n\t return this.getToken(sequenceParser.NIL, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterNilAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitNilAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.NilAtomContext = NilAtomContext;\n\nclass NumberAtomContext extends AtomContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\tINT() {\n\t return this.getToken(sequenceParser.INT, 0);\n\t};\n\n\tFLOAT() {\n\t return this.getToken(sequenceParser.FLOAT, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterNumberAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitNumberAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.NumberAtomContext = NumberAtomContext;\n\nclass NumberUnitAtomContext extends AtomContext {\n\n constructor(parser, ctx) {\n super(parser);\n super.copyFrom(ctx);\n }\n\n\tNUMBER_UNIT() {\n\t return this.getToken(sequenceParser.NUMBER_UNIT, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterNumberUnitAtom(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitNumberUnitAtom(this);\n\t\t}\n\t}\n\n\n}\n\nsequenceParser.NumberUnitAtomContext = NumberUnitAtomContext;\n\nclass ParExprContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_parExpr;\n }\n\n\tOPAR() {\n\t return this.getToken(sequenceParser.OPAR, 0);\n\t};\n\n\tcondition() {\n\t return this.getTypedRuleContext(ConditionContext,0);\n\t};\n\n\tCPAR() {\n\t return this.getToken(sequenceParser.CPAR, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterParExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitParExpr(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass ConditionContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_condition;\n }\n\n\tatom() {\n\t return this.getTypedRuleContext(AtomContext,0);\n\t};\n\n\texpr() {\n\t return this.getTypedRuleContext(ExprContext,0);\n\t};\n\n\tinExpr() {\n\t return this.getTypedRuleContext(InExprContext,0);\n\t};\n\n\ttextExpr() {\n\t return this.getTypedRuleContext(TextExprContext,0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterCondition(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitCondition(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass InExprContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_inExpr;\n }\n\n\tID = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t if(i===null) {\n\t return this.getTokens(sequenceParser.ID);\n\t } else {\n\t return this.getToken(sequenceParser.ID, i);\n\t }\n\t};\n\n\n\tIN() {\n\t return this.getToken(sequenceParser.IN, 0);\n\t};\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterInExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitInExpr(this);\n\t\t}\n\t}\n\n\n}\n\n\n\nclass TextExprContext extends antlr4.ParserRuleContext {\n\n constructor(parser, parent, invokingState) {\n if(parent===undefined) {\n parent = null;\n }\n if(invokingState===undefined || invokingState===null) {\n invokingState = -1;\n }\n super(parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_textExpr;\n }\n\n\tID = function(i) {\n\t\tif(i===undefined) {\n\t\t\ti = null;\n\t\t}\n\t if(i===null) {\n\t return this.getTokens(sequenceParser.ID);\n\t } else {\n\t return this.getToken(sequenceParser.ID, i);\n\t }\n\t};\n\n\n\tenterRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.enterTextExpr(this);\n\t\t}\n\t}\n\n\texitRule(listener) {\n\t if(listener instanceof sequenceParserListener ) {\n\t listener.exitTextExpr(this);\n\t\t}\n\t}\n\n\n}\n\n\n\n\nsequenceParser.ProgContext = ProgContext; \nsequenceParser.TitleContext = TitleContext; \nsequenceParser.HeadContext = HeadContext; \nsequenceParser.GroupContext = GroupContext; \nsequenceParser.StarterExpContext = StarterExpContext; \nsequenceParser.StarterContext = StarterContext; \nsequenceParser.ParticipantContext = ParticipantContext; \nsequenceParser.StereotypeContext = StereotypeContext; \nsequenceParser.LabelContext = LabelContext; \nsequenceParser.ParticipantTypeContext = ParticipantTypeContext; \nsequenceParser.NameContext = NameContext; \nsequenceParser.WidthContext = WidthContext; \nsequenceParser.EmojiContext = EmojiContext; \nsequenceParser.BlockContext = BlockContext; \nsequenceParser.RetContext = RetContext; \nsequenceParser.ReturnAsyncMessageContext = ReturnAsyncMessageContext; \nsequenceParser.DividerContext = DividerContext; \nsequenceParser.DividerNoteContext = DividerNoteContext; \nsequenceParser.StatContext = StatContext; \nsequenceParser.ParContext = ParContext; \nsequenceParser.OptContext = OptContext; \nsequenceParser.CriticalContext = CriticalContext; \nsequenceParser.SectionContext = SectionContext; \nsequenceParser.CreationContext = CreationContext; \nsequenceParser.RefContext = RefContext; \nsequenceParser.CreationBodyContext = CreationBodyContext; \nsequenceParser.MessageContext = MessageContext; \nsequenceParser.MessageBodyContext = MessageBodyContext; \nsequenceParser.FromToContext = FromToContext; \nsequenceParser.FuncContext = FuncContext; \nsequenceParser.FromContext = FromContext; \nsequenceParser.ToContext = ToContext; \nsequenceParser.SignatureContext = SignatureContext; \nsequenceParser.InvocationContext = InvocationContext; \nsequenceParser.AssignmentContext = AssignmentContext; \nsequenceParser.AsyncMessageContext = AsyncMessageContext; \nsequenceParser.ContentContext = ContentContext; \nsequenceParser.ConstructContext = ConstructContext; \nsequenceParser.TypeContext = TypeContext; \nsequenceParser.AssigneeContext = AssigneeContext; \nsequenceParser.MethodNameContext = MethodNameContext; \nsequenceParser.ParametersContext = ParametersContext; \nsequenceParser.ParameterContext = ParameterContext; \nsequenceParser.NamedParameterContext = NamedParameterContext; \nsequenceParser.DeclarationContext = DeclarationContext; \nsequenceParser.TcfContext = TcfContext; \nsequenceParser.TryBlockContext = TryBlockContext; \nsequenceParser.CatchBlockContext = CatchBlockContext; \nsequenceParser.FinallyBlockContext = FinallyBlockContext; \nsequenceParser.AltContext = AltContext; \nsequenceParser.IfBlockContext = IfBlockContext; \nsequenceParser.ElseIfBlockContext = ElseIfBlockContext; \nsequenceParser.ElseBlockContext = ElseBlockContext; \nsequenceParser.BraceBlockContext = BraceBlockContext; \nsequenceParser.LoopContext = LoopContext; \nsequenceParser.ExprContext = ExprContext; \nsequenceParser.AtomContext = AtomContext; \nsequenceParser.ParExprContext = ParExprContext; \nsequenceParser.ConditionContext = ConditionContext; \nsequenceParser.InExprContext = InExprContext; \nsequenceParser.TextExprContext = TextExprContext; \n","export type Position = [number, number];\n\ninterface ParticipantOptions {\n isStarter?: boolean;\n stereotype?: string;\n width?: number;\n groupId?: number | string;\n label?: string;\n explicit?: boolean;\n type?: string;\n color?: string;\n comment?: string;\n assignee?: string;\n emoji?: string;\n position?: Position;\n assigneePosition?: Position;\n}\n\nexport const blankParticipant = {\n name: \"\",\n color: undefined,\n comment: undefined,\n explicit: undefined,\n groupId: undefined,\n isStarter: undefined,\n label: undefined,\n stereotype: undefined,\n type: undefined,\n width: undefined,\n assignee: undefined,\n emoji: undefined,\n positions: new Set(),\n assigneePositions: new Set(),\n};\n\nexport class Participant {\n name: string;\n private stereotype: string | undefined;\n private width: number | undefined;\n private groupId: number | string | undefined;\n explicit: boolean | undefined;\n isStarter: boolean | undefined;\n label: string | undefined;\n private type: string | undefined;\n private color: string | undefined;\n private comment: string | undefined;\n private assignee: string | undefined;\n private emoji: string | undefined;\n positions: Set<Position> = new Set();\n assigneePositions: Set<Position> = new Set();\n\n constructor(name: string, options: ParticipantOptions) {\n this.name = name;\n this.mergeOptions(options);\n }\n\n public mergeOptions(options: ParticipantOptions) {\n const {\n stereotype,\n width,\n groupId,\n label,\n explicit,\n isStarter,\n type,\n color,\n comment,\n assignee,\n emoji,\n } = options;\n this.stereotype ||= stereotype;\n this.width ||= width;\n this.groupId ||= groupId;\n this.explicit ||= explicit;\n this.isStarter ||= isStarter;\n this.label ||= label;\n this.type ||= type;\n this.color ||= color;\n this.comment ||= comment;\n this.assignee ||= assignee;\n this.emoji ||= emoji;\n }\n public AddPosition(position: Position) {\n this.positions.add(position);\n }\n\n public ToValue() {\n return {\n name: this.name,\n stereotype: this.stereotype,\n width: this.width,\n groupId: this.groupId,\n explicit: this.explicit,\n isStarter: this.isStarter,\n label: this.label,\n type: this.type,\n color: this.color,\n comment: this.comment,\n assignee: this.assignee,\n emoji: this.emoji,\n positions: this.positions,\n assigneePositions: this.assigneePositions,\n };\n }\n}\n\nexport class Participants {\n private participants = new Map<string, Participant>();\n\n public Add(name: string, options: ParticipantOptions = {}): void {\n if (!name) {\n throw new Error(\"Participant name is required\");\n }\n let participant = this.Get(name);\n if (!participant) {\n participant = new Participant(name, options);\n this.participants.set(name, participant);\n } else {\n participant?.mergeOptions(options);\n }\n\n // Add positions\n const { position, assigneePosition } = options;\n if (position) {\n participant.AddPosition(position);\n }\n if (assigneePosition) {\n participant.assigneePositions.add(assigneePosition);\n }\n }\n\n // Returns an array of participants that are deduced from messages\n // It does not include the Starter.\n ImplicitArray() {\n return this.Array().filter((p) => !this.Get(p.name)?.explicit);\n }\n\n // Items in entries are in the order of entry insertion:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map\n private Array() {\n return Array.from(this.participants.entries()).map((entry) => entry[1]);\n }\n\n Names() {\n return Array.from(this.participants.keys());\n }\n\n First() {\n return this.participants.values().next().value;\n }\n\n Get(name: string) {\n return this.participants.get(name);\n }\n\n Size() {\n return this.participants.size;\n }\n\n Starter() {\n for (const participant of this.participants.values()) {\n if (participant.isStarter) {\n return participant;\n }\n }\n return undefined;\n }\n\n GetPositions(name: string) {\n return this.participants.get(name)?.positions;\n }\n\n GetAssigneePositions(name: string) {\n return this.participants.get(name)?.assigneePositions;\n }\n}\n","import { Participants } from \"./Participants\";\nimport antlr4 from \"antlr4\";\nimport { default as sequenceParserListener } from \"../generated-parser/sequenceParserListener\";\n\nlet participants = undefined;\nlet isBlind = false;\nlet groupId = undefined;\nconst ToCollector = new sequenceParserListener();\n\n// Rules:\n// 1. Later declaration win\n// 2. Participant declaration overwrite cannot be overwritten by To or Starter\nconst onParticipant = function (ctx) {\n // if(!(ctx?.name())) return;\n if (isBlind) return;\n const type = ctx?.participantType()?.getFormattedText().replace(\"@\", \"\");\n const participant =\n ctx?.name()?.getFormattedText() || \"Missing `Participant`\";\n const stereotype = ctx.stereotype()?.name()?.getFormattedText();\n const emoji = ctx.emoji?.()?.name?.()?.getFormattedText();\n const width =\n (ctx.width && ctx.width() && Number.parseInt(ctx.width().getText())) ||\n undefined;\n const labelCtx = ctx.label && ctx.label();\n const label = labelCtx?.name()?.getFormattedText();\n const explicit = true;\n const color = ctx.COLOR()?.getText();\n const comment = ctx.getComment();\n const nameCtx = ctx.name();\n let start, end;\n\n // When label is present, it means we edit label in diagram and update its code regardless of the occurrence of the participant name\n if (labelCtx) {\n const labelNameCtx = labelCtx.name();\n if (labelNameCtx) {\n start = labelNameCtx.start.start;\n end = labelNameCtx.stop.stop + 1;\n }\n } else if (nameCtx) {\n start = nameCtx.start.start;\n end = nameCtx.stop.stop + 1;\n }\n\n participants.Add(participant, {\n isStarter: false,\n type,\n stereotype,\n emoji,\n width,\n groupId,\n label,\n explicit,\n color,\n comment,\n position: [start, end],\n });\n};\nToCollector.enterParticipant = onParticipant;\n\nconst onTo = function (ctx) {\n if (isBlind) return;\n let participant = ctx.name?.()?.getFormattedText() || ctx.getFormattedText();\n const emoji = ctx.emoji?.()?.name?.()?.getFormattedText();\n const participantInstance = participants.Get(participant);\n\n // Skip adding participant position if label is present\n if (participantInstance?.label) {\n participants.Add(participant, { isStarter: false, emoji });\n } else if (participantInstance?.assignee) {\n // If the participant has an assignee, calculate the position of the ctor and store it only.\n // Let's say the participant name is `\"${assignee}:${type}\"`, we need to get the position of ${type}\n // e.g. ret = new A() \"ret:A\".method()\n const start = ctx.start.start + participantInstance.assignee.length + 2;\n const position = [start, ctx.stop.stop];\n const assigneePosition = [\n ctx.start.start + 1,\n ctx.start.start + participantInstance.assignee.length + 1,\n ];\n participants.Add(participant, {\n isStarter: false,\n emoji,\n position: position,\n assigneePosition: assigneePosition,\n });\n } else {\n participants.Add(participant, {\n isStarter: false,\n emoji,\n position: [ctx.start.start, ctx.stop.stop + 1],\n });\n }\n};\n\nToCollector.enterFrom = onTo;\nToCollector.enterTo = onTo;\n\nToCollector.enterStarter = function (ctx) {\n let participant = ctx.getFormattedText();\n participants.Add(participant, {\n isStarter: true,\n position: [ctx.start.start, ctx.stop.stop + 1],\n });\n};\n\nToCollector.enterCreation = function (ctx) {\n if (isBlind) return;\n const participant = ctx.Owner();\n const ctor = ctx?.creationBody()?.construct();\n const participantInstance = participants.Get(participant);\n // Skip adding participant constructor position if label is present\n if (ctor && !participantInstance?.label) {\n const assignee = ctx.Assignee();\n const assigneePosition = ctx.AssigneePosition();\n participants.Add(participant, {\n isStarter: false,\n position: [ctor.start.start, ctor.stop.stop + 1],\n assignee: assignee,\n assigneePosition: assigneePosition,\n });\n } else {\n participants.Add(participant, {\n isStarter: false,\n });\n }\n};\n\nToCollector.enterRef = function (ctx) {\n ctx.Participants().forEach((participant) => {\n participants.Add(participant.getText(), {\n isStarter: false,\n position: [participant.start.start, participant.stop.stop + 1],\n });\n });\n};\n\nToCollector.enterParameters = function () {\n isBlind = true;\n};\n\nToCollector.exitParameters = function () {\n isBlind = false;\n};\n\nToCollector.enterCondition = function () {\n isBlind = true;\n};\n\nToCollector.exitCondition = function () {\n isBlind = false;\n};\n\nToCollector.enterGroup = function (ctx) {\n // group { A } => groupId = undefined\n // group group1 { A } => groupId = \"group1\"\n groupId = ctx.name()?.getFormattedText();\n};\n\nToCollector.exitGroup = function () {\n groupId = undefined;\n};\n\nToCollector.enterRet = function (ctx) {\n if (ctx.asyncMessage()) {\n // it will visit the asyncMessage later\n return;\n }\n const returnFrom = ctx.From();\n returnFrom && participants.Add(returnFrom);\n const returnTo = ctx.ReturnTo();\n returnTo && participants.Add(returnTo);\n};\n\nconst walker = antlr4.tree.ParseTreeWalker.DEFAULT;\n\nToCollector.getParticipants = function (context) {\n participants = new Participants();\n if (context) walker.walk(this, context);\n return participants;\n};\n\nexport default ToCollector;\n","import antlr4 from \"antlr4\";\nimport sequenceParserListener from \"../generated-parser/sequenceParserListener\";\n\nconst walker = antlr4.tree.ParseTreeWalker.DEFAULT;\n\nlet ChildFragmentDetector = new sequenceParserListener();\n\nlet cursor = 0;\nlet max = 0;\n\nChildFragmentDetector.enterTcf = function () {\n cursor++;\n};\nChildFragmentDetector.enterOpt = function () {\n cursor++;\n};\nChildFragmentDetector.enterPar = function () {\n cursor++;\n};\nChildFragmentDetector.enterAlt = function () {\n cursor++;\n};\nChildFragmentDetector.enterLoop = function () {\n cursor++;\n};\nChildFragmentDetector.enterSection = function () {\n cursor++;\n};\nChildFragmentDetector.enterCritical = function () {\n cursor++;\n};\n\nChildFragmentDetector.exitTcf = function () {\n max = Math.max(max, cursor);\n cursor--;\n};\nChildFragmentDetector.exitOpt = function () {\n max = Math.max(max, cursor);\n cursor--;\n};\nChildFragmentDetector.exitPar = function () {\n max = Math.max(max, cursor);\n cursor--;\n};\nChildFragmentDetector.exitAlt = function () {\n max = Math.max(max, cursor);\n cursor--;\n};\nChildFragmentDetector.exitLoop = function () {\n max = Math.max(max, cursor);\n cursor--;\n};\nChildFragmentDetector.exitSection = function () {\n max = Math.max(max, cursor);\n cursor--;\n};\nChildFragmentDetector.exitCritical = function () {\n max = Math.max(max, cursor);\n cursor--;\n};\n\nChildFragmentDetector.depth = function (me) {\n return function (context) {\n cursor = 0;\n max = 0;\n context.children.map(function (child) {\n walker.walk(me, child);\n });\n return max;\n };\n};\n\nexport default ChildFragmentDetector;\n","import sequenceParser from \"../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst TitleContext = seqParser.TitleContext;\nTitleContext.prototype.content = function () {\n if (this.children.length < 2) {\n return \"\";\n } else {\n return this.children[1].getText().trim();\n }\n};\n\nexport default TitleContext;\n","import { default as sequenceParser } from \"../generated-parser/sequenceParser\";\nconst seqParser = sequenceParser;\n\nconst CreationContext = seqParser.CreationContext;\nCreationContext.prototype.Body = CreationContext.prototype.creationBody;\nCreationContext.prototype.isCurrent = function (cursor) {\n return isCurrent.bind(this)(cursor);\n};\n\nconst MessageContext = seqParser.MessageContext;\nMessageContext.prototype.Body = MessageContext.prototype.messageBody;\nMessageContext.prototype.isCurrent = function (cursor) {\n return isCurrent.bind(this)(cursor);\n};\n\nfunction isCurrent(cursor) {\n try {\n if (cursor === null || cursor === undefined) return false;\n const start = this.start.start;\n const stop = this.Body().stop.stop + 1;\n\n return cursor >= start && cursor <= stop;\n } catch (e) {\n return false;\n }\n}\n","/**\n * Owner is the receiver of the message.\n * For example, in `S -> A.m1 {B.m2 {C.m3}} D->E:m4`,\n * | | | |\n * Owner of m1 m2 m3 m4\n */\n\nimport { default as sequenceParser } from \"../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst CreationContext = seqParser.CreationContext;\nconst MessageContext = seqParser.MessageContext;\nconst AsyncMessageContext = seqParser.AsyncMessageContext;\nconst ReturnAsyncMessageContext = seqParser.ReturnAsyncMessageContext;\nconst RetMessageContext = seqParser.RetContext;\n\nCreationContext.prototype.Assignee = function () {\n return this.creationBody()?.assignment()?.assignee()?.getFormattedText();\n};\n\nCreationContext.prototype.AssigneePosition = function () {\n const assignee = this.creationBody()?.assignment()?.assignee();\n if (!assignee) {\n return undefined;\n }\n return [assignee.start.start, assignee.stop.stop + 1];\n};\n\nCreationContext.prototype.Constructor = function () {\n return this.creationBody()?.construct()?.getFormattedText();\n};\n\nCreationContext.prototype.To = function () {\n return this.Constructor();\n};\n\nCreationContext.prototype.Owner = function () {\n if (!this.Constructor()) {\n return \"Missing Constructor\";\n }\n const assignee = this.Assignee();\n const type = this.Constructor();\n return assignee ? `${assignee}:${type}` : type;\n};\n\nMessageContext.prototype.To = function () {\n const toCtx = this.messageBody()?.fromTo()?.to();\n return toCtx?.name?.()?.getFormattedText() || toCtx?.getFormattedText();\n};\n\nMessageContext.prototype.Owner = function () {\n return this.To() || getOwnerFromAncestor(this.parentCtx);\n};\n\nfunction getOwnerFromAncestor(ctx) {\n while (ctx) {\n if (ctx instanceof CreationContext || ctx instanceof MessageContext) {\n return ctx.Owner();\n }\n ctx = ctx.parentCtx;\n }\n return undefined;\n}\n\nAsyncMessageContext.prototype.To = function () {\n const toCtx = this.to();\n return toCtx?.name?.()?.getFormattedText() || toCtx?.getFormattedText();\n};\n\nAsyncMessageContext.prototype.Owner = function () {\n return this.To() || getOwnerFromAncestor(this.parentCtx);\n};\n\nReturnAsyncMessageContext.prototype.To = function () {\n const toCtx = this.to();\n return toCtx?.name?.()?.getFormattedText() || toCtx?.getFormattedText();\n};\n\nReturnAsyncMessageContext.prototype.Owner = function () {\n return this.To() || getOwnerFromAncestor(this.parentCtx);\n};\n\nRetMessageContext.prototype.To = function () {\n return this.ReturnTo();\n};\n\nRetMessageContext.prototype.Owner = function () {\n return this.To() || getOwnerFromAncestor(this.parentCtx);\n};\n","import { default as sequenceParser } from \"../generated-parser/sequenceParser\";\n\nconst ProgContext = sequenceParser.ProgContext;\n\n/**\n * When does Starter need to be treated differently?\n *\n * 0. \"\". A default starter CAN be rendered as otherwise the diagram is empty.\n *\n * 1. A.method\n * There is no starter indicated in the code at all. _STARTER_ is used.\n *\n * 2. A->B.method\n * There seems no need to even consider a starter and all messages have a provided sender.\n *\n * 3. if(x) { A.method }.\n * Similar to #1\n *\n * 4. if(x) { A->B.method }.\n * Similar to #2\n *\n * 5. @Starter(A).\n * Starter is clearly defined. It must be used anywhere a sender is not provided\n * and not inferrable.\n *\n * 6. A B.\n * Only the participants are defined. There is no need to consider a starter.\n *\n * From the above analysis, it is clear that whether we should consider a starter is base on\n * messages only. Thus, the following rules are established:\n *\n * For the ProgContext, if there is `@starter(x)` then Starter returns x, otherwise it returns undefined.\n * It is left to the LifelineLayer to determine whether a default starter is rendered based on the messages.\n *\n * The ToCollector should not be concerned with the default starter.\n *\n * _STARTER_ is of the renderer's concern. It is not a concern of the parser.\n */\n\nProgContext.prototype.Starter = function () {\n return this.head()?.starterExp()?.starter()?.getFormattedText();\n};\n","import { default as sequenceParser } from \"../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst RetContext = seqParser.RetContext;\nconst ProgContext = seqParser.ProgContext;\nconst MessageContext = seqParser.MessageContext;\nconst CreationContext = seqParser.CreationContext;\n\nRetContext.prototype.Signature = function () {\n return (\n this.asyncMessage()?.content()?.getFormattedText() ||\n this.returnAsyncMessage()?.content()?.getFormattedText() ||\n this.expr()?.getFormattedText()\n );\n};\n\nRetContext.prototype.ReturnTo = function () {\n // Check asyncMessage 'to' first\n const asyncToCtx = this.asyncMessage()?.to() || this.returnAsyncMessage()?.to();\n const asyncTo = asyncToCtx?.name?.()?.getFormattedText() || asyncToCtx?.getFormattedText();\n if (asyncTo) {\n return asyncTo;\n }\n\n const stat = this.parentCtx;\n const block = stat.parentCtx;\n const blockParent = block.parentCtx;\n if (blockParent instanceof ProgContext) {\n return blockParent.Starter();\n } else {\n let ctx = blockParent;\n while (\n ctx &&\n !(ctx instanceof MessageContext) &&\n !(ctx instanceof CreationContext)\n ) {\n if (ctx instanceof ProgContext) {\n return ctx.Starter();\n }\n ctx = ctx.parentCtx;\n }\n if (ctx instanceof MessageContext) {\n return (\n ctx.messageBody()?.fromTo()?.from()?.name?.()?.getFormattedText() ||\n ctx.messageBody()?.fromTo()?.from()?.getFormattedText() ||\n ctx.ClosestAncestorStat().Origin()\n );\n }\n return ctx.ClosestAncestorStat().Origin();\n }\n};\n","import { default as sequenceParser } from \"../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst RefContext = seqParser.RefContext;\n\n// @ts-expect-error -- ANTLR generated code\nRefContext.prototype.Content = function () {\n return this.name()[0];\n};\n\n// @ts-expect-error -- ANTLR generated code\nRefContext.prototype.Participants = function () {\n return this.name().slice(1) ?? [];\n};\n","import { default as sequenceParser } from \"../generated-parser/sequenceParser\";\nimport { default as antlr4 } from \"antlr4\";\nconst ParserRuleContext = antlr4.ParserRuleContext;\nconst StatContext = sequenceParser.StatContext;\nconst ProgContext = sequenceParser.ProgContext;\nconst MessageContext = sequenceParser.MessageContext;\nconst CreationContext = sequenceParser.CreationContext;\n\nParserRuleContext.prototype.Origin = function () {\n let ctx = this.parentCtx;\n while (ctx && !(ctx instanceof StatContext || ctx instanceof ProgContext)) {\n ctx = this.parentCtx;\n }\n return ctx.Origin();\n};\n// Origin is essentially the 'from' of a message.\n// For example, in `S -> A.m1 {B.m2 {C.m3}}`,\n// | | |\n// Origin of m1 m2 m3\nStatContext.prototype.Origin = function () {\n let ctx = this.parentCtx;\n while (ctx) {\n if (ctx instanceof ProgContext) {\n return ctx.Starter();\n }\n if (ctx instanceof MessageContext || ctx instanceof CreationContext) {\n const receiver = ctx.Owner();\n if (receiver) {\n return receiver;\n }\n }\n ctx = ctx.parentCtx;\n }\n return undefined;\n};\n\nProgContext.prototype.Origin = function () {\n return this.Starter();\n};\n","import sequenceParser from \"../../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst DividerContext = seqParser.DividerContext;\n\n// @ts-expect-error -- ANTLR generated code\nDividerContext.prototype.Note = function () {\n // @ts-expect-error -- ANTLR generated code\n const formattedText = this.dividerNote()?.getFormattedText().trim();\n // throw error if formattedText does not start with '=='\n if (!formattedText.startsWith(\"==\")) {\n throw new Error(\"Divider note must start with ==\");\n }\n // trim leading and trailing '=' characters\n return formattedText?.replace(/^=+|=+$/g, \"\");\n};\n","import sequenceParser from \"../generated-parser/sequenceParser\";\nimport type { AsyncMessageContext, CreationContext, MessageContext, Parameter, RetContext } from \"./Parser.types\";\n\n// Helper function to format a single parameter\nfunction formatParameter(param: Parameter): string {\n if (param.namedParameter?.()) {\n const namedParam = param.namedParameter();\n if (namedParam) {\n const expr = namedParam.expr();\n const value = expr ? expr.getFormattedText() : \"\";\n return `${namedParam.ID().getText()}=${value}`;\n }\n }\n \n if (param.declaration?.()) {\n const decl = param.declaration();\n if (decl) {\n return `${decl.type().getText()} ${decl.ID().getText()}`;\n }\n }\n \n if (param.expr?.()) {\n return param.expr().getFormattedText();\n }\n \n return param.getFormattedText();\n}\n\n// Helper function to format parameters list\nfunction formatParameters(params: Parameter[]): string {\n return params.map(formatParameter).join(\",\");\n}\n\n// Get the parser contexts and assert their types\nconst MessageContext = sequenceParser.MessageContext as any as {\n new (): MessageContext;\n prototype: MessageContext;\n};\nconst ParametersContext = sequenceParser.ParametersContext as any as {\n new (): any;\n prototype: any;\n};\nconst AsyncMessageContext = sequenceParser.AsyncMessageContext as any as {\n new (): AsyncMessageContext;\n prototype: AsyncMessageContext;\n};\nconst CreationContext = sequenceParser.CreationContext as any as {\n new (): CreationContext;\n prototype: CreationContext;\n};\nconst RetContext = sequenceParser.RetContext as any as {\n new (): RetContext;\n prototype: RetContext;\n};\n\n// Now we can safely extend the prototypes with proper typing\nMessageContext.prototype.SignatureText = function (\n this: MessageContext,\n): string {\n return (\n this.messageBody()\n ?.func()\n ?.signature()\n ?.map((s) => s?.getFormattedText())\n .join(\".\") ?? \"\"\n );\n};\n\nAsyncMessageContext.prototype.SignatureText = function (\n this: AsyncMessageContext,\n): string {\n return this.content()?.getFormattedText() ?? \"\";\n};\n\nCreationContext.prototype.ParametersText = function (\n this: CreationContext,\n): string {\n const params = this.creationBody().parameters();\n return params?.parameter()?.length > 0\n ? formatParameters(params.parameter())\n : \"\";\n};\n\nCreationContext.prototype.SignatureText = function (\n this: CreationContext,\n): string {\n const text = this.ParametersText() || \"create\";\n return `«${text}»`;\n};\n\nCreationContext.prototype.isParamValid = function (\n this: CreationContext,\n): boolean {\n return (this.creationBody().parameters()?.parameter()?.length ?? 0) > 0;\n};\n\nRetContext.prototype.SignatureText = function (this: RetContext): string {\n return (\n this.asyncMessage()?.content()?.getFormattedText() ??\n this.returnAsyncMessage()?.content()?.getFormattedText() ??\n this.expr()?.getFormattedText() ??\n \"\"\n );\n};\n\nsequenceParser.ReturnAsyncMessageContext.prototype.SignatureText = function (): string {\n return this.content()?.getFormattedText() ?? \"\";\n};\n\n// Enhance ParametersContext to properly format named parameters\nParametersContext.prototype.getFormattedText = function (): string {\n const params = this.parameter();\n if (!params || params.length === 0) {\n return \"\";\n }\n return formatParameters(params);\n};\n","import sequenceParser from \"../../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst MessageContext = seqParser.MessageContext;\nconst CreationContext = seqParser.CreationContext;\n\ninterface IAssignment {\n assignee: string | undefined;\n type: string | undefined;\n labelPosition: [number, number];\n assigneePosition: [number, number];\n typePosition: [number, number];\n}\n\nexport class Assignment implements IAssignment {\n assignee: string;\n type: string;\n labelPosition: [number, number];\n assigneePosition: [number, number];\n typePosition: [number, number];\n constructor(\n assignee: string | undefined, \n type: string | undefined, \n assigneePosition: [number, number],\n typePosition: [number, number]\n ) {\n // check if type is defined, assignee must be defined\n if (type && !assignee) {\n throw new Error(\"assignee must be defined if type is defined\");\n }\n this.assignee = assignee || \"\";\n this.type = type || \"\";\n // For backward compatibility, labelPosition is the assigneePosition\n this.labelPosition = assigneePosition;\n this.assigneePosition = assigneePosition;\n this.typePosition = typePosition;\n }\n\n getText() {\n return [this.assignee, this.type].filter(Boolean).join(\":\");\n }\n}\n\nfunction extractAssignmentFromContext(assignmentContext: any): Assignment | undefined {\n if (!assignmentContext) {\n return undefined;\n }\n // @ts-expect-error -- ANTLR generated code\n const assignee = assignmentContext?.assignee()?.getFormattedText();\n // @ts-expect-error -- ANTLR generated code\n const type = assignmentContext?.type()?.getFormattedText();\n // @ts-expect-error -- ANTLR generated code\n const assigneeCtx = assignmentContext?.assignee();\n const assigneePosition: [number, number] = assigneeCtx\n ? [assigneeCtx.start.start, assigneeCtx.stop.stop]\n : [-1, -1];\n // @ts-expect-error -- ANTLR generated code\n const typeCtx = assignmentContext?.type();\n const typePosition: [number, number] = typeCtx\n ? [typeCtx.start.start, typeCtx.stop.stop]\n : [-1, -1];\n if (assignee) {\n return new Assignment(assignee, type, assigneePosition, typePosition);\n }\n return undefined;\n}\n\n// @ts-expect-error -- ANTLR generated code\nMessageContext.prototype.Assignment = function () {\n return extractAssignmentFromContext(this.messageBody().assignment());\n};\n\n// @ts-expect-error -- ANTLR generated code\nCreationContext.prototype.Assignment = function () {\n return extractAssignmentFromContext(this.creationBody()?.assignment());\n};\n","import sequenceParser from \"../../generated-parser/sequenceParser\";\nimport \"./Assignment\";\n\nconst seqParser = sequenceParser;\nconst MessageContext = seqParser.MessageContext;\nconst CreationContext = seqParser.CreationContext;\nconst IfBlockContext = seqParser.IfBlockContext;\nconst LoopContext = seqParser.LoopContext;\n\n// @ts-expect-error -- ANTLR generated code\nMessageContext.prototype.Statements = function () {\n return this.braceBlock()?.block()?.stat() || [];\n};\n\n// @ts-expect-error -- ANTLR generated code\nCreationContext.prototype.Statements = function () {\n return this.braceBlock()?.block()?.stat() || [];\n};\n\n// @ts-expect-error -- ANTLR generated code\nIfBlockContext.prototype.Statements = function () {\n return this.braceBlock()?.block()?.stat() || [];\n};\n\n// @ts-expect-error -- ANTLR generated code\nLoopContext.prototype.Statements = function () {\n return this.braceBlock()?.block()?.stat() || [];\n};\n","import sequenceParser from \"../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst CreationContext = seqParser.CreationContext;\nconst StatContext = seqParser.StatContext;\nconst MessageContext = seqParser.MessageContext;\nconst AsyncMessageContext = seqParser.AsyncMessageContext;\nconst ReturnAsyncMessageContext = seqParser.ReturnAsyncMessageContext;\nconst RetContext = seqParser.RetContext;\n\n// @ts-expect-error -- ANTLR generated code\nCreationContext.prototype.From = function () {\n // @ts-expect-error -- ANTLR generated code\n if (this.parentCtx instanceof StatContext) {\n // @ts-expect-error -- ANTLR generated code\n return this.ClosestAncestorStat().Origin();\n }\n return undefined;\n};\n\n// @ts-expect-error -- ANTLR generated code\nMessageContext.prototype.ProvidedFrom = function () {\n // @ts-expect-error -- ANTLR generated code\n const fromCtx = this.messageBody()?.fromTo()?.from();\n return fromCtx?.name?.()?.getFormattedText() || fromCtx?.getFormattedText();\n};\n// @ts-expect-error -- ANTLR generated code\nMessageContext.prototype.From = function () {\n // @ts-expect-error -- ANTLR generated code\n return this.ProvidedFrom() || this.ClosestAncestorStat().Origin();\n};\n\n// @ts-expect-error -- ANTLR generated code\nAsyncMessageContext.prototype.ProvidedFrom = function () {\n // @ts-expect-error -- ANTLR generated code\n const fromCtx = this.from();\n return fromCtx?.name?.()?.getFormattedText() || fromCtx?.getFormattedText();\n};\n\n// @ts-expect-error -- ANTLR generated code\nAsyncMessageContext.prototype.From = function () {\n // @ts-expect-error -- ANTLR generated code\n return this.ProvidedFrom() || this.ClosestAncestorStat().Origin();\n};\n\n// @ts-expect-error -- ANTLR generated code\nReturnAsyncMessageContext.prototype.ProvidedFrom = function () {\n // @ts-expect-error -- ANTLR generated code\n const fromCtx = this.from();\n return fromCtx?.name?.()?.getFormattedText() || fromCtx?.getFormattedText();\n};\n\n// @ts-expect-error -- ANTLR generated code\nReturnAsyncMessageContext.prototype.From = function () {\n // @ts-expect-error -- ANTLR generated code\n return this.ProvidedFrom() || this.ClosestAncestorStat().Origin();\n};\n\n// @ts-expect-error -- ANTLR generated code\nRetContext.prototype.From = function () {\n // @ts-expect-error -- ANTLR generated code\n return this.asyncMessage()?.From() || this.returnAsyncMessage()?.From() || this.ClosestAncestorStat().Origin();\n};\nexport {};\n","import { default as antlr4 } from \"antlr4\";\n\nantlr4.ParserRuleContext.prototype.Key = function () {\n return `${this.start.start}:${this.stop.stop}`;\n};\n","import { default as antlr4 } from \"antlr4\";\nimport { default as sequenceParser } from \"../../../generated-parser/sequenceParser\";\n\nconst seqParser = sequenceParser;\nconst StatContext = seqParser.StatContext;\n\nantlr4.ParserRuleContext.prototype.ClosestAncestorStat = function () {\n if (this instanceof StatContext) {\n return this;\n }\n let current = this.parentCtx;\n while (current && !(current instanceof StatContext)) {\n current = current.parentCtx;\n }\n if (current instanceof StatContext) {\n return current;\n }\n return undefined;\n};\n\nantlr4.ParserRuleContext.prototype.ClosestAncestorBlock = function () {\n const parentCtx = this.ClosestAncestorStat()?.parentCtx;\n // if parent is a block, return it\n if (parentCtx instanceof seqParser.BlockContext) {\n return parentCtx;\n }\n console.warn(\"Cannot find closest ancestor block for context:\", this);\n return undefined;\n};\n\nexport {};\n","import { default as antlr4 } from \"antlr4\";\n\n// TypeScript cannot infer that the method exists on the prototype chain\n(antlr4.ParserRuleContext.prototype as any).getAncestors = function (\n predicate?: (ctx: antlr4.ParserRuleContext) => boolean,\n): antlr4.ParserRuleContext[] {\n const ancestors = [];\n if (!predicate || predicate(this)) {\n ancestors.push(this);\n }\n let current = this.parentCtx;\n while (current) {\n if (!predicate || predicate(current)) {\n ancestors.push(current);\n }\n current = current.parentCtx;\n }\n return ancestors;\n};\n","export const formatText = (text: string): string =>\n text\n .replace(/[\\n\\r]/g, \" \")\n .replace(/\\s+/g, \" \")\n .replace(/\\s*([,;.])\\s*/g, \"$1\")\n .replace(/\\s*(\\()\\s*|\\s*(\\))/g, \"$1$2\")\n .replace(/\\s+$/g, \"\")\n .replace(/^\"(.*)\"$/, \"$1\");\n\nexport const getLineHead = (code: string, position: number) => {\n let i = position;\n if (code[i] === \"\\n\") i--;\n while (i >= 0) {\n if (code[i] === \"\\n\") return i + 1;\n i--;\n }\n return 0;\n};\nexport const getPrevLineHead = (code: string, position: number) => {\n const lineHead = getLineHead(code, position);\n if (lineHead === 0) return 0;\n let i = lineHead - 2;\n while (i >= 0) {\n if (code[i] === \"\\n\") return i + 1;\n i--;\n }\n return 0;\n};\nexport const getPrevLine = (code: string, position: number) => {\n const lineHead = getLineHead(code, position);\n if (lineHead === 0) return \"\";\n const prevLineHead = getPrevLineHead(code, position);\n return code.slice(prevLineHead, lineHead);\n};\n","import antlr4 from \"antlr4\";\nimport { default as sequenceLexer } from \"../generated-parser/sequenceLexer\";\nimport { default as sequenceParser } from \"../generated-parser/sequenceParser\";\nimport ToCollector from \"./ToCollector\";\nimport ChildFragmentDetector from \"./ChildFragmentDetecotr\";\nimport \"./TitleContext\";\nimport \"./IsCurrent\";\nimport \"./Owner\";\nimport \"./ProgContext\";\nimport \"./RetContext\";\nimport \"./RefContext\";\nimport \"./Origin\";\nimport \"./Divider/DividerContext\";\nimport \"./SignatureText\";\nimport \"./Messages/MessageContext\";\nimport \"./From\";\nimport \"./key/Key\";\nimport \"./utils/cloest-ancestor/ClosestAncestor\";\nimport \"./AncestorPath\";\nimport { formatText } from \"@/utils/StringUtil\";\n\nconst errors = [];\nconst errorDetails = [];\nclass SeqErrorListener extends antlr4.error.ErrorListener {\n syntaxError(recognizer, offendingSymbol, line, column, msg) {\n errors.push(`${offendingSymbol} line ${line}, col ${column}: ${msg}`);\n errorDetails.push({\n line,\n column,\n msg,\n });\n }\n}\n\nfunction rootContext(code) {\n const chars = new antlr4.InputStream(code);\n const lexer = new sequenceLexer(chars);\n const tokens = new antlr4.CommonTokenStream(lexer);\n const parser = new sequenceParser(tokens);\n parser.addErrorListener(new SeqErrorListener());\n return parser._syntaxErrors ? null : parser.prog();\n}\n\nantlr4.ParserRuleContext.prototype.getFormattedText = function () {\n const code = this.parser.getTokenStream().getText(this.getSourceInterval());\n // remove extra quotes, spaces and new lines\n return formatText(code);\n};\n\n// Comment is where users have the most flexibility. The parser should make minimal assumptions about\n// the content and the style including change of line, indentation, etc.\nantlr4.ParserRuleContext.prototype.getComment = function () {\n let tokenIndex = this.start.tokenIndex;\n let channel = sequenceLexer.channelNames.indexOf(\"COMMENT_CHANNEL\");\n if (this.constructor.name === \"BraceBlockContext\") {\n tokenIndex = this.stop.tokenIndex;\n }\n let hiddenTokensToLeft = this.parser\n .getTokenStream()\n .getHiddenTokensToLeft(tokenIndex, channel);\n return (\n hiddenTokensToLeft &&\n hiddenTokensToLeft\n .map((t) => t.text.substring(2)) // skip '//'\n .join(\"\\n\")\n );\n};\n\nantlr4.ParserRuleContext.prototype.returnedValue = function () {\n return this.braceBlock().block().ret().value();\n};\n\nexport const ProgContext = sequenceParser.ProgContext;\nexport const RootContext = rootContext;\nexport const GroupContext = sequenceParser.GroupContext;\nexport const ParticipantContext = sequenceParser.ParticipantContext;\nexport const Depth = function (ctx) {\n const childFragmentDetector = ChildFragmentDetector;\n return childFragmentDetector.depth(childFragmentDetector)(ctx);\n};\nexport const Participants = function (ctx) {\n const toCollector = ToCollector;\n return toCollector.getParticipants(ctx);\n};\n\nexport default {\n RootContext: rootContext,\n ProgContext: sequenceParser.ProgContext,\n GroupContext: sequenceParser.GroupContext,\n ParticipantContext: sequenceParser.ParticipantContext,\n Participants: function (ctx) {\n const toCollector = ToCollector;\n return toCollector.getParticipants(ctx);\n },\n Errors: errors,\n ErrorDetails: errorDetails,\n /**\n * @return {number} how many levels of embedded fragments\n */\n Depth: function (ctx) {\n const childFragmentDetector = ChildFragmentDetector;\n return childFragmentDetector.depth(childFragmentDetector)(ctx);\n },\n};\n","export const FRAGMENT_PADDING_X = 10;\nexport const FRAGMENT_MIN_WIDTH = 100;\nexport const MARGIN = 20;\nexport const ARROW_HEAD_WIDTH = 10;\nexport const OCCURRENCE_WIDTH = 15;\nexport const OCCURRENCE_BAR_SIDE_WIDTH = (OCCURRENCE_WIDTH - 1) / 2; // Width of each side of the occurrence bar\n\n// also used in css `.zenuml .participant { min-width: 88px; }`\nexport const MIN_PARTICIPANT_WIDTH = 80;\nexport const PARTICIPANT_HEIGHT = 70;\n// Width allocated for the icon column on the left of an iconed participant.\nexport const PARTICIPANT_ICON_WIDTH = 40;\n\nexport const LIFELINE_WIDTH = 1;\n\n// Height constants for calculated positioning\nexport const STATEMENT_CONTAINER_MARGIN = 16; // my-4 class = margin-y: 1rem\nexport const COMMENT_LINE_HEIGHT = 20;\nexport const MESSAGE_HEIGHT = 16; // sync/async/return messages\nexport const CREATION_MESSAGE_HEIGHT = 62; // creation message total height\nexport const SELF_INVOCATION_SYNC_HEIGHT = 55; // 16px message + 24px SVG\nexport const SELF_INVOCATION_ASYNC_HEIGHT = 54; // 20px message + 34px SVG\nexport const FRAGMENT_HEADER_HEIGHT = 25;\nexport const FRAGMENT_BORDER_WIDTH = 1;\nexport const FRAGMENT_MARGIN = 16;\nexport const FRAGMENT_PADDING_BOTTOM = 10;\nexport const PARTICIPANT_TOP_SPACE_FOR_GROUP = 20;\nexport const CREATION_LIFELINE_OFFSET = 48;\nexport const OCCURRENCE_WITH_CHILDREN_HEIGHT = 20;\nexport const OCCURRENCE_EMPTY_HEIGHT = 24;\n","export enum TextType {\n MessageContent,\n ParticipantName,\n}\n\nexport interface WidthFunc {\n (text: string, type: TextType): number;\n}\n","export enum OwnableMessageType {\n SyncMessage = 0,\n AsyncMessage = 1,\n CreationMessage = 2,\n ReturnMessage = 3,\n}\n\nexport interface OwnableMessage {\n from: string;\n to: string;\n signature: string;\n type: OwnableMessageType;\n}\n","import { OwnableMessage, OwnableMessageType } from \"./OwnableMessage\";\nimport antlr4 from \"antlr4\";\n\nimport sequenceParserListener from \"../generated-parser/sequenceParserListener\";\n\nexport class MessageCollector extends sequenceParserListener {\n private isBlind = false;\n private ownableMessages: Array<OwnableMessage> = [];\n\n enterMessage = (ctx: any) =>\n this._addOwnedMessage(OwnableMessageType.SyncMessage)(ctx);\n enterAsyncMessage = (ctx: any) =>\n this._addOwnedMessage(OwnableMessageType.AsyncMessage)(ctx);\n enterCreation = (ctx: any) =>\n this._addOwnedMessage(OwnableMessageType.CreationMessage)(ctx);\n enterReturnAsyncMessage = (ctx: any) =>\n this._addOwnedMessage(OwnableMessageType.ReturnMessage)(ctx);\n enterRet = (ctx: any) => {\n if (ctx.asyncMessage() || ctx.returnAsyncMessage()) {\n // it will visit the asyncMessage/returnAsyncMessage later\n return;\n }\n this._addOwnedMessage(OwnableMessageType.ReturnMessage)(ctx);\n };\n\n private _addOwnedMessage = (type: OwnableMessageType) => (ctx: any) => {\n if (this.isBlind) {\n return;\n }\n const from = ctx.From();\n const owner = ctx?.Owner();\n let signature = ctx?.SignatureText();\n if (from === owner && ctx.Assignment) {\n // @ts-expect-error -- ANTLR generated code\n const assignment = ctx.Assignment();\n if (assignment) {\n signature = `${assignment.getText()} = ${signature}`;\n }\n }\n this.ownableMessages.push({\n from: from,\n signature: signature,\n type,\n to: owner,\n });\n };\n\n enterParameters() {\n this.isBlind = true;\n }\n\n exitParameters() {\n this.isBlind = false;\n }\n\n result() {\n return this.ownableMessages;\n }\n}\n\n// Returns all messages grouped by owner participant\nexport function AllMessages(ctx: any) {\n if (!ctx) return [];\n const walker = antlr4.tree.ParseTreeWalker.DEFAULT;\n\n const listener = new MessageCollector();\n walker.walk(listener, ctx);\n return listener.result();\n}\n","import ToCollector from \"@/parser/ToCollector\";\nimport { AllMessages } from \"@/parser/MessageCollector\";\nimport { blankParticipant } from \"@/parser/Participants\";\nimport type { IParticipantModel } from \"@/parser/IParticipantModel\";\n\nexport const _STARTER_ = \"_STARTER_\";\n\n// Define a class that implements IParticipantModel\nclass Participant implements IParticipantModel {\n name: string;\n left: string;\n label?: string;\n type?: string;\n stereotype?: string;\n color?: string;\n emoji?: string;\n groupId?: string | number;\n\n constructor(name: string, left: string, label?: string, type?: string, stereotype?: string, color?: string, groupId?: string | number, emoji?: string) {\n this.name = name;\n this.left = left;\n this.label = label;\n this.type = type;\n this.stereotype = stereotype;\n this.color = color;\n this.groupId = groupId;\n this.emoji = emoji;\n }\n\n getDisplayName(): string {\n return this.label || this.name;\n }\n\n hasIcon(): boolean {\n // Only participants with a defined type property have icons\n return this.type !== undefined;\n }\n}\n\nexport function OrderedParticipants(rootContext: any): IParticipantModel[] {\n if (!rootContext) return [];\n // @ts-expect-error type\n const participants = ToCollector.getParticipants(rootContext);\n const participantEntries = Array.from(participants.participants.entries());\n\n const allMessages = AllMessages(rootContext);\n\n const emptyContext =\n allMessages.length === 0 && participantEntries.length === 0;\n const someMessagesMissFrom = allMessages.some((m) => !m.from);\n const needDefaultStarter = emptyContext || someMessagesMissFrom;\n if (needDefaultStarter) {\n participantEntries.unshift([\n _STARTER_,\n { ...blankParticipant, name: _STARTER_, isStarter: true },\n ]);\n }\n return participantEntries.map((entry: any, index: number, entries: any) => {\n const participant = entry[1];\n const previousName = index > 0 ? entries[index - 1][1].name : \"\";\n\n return new Participant(\n participant.name,\n previousName,\n participant.label,\n participant.type,\n participant.stereotype,\n participant.color,\n participant.groupId,\n participant.emoji,\n );\n });\n}\n","import pino from \"pino\";\n\n/**\n * What do we get from 'pino'?\n * - log level. The level is used in the prettify function to determine which log is printed to the console.\n * - `child` method to create a child logger with a given name. The name is added to the log message with the prettify function.\n */\nconst logger = pino({\n level: \"warn\",\n});\n\nconst LEVELS = [\"log\", \"trace\", \"debug\", \"info\", \"warn\", \"error\"] as const;\n\ntype LoggerLike = Record<string, (...args: unknown[]) => void> & {\n child: (opts: { name?: string }) => LoggerLike;\n};\n\nfunction bind(target: LoggerLike, level: string) {\n const consoleFn = level in console\n ? (console[level as keyof Console] as (...args: unknown[]) => void)\n : console.log;\n target[level] = consoleFn.bind(console);\n}\n\nfunction bind2(target: LoggerLike, level: string, prefix: [string, string]) {\n const consoleFn = level in console\n ? (console[level as keyof Console] as (...args: unknown[]) => void)\n : console.log;\n target[level] = consoleFn.bind(console, prefix[0], prefix[1]);\n}\n\nfunction prettify(target: LoggerLike): LoggerLike {\n LEVELS.forEach((level) => bind(target, level));\n const childFn = target.child;\n target.child = function (opts: { name?: string }) {\n const child = childFn.call(target, opts);\n LEVELS.forEach((level) =>\n bind2(child, level, [\"%c\" + (opts.name || \"\"), \"color: #00f\"]),\n );\n return child;\n };\n return target;\n}\n\nconst rootLogger = prettify(logger as unknown as LoggerLike);\nexport default rootLogger;\n","interface IDual {\n position: number;\n velocity: number;\n}\n\n// Dual numbers represent linear functions of time.\nfunction Dual(p: number, v: number) {\n return { position: p, velocity: v };\n}\n\n// Adds dual numbers x and y.\nfunction dualPlus(x: IDual, y: IDual) {\n return Dual(x.position + y.position, x.velocity + y.velocity);\n}\n\nconst epsilon = Math.sqrt(Number.EPSILON);\n\n// Compares dual numbers x and y by their position at a time infinitesimally\n// after now.\nfunction dualLessThan(x: IDual, y: IDual) {\n const d = x.position - y.position;\n return d < -epsilon || (Math.abs(d) <= epsilon && x.velocity < y.velocity);\n}\n\n// Tracks delta, the length of time for which every pair of arguments to\n// .dualLessThan() maintains the present relation.\nfunction DeltaTracker() {\n return {\n delta: Infinity,\n dualLessThan: function (x: IDual, y: IDual) {\n const lessThan = dualLessThan(x, y);\n if (lessThan) {\n [x, y] = [y, x];\n }\n if (x.velocity < y.velocity) {\n this.delta = Math.min(\n this.delta,\n (x.position - y.position) / (y.velocity - x.velocity),\n );\n }\n return lessThan;\n },\n };\n}\n\n// Converts the adjacency matrix to an adjacency list representation.\nfunction graphFromMatrix(n: number, matrix: Array<Array<number>>) {\n const graph = Array<any>();\n for (let j = 0; j < n; j++) {\n graph.push([]);\n for (let i = 0; i < j; i++) {\n if (matrix[i][j] > 0) {\n graph[j].push({ i: i, length: Dual(matrix[i][j], 0) });\n }\n }\n }\n return graph;\n}\n\n// Essentially the usual algorithm for longest path, but tracks delta.\nfunction longestPathTable(graph: any, gaps: Array<any>): any {\n const tracker = DeltaTracker();\n let maximum = Dual(0, 0);\n const table = [];\n for (let j = 0; j < graph.length; j++) {\n let argument = null;\n if (j > 0) {\n maximum = dualPlus(maximum, gaps[j - 1]);\n }\n for (const edge of graph[j]) {\n const x = dualPlus(table[edge.i].maximum, edge.length);\n if (tracker.dualLessThan(maximum, x)) {\n argument = edge.i;\n maximum = x;\n }\n }\n table.push({ argument: argument, maximum: maximum });\n }\n return [tracker.delta, table];\n}\n\n// Essentially the usual algorithm for decoding the longest path from the\n// dynamic program table.\nfunction freezeCriticalGaps(table: any, graph: any, gaps: Array<any>) {\n let j = table.length - 1;\n while (j > 0) {\n const argument = table[j].argument;\n if (argument !== null) {\n j = argument;\n } else {\n j--;\n gaps[j].velocity = 0;\n }\n }\n}\n\n// Changes the time from now to now + delta.\nfunction advanceGaps(gaps: Array<IDual>, delta: number) {\n for (let i = 0; i < gaps.length; i++) {\n gaps[i].position += gaps[i].velocity * delta;\n }\n}\n\n// Extracts the final result from the dynamic program table.\nfunction positionsFromTable(table: any) {\n const positions = [];\n for (const entry of table) {\n positions.push(entry.maximum.position);\n }\n return positions;\n}\n\n// Entry point for the layout algorithm.\nfunction find_optimal(matrix: Array<Array<number>>) {\n const n = matrix.length;\n const graph = graphFromMatrix(n, matrix);\n const gaps = [];\n for (let j = 1; j < n; j++) {\n gaps.push(Dual(0, 1));\n }\n \n while (true) {\n const [delta, table] = longestPathTable(graph, gaps);\n if (delta == Infinity) {\n return positionsFromTable(table);\n }\n if (table[n - 1].maximum.velocity > 0) {\n freezeCriticalGaps(table, graph, gaps);\n } else {\n advanceGaps(gaps, delta);\n }\n }\n}\n\nexport { find_optimal };\n","let dic: Record<string, any> = {};\nconst persistDic: Record<string, any> = {};\n\nexport const getCache = (key: string | undefined): any => {\n if (key != null) {\n const cacheValue = dic[key] ?? persistDic[key];\n return cacheValue !== undefined ? cacheValue : null;\n }\n return null;\n};\n\nexport const setCache = (key: string, value: any, persist: boolean = false) => {\n dic[key] = value;\n if (persist) {\n persistDic[key] = value;\n }\n};\n\n//Need call clearCache before rendering.\nexport const clearCache = () => {\n dic = {};\n};\n","import {\n ARROW_HEAD_WIDTH,\n MARGIN,\n MIN_PARTICIPANT_WIDTH,\n OCCURRENCE_WIDTH,\n PARTICIPANT_ICON_WIDTH,\n} from \"./Constants\";\nimport { TextType } from \"./Coordinate\";\nimport type { WidthFunc } from \"./Coordinate\";\nimport { _STARTER_, OrderedParticipants } from \"@/parser/OrderedParticipants\";\nimport type { IParticipantModel } from \"@/parser/IParticipantModel\";\nimport logger from \"@/logger/logger\";\nimport { find_optimal } from \"./david/DavidEisenstat\";\nimport { AllMessages } from \"@/parser/MessageCollector\";\nimport { OwnableMessageType } from \"@/parser/OwnableMessage\";\nimport type { OwnableMessage } from \"@/parser/OwnableMessage\";\nimport { clearCache, getCache, setCache } from \"@/utils/RenderingCache\";\n\nexport class Coordinates {\n private m: Array<Array<number>> = [];\n private readonly widthProvider: WidthFunc;\n private readonly participantModels: IParticipantModel[];\n private readonly ownableMessages: OwnableMessage[];\n\n constructor(ctx: any, widthProvider: WidthFunc) {\n clearCache();\n this.participantModels = OrderedParticipants(ctx);\n this.ownableMessages = AllMessages(ctx);\n\n this.widthProvider = widthProvider;\n this.walkThrough();\n }\n\n orderedParticipantNames(): string[] {\n return this.participantModels.map((p) => p.name);\n }\n\n getPosition(participantName: string | undefined): number {\n if (!participantName) return 0;\n\n const participant = this.getParticipantModel(participantName);\n if (!participant) {\n console.warn(`Participant ${participantName} not found`);\n return 0;\n }\n\n const cacheKey = `getPosition_${participantName}`;\n const cachedPosition = getCache(cacheKey);\n if (cachedPosition != null) {\n return cachedPosition;\n }\n\n const pIndex = this.participantModels.findIndex(\n (p) => p.name === participantName,\n );\n const leftGap = this.getParticipantGap(this.participantModels[0]);\n // const leftGap = 0;\n const position = leftGap + find_optimal(this.m)[pIndex];\n setCache(cacheKey, position);\n logger.debug(`Position of ${participantName} is ${position}`);\n return position;\n }\n\n walkThrough() {\n this.withParticipantGaps(this.participantModels);\n this.withMessageGaps(this.ownableMessages, this.participantModels);\n }\n\n half(participantName: string): number {\n const participant = this.getParticipantModel(participantName);\n return participant ? this._getParticipantWidth(participant) / 2 : 0;\n }\n\n left(participantName: string): number {\n return this.getPosition(participantName) - this.half(participantName);\n }\n\n right(participantName: string): number {\n return this.getPosition(participantName) + this.half(participantName);\n }\n\n getWidth(): number {\n const lastParticipant =\n this.participantModels[this.participantModels.length - 1].name;\n const calculatedWidth =\n this.getPosition(lastParticipant) + this.half(lastParticipant);\n return Math.max(calculatedWidth, 200);\n }\n\n distance(left: string, right: string) {\n return this.getPosition(right) - this.getPosition(left);\n }\n\n getMessageWidth(message: OwnableMessage) {\n const halfSelf = this.half(message.to);\n let messageWidth = this.widthProvider(\n message.signature,\n TextType.MessageContent,\n );\n // hack for creation message\n if (message.type === OwnableMessageType.CreationMessage) {\n messageWidth += halfSelf;\n }\n return messageWidth;\n }\n\n private withMessageGaps(\n ownableMessages: OwnableMessage[],\n participantModels: IParticipantModel[],\n ) {\n for (const message of ownableMessages) {\n if (!message.from) {\n message.from = _STARTER_;\n }\n const indexFrom = participantModels.findIndex(\n (p) => p.name === message.from,\n );\n const indexTo = participantModels.findIndex((p) => p.name === message.to);\n if (indexFrom === -1 || indexTo === -1) {\n console.warn(`Participant ${message.from} or ${message.to} not found`);\n continue;\n }\n const leftIndex = Math.min(indexFrom, indexTo);\n const rightIndex = Math.max(indexFrom, indexTo);\n try {\n const messageWidth = this.getMessageWidth(message);\n this.m[leftIndex][rightIndex] = Math.max(\n messageWidth + ARROW_HEAD_WIDTH + OCCURRENCE_WIDTH,\n this.m[leftIndex][rightIndex],\n );\n } catch {\n console.warn(\n `Could not set message gap between ${message.from} and ${message.to}`,\n );\n }\n }\n }\n private withParticipantGaps(participantModels: IParticipantModel[]) {\n this.m = participantModels.map((_, i) => {\n return participantModels.map((v, j) => {\n return j - i === 1 ? this.getParticipantGap(v) : 0;\n });\n });\n }\n\n private getParticipantGap(p: IParticipantModel) {\n return this.half(p.left) + this.half(p.name);\n }\n\n private getParticipantModel(name: string): IParticipantModel | undefined {\n return this.participantModels.find((p) => p.name === name);\n }\n\n private _getParticipantWidth(participant: IParticipantModel) {\n const cacheKey = `getParticipantWidth_${participant.name}`;\n const cachedWidth = getCache(cacheKey);\n if (cachedWidth != null) {\n return cachedWidth;\n }\n\n // Calculate base width from participant display name or minimum width\n // Add icon width if the participant has an icon\n // Icon's total width is 32px (24px for icon + 8px for margin)\n const hasIcon = participant.hasIcon();\n const iconWidth = hasIcon ? PARTICIPANT_ICON_WIDTH : 0;\n // Emoji character (~16px glyph + em-space) adds width when present\n const emojiWidth = participant.emoji ? 24 : 0;\n\n const labelWidth = this.widthProvider(\n participant.getDisplayName(),\n TextType.ParticipantName,\n );\n const participantWidth =\n Math.max(labelWidth + iconWidth + emojiWidth, MIN_PARTICIPANT_WIDTH) + MARGIN;\n\n setCache(cacheKey, participantWidth);\n logger.debug(\n `Width of ${participant.name} is ${participantWidth}; labelWidth: ${labelWidth}`,\n );\n return participantWidth;\n }\n}\n","export const createStatementKey = (statement: any): string => {\n if (!statement?.start || !statement?.stop) {\n return \"\";\n }\n return `${statement.start.start}-${statement.stop.stop}`;\n};\n","import { BlockVM } from \"./BlockVM\";\nimport type { LayoutRuntime } from \"./types\";\nimport type { StatementKind } from \"../StatementTypes\";\n\nexport abstract class NodeVM {\n constructor(\n protected readonly context: any,\n protected readonly runtime: LayoutRuntime,\n ) {}\n\n protected layoutBlock(\n blockContext: any,\n origin: string,\n startTop: number,\n parentKind?: StatementKind,\n ): number {\n if (!blockContext) {\n return startTop;\n }\n return new BlockVM(blockContext, this.runtime).layout(\n origin,\n startTop,\n parentKind,\n );\n }\n}\n","import { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport { Participants } from \"@/parser\";\n\n/**\n * Returns the names of the local participants.\n * Given the following code:\n * A B C.method { D->E.method }\n * The local participants of\n * D.method { E.method }: [_STARTER_, D, E]\n * E.method: [D, E]\n * @param ctx\n */\nexport function getLocalParticipantNames(ctx: any): string[] {\n if (!ctx) return [];\n return [ctx.Origin() || _STARTER_, ...Participants(ctx).Names()];\n}\n","import { CSSProperties } from \"react\";\n\nexport const cssColors = [\n \"aliceblue\",\n \"antiquewhite\",\n \"aqua\",\n \"aquamarine\",\n \"azure\",\n \"beige\",\n \"bisque\",\n \"black\",\n \"blanchedalmond\",\n \"blue\",\n \"blueviolet\",\n \"brown\",\n \"burlywood\",\n \"cadetblue\",\n \"chartreuse\",\n \"chocolate\",\n \"coral\",\n \"cornflowerblue\",\n \"cornsilk\",\n \"crimson\",\n \"cyan\",\n \"darkblue\",\n \"darkcyan\",\n \"darkgoldenrod\",\n \"darkgray\",\n \"darkgreen\",\n \"darkgrey\",\n \"darkkhaki\",\n \"darkmagenta\",\n \"darkolivegreen\",\n \"darkorange\",\n \"darkorchid\",\n \"darkred\",\n \"darksalmon\",\n \"darkseagreen\",\n \"darkslateblue\",\n \"darkslategray\",\n \"darkslategrey\",\n \"darkturquoise\",\n \"darkviolet\",\n \"deeppink\",\n \"deepskyblue\",\n \"dimgray\",\n \"dimgrey\",\n \"dodgerblue\",\n \"firebrick\",\n \"floralwhite\",\n \"forestgreen\",\n \"fuchsia\",\n \"gainsboro\",\n \"ghostwhite\",\n \"gold\",\n \"goldenrod\",\n \"gray\",\n \"green\",\n \"greenyellow\",\n \"grey\",\n \"honeydew\",\n \"hotpink\",\n \"indianred\",\n \"indigo\",\n \"ivory\",\n \"khaki\",\n \"lavender\",\n \"lavenderblush\",\n \"lawngreen\",\n \"lemonchiffon\",\n \"lightblue\",\n \"lightcoral\",\n \"lightcyan\",\n \"lightgoldenrodyellow\",\n \"lightgray\",\n \"lightgreen\",\n \"lightgrey\",\n \"lightpink\",\n \"lightsalmon\",\n \"lightseagreen\",\n \"lightskyblue\",\n \"lightslategray\",\n \"lightslategrey\",\n \"lightsteelblue\",\n \"lightyellow\",\n \"lime\",\n \"limegreen\",\n \"linen\",\n \"magenta\",\n \"maroon\",\n \"mediumaquamarine\",\n \"mediumblue\",\n \"mediumorchid\",\n \"mediumpurple\",\n \"mediumseagreen\",\n \"mediumslateblue\",\n \"mediumspringgreen\",\n \"mediumturquoise\",\n \"mediumvioletred\",\n \"midnightblue\",\n \"mintcream\",\n \"mistyrose\",\n \"moccasin\",\n \"navajowhite\",\n \"navy\",\n \"oldlace\",\n \"olive\",\n \"olivedrab\",\n \"orange\",\n \"orangered\",\n \"orchid\",\n \"palegoldenrod\",\n \"palegreen\",\n \"paleturquoise\",\n \"palevioletred\",\n \"papayawhip\",\n \"peachpuff\",\n \"peru\",\n \"pink\",\n \"plum\",\n \"powderblue\",\n \"purple\",\n \"rebeccapurple\",\n \"red\",\n \"rosybrown\",\n \"royalblue\",\n \"saddlebrown\",\n \"salmon\",\n \"sandybrown\",\n \"seagreen\",\n \"seashell\",\n \"sienna\",\n \"silver\",\n \"skyblue\",\n \"slateblue\",\n \"slategray\",\n \"slategrey\",\n \"snow\",\n \"springgreen\",\n \"steelblue\",\n \"tan\",\n \"teal\",\n \"thistle\",\n \"tomato\",\n \"turquoise\",\n \"violet\",\n \"wheat\",\n \"white\",\n \"whitesmoke\",\n \"yellow\",\n \"yellowgreen\",\n];\nexport const fontStyles = [\"italic\", \"oblique\"];\nexport const fontWeights = [\"bold\", \"bolder\", \"lighter\"];\nexport const textDecorations = [\"underline\", \"overline\", \"line-through\"];\n\nexport const getStyle = (styles: string[]) => {\n const textStyle: CSSProperties = {};\n const classNames: string[] = [];\n styles.forEach((value) => {\n switch (true) {\n case cssColors.includes(value):\n textStyle.color = value;\n break;\n case fontStyles.includes(value):\n textStyle.fontStyle = value;\n break;\n case fontWeights.includes(value):\n textStyle.fontWeight = value as any;\n break;\n case textDecorations.includes(value):\n textStyle.textDecoration = value;\n break;\n default:\n classNames.push(value);\n }\n });\n return { textStyle, classNames };\n};\n","/**\n * Built-in shortcode → Unicode emoji mapping.\n * Serves as a fallback when the Icon Registry service is not available.\n */\nexport const BUILTIN_EMOJIS: Record<string, string> = {\n // Status/feedback\n check: \"✅\",\n x: \"❌\",\n warning: \"⚠️\",\n exclamation: \"❗\",\n question: \"❓\",\n bulb: \"💡\",\n eyes: \"👀\",\n\n // Actions\n rocket: \"🚀\",\n fire: \"🔥\",\n zap: \"⚡\",\n boom: \"💥\",\n sparkles: \"✨\",\n tada: \"🎉\",\n confetti_ball: \"🎊\",\n\n // Objects\n lock: \"🔒\",\n unlock: \"🔓\",\n key: \"🔑\",\n gear: \"⚙️\",\n hammer: \"🔨\",\n wrench: \"🔧\",\n package: \"📦\",\n email: \"📧\",\n link: \"🔗\",\n clipboard: \"📋\",\n bookmark: \"🔖\",\n\n // Communication\n speech_balloon: \"💬\",\n thought_balloon: \"💭\",\n bell: \"🔔\",\n megaphone: \"📣\",\n\n // Nature/weather\n cloud: \"☁️\",\n sun: \"☀️\",\n star: \"⭐\",\n globe: \"🌐\",\n\n // Arrows\n arrow_right: \"➡️\",\n arrow_left: \"⬅️\",\n arrow_up: \"⬆️\",\n arrow_down: \"⬇️\",\n\n // People\n wave: \"👋\",\n thumbsup: \"👍\",\n thumbsdown: \"👎\",\n\n // Tech / Architecture\n computer: \"💻\",\n iphone: \"📱\",\n robot: \"🤖\",\n bug: \"🐛\",\n database: \"🗄️\",\n server: \"🖥️\",\n api: \"🔌\",\n gateway: \"🚪\",\n queue: \"📬\",\n cache: \"⚡\",\n service: \"⚙️\",\n processor: \"🔄\",\n store: \"🏪\",\n worker: \"👷\",\n container: \"📦\",\n network: \"🌐\",\n\n // Data\n chart: \"📊\",\n chart_with_upwards_trend: \"📈\",\n chart_with_downwards_trend: \"📉\",\n\n // Containers\n inbox_tray: \"📥\",\n outbox_tray: \"📤\",\n file_folder: \"📁\",\n\n // Time\n hourglass: \"⏳\",\n clock: \"🕐\",\n stopwatch: \"⏱️\",\n\n // Symbols\n heavy_check_mark: \"✔️\",\n heavy_multiplication_x: \"✖️\",\n red: \"🔴\",\n red_circle: \"🔴\",\n green_circle: \"🟢\",\n blue_circle: \"🔵\",\n white_circle: \"⚪\",\n black_circle: \"⚫\",\n heart: \"❤️\",\n shield: \"🛡️\",\n\n // Food/common\n coffee: \"☕\",\n pizza: \"🍕\",\n\n // Transport\n car: \"🚗\",\n bus: \"🚌\",\n airplane: \"✈️\",\n ship: \"🚢\",\n\n // Database/infra\n floppy_disk: \"💾\",\n cd: \"💿\",\n satellite: \"🛰️\",\n factory: \"🏭\",\n hospital: \"🏥\",\n bank: \"🏦\",\n\n // Misc\n construction: \"🚧\",\n recycle: \"♻️\",\n receipt: \"🧾\",\n cart: \"🛒\",\n cylinder: \"🪨\",\n dollar: \"💵\",\n};\n","import { getStyle } from \"@/utils/messageStyling\";\nimport type { EmojiCache, EmojiResolution } from \"./types\";\nimport { BUILTIN_EMOJIS } from \"./builtinEmojis\";\n\nlet knownEmojis: Set<string> = new Set(Object.keys(BUILTIN_EMOJIS));\n\nexport function setKnownEmojis(names: Iterable<string>) {\n knownEmojis = new Set(names);\n}\n\nfunction isEmojiCandidate(name: string): boolean {\n if (name.includes(\"-\")) return false;\n return knownEmojis.has(name);\n}\n\nexport function resolveBracketContent(raw: string): EmojiResolution {\n const result: EmojiResolution = {\n classNames: [],\n style: {},\n emojis: [],\n unicodes: [],\n };\n\n const values = raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n\n for (const value of values) {\n const colonMatch = value.match(/^:(.+):$/);\n if (colonMatch) {\n const name = colonMatch[1];\n result.classNames.push(name);\n result.emojis.push(name);\n continue;\n }\n\n result.classNames.push(value);\n\n const { textStyle } = getStyle([value]);\n if (Object.keys(textStyle).length > 0) {\n Object.assign(result.style, textStyle);\n continue;\n }\n\n if (isEmojiCandidate(value)) {\n result.emojis.push(value);\n }\n }\n\n return result;\n}\n\n/**\n * Get the Unicode character for an emoji shortcode.\n * Checks the runtime cache first, then falls back to the builtin map.\n * Returns the raw shortcode if no mapping is found.\n */\n/**\n * Resolve [shortcode] patterns within free text (messages, conditions).\n * Replaces each [shortcode] with its emoji unicode character.\n */\nexport function resolveEmojiInText(text: string): string {\n return text.replace(/\\[([^\\]]+)\\]/g, (match, content) => {\n const resolution = resolveBracketContent(content);\n if (resolution.emojis.length > 0) {\n return resolution.emojis\n .map((name) => getEmojiUnicode(name))\n .join(\"\");\n }\n return match; // Not an emoji — leave bracket text as-is\n });\n}\n\nexport function getEmojiUnicode(\n shortcode: string,\n cache?: EmojiCache,\n): string {\n const cached = cache?.get(shortcode);\n if (cached) return cached.unicode;\n return BUILTIN_EMOJIS[shortcode] || shortcode;\n}\n","import { CSSProperties } from \"react\";\nimport { getStyle } from \"@/utils/messageStyling\";\nimport { resolveBracketContent, getEmojiUnicode } from \"@/emoji/resolveEmoji\";\n\nfunction parseLine(input: string): [string[], string[], string[], string] {\n // <red> controls comment only;\n // (red) controls message only;\n // [red] controls both comment and message.\n const result = {\n \"<>\": new Set<string>(),\n \"()\": new Set<string>(),\n \"[]\": new Set<string>(),\n };\n const pattern = /<([^>]*)>|\\(([^)]*)\\)|\\[([^\\]]*)\\]|([^<>()[\\]\\s]+)/g;\n let match;\n let lastMatchIndex: number | undefined;\n while ((match = pattern.exec(input))) {\n if (match[4]) {\n if (lastMatchIndex !== undefined) lastMatchIndex = match.index;\n // non-empty character outside brackets is encountered\n break;\n }\n lastMatchIndex = match.index + match[0].length;\n if (match[1]) {\n match[1].split(\",\").forEach((s) => result[\"<>\"].add(s.trim()));\n }\n if (match[2]) {\n match[2].split(\",\").forEach((s) => result[\"()\"].add(s.trim()));\n }\n if (match[3]) {\n match[3].split(\",\").forEach((s) => result[\"[]\"].add(s.trim()));\n }\n }\n\n return [\n Array.from(result[\"<>\"]),\n Array.from(result[\"()\"]),\n Array.from(result[\"[]\"]),\n input.slice(lastMatchIndex),\n ];\n}\nexport default class CommentClass {\n // define properties color and text\n public text: string = \"\";\n /** @deprecated use commentStyle or messageStyle instead */\n public classNames: string[] = [];\n /** @deprecated use commentClassNames or messageClassNames instead */\n public textStyle: CSSProperties = {};\n\n public commentStyle: CSSProperties = {};\n public messageStyle: CSSProperties = {};\n public commentClassNames: string[] = [];\n public messageClassNames: string[] = [];\n public emojis: string[] = [];\n\n // Raw comment contains all spaces and newlines\n constructor(raw: string) {\n // Split by newlines, handling both with and without trailing newline\n const lines = raw.trim().split(\"\\n\");\n const lastLine = lines[lines.length - 1];\n const [commentOnlyStyles, messageOnlyStyles, commonStyles, text] =\n parseLine(lastLine);\n\n // Resolve emoji from the common ([] bracket) styles\n const resolved = resolveBracketContent(commonStyles.join(\", \"));\n this.emojis = resolved.emojis;\n // Filter emoji-only values from styles passed to getStyle\n const emojiSet = new Set(this.emojis);\n const stylesForGetStyle = commonStyles.filter((s) => {\n // Remove colon-wrapped values (emoji override syntax like :red:)\n if (/^:.+:$/.test(s)) return false;\n // Remove values that resolved as emoji but not as CSS\n return !emojiSet.has(s);\n });\n\n const { textStyle: commentStyle, classNames: commentClassNames } =\n getStyle(commentOnlyStyles);\n const { textStyle: messageStyle, classNames: messageClassNames } =\n getStyle(messageOnlyStyles);\n const { textStyle: commonStyle, classNames: commonClassNames } =\n getStyle(stylesForGetStyle);\n\n const baseText = (\n lines.slice(0, lines.length - 1).join(\"\\n\") +\n \"\\n\" +\n text\n ).trim();\n const emojiPrefix = this.emojis\n .map((name) => getEmojiUnicode(name))\n .join(\"\");\n this.text =\n emojiPrefix && baseText\n ? `${emojiPrefix} ${baseText}`\n : emojiPrefix || baseText;\n this.textStyle = { ...commonStyle, ...commentStyle, ...messageStyle };\n this.classNames = [\n ...commonClassNames,\n ...commentClassNames,\n ...messageClassNames,\n ];\n this.commentStyle = { ...commonStyle, ...commentStyle };\n this.messageStyle = { ...commonStyle, ...messageStyle };\n this.commentClassNames = [...commonClassNames, ...commentClassNames];\n this.messageClassNames = [...commonClassNames, ...messageClassNames];\n }\n}\n","import { marked } from \"marked\";\nimport Comment from \"../../components/Comment/Comment\";\n\nconst defaultTokensOptions = {\n gfm: true,\n breaks: true,\n};\n\nexport class MarkdownMeasurer {\n measure(_text: string | undefined | null): number {\n if (!_text || !_text.trim()) {\n return 0;\n }\n\n const commentObj = new Comment(_text);\n const tokens = marked.lexer(commentObj?.text ?? \"\", defaultTokensOptions);\n if (!tokens.length) {\n return 0;\n }\n\n const lines = _text.trim().split(\"\\n\");\n // console.info(\n // \"MarkdownMeasurer\",\n // `commentObj?.text ${commentObj?.text}`,\n // `lines.length ${lines.length}`,\n // `tokens\", ${JSON.stringify(tokens)}`,\n // );\n\n return lines.length * 20;\n }\n}\n","import { NodeVM } from \"./NodeVM\";\nimport type { StatementCoordinate } from \"@/positioning/vertical/StatementCoordinate\";\nimport type { StatementKind } from \"@/positioning/vertical/StatementTypes\";\nimport { getLocalParticipantNames } from \"@/positioning/LocalParticipants\";\nimport { MarkdownMeasurer } from \"@/positioning/vertical/MarkdownMeasurer\";\n\nexport abstract class StatementVM extends NodeVM {\n abstract readonly kind: StatementKind;\n\n public abstract measure(top: number, origin: string): StatementCoordinate;\n\n protected get metrics() {\n return this.runtime.metrics;\n }\n\n protected measureComment(context: any = this.context): number {\n if (!context?.getComment || !context.getComment()) return 0;\n return new MarkdownMeasurer().measure(context.getComment());\n }\n\n protected resolveFragmentOrigin(fallbackOrigin: string): string {\n try {\n const participants = getLocalParticipantNames(this.context) || [];\n return participants[0] || fallbackOrigin;\n } catch (error) {\n console.warn(\"Failed to resolve fragment origin\", error);\n return fallbackOrigin;\n }\n }\n\n protected findLeftParticipant(\n ctx: any,\n fallbackOrigin: string,\n ): string | undefined {\n if (!ctx) return undefined;\n const local = getLocalParticipantNames(ctx) || [];\n const ordered = this.runtime.participants;\n return (\n ordered.find((name) => local.includes(name)) ||\n local[0] ||\n fallbackOrigin ||\n undefined\n );\n }\n\n protected measureOccurrence(\n context: any,\n top: number,\n participant?: string,\n minHeight = 24, // .occurrence .min-h-6\n contentInset = 1,\n ): number {\n // const enlog = participant === \"c\";\n const block = context?.braceBlock?.()?.block?.();\n if (!block) {\n return minHeight;\n }\n const offset = this.metrics.statementMarginY - contentInset;\n const blockStart = top - offset;\n const blockEnd = this.layoutBlock(\n block,\n participant || this.runtime.originParticipant,\n blockStart,\n );\n const height = blockEnd - blockStart - offset;\n return Math.max(minHeight, height);\n }\n\n protected isRootLevelStatement(statCtx: any): boolean {\n const block = statCtx?.parentCtx;\n return block === this.runtime.rootBlock;\n }\n\n protected isFirstStatement(statCtx: any): boolean {\n const block = statCtx?.parentCtx;\n const statements: any[] = block?.stat?.() || [];\n return statements.length > 0 && statements[0] === statCtx;\n }\n\n protected altHasMultipleBranches(ctx: any): boolean {\n if (typeof ctx?.alt !== \"function\") {\n return false;\n }\n const altContext = ctx.alt();\n if (!altContext) {\n return false;\n }\n const elseIfBlocks = altContext?.elseIfBlock?.() || [];\n const hasElse = Boolean(altContext?.elseBlock?.());\n return elseIfBlocks.length > 0 || hasElse;\n }\n}\n","import type { StatementCoordinate } from \"../StatementCoordinate\";\nimport { StatementVM } from \"./StatementVM\";\nimport type { LayoutRuntime } from \"./types\";\n\nexport class AsyncMessageStatementVM extends StatementVM {\n readonly kind = \"async\" as const;\n\n constructor(\n statement: any,\n private readonly asyncMessage: any,\n runtime: LayoutRuntime,\n ) {\n super(statement, runtime);\n }\n\n public measure(top: number, origin: string): StatementCoordinate {\n const asyncContext = this.asyncMessage;\n const commentHeight = this.measureComment(asyncContext);\n\n const source =\n asyncContext?.From?.() ||\n asyncContext?.ProvidedFrom?.() ||\n asyncContext?.Origin?.() ||\n origin;\n\n const target =\n asyncContext?.Owner?.() ||\n asyncContext?.to?.()?.getFormattedText?.() ||\n source;\n\n const isSelf = source === target;\n const messageHeight = isSelf ? 44 : 16;\n\n return {\n top,\n height: commentHeight + messageHeight,\n kind: this.kind,\n };\n }\n}\n","import type { StatementCoordinate } from \"../StatementCoordinate\";\nimport { StatementVM } from \"./StatementVM\";\nimport type { LayoutRuntime } from \"./types\";\nimport logger from \"@/logger/logger\";\n\nconst CREATION_MESSAGE_HEIGHT = 40; // [data-type=\"creation\"], .h-10\n\nexport class CreationStatementVM extends StatementVM {\n readonly kind = \"creation\" as const;\n\n constructor(\n statement: any,\n private readonly creation: any,\n runtime: LayoutRuntime,\n ) {\n super(statement, runtime);\n }\n\n public measure(top: number, originParticipant: string): StatementCoordinate {\n const participant = this.creation?.Owner?.() || originParticipant;\n\n const commentHeight = this.measureComment(this.creation);\n if (participant) {\n this.runtime.updateCreationTop(participant, top + commentHeight);\n }\n\n let cursor = top + commentHeight + CREATION_MESSAGE_HEIGHT;\n // console.info(\n // `creation::${participant}::start cursor:${cursor} commentHeight:${commentHeight}`,\n // );\n\n const block = this.creation?.braceBlock?.()?.block?.();\n if (block) {\n const fragmentOrigin =\n this.findLeftParticipant(this.creation, originParticipant) || originParticipant;\n cursor = this.layoutBlock(block, fragmentOrigin, cursor, this.kind);\n cursor += 2; // .occurrence.border-2 for bottom\n } else {\n cursor += 22; // .occurrence, .min-h-6, .mt-[-2px]\n }\n\n const assignment = this.creation?.Assignment?.();\n if (assignment) {\n logger.info(`creation::assignment::${participant}`);\n cursor += 12;\n }\n\n const height = cursor - top;\n // console.info(\n // `creation::${participant}::end cursor:${cursor} height:${height}`,\n // );\n\n return {\n top,\n height,\n kind: this.kind,\n };\n }\n}\n","import { StatementVM } from \"./StatementVM\";\nimport type { StatementCoordinate } from \"../StatementCoordinate\";\n\nexport class DividerStatementVM extends StatementVM {\n readonly kind = \"divider\" as const;\n\n public measure(top: number): StatementCoordinate {\n return { top, height: 40, kind: this.kind };\n }\n}\n","import type { StatementCoordinate } from \"../StatementCoordinate\";\nimport { StatementVM } from \"./StatementVM\";\n\nexport class EmptyStatementVM extends StatementVM {\n readonly kind = \"empty\" as const;\n\n public measure(top: number): StatementCoordinate {\n return { top, height: 0, kind: this.kind };\n }\n}\n","import { StatementVM } from \"./StatementVM\";\n\nexport abstract class FragmentVM extends StatementVM {\n protected beginFragment(context: any, top: number) {\n const commentHeight = this.measureComment(context);\n const headerHeight = this.metrics.fragmentHeaderHeight;\n\n return {\n cursor: top + commentHeight + headerHeight,\n commentHeight,\n headerHeight,\n };\n }\n\n protected finalizeFragment(top: number, cursor: number) {\n cursor += this.metrics.fragmentPaddingBottom;\n return {\n top,\n height: cursor - top,\n } as const;\n }\n}\n","import type { StatementCoordinate } from \"../StatementCoordinate\";\nimport { FragmentVM } from \"./FragmentVM\";\nimport type { LayoutRuntime } from \"./types\";\n\nexport class FragmentAltVM extends FragmentVM {\n readonly kind = \"alt\" as const;\n\n constructor(\n statement: any,\n private readonly alt: any,\n runtime: LayoutRuntime,\n ) {\n super(statement, runtime);\n }\n\n public measure(top: number, origin: string): StatementCoordinate {\n const leftParticipant =\n this.findLeftParticipant(this.alt, origin) || origin;\n\n const commentHeight = this.measureComment(this.alt);\n let cursor = top + 1 + this.metrics.fragmentHeaderHeight + commentHeight;\n // console.info(\"FragmentAltVM::start\", leftParticipant, commentHeight);\n\n const ifBlock = this.alt?.ifBlock?.();\n if (ifBlock) {\n // console.info(\"FragmentAltVM::ifBlock::start\", cursor);\n cursor += 20; // .text-skin-fragment > label\n cursor = this.layoutBlock(\n ifBlock.braceBlock()?.block(),\n leftParticipant,\n cursor,\n );\n // console.info(\"FragmentAltVM::ifBlock::end\", cursor);\n }\n this.alt?.elseIfBlock?.()?.forEach((block: any) => {\n // console.info(\"FragmentAltVM::elseIfBlock::start\", cursor);\n cursor += 20; // .text-skin-fragment > label\n cursor += 8; // .mt-2\n cursor += 1; // .segment.border-t.border-solid\n cursor = this.layoutBlock(\n block?.braceBlock?.()?.block?.(),\n leftParticipant,\n cursor,\n );\n // console.info(\"FragmentAltVM::elseIfBlock::end\", cursor);\n });\n const elseBlock = this.alt?.elseBlock?.()?.braceBlock?.()?.block?.();\n if (elseBlock) {\n // console.info(\"FragmentAltVM::elseBlock::start\", cursor);\n cursor += 20; // .text-skin-fragment > label\n cursor += 8; // .mt-2\n cursor += 1; // .segment.border-t.border-solid\n cursor = this.layoutBlock(elseBlock, leftParticipant, cursor);\n // console.info(\"FragmentAltVM::elseBlock::end\", cursor);\n }\n\n cursor += this.metrics.fragmentPaddingBottom + 1; // .zenuml .fragment =>padding-bottom: 10px\n // console.info(\"FragmentAltVM::end\", cursor, cursor - top);\n\n return {\n top,\n height: cursor - top,\n kind: this.kind,\n };\n }\n}\n","import type { StatementCoordinate } from \"@/positioning/vertical/StatementCoordinate\";\nimport type { StatementKind } from \"@/positioning/vertical/StatementTypes\";\nimport { FragmentVM } from \"./FragmentVM\";\nimport type { LayoutRuntime } from \"./types\";\n\nexport abstract class FragmentSingleBlockVM extends FragmentVM {\n abstract readonly kind: StatementKind;\n\n constructor(\n statement: any,\n protected readonly fragment: any,\n runtime: LayoutRuntime,\n ) {\n super(statement, runtime);\n }\n\n public measure(top: number, origin: string): StatementCoordinate {\n const commentHeight = this.measureComment(this.fragment);\n let cursor = top + 1 + this.metrics.fragmentHeaderHeight + commentHeight;\n\n const hasCondition = Boolean(this.fragment?.parExpr?.()?.condition?.());\n if (hasCondition) cursor += 20;\n\n const block = this.fragment?.braceBlock?.()?.block?.();\n if (block) {\n const fragmentOrigin =\n this.findLeftParticipant(this.fragment, origin) || origin;\n cursor = this.layoutBlock(block, fragmentOrigin, cursor, this.kind);\n }\n\n cursor += this.metrics.fragmentPaddingBottom + 1;\n\n return {\n top,\n height: cursor - top,\n kind: this.kind,\n };\n }\n}\n","import { FragmentSingleBlockVM } from \"./FragmentSingleBlockVM\";\n\nexport class FragmentCriticalVM extends FragmentSingleBlockVM {\n readonly kind = \"critical\" as const;\n}\n","import { FragmentSingleBlockVM } from \"./FragmentSingleBlockVM\";\n\nexport class FragmentLoopVM extends FragmentSingleBlockVM {\n readonly kind = \"loop\" as const;\n}\n","import { FragmentSingleBlockVM } from \"./FragmentSingleBlockVM\";\n\nexport class FragmentOptVM extends FragmentSingleBlockVM {\n readonly kind = \"opt\" as const;\n}\n","import { FragmentSingleBlockVM } from \"./FragmentSingleBlockVM\";\n\nexport class FragmentParVM extends FragmentSingleBlockVM {\n readonly kind = \"par\" as const;\n}\n","import type { StatementCoordinate } from \"../StatementCoordinate\";\nimport { FragmentVM } from \"./FragmentVM\";\n\nexport class FragmentRefVM extends FragmentVM {\n readonly kind = \"ref\" as const;\n\n public measure(top: number): StatementCoordinate {\n const context = this.context?.ref?.() || this.context;\n const commentHeight = this.measureComment(context);\n const headerHeight = this.metrics.fragmentHeaderHeight;\n const height =\n commentHeight + headerHeight + this.metrics.fragmentPaddingBottom;\n return { top, height, kind: this.kind };\n }\n}\n","import { FragmentSingleBlockVM } from \"./FragmentSingleBlockVM\";\n\nexport class FragmentSectionVM extends FragmentSingleBlockVM {\n readonly kind = \"section\" as const;\n}\n","import type { StatementCoordinate } from \"../StatementCoordinate\";\nimport { FragmentVM } from \"./FragmentVM\";\nimport type { LayoutRuntime } from \"./types\";\n\nexport class FragmentTryCatchVM extends FragmentVM {\n readonly kind = \"tcf\" as const;\n\n constructor(\n statement: any,\n private readonly tcf: any,\n runtime: LayoutRuntime,\n ) {\n super(statement, runtime);\n }\n\n public measure(top: number, origin: string): StatementCoordinate {\n const leftParticipant =\n this.findLeftParticipant(this.tcf, origin) || origin;\n\n const commentHeight = this.measureComment(this.tcf);\n let cursor = top + 1 + this.metrics.fragmentHeaderHeight + commentHeight;\n\n const tryBlock = this.tcf?.tryBlock?.()?.braceBlock?.()?.block?.();\n if (tryBlock) {\n cursor = this.layoutBlock(tryBlock, leftParticipant, cursor);\n }\n\n const catchBlocks = this.tcf?.catchBlock?.() || [];\n catchBlocks.forEach((catchBlock: any) => {\n cursor += 20; // .text-skin-fragment > label\n cursor += 8; // .mt-2\n cursor += 1; // .segment.border-t.border-solid\n const block = catchBlock?.braceBlock?.()?.block?.();\n cursor = this.layoutBlock(block, leftParticipant, cursor);\n });\n\n const finallyBlock = this.tcf?.finallyBlock?.()?.braceBlock?.()?.block?.();\n if (finallyBlock) {\n cursor += 20; // .text-skin-fragment > label\n cursor += 8; // .mt-2\n cursor += 1; // .segment.border-t.border-solid\n cursor = this.layoutBlock(finallyBlock, leftParticipant, cursor);\n }\n\n cursor += this.metrics.fragmentPaddingBottom + 1; // .fragment =>padding-bottom: 10px\n // console.info(\"FragmentTryCatchVM::end\", cursor, cursor - top);\n\n return {\n top,\n height: cursor - top,\n kind: this.kind,\n };\n }\n}\n","import type { StatementCoordinate } from \"@/positioning/vertical/StatementCoordinate\";\nimport { StatementVM } from \"./StatementVM\";\nimport type { LayoutRuntime } from \"./types\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\n\nexport class ReturnStatementVM extends StatementVM {\n readonly kind = \"return\" as const;\n private readonly returnContext: any;\n\n constructor(statement: any, runtime: LayoutRuntime) {\n super(statement, runtime);\n this.returnContext = statement?.ret?.();\n }\n\n public measure(top: number): StatementCoordinate {\n const context = this.returnContext || this.context;\n const commentHeight = this.measureComment(context);\n let cursor = top + commentHeight;\n\n const ret = this.returnContext;\n const asyncMessage = ret?.asyncMessage?.();\n const source = asyncMessage?.From?.() || ret?.From?.() || _STARTER_;\n const target =\n asyncMessage?.to?.()?.getFormattedText?.() ||\n ret?.ReturnTo?.() ||\n _STARTER_;\n const isSelf = source === target;\n\n const messageHeight = isSelf ? 20 : 0;\n cursor += messageHeight;\n\n // CSS: .occurrence .block > .statement-container:last-child > .interaction.return\n // applies margin-bottom: -16px, collapsing the return's bottom space.\n // The collapse only applies to direct-child returns in the last position AND\n // only when the block is (directly or indirectly) inside an occurrence element\n // (i.e. a sync message or creation with a braceBlock body).\n //\n // If the return's fragment section block is NOT inside any occurrence, the CSS\n // ancestor selector `.occurrence .block` does not match, so the return occupies\n // its full 16px height in HTML.\n if (!isSelf) {\n const block = this.context?.parentCtx;\n const siblings = block?.stat?.() || [];\n const isLast = siblings[siblings.length - 1] === this.context;\n // Walk up to check if any ancestor context is a message/creation (occurrence body).\n // `message` context has a `messageBody()` method; `creation` has `creationBody()`.\n // Root-level or fragment-only contexts (alt/tcf/loop/etc.) have neither.\n const isInsideOccurrence = (() => {\n let ctx = block?.parentCtx; // start from braceBlock upward\n while (ctx) {\n if (typeof ctx.messageBody === \"function\" || typeof ctx.creationBody === \"function\") {\n return true;\n }\n ctx = ctx.parentCtx;\n }\n return false;\n })();\n if (!isLast || !isInsideOccurrence) {\n cursor += 16;\n }\n }\n\n const height = cursor - top;\n // console.info(\"returnVM::\", top, commentHeight, source, target, height);\n\n return { top, height, kind: this.kind };\n }\n}\n","import { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport type { StatementCoordinate } from \"../StatementCoordinate\";\nimport { StatementVM } from \"./StatementVM\";\nimport type { LayoutRuntime } from \"./types\";\n\nexport class SyncMessageStatementVM extends StatementVM {\n readonly kind = \"sync\" as const;\n\n constructor(\n statement: any,\n private readonly message: any,\n runtime: LayoutRuntime,\n ) {\n super(statement, runtime);\n }\n\n public measure(top: number, origin: string): StatementCoordinate {\n const commentHeight = this.measureComment(this.message);\n let cursor = top + commentHeight;\n\n const source = this.message.From?.() || _STARTER_;\n const target = this.message.Owner?.() || _STARTER_;\n const block = this.message.braceBlock?.()?.block?.();\n\n const assignee = this.message.Assignment?.();\n\n const isSelf = source === target;\n const messageHeight = isSelf ? 30 : 16;\n cursor += messageHeight;\n\n if (block) {\n const fragmentOrigin =\n this.findLeftParticipant(this.message, origin) || origin;\n cursor = this.layoutBlock(block, fragmentOrigin, cursor, this.kind);\n cursor += 2; // .occurrence.border-2 for bottom\n\n } else {\n cursor += 22; // .occurrence, .min-h-6, .mt-[-2px]\n }\n\n if (assignee && !isSelf) {\n cursor += 12;\n }\n\n const height = cursor - top;\n // console.info(\"syncMessageVM::end\", height, commentHeight, messageHeight);\n\n return { top, height, kind: this.kind };\n }\n}\n","import { AsyncMessageStatementVM } from \"./AsyncMessageStatementVM\";\nimport { CreationStatementVM } from \"./CreationStatementVM\";\nimport { DividerStatementVM } from \"./DividerStatementVM\";\nimport { EmptyStatementVM } from \"./EmptyStatementVM\";\nimport { FragmentAltVM } from \"./FragmentAltVM\";\nimport { FragmentCriticalVM } from \"./FragmentCriticalVM\";\nimport { FragmentLoopVM } from \"./FragmentLoopVM\";\nimport { FragmentOptVM } from \"./FragmentOptVM\";\nimport { FragmentParVM } from \"./FragmentParVM\";\nimport { FragmentRefVM } from \"./FragmentRefVM\";\nimport { FragmentSectionVM } from \"./FragmentSectionVM\";\nimport { FragmentTryCatchVM } from \"./FragmentTryCatchVM\";\nimport { ReturnStatementVM } from \"./ReturnStatementVM\";\nimport type { StatementVM } from \"./StatementVM\";\nimport type { LayoutRuntime } from \"./types\";\nimport { SyncMessageStatementVM } from \"./SyncMessageStatementVM\";\n\nexport const createStatementVM = (\n statement: any,\n runtime: LayoutRuntime,\n): StatementVM => {\n const creation = statement.creation?.();\n if (creation) {\n return new CreationStatementVM(statement, creation, runtime);\n }\n\n const message = statement.message?.();\n if (message) {\n return new SyncMessageStatementVM(statement, message, runtime);\n }\n\n const asyncMessage = statement.asyncMessage?.();\n if (asyncMessage) {\n return new AsyncMessageStatementVM(statement, asyncMessage, runtime);\n }\n\n if (statement.ret?.()) {\n return new ReturnStatementVM(statement, runtime);\n }\n\n if (statement.divider?.()) {\n return new DividerStatementVM(statement, runtime);\n }\n\n const loop = statement.loop?.();\n if (loop) {\n return new FragmentLoopVM(statement, loop, runtime);\n }\n\n const opt = statement.opt?.();\n if (opt) {\n return new FragmentOptVM(statement, opt, runtime);\n }\n\n const par = statement.par?.();\n if (par) {\n return new FragmentParVM(statement, par, runtime);\n }\n\n const section = statement.section?.();\n if (section) {\n return new FragmentSectionVM(statement, section, runtime);\n }\n\n const critical = statement.critical?.();\n if (critical) {\n return new FragmentCriticalVM(statement, critical, runtime);\n }\n\n const tcf = statement.tcf?.();\n if (tcf) {\n return new FragmentTryCatchVM(statement, tcf, runtime);\n }\n\n const alt = statement.alt?.();\n if (alt) {\n return new FragmentAltVM(statement, alt, runtime);\n }\n\n if (statement.ref?.()) {\n return new FragmentRefVM(statement, runtime);\n }\n\n return new EmptyStatementVM(statement, runtime);\n};\n","import { NodeVM } from \"./NodeVM\";\nimport type { LayoutRuntime } from \"./types\";\nimport { createStatementVM } from \"./createStatementVM\";\nimport type { StatementKind } from \"../StatementTypes\";\n\nexport class BlockVM extends NodeVM {\n private readonly statements: any[];\n\n constructor(context: any, runtime: LayoutRuntime) {\n super(context, runtime);\n this.statements = context?.stat?.() || [];\n }\n\n public layout(\n originParticipant: string,\n startTop: number,\n parentKind?: StatementKind,\n ): number {\n if (!this.statements.length) return startTop;\n\n const metrics = this.runtime.metrics;\n // console.info(\n // `blockVM::start cursor:${startTop} statements.size:${this.statements.length}`,\n // );\n let cursor = startTop + metrics.statementMarginY; // .statement-container .my-4\n\n this.statements.forEach((statement: any, index: number) => {\n if (parentKind === \"par\" && index !== 0) cursor += 1;\n\n const statementVM = createStatementVM(statement, this.runtime);\n // console.info(`statementVM::start::${statementVM.kind} cursor:${cursor}`);\n const coordinate = statementVM.measure(cursor, originParticipant);\n this.runtime.recordCoordinate(statement, coordinate);\n cursor = coordinate.top + coordinate.height + metrics.statementMarginY;\n // console.info(\n // `statementVM::end::${statementVM.kind} height:${coordinate.height} cursor:${cursor}`,\n // );\n });\n\n // console.info(`blockVM::end cursor:${cursor}`);\n return cursor;\n }\n}\n","const SPACING_UNIT = 4; // Tailwind spacing scale unit (1 => 0.25rem => 4px)\nconst tw = (value: number) => value * SPACING_UNIT;\n\nexport interface LayoutMetrics {\n statementMarginY: number;\n fragmentHeaderHeight: number;\n fragmentPaddingBottom: number;\n}\n\nexport const DEFAULT_LAYOUT_METRICS: LayoutMetrics = {\n statementMarginY: tw(4), // .statement-container .my-4\n fragmentHeaderHeight: 25, // .fragment .leading-4 => line-height: 1rem\n fragmentPaddingBottom: 10, // .zenuml .fragment =>padding-bottom: 10px\n};\n","import { createStatementKey } from \"@/positioning/vertical/StatementIdentifier\";\nimport type { StatementCoordinate } from \"@/positioning/vertical/StatementCoordinate\";\nimport { _STARTER_, OrderedParticipants } from \"@/parser/OrderedParticipants\";\nimport { AllMessages } from \"@/parser/MessageCollector\";\nimport type { LayoutRuntime } from \"./vertical/vm/types\";\nimport logger from \"@/logger/logger\";\nimport { BlockVM } from \"./vertical/vm/BlockVM\";\nimport { DEFAULT_LAYOUT_METRICS as metrics } from \"./vertical/LayoutMetrics\";\n\nexport class VerticalCoordinates {\n private readonly statementMap = new Map<string, StatementCoordinate>();\n private readonly creationTops = new Map<string, number>();\n private readonly totalHeight: number;\n\n constructor(rootContext: any) {\n const rootBlock = rootContext?.block?.() ?? rootContext;\n\n const participants = OrderedParticipants(rootContext).map((p) => p.name);\n // console.info(\"participants\", participants);\n\n const messages = AllMessages(rootContext);\n // console.info(\"messages\", JSON.stringify(messages));\n const originParticipant =\n messages.length === 0 ? _STARTER_ : messages[0].from || _STARTER_;\n\n const runtime: LayoutRuntime = {\n metrics,\n rootBlock,\n participants,\n originParticipant,\n recordCoordinate: (statement: any, coordinate: StatementCoordinate) => {\n const key = createStatementKey(statement);\n this.statementMap.set(key, coordinate);\n },\n updateCreationTop: (participant: string, top: number) => {\n const paddingTop = top - 8; // .life-line-layer, .pt-2\n logger.info(`[VerticalCoordinates] updateCreationTop participant=\"${participant}\" raw=${top} paddingTop=${paddingTop}`);\n this.creationTops.set(participant, paddingTop);\n },\n };\n\n const rootBlockVM = new BlockVM(rootBlock, runtime);\n this.totalHeight = rootBlockVM.layout(originParticipant, 56); // .message-layer, .pt-14 => 56px\n }\n\n getCreationTop(participant: string): number | undefined {\n return this.creationTops.get(participant);\n }\n\n getStatementCoordinate(key: string): StatementCoordinate | undefined {\n return this.statementMap.get(key);\n }\n\n getStatementCoordinateFor(statement: any): StatementCoordinate | undefined {\n return this.statementMap.get(createStatementKey(statement));\n }\n\n entries(): Array<[string, StatementCoordinate]> {\n return Array.from(this.statementMap.entries());\n }\n\n getTotalHeight(): number {\n return this.totalHeight;\n }\n}\n","import { TextType } from \"@/positioning/Coordinate\";\nimport { getCache, setCache } from \"./../utils/RenderingCache\";\nimport logger from \"@/logger/logger\";\n\nconst FONT_FAMILY = \"Helvetica, Verdana, serif\";\nconst FONT_SIZE_PARTICIPANT = \"16px\"; // 1rem — used for ALL measurements (see getFontSpec comment)\nconst FONT_SIZE_FRAGMENT = \"14px\";\n\nfunction getFontSpec(): string {\n // WidthProviderOnBrowser has a latent bug: it creates a hidden div with\n // fontSize set once on the first call (always 16px for participant names,\n // since withParticipantGaps runs before withMessageGaps in Coordinates).\n // The div is reused for all subsequent calls without updating fontSize,\n // so ALL measurements effectively happen at 16px.\n // To match HTML Coordinates output, we always use 16px here too.\n return `${FONT_SIZE_PARTICIPANT} ${FONT_FAMILY}`;\n}\n\nlet canvasCtx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null = null;\n\n/** Inject a custom canvas context (e.g., from @napi-rs/canvas for accurate text measurement in Node/Bun). */\nexport function setCanvasContext(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null): void {\n canvasCtx = ctx;\n}\n\nfunction getCanvasContext(): CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null {\n if (canvasCtx) return canvasCtx;\n try {\n if (typeof OffscreenCanvas !== \"undefined\") {\n canvasCtx = new OffscreenCanvas(1, 1).getContext(\"2d\");\n logger.debug(\"[ZenUML] WidthProviderOnCanvas: using OffscreenCanvas\");\n } else if (typeof document !== \"undefined\") {\n canvasCtx = document.createElement(\"canvas\").getContext(\"2d\");\n logger.debug(\"[ZenUML] WidthProviderOnCanvas: using <canvas> element\");\n } else {\n logger.debug(\"[ZenUML] WidthProviderOnCanvas: no canvas available, using character estimate fallback\");\n }\n } catch {\n logger.debug(\"[ZenUML] WidthProviderOnCanvas: canvas creation failed, using character estimate fallback\");\n }\n return canvasCtx;\n}\n\nexport function WidthProviderOnCanvas(\n text: string,\n type: TextType,\n): number {\n // Trim whitespace to match browser behavior: DOM scrollWidth (used by\n // WidthProviderOnBrowser) ignores leading/trailing spaces because the hidden\n // div has display:inline + width:0px. Canvas measureText includes them,\n // so we trim to keep both providers consistent.\n const measured = text.trim();\n const cacheKey = `WidthProviderOnCanvas_${measured}_${type}`;\n const cacheValue = getCache(cacheKey);\n if (cacheValue != null) {\n return cacheValue;\n }\n\n const ctx = getCanvasContext();\n if (!ctx) {\n // Fallback: estimate based on character count (always 16px to match browser)\n const width = Math.ceil(measured.length * 16 * 0.6);\n setCache(cacheKey, width, true);\n return width;\n }\n\n ctx.font = getFontSpec();\n const width = Math.round(ctx.measureText(measured).width);\n setCache(cacheKey, width, true);\n return width;\n}\n\n// eslint-disable-next-line no-misleading-character-class\nconst EMOJI_PATTERN = /[\\u{1F300}-\\u{1FAFF}\\u{2600}-\\u{27BF}\\u{FE00}-\\u{FE0F}\\u{200D}]/u;\n\n/**\n * Measure text width using SVG <text> element (accurate for emoji).\n * Canvas measureText returns wider values for emoji than SVG actually renders.\n */\nfunction measureWithSvg(text: string, fontSize: string): number | null {\n if (typeof document === \"undefined\") return null;\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.setAttribute(\"style\", \"position:absolute;left:-9999px;top:-9999px\");\n const textEl = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n textEl.setAttribute(\"font-family\", FONT_FAMILY);\n textEl.setAttribute(\"font-size\", fontSize);\n textEl.textContent = text;\n svg.appendChild(textEl);\n document.body.appendChild(svg);\n const width = textEl.getBBox().width;\n document.body.removeChild(svg);\n return width;\n}\n\nexport function measureTextWithFont(text: string, fontSize: string): number {\n const measured = text.trim();\n if (!measured) return 0;\n\n // Use SVG measurement for text containing emoji — canvas measureText\n // returns wider values for emoji glyphs than SVG <text> actually renders.\n const hasEmoji = EMOJI_PATTERN.test(measured);\n const cacheKey = hasEmoji\n ? `measureTextWithFont_svg_${fontSize}_${measured}`\n : `measureTextWithFont_${fontSize}_${measured}`;\n const cacheValue = getCache(cacheKey);\n if (cacheValue != null) {\n return cacheValue;\n }\n\n if (hasEmoji) {\n const svgWidth = measureWithSvg(measured, fontSize);\n if (svgWidth != null) {\n setCache(cacheKey, svgWidth, true);\n return svgWidth;\n }\n }\n\n const ctx = getCanvasContext();\n if (!ctx) {\n const px = Number.parseFloat(fontSize) || 14;\n const width = Math.ceil(measured.length * px * 0.6);\n setCache(cacheKey, width, true);\n return width;\n }\n\n ctx.font = `${fontSize} ${FONT_FAMILY}`;\n const width = ctx.measureText(measured).width;\n setCache(cacheKey, width, true);\n return width;\n}\n\nexport function measureSvgFragmentLabelWidth(text: string): number {\n return measureTextWithFont(text, FONT_SIZE_FRAGMENT);\n}\n\nexport function measureSvgParticipantLabelWidth(text: string): number {\n return measureTextWithFont(text, FONT_SIZE_PARTICIPANT);\n}\n\nexport default function WidthProviderOnBrowser(\n text: string,\n type: TextType,\n): number {\n const cacheKey = `WidthProviderOnBrowser_${text}_${type}`;\n const cacheValue = getCache(cacheKey);\n if (cacheValue != null) {\n return cacheValue;\n }\n let hiddenDiv = document.querySelector(\n \".textarea-hidden-div\",\n ) as HTMLDivElement;\n if (!hiddenDiv) {\n const newDiv = document.createElement(\"div\");\n newDiv.className = \"textarea-hidden-div \";\n newDiv.style.fontSize =\n type === TextType.MessageContent ? \"0.875rem\" : \"1rem\";\n newDiv.style.fontFamily = \"Helvetica, Verdana, serif\";\n newDiv.style.display = \"inline\";\n // newDiv.style.zIndex = '-9999';\n newDiv.style.whiteSpace = \"nowrap\";\n newDiv.style.visibility = \"hidden\";\n newDiv.style.position = \"absolute\";\n newDiv.style.top = \"0\";\n newDiv.style.left = \"0\";\n newDiv.style.overflow = \"hidden\";\n newDiv.style.width = \"0px\";\n // newDiv.style.height = '0px';\n newDiv.style.paddingLeft = \"0px\";\n newDiv.style.paddingRight = \"0px\";\n newDiv.style.margin = \"0px\";\n newDiv.style.border = \"0px\";\n document.body.appendChild(newDiv);\n hiddenDiv = newDiv;\n }\n // hiddenDiv.className = 'textarea-hidden-div ' + (type === TextType.ParticipantName ? 'participant' : 'message');\n\n hiddenDiv.textContent = text;\n const scrollWidth = hiddenDiv.scrollWidth;\n setCache(cacheKey, scrollWidth, true);\n return scrollWidth;\n}\n","import antlr4 from \"antlr4\";\nimport sequenceParserListener from \"../generated-parser/sequenceParserListener\";\nimport { Frame } from \"@/positioning/FrameBorder\";\nimport { getLocalParticipantNames } from \"@/positioning/LocalParticipants\";\n\nconst walker = antlr4.tree.ParseTreeWalker.DEFAULT;\n\nclass FrameBuilder extends sequenceParserListener {\n private _orderedParticipants: string[];\n private frameRoot: Frame | null = null;\n private parents: Frame[] = [];\n\n constructor(orderedParticipants: string[]) {\n super();\n this._orderedParticipants = orderedParticipants;\n }\n\n private getLeft(ctx: any): string {\n const localParticipants = getLocalParticipantNames(ctx);\n return (\n this._orderedParticipants.find((p) => localParticipants.includes(p)) || \"\"\n );\n }\n\n private getRight(ctx: any): string {\n return (\n this._orderedParticipants\n .slice()\n .reverse()\n .find((p) => getLocalParticipantNames(ctx).includes(p)) || \"\"\n );\n }\n\n enterFragment(ctx: any, type: string) {\n // Create a new frame for the current node\n const frame: Frame = {\n type,\n left: this.getLeft(ctx),\n right: this.getRight(ctx),\n children: [],\n };\n\n // If there's no root, set the current frame as root\n if (!this.frameRoot) {\n this.frameRoot = frame;\n }\n\n // If there are parents, add the frame to the last parent\n if (this.parents.length > 0) {\n this.parents[this.parents.length - 1].children?.push(frame);\n }\n\n // Add the current frame to the parent stack\n this.parents.push(frame);\n }\n\n exitFragment() {\n // Remove the current frame from the parent stack\n this.parents.pop();\n }\n\n enterTcf(ctx: any) {\n this.enterFragment(ctx, \"tcf\");\n }\n\n enterOpt(ctx: any) {\n this.enterFragment(ctx, \"opt\");\n }\n\n enterPar(ctx: any) {\n this.enterFragment(ctx, \"par\");\n }\n\n enterAlt(ctx: any) {\n this.enterFragment(ctx, \"alt\");\n }\n\n enterLoop(ctx: any) {\n this.enterFragment(ctx, \"loop\");\n }\n\n enterSection(ctx: any): void {\n this.enterFragment(ctx, \"section\");\n }\n\n enterCritical(ctx: any): void {\n this.enterFragment(ctx, \"critical\");\n }\n\n enterRef(ctx: any) {\n this.enterFragment(ctx, \"ref\");\n }\n\n exitTcf() {\n this.exitFragment();\n }\n exitOpt() {\n this.exitFragment();\n }\n exitPar() {\n this.exitFragment();\n }\n exitAlt() {\n this.exitFragment();\n }\n exitLoop() {\n this.exitFragment();\n }\n exitSection() {\n this.exitFragment();\n }\n exitCritical() {\n this.exitFragment();\n }\n exitRef() {\n this.exitFragment();\n }\n\n getFrame(context: any) {\n if (!context) return null;\n context.children.map((child: any) => {\n walker.walk(this, child);\n });\n return this.frameRoot;\n }\n}\n\nexport default FrameBuilder;\n","import { FRAGMENT_PADDING_X } from \"@/positioning/Constants\";\n\nexport interface Frame {\n type?: string;\n left: string;\n right: string;\n children?: Frame[];\n}\n\nenum PathType {\n LEFT = \"LEFT\",\n RIGHT = \"RIGHT\",\n}\n\nfunction longestPath(frame: Frame, pathType: PathType): number {\n if (!frame.children || frame.children.length === 0) {\n return 1;\n }\n\n let maxDepth = 0;\n for (const child of frame.children) {\n if (\n (pathType === PathType.LEFT && child.left !== frame.left) ||\n (pathType === PathType.RIGHT && child.right !== frame.right)\n ) {\n continue;\n }\n maxDepth = Math.max(maxDepth, longestPath(child, pathType));\n }\n\n return maxDepth + 1;\n}\n\nexport default function FrameBorder(frame: Frame | null) {\n if (!frame) {\n return { left: 0, right: 0 };\n }\n return {\n type: frame.type,\n left: FRAGMENT_PADDING_X * longestPath(frame, PathType.LEFT),\n right: FRAGMENT_PADDING_X * longestPath(frame, PathType.RIGHT),\n };\n}\n","/**\n * SVG-specific constants for geometry building.\n * These compensate for differences between HTML CSS layout and native SVG rendering.\n */\nimport {\n PARTICIPANT_TOP_SPACE_FOR_GROUP as _HTML_PARTICIPANT_TOP,\n} from \"@/positioning/Constants\";\n\n/**\n * SVG-specific participant top offset.\n * The HTML renderer's .life-line-layer has .pt-2 (8px) CSS padding that pushes\n * participants down. SVG has no such padding, so we add 8px to match the effective\n * HTML position and keep messages close to participant boxes.\n */\nexport const PARTICIPANT_TOP_SPACE = _HTML_PARTICIPANT_TOP + 8;\n\n/**\n * Internal padding inside the HTML participant box that the positioning engine\n * does not account for. The engine's labelWidth is pure text width, but the HTML\n * box adds: 2×2px border + 2×2px padding + 2×4px inner text padding (px-1) = 16px.\n *\n * Assignee participants (e.g. \"b:Type\") render TWO EditableSpan components\n * in HTML, each with 4px left + 4px right padding (from EditableSpan.css\n * `.editable-span-base { padding: 0 4px }`). The extra span adds 8px.\n */\nexport const PARTICIPANT_BOX_PADDING = 16;\n// HTML assignee participants render \"assignee\" \":\" \"label\" as separate spans.\n// The SVG measures the full \"assignee:label\" string, which is narrower than the\n// sum of the individual HTML spans. Use 14px padding to match HTML's box width.\nexport const PARTICIPANT_BOX_PADDING_ASSIGNEE = 16;\nexport const PARTICIPANT_ICON_ROW_WIDTH = 28; // 24px icon + 4px right margin\n/**\n * Extra width for an emoji prefix in the participant label.\n * The SVG renderer prepends a `<tspan>` with one emoji character (~16px at 16px font)\n * plus an em-space (  ≈ 16px), but the label text measurement only covers\n * the plain name. Add ~20px to account for both glyphs.\n */\nexport const PARTICIPANT_EMOJI_WIDTH = 20;\n\n/** Visual height of participant box, matching HTML renderer's h-10 (40px) */\nexport const PARTICIPANT_VISUAL_HEIGHT = 40;\n/** Max visual width of participant box, matching HTML CSS max-width: 250px (SeqDiagram.css) */\nexport const PARTICIPANT_MAX_WIDTH = 250;\n\n/**\n * Pass through X coordinate without rounding — sub-pixel precision improves\n * parity with the HTML renderer.\n */\nexport function snapX(x: number): number {\n return x;\n}\n\n/**\n * Convert React CSSProperties to SVG-compatible style record.\n * Maps CSS property names to SVG equivalents (e.g., `color` → `fill` for text).\n * Returns undefined if the style is empty.\n */\nexport function cssToSvgStyle(css: import(\"react\").CSSProperties): Record<string, string> | undefined {\n const result: Record<string, string> = {};\n let hasKeys = false;\n for (const [key, value] of Object.entries(css)) {\n if (value == null) continue;\n hasKeys = true;\n // SVG text uses `fill` for color, not CSS `color`\n if (key === \"color\") {\n result[\"fill\"] = String(value);\n } else {\n // Convert camelCase to kebab-case for SVG style attribute\n const svgKey = key.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n result[svgKey] = String(value);\n }\n }\n return hasKeys ? result : undefined;\n}\n","/**\n * Builds participant, lifeline, and group geometry from parser models\n * and the positioning engine output.\n */\nimport type { Coordinates } from \"@/positioning/Coordinates\";\nimport type { VerticalCoordinates } from \"@/positioning/VerticalCoordinates\";\nimport {\n measureSvgParticipantLabelWidth,\n} from \"@/positioning/WidthProviderFunc\";\nimport type { IParticipantModel } from \"@/parser/IParticipantModel\";\nimport {\n MARGIN,\n MIN_PARTICIPANT_WIDTH,\n} from \"@/positioning/Constants\";\nimport { TextType } from \"@/positioning/Coordinate\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport type { ParticipantGeometry, LifelineGeometry, GroupGeometry } from \"./geometry\";\nimport {\n PARTICIPANT_TOP_SPACE,\n PARTICIPANT_BOX_PADDING,\n PARTICIPANT_BOX_PADDING_ASSIGNEE,\n PARTICIPANT_ICON_ROW_WIDTH,\n PARTICIPANT_EMOJI_WIDTH,\n PARTICIPANT_VISUAL_HEIGHT,\n PARTICIPANT_MAX_WIDTH,\n snapX,\n} from \"./svgConstants\";\n\nexport function buildParticipants(\n models: IParticipantModel[],\n coordinates: Coordinates,\n verticalCoordinates: VerticalCoordinates,\n measureText?: (text: string, type: TextType) => number,\n): ParticipantGeometry[] {\n return models\n .map((m) => {\n const centerX = snapX(coordinates.getPosition(m.name));\n const halfWidth = coordinates.half(m.name);\n // Compute visual box width from raw text measurement + CSS decorations.\n // The positioning engine clamps labelWidth to MIN_PARTICIPANT_WIDTH, losing\n // the actual text width. Re-measure here to get the correct box size.\n // HTML box = max(textWidth + BOX_PADDING, MIN_PARTICIPANT_WIDTH).\n // Assignee participants (name contains \":\") render two EditableSpan components\n // in HTML, each with 8px horizontal padding (EditableSpan.css .editable-span-base).\n const isAssignee = m.name.includes(\":\") && m.getDisplayName() === m.name;\n let width: number;\n let measuredTextWidth: number | undefined;\n let measuredStereotypeWidth: number | undefined;\n if (measureText && m.name !== _STARTER_) {\n const textWidth = measureSvgParticipantLabelWidth(m.getDisplayName());\n measuredTextWidth = textWidth;\n const padding = isAssignee ? PARTICIPANT_BOX_PADDING_ASSIGNEE : PARTICIPANT_BOX_PADDING;\n const iconWidth = m.hasIcon() ? PARTICIPANT_ICON_ROW_WIDTH : 0;\n const emojiWidth = m.emoji ? PARTICIPANT_EMOJI_WIDTH : 0;\n // When a stereotype is present, the participant box must be wide enough to fit the\n // stereotype text. HTML's box = max(contentRowWidth + padding, stereotypeGlyphWidth + 8, minWidth).\n // The +8 = 4px box padding (2px * 2) + 4px border (2px * 2), both included in border-box sizing.\n const STEREOTYPE_BOX_OVERHEAD = 8;\n if (m.stereotype) {\n measuredStereotypeWidth = measureSvgParticipantLabelWidth(`«${m.stereotype}»`);\n }\n const stereotypeBoxWidth = measuredStereotypeWidth != null\n ? measuredStereotypeWidth + STEREOTYPE_BOX_OVERHEAD\n : 0;\n width = Math.min(Math.max(textWidth + padding + iconWidth + emojiWidth, stereotypeBoxWidth, MIN_PARTICIPANT_WIDTH), PARTICIPANT_MAX_WIDTH);\n } else {\n width = Math.min(halfWidth * 2 - MARGIN, PARTICIPANT_MAX_WIDTH);\n }\n if (m.name === _STARTER_) width = Math.min(width, 80); // match HTML min-width: 80px\n const creationTop = verticalCoordinates.getCreationTop(m.name);\n const isStarter = m.name === _STARTER_;\n // updateCreationTop subtracts 8px for HTML CSS padding (.life-line-layer .pt-2);\n // SVG has no such padding, so add 8 back to recover the raw VM top, plus the\n // SVG stroke-model offset is already accounted for by PARTICIPANT_TOP_SPACE.\n const y =\n creationTop != null\n ? Math.max(PARTICIPANT_TOP_SPACE, creationTop + 8)\n : PARTICIPANT_TOP_SPACE;\n\n return {\n name: m.name,\n label: m.getDisplayName(),\n x: centerX,\n y,\n width,\n height: PARTICIPANT_VISUAL_HEIGHT,\n isStarter,\n showBottom: creationTop == null && !isStarter,\n labelWidth: measuredTextWidth,\n type: m.type,\n stereotype: m.stereotype,\n stereotypeWidth: measuredStereotypeWidth,\n color: m.color,\n emoji: m.emoji,\n groupId: m.groupId,\n };\n });\n}\n\nexport function buildLifelines(\n participants: ParticipantGeometry[],\n diagramHeight: number,\n): LifelineGeometry[] {\n return participants.map((p) => ({\n participantName: p.name,\n x: p.x, // align with occurrence bar center (same as participant center)\n topY: p.y + p.height, // starts at bottom of participant box (visible part)\n bottomY: diagramHeight,\n dashed: true,\n }));\n}\n\n/**\n * Build group geometry by grouping participants that share the same groupId.\n * Each group gets a bounding box from leftmost to rightmost participant,\n * with a small margin matching the HTML renderer's LIFELINE_GROUP_OUTLINE_MARGIN.\n */\nexport function buildGroups(\n participants: ParticipantGeometry[],\n diagramHeight: number,\n): GroupGeometry[] {\n // Group outline extends 2px outside the participant bounding box on each side.\n const GROUP_OUTLINE_MARGIN = -2;\n\n // Collect participants by groupId\n const groupMap = new Map<string | number, ParticipantGeometry[]>();\n for (const p of participants) {\n if (p.groupId != null) {\n const existing = groupMap.get(p.groupId);\n if (existing) {\n existing.push(p);\n } else {\n groupMap.set(p.groupId, [p]);\n }\n }\n }\n\n const groups: GroupGeometry[] = [];\n for (const [groupId, members] of groupMap) {\n if (members.length === 0) continue;\n\n // Find bounding box from leftmost to rightmost participant\n let minLeft = Infinity;\n let maxRight = -Infinity;\n let minY = Infinity;\n for (const m of members) {\n const left = m.x - m.width / 2;\n const right = m.x + m.width / 2;\n if (left < minLeft) minLeft = left;\n if (right > maxRight) maxRight = right;\n if (m.y < minY) minY = m.y;\n }\n\n // Group box: from leftmost participant left edge to rightmost participant right edge,\n // with a small margin inset (matching HTML's outline positioning).\n const x = minLeft + GROUP_OUTLINE_MARGIN;\n const width = maxRight - minLeft - 2 * GROUP_OUTLINE_MARGIN;\n // The HTML group container starts at the top of the content region and uses an\n // absolutely-positioned title strip, so the outer outline should stop at the\n // content bottom rather than adding a separate header band to its height.\n // +1.5 corrects for the SVG dominant-baseline=\"middle\" rendering offset so that\n // the title text screen position matches the HTML title bar center exactly.\n const y = minY - 20 + 1.5;\n // renderGroup uses rectH = g.height + sw (= g.height + 1.5) with rectY = g.y - sw.\n // Rendered rect bottom = 34 + (g.y - sw) + (g.height + sw) = 34 + g.y + g.height.\n // The rect must extend past the HTML group's visible bottom to ensure visual coverage\n // of the full group area while keeping the measured <g> height close to HTML's.\n // K=14: g.height=212.5, rendered bottom=256 (clipped by viewBox=255), <g> h≈214 (dh=+2)\n // K=12: g.height=210.5, rendered bottom=254 (not clipped), <g> h=212 (dh=0) — worse pixel match\n // K=13 is a compromise: g.height=211.5, rendered bottom=255 (viewBox edge), <g> h≈213 (dh≈+1)\n const height = Math.max(0, diagramHeight - y + 13);\n\n // Use groupId as the display name (the parser sets groupId = group name from DSL)\n groups.push({\n name: String(groupId),\n x,\n y,\n width,\n height,\n });\n }\n\n return groups;\n}\n","/**\n * Builds FragmentGeometry from statement info + positioning engine.\n * Extracted from buildGeometry.ts for clarity and to enable\n * fragment-aware comment positioning.\n */\nimport type { Coordinates } from \"@/positioning/Coordinates\";\nimport type { VerticalCoordinates } from \"@/positioning/VerticalCoordinates\";\nimport { measureSvgFragmentLabelWidth } from \"@/positioning/WidthProviderFunc\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\nimport {\n FRAGMENT_MIN_WIDTH,\n} from \"@/positioning/Constants\";\nimport type { TextType } from \"@/positioning/Coordinate\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport { getLocalParticipantNames } from \"@/positioning/LocalParticipants\";\nimport { Participants } from \"@/parser/index.js\";\nimport { AllMessages } from \"@/parser/MessageCollector\";\nimport FrameBuilder from \"@/parser/FrameBuilder\";\nimport FrameBorder from \"@/positioning/FrameBorder\";\nimport type { FragmentGeometry, FragmentSectionGeometry, CommentGeometry } from \"./geometry\";\nimport type { StatementInfo } from \"./walkStatements\";\n\nexport interface BuildFragmentResult {\n fragment: FragmentGeometry;\n comment?: CommentGeometry;\n}\n\nfunction snapX(x: number): number {\n return x;\n}\n\nconst COMMENT_FONT_ASCENT = 15;\n\nexport function buildFragmentGeometry(\n info: StatementInfo,\n coord: { top: number; height: number },\n coordinates: Coordinates,\n verticalCoordinates: VerticalCoordinates,\n allParticipants: string[],\n measureText?: (text: string, type: TextType) => number,\n commentHeight: number = 0,\n commentText?: string,\n commentStyle?: Record<string, string>,\n commentYBase?: number,\n): BuildFragmentResult | null {\n // Get the fragment's parse tree node to find local participants\n const statNode = info.statNode;\n if (!statNode) return null;\n\n // Find the fragment context node (loop, alt, opt, etc.)\n const fragmentCtx = findFragmentContext(statNode);\n if (!fragmentCtx) {\n // Fallback: use full diagram width\n return {\n fragment: {\n kind: info.fragmentKind!,\n label: info.fragmentLabel || \"\",\n labelWidth: info.fragmentLabel ? measureSvgFragmentLabelWidth(resolveEmojiInText(info.fragmentLabel)) : undefined,\n x: 0,\n y: coord.top,\n width: coordinates.getWidth(),\n height: coord.height,\n headerY: coord.top + 1 + commentHeight,\n sections: [],\n number: info.number,\n depth: info.depth,\n },\n comment: commentText && commentYBase != null ? {\n x: 1,\n y: commentYBase + 1 + COMMENT_FONT_ASCENT,\n text: commentText,\n style: commentStyle,\n fragmentComment: true,\n } : undefined,\n };\n }\n\n // Compute fragment width from local participants, including nested fragments.\n // getLocalParticipantNames only does shallow extraction; we also walk inner\n // section blocks to capture participants inside nested par/alt/loop/etc.\n const localNames = getDeepParticipantNames(fragmentCtx, info.fragmentSections);\n const leftParticipant = allParticipants.find((p) => localNames.includes(p)) || \"\";\n const rightParticipant = allParticipants.slice().reverse().find((p) => localNames.includes(p)) || \"\";\n\n // Fragment's own border — use statNode (not fragmentCtx) to match HTML's\n // TotalWidth which receives the stat context containing the fragment.\n const frameBuilder = new FrameBuilder(allParticipants as string[]);\n const frame = frameBuilder.getFrame(statNode);\n const fragBorder = FrameBorder(frame);\n\n let fragWidth: number;\n let fragX: number;\n\n if (leftParticipant && rightParticipant) {\n const participantWidth =\n coordinates.distance(leftParticipant, rightParticipant) +\n coordinates.half(leftParticipant) +\n coordinates.half(rightParticipant);\n // Self-call extra width — matches HTML's TotalWidth (WidthOfContext.ts)\n const selfMessages = AllMessages(statNode).filter((m: any) => m.from === m.to);\n const extraWidths = selfMessages.map(\n (m: any) =>\n coordinates.getMessageWidth(m) -\n coordinates.distance(m.from || _STARTER_, rightParticipant) -\n coordinates.half(rightParticipant),\n );\n const extraWidth = Math.max(0, ...extraWidths);\n fragWidth = Math.max(participantWidth, FRAGMENT_MIN_WIDTH) + fragBorder.left + fragBorder.right + extraWidth;\n fragX = snapX(coordinates.getPosition(leftParticipant)) - coordinates.half(leftParticipant);\n } else {\n fragWidth = Math.max(FRAGMENT_MIN_WIDTH, coordinates.getWidth());\n fragX = 0;\n }\n\n // No explicit nesting indent needed — fragBorder.left/right from FrameBorder\n // already accounts for inner nesting depth, matching HTML's TotalWidth formula.\n\n // Build section geometry for multi-section fragments (alt, tcf)\n const sections: FragmentSectionGeometry[] = [];\n if (info.fragmentSections && info.fragmentSections.length > 1) {\n // For multi-section fragments, compute section positions from inner block coordinates\n let sectionY = coord.top;\n for (let i = 0; i < info.fragmentSections.length; i++) {\n const section = info.fragmentSections[i];\n // First section starts at fragment top (no separator line)\n // Subsequent sections need separator lines\n if (i > 0) {\n // Find the first statement key in this section's block to determine the divider Y\n const sectionBlock = section.blockNode;\n if (sectionBlock) {\n const innerStats = sectionBlock.stat?.() || [];\n if (innerStats.length > 0) {\n const firstStatKey = createStatementKeyFromStat(innerStats[0]);\n if (firstStatKey) {\n const innerCoord = verticalCoordinates.getStatementCoordinate(firstStatKey);\n if (innerCoord) {\n // Section separator is positioned above the first inner statement\n // with label space (20px) and padding (8+8+1px border)\n sectionY = innerCoord.top - 20 - 8 - 8 - 1;\n }\n }\n }\n }\n }\n\n const sectionHeight = i < info.fragmentSections.length - 1\n ? 0 // Height computed by renderer from next section's Y\n : coord.top + coord.height - sectionY;\n\n sections.push({\n label: section.label,\n y: sectionY,\n height: sectionHeight,\n labelWidth: section.label ? measureSvgFragmentLabelWidth(resolveEmojiInText(section.label)) : undefined,\n innerLabel: /^\\[\\s*.*\\s*\\]$/.test(section.label) ? section.label.slice(1, -1).trim() : undefined,\n innerLabelWidth: /^\\[\\s*.*\\s*\\]$/.test(section.label)\n ? measureSvgFragmentLabelWidth(resolveEmojiInText(section.label.slice(1, -1).trim()))\n : undefined,\n keyword: (() => {\n const spaceIdx = section.label.indexOf(\" \");\n if (spaceIdx > 0 && !section.label.startsWith(\"finally\") && !section.label.startsWith(\"[\")) {\n return section.label.substring(0, spaceIdx);\n }\n return undefined;\n })(),\n keywordWidth: (() => {\n const spaceIdx = section.label.indexOf(\" \");\n if (spaceIdx > 0 && !section.label.startsWith(\"finally\") && !section.label.startsWith(\"[\")) {\n return measureSvgFragmentLabelWidth(section.label.substring(0, spaceIdx));\n }\n return undefined;\n })(),\n detail: (() => {\n const spaceIdx = section.label.indexOf(\" \");\n if (spaceIdx > 0 && !section.label.startsWith(\"finally\") && !section.label.startsWith(\"[\")) {\n return section.label.substring(spaceIdx + 1);\n }\n return undefined;\n })(),\n detailWidth: (() => {\n const spaceIdx = section.label.indexOf(\" \");\n if (spaceIdx > 0 && !section.label.startsWith(\"finally\") && !section.label.startsWith(\"[\")) {\n return measureSvgFragmentLabelWidth(section.label.substring(spaceIdx + 1));\n }\n return undefined;\n })(),\n });\n }\n }\n\n // Par fragment dividers: HTML renders a 1px border-top between par child statements.\n // The par block has a flat list of statements; add separator sections so the renderer\n // draws lines between them. The renderer iterates from sections[1] onwards, drawing\n // a separator line at each section.y, so we need a dummy first section + one per divider.\n if (info.fragmentKind === \"par\" && sections.length === 0) {\n const parBlock = info.fragmentSections?.[0]?.blockNode;\n const innerStats = parBlock?.stat?.() || [];\n if (innerStats.length > 1) {\n // Dummy first section (renderer skips i=0)\n sections.push({ label: \"\", y: coord.top, height: 0 });\n for (let i = 1; i < innerStats.length; i++) {\n const statKey = createStatementKeyFromStat(innerStats[i]);\n if (!statKey) continue;\n const innerCoord = verticalCoordinates.getStatementCoordinate(statKey);\n if (!innerCoord) continue;\n // HTML par divider: border-top on .statement-container with .my-4 (16px margin).\n // CSS margin collapse makes the gap 16px between statements.\n // The border-top sits at the statement-container's top edge, which is\n // messageY - messageHeight/2 in the vertical coordinate system.\n // fragment.ts adds HALF_STROKE (+0.5) to separator Y for stroke centering.\n // Net Y = innerCoord.top - 1 + 0.5 = innerCoord.top - 0.5, which places\n // the stroke center 0.5px above the HTML border — matching the pixel row.\n const dividerY = innerCoord.top - 1;\n sections.push({\n label: \"\",\n y: dividerY,\n height: 0,\n contentInsetLeft: fragBorder.left + coordinates.half(leftParticipant),\n });\n }\n }\n }\n\n // Fragment comment: positioned at the fragment's left border edge (fragX),\n // not at the sender's lifeline. HTML renders fragment comments inside the\n // fragment container, aligned with its left edge.\n let fragmentComment: CommentGeometry | undefined;\n if (commentText && commentYBase != null) {\n fragmentComment = {\n x: fragX + 1,\n y: commentYBase + 1 + COMMENT_FONT_ASCENT,\n text: commentText,\n style: commentStyle,\n fragmentComment: true,\n };\n }\n\n return {\n fragment: {\n kind: info.fragmentKind!,\n label: info.fragmentLabel || \"\",\n labelWidth: info.fragmentLabel ? measureSvgFragmentLabelWidth(resolveEmojiInText(info.fragmentLabel)) : undefined,\n x: fragX,\n y: coord.top,\n width: fragWidth,\n height: coord.height,\n headerY: coord.top + 1 + commentHeight,\n sections,\n number: info.number,\n depth: info.depth,\n },\n comment: fragmentComment,\n };\n}\n\nfunction findFragmentContext(stat: any): any {\n for (const kind of [\"loop\", \"opt\", \"par\", \"critical\", \"section\"] as const) {\n const frag = stat[kind]?.();\n if (frag) return frag;\n }\n const alt = stat.alt?.();\n if (alt) return alt;\n const tcf = stat.tcf?.();\n if (tcf) return tcf;\n const ref = stat.ref?.();\n if (ref) return ref;\n return null;\n}\n\n/** Inline version of createStatementKey to avoid circular import issues */\nfunction createStatementKeyFromStat(statement: any): string {\n if (!statement?.start || !statement?.stop) return \"\";\n return `${statement.start.start}-${statement.stop.stop}`;\n}\n\n/**\n * Collects participants from the fragment context and recursively from\n * inner section blocks. getLocalParticipantNames only does shallow\n * extraction, so nested fragments (e.g. par inside alt) are missed.\n */\nfunction getDeepParticipantNames(\n fragmentCtx: any,\n sections?: { label: string; blockNode: any }[],\n): string[] {\n const names = new Set(getLocalParticipantNames(fragmentCtx));\n\n // Walk each section's inner block to find participants in nested content\n if (sections) {\n for (const section of sections) {\n if (!section.blockNode) continue;\n const innerNames = Participants(section.blockNode).Names() as string[];\n for (const n of innerNames) names.add(n);\n }\n }\n\n return [...names];\n}\n","/**\n * Walks the ANTLR parse tree and extracts statement metadata\n * (from, to, label, kind) that the positioning engine doesn't store.\n *\n * Returns one entry per statement, keyed by the same key used in\n * VerticalCoordinates so they can be joined.\n */\nimport { createStatementKey } from \"@/positioning/vertical/StatementIdentifier\";\nimport { _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport type { FragmentKind } from \"./geometry\";\nimport type { RootContextNode, BlockNode, StatNode } from \"@/parser/AntlrTypes\";\n\nexport interface FragmentSectionInfo {\n label: string;\n /** The parse tree block node for this section (used for inner statement key lookups) */\n blockNode: BlockNode | undefined;\n}\n\nexport interface StatementInfo {\n key: string;\n kind: \"sync\" | \"async\" | \"creation\" | \"return\" | \"divider\" | \"fragment\" | \"empty\";\n from: string;\n to: string;\n label: string;\n isSelf: boolean;\n /** Whether this statement has a block body (creates an occurrence on the target) */\n hasBlock: boolean;\n /** For fragments: specific fragment type */\n fragmentKind?: FragmentKind;\n /** For fragments: condition/label text */\n fragmentLabel?: string;\n /** For fragments: section info (for alt/tcf with multiple sections) */\n fragmentSections?: FragmentSectionInfo[];\n /** Inline comment text (e.g. // String line) */\n comment?: string;\n /** The ANTLR parse tree node — needed for local participant extraction */\n statNode?: StatNode;\n /** Nesting depth of active occurrences on the sender (0 = none, 1 = one level, etc.) */\n senderOccurrenceDepth: number;\n /** Whether the target (to) already has an active occurrence (new one will be nested) */\n targetHasOccurrence?: boolean;\n /** Nesting depth of active occurrences on the target (0 = none, 1 = one level, etc.) */\n targetOccurrenceDepth?: number;\n /** Sequence number (e.g. \"1\", \"2.1\") computed from block nesting and statement index */\n number?: string;\n /** Nesting depth (0 = root block, 1 = first nested block, etc.) */\n depth: number;\n /** Kind of the parent block that contains this statement (\"sync\" | \"creation\" | null for root) */\n parentBlockKind?: \"sync\" | \"creation\" | null;\n /** True on first statement of a non-first fragment section (else, catch, finally).\n * Used by computeReturnDebt to reset debt between independent CSS sections. */\n sectionReset?: boolean;\n}\n\nexport function walkStatements(rootContext: RootContextNode): StatementInfo[] {\n const block = rootContext?.block?.();\n if (!block) return [];\n return walkBlock(block, _STARTER_, new Map(), \"\", 0, null, 0);\n}\n\nfunction normalizeLabel(label: string): string {\n return label.trim();\n}\n\nfunction walkBlock(\n block: BlockNode,\n currentOrigin: string,\n activeOccurrences: Map<string, number>,\n parentNumber: string,\n depth: number,\n parentBlockKind: \"sync\" | \"creation\" | null,\n indexOffset: number,\n): StatementInfo[] {\n const statements = block?.stat?.() || [];\n const results: StatementInfo[] = [];\n let index = 0;\n\n for (const stat of statements) {\n const key = createStatementKey(stat);\n if (!key) continue;\n\n index++;\n const ordinal = indexOffset + index;\n const number = parentNumber ? `${parentNumber}.${ordinal}` : String(ordinal);\n const comment = stat.getComment?.() || \"\";\n\n const message = stat.message?.();\n if (message) {\n const from = message.From?.() || currentOrigin;\n const to = message.Owner?.() || _STARTER_;\n const label = normalizeLabel(message.SignatureText?.() || \"\");\n const nestedBlock = message.braceBlock?.()?.block?.();\n results.push({ key, kind: \"sync\", from, to, label, isSelf: from === to, hasBlock: !!nestedBlock, comment, statNode: stat, senderOccurrenceDepth: activeOccurrences.get(from) || 0, targetHasOccurrence: activeOccurrences.has(to), targetOccurrenceDepth: activeOccurrences.get(to) || 0, number, depth, parentBlockKind });\n\n if (nestedBlock) {\n const innerOccs = new Map(activeOccurrences);\n innerOccs.set(to, (innerOccs.get(to) || 0) + 1);\n results.push(...walkBlock(nestedBlock, to, innerOccs, number, depth + 1, \"sync\", 0));\n }\n continue;\n }\n\n const asyncMsg = stat.asyncMessage?.();\n if (asyncMsg) {\n const from = asyncMsg.From?.() || asyncMsg.ProvidedFrom?.() || asyncMsg.Origin?.() || currentOrigin;\n const to = asyncMsg.Owner?.() || asyncMsg.to?.()?.getFormattedText?.() || from;\n const label = normalizeLabel(asyncMsg.content?.()?.getText?.() || asyncMsg.SignatureText?.() || \"\");\n results.push({ key, kind: \"async\", from, to, label, isSelf: from === to, hasBlock: false, comment, senderOccurrenceDepth: activeOccurrences.get(from) || 0, targetHasOccurrence: activeOccurrences.has(to), number, depth });\n continue;\n }\n\n const creation = stat.creation?.();\n if (creation) {\n const from = creation.From?.() || currentOrigin;\n const to = creation.Owner?.() || \"\";\n const label = normalizeLabel(creation.SignatureText?.() || \"«create»\");\n const creationBlock = creation.braceBlock?.()?.block?.();\n results.push({ key, kind: \"creation\", from, to, label, isSelf: false, hasBlock: !!creationBlock, comment, statNode: stat, senderOccurrenceDepth: activeOccurrences.get(from) || 0, targetHasOccurrence: activeOccurrences.has(to), number, depth, parentBlockKind });\n\n if (creationBlock) {\n const innerOccs = new Map(activeOccurrences);\n innerOccs.set(to, (innerOccs.get(to) || 0) + 1);\n results.push(...walkBlock(creationBlock, to || currentOrigin, innerOccs, number, depth + 1, \"creation\", 0));\n }\n continue;\n }\n\n const ret = stat.ret?.();\n if (ret) {\n const label = normalizeLabel(ret.SignatureText?.() || \"\");\n const asyncMessage = ret?.asyncMessage?.();\n const from = asyncMessage?.From?.() || ret?.From?.() || currentOrigin;\n const to = asyncMessage?.to?.()?.getFormattedText?.() || ret?.ReturnTo?.() || _STARTER_;\n results.push({ key, kind: \"return\", from, to, label, isSelf: from === to, hasBlock: false, comment, senderOccurrenceDepth: activeOccurrences.get(from) || 0, targetOccurrenceDepth: activeOccurrences.get(to) || 0, number, depth, parentBlockKind });\n continue;\n }\n\n const divider = stat.divider?.();\n if (divider) {\n const label = normalizeLabel(divider.getFormattedText?.() || divider.getText?.() || \"\");\n results.push({ key, kind: \"divider\", from: \"\", to: \"\", label, isSelf: false, hasBlock: false, senderOccurrenceDepth: 0, number, depth });\n continue;\n }\n\n // Fragments — record with enriched metadata and recurse into their blocks\n const fragmentInfo = extractFragmentInfo(stat);\n results.push({\n key,\n kind: \"fragment\",\n from: currentOrigin,\n to: \"\",\n label: fragmentInfo.label,\n isSelf: false,\n hasBlock: false,\n fragmentKind: fragmentInfo.fragmentKind,\n fragmentLabel: fragmentInfo.label,\n fragmentSections: fragmentInfo.sections,\n comment,\n statNode: stat,\n senderOccurrenceDepth: activeOccurrences.get(currentOrigin) || 0,\n number,\n depth,\n });\n walkFragmentBlocks(stat, currentOrigin, results, activeOccurrences, number, depth);\n }\n\n return results;\n}\n\ninterface FragmentExtract {\n fragmentKind: FragmentKind;\n label: string;\n sections: FragmentSectionInfo[];\n}\n\nfunction extractFragmentInfo(stat: StatNode): FragmentExtract {\n // Single-block fragments: loop, opt, par, critical, section\n for (const kind of [\"loop\", \"opt\", \"par\", \"critical\", \"section\"] as const) {\n const frag = stat[kind]?.();\n if (frag) {\n const condition = frag.parExpr?.()?.condition?.();\n const label = condition?.getFormattedText?.() || \"\";\n return {\n fragmentKind: kind,\n label,\n sections: [{ label, blockNode: frag.braceBlock?.()?.block?.() }],\n };\n }\n }\n\n // Alt (if/else if/else) — multiple sections\n // Section labels match HTML visible text: \"Alt\", \"[cond2]\", \"[else]\"\n const alt = stat.alt?.();\n if (alt) {\n const sections: FragmentSectionInfo[] = [];\n const ifBlock = alt.ifBlock?.();\n if (ifBlock) {\n // First section label = kind name (matches HTML header visible text)\n sections.push({ label: \"Alt\", blockNode: ifBlock.braceBlock?.()?.block?.() });\n }\n for (const elseIf of alt.elseIfBlock?.() || []) {\n const condition = elseIf.parExpr?.()?.condition?.();\n const label = condition?.getFormattedText?.() || \"\";\n // HTML renders as \"[ cond ]\" (condition in brackets with spaces, \"else if\" is hidden)\n sections.push({ label: `[ ${label} ]`, blockNode: elseIf.braceBlock?.()?.block?.() });\n }\n const elseBlock = alt.elseBlock?.();\n if (elseBlock) {\n sections.push({ label: \"[else]\", blockNode: elseBlock.braceBlock?.()?.block?.() });\n }\n\n const ifCondition = alt.ifBlock?.()?.parExpr?.()?.condition?.();\n const firstLabel = ifCondition?.getFormattedText?.() || \"\";\n return { fragmentKind: \"alt\", label: firstLabel, sections };\n }\n\n // Try/catch/finally — multiple sections\n // Section labels match HTML visible text: \"Try\", \"catch e\", \"finally\"\n const tcf = stat.tcf?.();\n if (tcf) {\n const sections: FragmentSectionInfo[] = [];\n const tryBlock = tcf.tryBlock?.();\n if (tryBlock) {\n // First section label = capitalized kind name (matches HTML header)\n sections.push({ label: \"Try\", blockNode: tryBlock.braceBlock?.()?.block?.() });\n }\n for (const catchBlock of tcf.catchBlock?.() || []) {\n const exception = catchBlock.invocation?.()?.parameters?.()?.getFormattedText?.() || \"\";\n sections.push({ label: `catch ${exception}`, blockNode: catchBlock.braceBlock?.()?.block?.() });\n }\n const finallyBlock = tcf.finallyBlock?.();\n if (finallyBlock) {\n sections.push({ label: \"finally\", blockNode: finallyBlock.braceBlock?.()?.block?.() });\n }\n\n return { fragmentKind: \"tcf\", label: \"\", sections };\n }\n\n // Ref fragment\n const ref = stat.ref?.();\n if (ref) {\n const label = ref.getFormattedText?.() || \"\";\n return { fragmentKind: \"ref\", label, sections: [] };\n }\n\n return { fragmentKind: \"loop\", label: \"\", sections: [] };\n}\n\nfunction blockLength(block: BlockNode): number {\n return (block?.stat?.() || []).filter((stat: StatNode) => !!createStatementKey(stat)).length;\n}\n\n/** Recurse into fragment inner blocks (loop, opt, alt, try/catch, etc.) */\nfunction walkFragmentBlocks(stat: StatNode, origin: string, results: StatementInfo[], activeOccurrences: Map<string, number>, parentNumber: string, depth: number): void {\n // Single-block fragments: loop, opt, par, critical, section\n for (const kind of [\"loop\", \"opt\", \"par\", \"critical\", \"section\"] as const) {\n const frag = stat[kind]?.();\n if (frag) {\n const block = frag.braceBlock?.()?.block?.();\n if (block) results.push(...walkBlock(block, origin, activeOccurrences, parentNumber, depth + 1, null, 0));\n return;\n }\n }\n\n // Alt (if/else if/else) — multiple blocks\n const alt = stat.alt?.();\n if (alt) {\n const ifBlock = alt.ifBlock?.();\n let sectionOffset = 0;\n if (ifBlock) {\n const block = ifBlock.braceBlock?.()?.block?.();\n if (block) {\n results.push(...walkBlock(block, origin, activeOccurrences, parentNumber, depth + 1, null, sectionOffset));\n sectionOffset += blockLength(block);\n }\n }\n for (const elseIf of alt.elseIfBlock?.() || []) {\n const block = elseIf.braceBlock?.()?.block?.();\n if (block) {\n const sectionStmts = walkBlock(block, origin, activeOccurrences, parentNumber, depth + 1, null, sectionOffset);\n if (sectionStmts.length > 0) sectionStmts[0].sectionReset = true;\n results.push(...sectionStmts);\n sectionOffset += blockLength(block);\n }\n }\n const elseBlock = alt.elseBlock?.();\n if (elseBlock) {\n const block = elseBlock.braceBlock?.()?.block?.();\n if (block) {\n const sectionStmts = walkBlock(block, origin, activeOccurrences, parentNumber, depth + 1, null, sectionOffset);\n if (sectionStmts.length > 0) sectionStmts[0].sectionReset = true;\n results.push(...sectionStmts);\n }\n }\n return;\n }\n\n // Try/catch/finally — multiple blocks\n const tcf = stat.tcf?.();\n if (tcf) {\n const tryBlock = tcf.tryBlock?.();\n let sectionOffset = 0;\n if (tryBlock) {\n const block = tryBlock.braceBlock?.()?.block?.();\n if (block) {\n results.push(...walkBlock(block, origin, activeOccurrences, parentNumber, depth + 1, null, sectionOffset));\n sectionOffset += blockLength(block);\n }\n }\n for (const catchBlock of tcf.catchBlock?.() || []) {\n const block = catchBlock.braceBlock?.()?.block?.();\n if (block) {\n const sectionStmts = walkBlock(block, origin, activeOccurrences, parentNumber, depth + 1, null, sectionOffset);\n if (sectionStmts.length > 0) sectionStmts[0].sectionReset = true;\n results.push(...sectionStmts);\n sectionOffset += blockLength(block);\n }\n }\n const finallyBlock = tcf.finallyBlock?.();\n if (finallyBlock) {\n const block = finallyBlock.braceBlock?.()?.block?.();\n if (block) {\n const sectionStmts = walkBlock(block, origin, activeOccurrences, parentNumber, depth + 1, null, sectionOffset);\n if (sectionStmts.length > 0) sectionStmts[0].sectionReset = true;\n results.push(...sectionStmts);\n }\n }\n return;\n }\n}\n","/**\n * Compute per-statement Y adjustment to compensate for ReturnStatementVM.height=0.\n *\n * In the positioning engine, non-self return statements have height=0, but in HTML\n * they render as ~16px elements. This function walks the DFS-ordered statement list\n * and computes how much each statement's coord.top should be increased.\n *\n * The debt is scoped per block (identified by depth). When a block ends (depth decreases),\n * its accumulated debt propagates to the parent block — because the parent sync/creation\n * statement's coord.height is underestimated by the same amount.\n *\n * Returns a Map with:\n * key -> adjustment for coord.top\n * \"inner:key\" -> total inner debt for sync/creation statements (for occurrence height)\n */\nimport type { VerticalCoordinates } from \"@/positioning/VerticalCoordinates\";\nimport type { walkStatements } from \"./walkStatements\";\n\nexport function computeReturnDebt(\n statements: ReturnType<typeof walkStatements>,\n verticalCoordinates: VerticalCoordinates,\n returnHeight: number,\n): Map<string, number> {\n const result = new Map<string, number>();\n\n // Stack tracks per-depth cumulative debt. Index = depth.\n const debtByDepth: number[] = [0];\n // Track only direct returns at each depth (excludes child-propagated debt)\n const directDebtByDepth: number[] = [0];\n let maxDepth = 0;\n\n // Track which sync/creation statements own each depth level\n // so we can assign inner debt when closing their blocks\n const blockOwnerKeys: (string | null)[] = [null]; // depth 0 = root (no owner)\n const blockOwnerKinds: (string | null)[] = [null]; // \"sync\" | \"creation\" | null\n // Track whether each block has non-return children (for mixed-content detection)\n const hasNonReturnChild: boolean[] = [false];\n // Non-block assignment shift: tracks +1px CSS height excess per depth.\n // This shifts subsequent statements down but does NOT propagate as inner debt\n // (parent occurrences shouldn't grow for this).\n const nbAssignShift: number[] = [0];\n // Track whether each block owner has an assignment return (+5px compensation).\n // The positioning engine adds +11 for assignment returns, but HTML renders ~16px.\n // This +5 gap must be propagated as debt so subsequent statements shift down.\n const blockHasAssignment: boolean[] = [false];\n\n for (const info of statements) {\n const depth = info.depth;\n\n // When depth decreases, close child blocks and propagate debt upward\n while (maxDepth > depth) {\n const closedDebt = debtByDepth[maxDepth] || 0;\n const ownerKey = blockOwnerKeys[maxDepth];\n const ownerKind = blockOwnerKinds[maxDepth];\n const directDebt = directDebtByDepth[maxDepth] || 0;\n // Record inner debt on the block owner (for occurrence height).\n // Two components:\n // 1. nestedDebt: debt propagated from child blocks (closedDebt - directDebt).\n // The parent occurrence must grow to contain child content that the\n // positioning engine underestimates.\n // 2. directShift: when 2+ direct returns exist at the same depth, each\n // return's debt shifts the NEXT return down via the adjust mechanism.\n // The last return is shifted by (N-1)*returnHeight = directDebt - returnHeight.\n // The occurrence must grow to contain this shifted last return.\n // A single direct return has directShift=0 (its own debt doesn't shift itself).\n const nestedDebt = closedDebt - directDebt;\n const directShift = Math.max(directDebt - returnHeight, 0);\n const occInnerDebt = nestedDebt + directShift;\n if (ownerKey && occInnerDebt > 0) {\n result.set(`inner:${ownerKey}`, occInnerDebt);\n }\n // Record whether block had mixed content (returns + non-return children).\n // Return-only blocks don't get the CSS border +1px correction.\n const hasMixed = hasNonReturnChild[maxDepth] || false;\n if (ownerKey && hasMixed) {\n result.set(`mixed:${ownerKey}`, 1);\n }\n const hasAssign = blockHasAssignment[maxDepth] || false;\n debtByDepth.pop();\n directDebtByDepth.pop();\n blockOwnerKeys.pop();\n blockOwnerKinds.pop();\n hasNonReturnChild.pop();\n blockHasAssignment.pop();\n nbAssignShift.pop();\n maxDepth--;\n // Propagate the occurrence's actual inner growth to the parent depth,\n // so subsequent statements are shifted down to match HTML CSS layout.\n // Using occInnerDebt (not raw directDebt) prevents over-counting when\n // the positioning engine already allocates height for some returns.\n if (ownerKey && ownerKind === \"sync\") {\n debtByDepth[maxDepth] += occInnerDebt;\n // Assignment return compensation: the occurrence gets +4 (12→16px gap),\n // but the positioning engine doesn't account for this extra height.\n // Propagate it as debt so subsequent statements shift down to match HTML.\n if (hasAssign) {\n debtByDepth[maxDepth] += 4;\n }\n }\n }\n\n // When depth increases, start fresh debt tracking for new block\n while (maxDepth < depth) {\n maxDepth++;\n debtByDepth.push(0);\n directDebtByDepth.push(0);\n blockOwnerKeys.push(null);\n blockOwnerKinds.push(null);\n hasNonReturnChild.push(false);\n blockHasAssignment.push(false);\n nbAssignShift.push(0);\n }\n\n // Fragment section boundary: reset debt at this depth.\n // Each fragment section (if/else, try/catch/finally) is independent in HTML CSS.\n // Without reset, returns in earlier sections inflate Y positions of later sections.\n if (info.sectionReset && depth < debtByDepth.length) {\n debtByDepth[depth] = 0;\n directDebtByDepth[depth] = 0;\n }\n\n // Total adjustment = sum of all debt across all depths\n // Include nbAssignShift (non-propagating) for Y positioning\n let totalDebt = 0;\n for (let d = 0; d <= depth; d++) {\n totalDebt += (debtByDepth[d] || 0) + (nbAssignShift[d] || 0);\n }\n result.set(info.key, totalDebt);\n\n // Non-self returns add debt at their depth — but only when the positioning\n // engine gives them height=0. The first return at a depth typically gets\n // coord.height>0 (the engine allocates 16px), so it doesn't need debt.\n // Subsequent returns at the same depth get height=0 and need debt.\n if (info.kind === \"return\" && !info.isSelf) {\n const returnCoord = verticalCoordinates.getStatementCoordinate(info.key);\n const engineAllocatesHeight = returnCoord && returnCoord.height > 0;\n if (!engineAllocatesHeight) {\n const isFirstAtDepth = (directDebtByDepth[depth] || 0) === 0;\n debtByDepth[depth] += returnHeight;\n directDebtByDepth[depth] += returnHeight;\n // When the first return in a sync block has adjust>0 (from child-block\n // debt), it uses returnOffset=16 instead of 15. This removes the 15→16\n // transition that normally adds +1px to the gap between consecutive\n // returns. Compensate with +1 via nbAssignShift (non-propagating) to\n // avoid inflating inner debt / occurrence height calculations.\n if (isFirstAtDepth && totalDebt !== 0 && info.parentBlockKind === \"sync\") {\n nbAssignShift[depth] = (nbAssignShift[depth] || 0) + 1;\n }\n }\n } else if (info.kind !== \"return\") {\n // Track that this block has non-return children\n if (depth < hasNonReturnChild.length) {\n hasNonReturnChild[depth] = true;\n }\n }\n\n // Non-block sync with assignment: with cursor+=12, the positioning engine's\n // coord.height now matches HTML's CSS container height (both ~50px).\n // No shift needed — the gap was from the old cursor+=11.\n\n // Sync/creation with blocks: the NEXT statement in the flat list at depth+1\n // belongs to this statement's block. Record owner for debt propagation.\n if ((info.kind === \"sync\" || info.kind === \"creation\") && info.hasBlock) {\n // Check if this sync has an assignment return (e.g. `ret = B.method { ... }`)\n const msgCtx = info.statNode?.message?.();\n const hasAssign = !!(msgCtx?.Assignment?.()?.assignee) && !info.isSelf;\n // The next depth level's block belongs to this statement\n if (depth + 1 > maxDepth) {\n maxDepth = depth + 1;\n debtByDepth.push(0);\n directDebtByDepth.push(0);\n blockOwnerKeys.push(info.key);\n blockOwnerKinds.push(info.kind);\n hasNonReturnChild.push(false);\n blockHasAssignment.push(hasAssign);\n } else {\n blockOwnerKeys[depth + 1] = info.key;\n blockOwnerKinds[depth + 1] = info.kind;\n debtByDepth[depth + 1] = 0; // reset for new block\n directDebtByDepth[depth + 1] = 0;\n hasNonReturnChild[depth + 1] = false;\n blockHasAssignment[depth + 1] = hasAssign;\n }\n }\n }\n\n // Close remaining open blocks (same propagation rules as main loop)\n while (maxDepth > 0) {\n const closedDebt = debtByDepth[maxDepth] || 0;\n const ownerKey = blockOwnerKeys[maxDepth];\n const ownerKind = blockOwnerKinds[maxDepth];\n const directDebtEnd = directDebtByDepth[maxDepth] || 0;\n const nestedDebtEnd = closedDebt - directDebtEnd;\n const directShiftEnd = Math.max(directDebtEnd - returnHeight, 0);\n const occInnerDebtEnd = nestedDebtEnd + directShiftEnd;\n if (ownerKey && occInnerDebtEnd > 0) {\n result.set(`inner:${ownerKey}`, occInnerDebtEnd);\n }\n const hasMixedEnd = hasNonReturnChild[maxDepth] || false;\n if (ownerKey && hasMixedEnd) {\n result.set(`mixed:${ownerKey}`, 1);\n }\n const hasAssignEnd = blockHasAssignment[maxDepth] || false;\n debtByDepth.pop();\n directDebtByDepth.pop();\n blockOwnerKeys.pop();\n blockOwnerKinds.pop();\n hasNonReturnChild.pop();\n blockHasAssignment.pop();\n maxDepth--;\n // Propagate occurrence inner growth — see main loop comment\n if (ownerKey && ownerKind === \"sync\") {\n debtByDepth[maxDepth] += occInnerDebtEnd;\n if (hasAssignEnd) {\n debtByDepth[maxDepth] += 4;\n }\n }\n }\n\n // Store total root debt for diagram height adjustment\n result.set(\"__totalDebt__\", debtByDepth[0] || 0);\n\n return result;\n}\n","/**\n * Builds message, occurrence, creation, fragment, return, divider, and comment\n * geometry from the statement tree walker output and positioning engine.\n */\nimport type { Coordinates } from \"@/positioning/Coordinates\";\nimport type { VerticalCoordinates } from \"@/positioning/VerticalCoordinates\";\nimport {\n OCCURRENCE_WIDTH,\n OCCURRENCE_BAR_SIDE_WIDTH,\n LIFELINE_WIDTH,\n OCCURRENCE_EMPTY_HEIGHT,\n} from \"@/positioning/Constants\";\nimport { TextType } from \"@/positioning/Coordinate\";\nimport { buildFragmentGeometry } from \"./buildFragmentGeometry\";\nimport { measureSvgFragmentLabelWidth } from \"@/positioning/WidthProviderFunc\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\nimport { walkStatements } from \"./walkStatements\";\nimport { computeReturnDebt } from \"./computeReturnDebt\";\nimport CommentClass from \"@/components/Comment/Comment\";\nimport type {\n ParticipantGeometry,\n MessageGeometry,\n SelfCallGeometry,\n OccurrenceGeometry,\n CreationGeometry,\n FragmentGeometry,\n ReturnGeometry,\n DividerGeometry,\n CommentGeometry,\n} from \"./geometry\";\nimport { PARTICIPANT_VISUAL_HEIGHT, snapX, cssToSvgStyle } from \"./svgConstants\";\nimport type { RootContextNode } from \"@/parser/AntlrTypes\";\n\nexport interface BuildMessagesResult {\n messages: MessageGeometry[];\n selfCalls: SelfCallGeometry[];\n occurrences: OccurrenceGeometry[];\n creations: CreationGeometry[];\n fragments: FragmentGeometry[];\n returns: ReturnGeometry[];\n dividers: DividerGeometry[];\n comments: CommentGeometry[];\n totalReturnDebt: number;\n maxReturnBottom: number;\n}\n\nexport function buildMessages(\n rootContext: RootContextNode,\n coordinates: Coordinates,\n verticalCoordinates: VerticalCoordinates,\n participants: ParticipantGeometry[],\n measureText?: (text: string, type: TextType) => number,\n): BuildMessagesResult {\n const statements = walkStatements(rootContext);\n const messages: MessageGeometry[] = [];\n const selfCalls: SelfCallGeometry[] = [];\n const occurrences: OccurrenceGeometry[] = [];\n const creations: CreationGeometry[] = [];\n const fragments: FragmentGeometry[] = [];\n const returns: ReturnGeometry[] = [];\n const dividers: DividerGeometry[] = [];\n const comments: CommentGeometry[] = [];\n\n let maxReturnBottom = 0;\n const diagramWidth = coordinates.getWidth();\n const allParticipants = coordinates.orderedParticipantNames();\n\n // --- Block child count: how many direct children each parent number has ---\n // Used to compute assignment return seq numbers (e.g. block with 3 children → return is N.4)\n const blockChildCount = new Map<string, number>();\n for (const s of statements) {\n if (s.number) {\n const lastDot = s.number.lastIndexOf(\".\");\n const parent = lastDot >= 0 ? s.number.substring(0, lastDot) : \"\";\n const ordinal = parseInt(s.number.substring(lastDot + 1), 10);\n const prev = blockChildCount.get(parent) || 0;\n if (ordinal > prev) blockChildCount.set(parent, ordinal);\n }\n }\n\n // --- Scope-aware return height debt computation ---\n // ReturnStatementVM.measure() reports height=0 for non-self returns, but in HTML\n // the return element takes ~16px of visual space. This causes all subsequent\n // elements to be positioned too high. We compute a per-statement adjustment.\n const RETURN_VISUAL_HEIGHT = 16;\n const adjustMap = computeReturnDebt(statements, verticalCoordinates, RETURN_VISUAL_HEIGHT);\n\n for (const info of statements) {\n const coord = verticalCoordinates.getStatementCoordinate(info.key);\n if (!coord) continue;\n const adjust = adjustMap.get(info.key) || 0;\n\n // --- Parse styling comments (e.g. // [red] text) ---\n let commentObj: CommentClass | undefined;\n if (info.comment) {\n commentObj = new CommentClass(info.comment);\n }\n\n // --- Comments (inline, above the statement) ---\n // Fragment comments are positioned inside buildFragmentGeometry (at fragX, not sender lifeline).\n if (commentObj?.text && info.kind !== \"fragment\") {\n // For RTL creation statements, HTML positions the comment at the target (left side).\n // For all other cases, the comment is at the sender's position.\n let commentParticipant = info.from;\n if (info.kind === \"creation\" && info.from && info.to) {\n const fX = coordinates.getPosition(info.from);\n const tX = coordinates.getPosition(info.to);\n if (fX > tX) commentParticipant = info.to;\n }\n const commentX = commentParticipant\n ? snapX(coordinates.getPosition(commentParticipant))\n : 10;\n // SVG text y = baseline; HTML positions by visual top. Add font ascent (~12px for 14px text).\n const COMMENT_FONT_ASCENT = 15;\n // Inside an occurrence, HTML positions the comment at the occurrence\n // bar's inner edge (OCCURRENCE_BAR_SIDE_WIDTH + 1). At the top level\n // (no active occurrence), the comment sits near the lifeline center.\n const commentXOffset = info.senderOccurrenceDepth >= 1\n ? OCCURRENCE_BAR_SIDE_WIDTH + 1\n : 1;\n // HTML wraps backtick text in <code> with padding:2px (Cosmetic.scss).\n // Add the same left-padding offset so SVG text aligns with HTML.\n const codeSpanPadding = commentObj.text.trimStart().startsWith(\"`\") ? 2 : 0;\n comments.push({\n x: commentX + commentXOffset + codeSpanPadding,\n y: coord.top + adjust + COMMENT_FONT_ASCENT,\n text: commentObj.text,\n style: cssToSvgStyle(commentObj.commentStyle),\n });\n }\n\n // Message style from styling comment (applied to message/self-call/creation labels)\n const messageStyle = commentObj ? cssToSvgStyle(commentObj.messageStyle) : undefined;\n\n // --- Sync / Async messages ---\n if (info.kind === \"sync\" || info.kind === \"async\") {\n let fromX = snapX(coordinates.getPosition(info.from));\n const toX = snapX(coordinates.getPosition(info.to));\n const messageHeight = info.isSelf ? 30 : 16;\n // Comment height: HTML renders comment <p> above the message in CSS flow.\n // coord.top doesn't include comment height, so offset manually (same as fragments).\n const msgCommentHeight = commentObj?.text\n ? (info.comment?.trim().split(\"\\n\").length || 0) * 20\n : 0;\n const messageY = coord.top + adjust + msgCommentHeight + messageHeight - 0.5;\n\n // D4: When sender has an active occurrence, arrow starts from its near edge.\n // LTR: near edge is the RIGHT side → center + depth*side (each level shifts bar right).\n // RTL: near edge is the LEFT side → center - side + (depth-1)*side = center + (depth-2)*side.\n // depth=1: center - side (outer bar left edge)\n // depth=2: center (second bar left edge)\n // depth=3: center + side (third bar left edge)\n if (info.senderOccurrenceDepth >= 1 && !info.isSelf) {\n const depth = info.senderOccurrenceDepth;\n const occOffset = depth * OCCURRENCE_BAR_SIDE_WIDTH;\n const isLTR = fromX < toX;\n fromX = isLTR\n ? fromX + occOffset\n : fromX - OCCURRENCE_BAR_SIDE_WIDTH + (depth - 1) * OCCURRENCE_BAR_SIDE_WIDTH;\n }\n\n // When target already has active occurrences, the new occurrence is nested\n // (stacked inward by OCCURRENCE_BAR_SIDE_WIDTH per level). Arrow endpoints shift accordingly.\n const targetDepth = info.targetOccurrenceDepth || (info.targetHasOccurrence ? 1 : 0);\n const nestingOffset = targetDepth * OCCURRENCE_BAR_SIDE_WIDTH;\n\n if (info.isSelf) {\n // Async self-calls: HTML renders label (flex-col) then a 30×24 SVG arrow.\n // The label and arrow are laid out by renderSelfCall from s.y, so no Y offset\n // is needed here — otherwise the label height gets double-counted.\n const isAsync = info.kind === \"async\";\n const selfYOffset = 0;\n const selfWidth = isAsync ? 28 : OCCURRENCE_WIDTH;\n // Async: full visual extent = label(~20px) + arrow SVG(24px) = 44px\n const selfHeight = isAsync ? 44 : messageHeight;\n // For self-calls inside an occurrence, the HTML component renders\n // inside the occurrence div — starting at the occurrence's right edge.\n // For nested occurrences, offset further by OCCURRENCE_BAR_SIDE_WIDTH per extra level.\n const selfX = (info.senderOccurrenceDepth >= 1)\n ? fromX + OCCURRENCE_BAR_SIDE_WIDTH + (info.senderOccurrenceDepth - 1) * OCCURRENCE_BAR_SIDE_WIDTH\n : fromX;\n selfCalls.push({\n x: selfX,\n y: coord.top + selfYOffset + msgCommentHeight,\n width: selfWidth,\n height: selfHeight,\n label: info.label,\n arrowStyle: isAsync ? \"open\" : \"solid\",\n number: info.number,\n style: messageStyle,\n });\n } else {\n // Arrow tip stops at near edge of target's occurrence bar.\n // Sync: creates new occ → toX ∓ OCCURRENCE_BAR_SIDE_WIDTH + nestingOffset\n // (points at inner edge where new occ starts)\n // Async with existing target occ → toX ∓ nestingOffset\n // (points at outer edge of existing occ)\n const isLTR = fromX < toX;\n const syncOffset = info.kind === \"sync\" && !info.isSelf;\n const asyncTargetOcc = info.kind === \"async\" && !info.isSelf && targetDepth > 0;\n const arrowToX =\n syncOffset\n ? isLTR\n ? toX - OCCURRENCE_BAR_SIDE_WIDTH + nestingOffset\n : toX + OCCURRENCE_BAR_SIDE_WIDTH + nestingOffset\n : asyncTargetOcc\n ? isLTR\n ? toX - nestingOffset\n : toX + nestingOffset\n : toX;\n\n messages.push({\n fromX,\n toX: arrowToX,\n y: messageY,\n label: info.label,\n arrowStyle: info.kind === \"async\" ? \"open\" : \"solid\",\n isSelf: false,\n isReverse: arrowToX < fromX,\n number: info.number,\n style: messageStyle,\n });\n }\n\n // Occurrence: activation box centered on the target participant's lifeline\n if (info.kind === \"sync\") {\n const occX = toX - OCCURRENCE_BAR_SIDE_WIDTH;\n const occY = messageY - 1.5;\n // +2: SVG stroke extends 1px beyond rect on each side (centered model).\n // renderOccurrence insets by 1px, so fill area = geometry - 2 matches\n // HTML border-box height. Stroke extends to geometry size visually.\n // Subtract msgCommentHeight: coord.height includes the comment above the\n // message, but the occurrence starts BELOW the comment (at messageY - 1.5),\n // so the comment height must not inflate the occurrence bar.\n let occHeight = coord.height - messageHeight - msgCommentHeight + 2;\n\n // Adjust occurrence height for inner return debt.\n // The positioning engine underestimates block heights because non-self returns\n // have height=0. Each missing return adds exactly RETURN_VISUAL_HEIGHT (16px)\n // of visual space in HTML that the positioning engine doesn't account for.\n const innerDebtKey = `inner:${info.key}`;\n const innerDebt = adjustMap.get(innerDebtKey) || 0;\n if (innerDebt > 0) {\n occHeight += innerDebt;\n }\n\n const messageCtx = info.statNode?.message?.();\n const assignment = messageCtx?.Assignment?.();\n\n // Assignment return compensation: the positioning engine adds +12 for\n // assignee returns (SyncMessageStatementVM line 41), but HTML renders\n // the assignment return as ~16px inside the occurrence. Add the 4px\n // difference so the occurrence bar extends to match HTML.\n if (assignment?.assignee && !info.isSelf && info.hasBlock) {\n occHeight += 4;\n }\n\n // With cursor+=12, the positioning engine now correctly accounts for\n // the CSS border height in both mixed-content and non-block assignment\n // cases. No additional +1 corrections needed.\n\n // Assignment return Y: sits 2px above the occurrence bottom,\n // matching HTML's return position inside the CSS border.\n // Must be computed AFTER all height corrections so the gap is\n // consistently 2px from the final occurrence bottom.\n const returnArrowY = occY + occHeight - 2;\n\n if (occHeight > 0) {\n occurrences.push({\n x: occX,\n y: occY,\n width: OCCURRENCE_WIDTH,\n height: occHeight,\n participantName: info.to,\n });\n\n // Assignment return: e.g. `ret0 = C.method() { ... }`\n if (assignment?.assignee && !info.isSelf) {\n // Return goes from target (toX) back to sender (fromX).\n // Target always has occurrence; start from its near edge toward sender.\n // When target has nested occurrence, shift by OCCURRENCE_BAR_SIDE_WIDTH.\n // +1: OCCURRENCE_WIDTH (15) = 2*OCCURRENCE_BAR_SIDE_WIDTH (14) + 1 center pixel.\n // The arrow starts from the occurrence edge (inner border in HTML, fill edge in SVG).\n const isLTR = fromX < toX;\n const retFromX = isLTR\n ? toX - OCCURRENCE_BAR_SIDE_WIDTH + nestingOffset + 1\n : toX + OCCURRENCE_BAR_SIDE_WIDTH + nestingOffset + 1;\n // Sender's fromX is D4-adjusted for its occurrence edge.\n // For bare lifelines (no occurrences), adjust to match HTML Anchor2's\n // edge offset. HTML places the return endpoint at:\n // rightEdgeOfRightWall + LIFELINE_WIDTH + 1 (LTR message → RTL return)\n // position + LIFELINE_WIDTH (RTL message → LTR return)\n // For occupied senders, D4 positions at the fill edge; add +2 for the\n // center pixel + stroke that extends beyond the occurrence rect\n // (matching the keyword return's +1 at the right wall edge).\n let senderX = fromX;\n if (info.senderOccurrenceDepth === 0) {\n senderX += isLTR ? LIFELINE_WIDTH + 1 : LIFELINE_WIDTH;\n } else if (isLTR) {\n senderX += 2;\n }\n // Assignment return seq number: HTML numbers it as (blockChildCount + 1)\n // For non-block sync (e.g. `ret = B.method`), it's N.1 (no block children).\n // For block sync (e.g. `ret = B.method { ... }`), it's N.(children+1).\n const assignReturnNumber = info.number\n ? `${info.number}.${(blockChildCount.get(info.number) || 0) + 1}`\n : undefined;\n returns.push({\n fromX: retFromX, toX: senderX, y: returnArrowY,\n label: assignment.assignee, isReverse: fromX < toX, isSelf: false,\n number: assignReturnNumber,\n });\n maxReturnBottom = Math.max(maxReturnBottom, returnArrowY + 46);\n }\n }\n }\n continue;\n }\n\n // --- Creation arrows ---\n if (info.kind === \"creation\") {\n const CREATION_MSG_HEIGHT = 40; // from CreationStatementVM.ts\n let fromX = snapX(coordinates.getPosition(info.from));\n const toX = snapX(coordinates.getPosition(info.to));\n\n // When sender has an active occurrence, arrow starts from its near edge\n // For nested occurrences, offset further by OCCURRENCE_BAR_SIDE_WIDTH per extra level\n if (info.senderOccurrenceDepth >= 1) {\n const occOffset = OCCURRENCE_BAR_SIDE_WIDTH + (info.senderOccurrenceDepth - 1) * OCCURRENCE_BAR_SIDE_WIDTH;\n const isLTR = fromX < toX;\n fromX = isLTR ? fromX + occOffset : fromX - occOffset;\n }\n\n // Find the already-built participant (buildParticipants handles creationTop)\n const targetParticipant = participants.find(p => p.name === info.to);\n // Center the arrow on the participant box visual center (y + height/2).\n const messageY = targetParticipant\n ? targetParticipant.y + PARTICIPANT_VISUAL_HEIGHT / 2\n : coord.top + CREATION_MSG_HEIGHT / 2;\n if (targetParticipant) {\n creations.push({\n participant: targetParticipant,\n message: {\n fromX,\n toX,\n y: messageY,\n label: info.label, // already «guillemet-wrapped» from SignatureText()\n arrowStyle: \"open\",\n isSelf: false,\n isReverse: toX < fromX,\n number: info.number,\n style: messageStyle,\n },\n });\n }\n\n // Creation always reserves occurrence space\n const occX = toX - OCCURRENCE_BAR_SIDE_WIDTH;\n // -2px matches HTML's Occurrence mt-[-2px]\n const occY = targetParticipant\n ? targetParticipant.y + PARTICIPANT_VISUAL_HEIGHT - 2\n : coord.top + CREATION_MSG_HEIGHT - 2;\n // Compute occurrence from its top to the bottom of the statement coordinate.\n // Align the bottom edge with HTML's CSS-computed occurrence bottom.\n const occHeight = Math.max(\n (coord.top + coord.height) - occY,\n OCCURRENCE_EMPTY_HEIGHT,\n );\n if (occHeight > 0) {\n occurrences.push({\n x: occX,\n y: occY,\n width: OCCURRENCE_WIDTH,\n height: occHeight,\n participantName: info.to,\n });\n\n // Assignment return for creation: e.g. `b = new B()`\n // Creation occurrences have minimal extra height in HTML (no block content gap),\n // so the return line sits right at occurrence bottom — no +5 offset needed\n // (contrast with sync assignment returns which need +5 to compensate for\n // HTML occurrence being taller due to the return container's my-4 margins).\n const creationCtx = info.statNode?.creation?.();\n const creationAssign = creationCtx?.Assignment?.();\n if (creationAssign?.assignee) {\n // -2 aligns with HTML return position: -1 for SVG stroke inset (occurrence.ts),\n // -1 because HTML return sits 1px above occurrence bottom\n const occBottom = occY + occHeight - 2;\n // Compute both endpoints from raw lifeline centers.\n // HTML return line starts 1px beyond sender occurrence edge (CSS gap),\n // and ends at the created occurrence edge.\n const rawFromX = snapX(coordinates.getPosition(info.from));\n const isLTR = rawFromX < toX;\n const occHalf = OCCURRENCE_BAR_SIDE_WIDTH;\n // Sender (A) side: occurrence near edge facing the created participant.\n // LTR: sender's right edge = rawFromX + occHalf + 1 (center pixel).\n // RTL: sender's left edge = rawFromX - occHalf.\n const senderNest = Math.max(info.senderOccurrenceDepth - 1, 0) * OCCURRENCE_BAR_SIDE_WIDTH;\n const senderRetX = info.senderOccurrenceDepth >= 1\n ? rawFromX + senderNest + (isLTR ? occHalf + 2 : -occHalf)\n : rawFromX;\n // Created (B) side: occurrence near edge facing the sender.\n // LTR: created's left edge + 1 (HTML starts 1px past border).\n // RTL: created's right edge = toX + occHalf + 1 (center pixel).\n const createdRetX = isLTR\n ? toX - occHalf + 1\n : toX + occHalf + 1;\n // fromX = line start (created side), toX = arrow tip (sender side)\n // renderReturn places arrow head at toX\n returns.push({\n fromX: createdRetX, toX: senderRetX, y: occBottom,\n label: creationAssign.assignee, isReverse: createdRetX > senderRetX, isSelf: false,\n number: info.number\n ? `${info.number}.${(blockChildCount.get(info.number) || 0) + 1}`\n : undefined,\n });\n maxReturnBottom = Math.max(maxReturnBottom, occBottom + 46);\n }\n }\n continue;\n }\n\n // --- Fragments ---\n if (info.kind === \"fragment\" && info.fragmentKind) {\n const adjustedCoord = { top: coord.top + adjust, height: coord.height };\n // Compute comment height: the HTML renderer places the header BELOW any\n // inline comment. MarkdownMeasurer uses lines * 20 for height.\n const fragmentCommentHeight = commentObj?.text\n ? (info.comment?.trim().split(\"\\n\").length || 0) * 20\n : 0;\n const fragmentResult = buildFragmentGeometry(\n info,\n adjustedCoord,\n coordinates,\n verticalCoordinates,\n allParticipants,\n measureText,\n fragmentCommentHeight,\n commentObj?.text,\n commentObj?.commentStyle ? cssToSvgStyle(commentObj.commentStyle) : undefined,\n coord.top + adjust,\n );\n if (fragmentResult) {\n fragments.push(fragmentResult.fragment);\n if (fragmentResult.comment) {\n comments.push(fragmentResult.comment);\n }\n }\n continue;\n }\n\n // --- Returns ---\n if (info.kind === \"return\") {\n const rawFromX = snapX(coordinates.getPosition(info.from));\n const rawToX = snapX(coordinates.getPosition(info.to));\n const isReverse = rawToX < rawFromX;\n // HTML Anchor2 positions return lines edge-to-edge between occurrence walls.\n // rightEdgeOfRightWall = position + BAR_SIDE_WIDTH * layers\n // leftEdgeOfRightWall = layers === 0 ? position : centerOfRightWall - BAR_SIDE_WIDTH\n // where centerOfRightWall = layers <= 1 ? position : position + BAR_SIDE_WIDTH * (layers - 1)\n // LTR: from.rightEdge → to; RTL: to ← from.leftEdge\n const fromLayers = info.senderOccurrenceDepth;\n let fromX: number;\n if (isReverse) {\n // RTL: line starts from from's left edge of right wall\n fromX = fromLayers === 0\n ? rawFromX\n : (fromLayers <= 1 ? rawFromX : rawFromX + OCCURRENCE_BAR_SIDE_WIDTH * (fromLayers - 1)) - OCCURRENCE_BAR_SIDE_WIDTH;\n } else {\n // LTR: line starts from from's right edge of right wall.\n // +1: occurrence stroke extends 1px beyond fill area (stroke-width=2, centered).\n fromX = rawFromX + OCCURRENCE_BAR_SIDE_WIDTH * fromLayers + 1;\n }\n // Target also needs occurrence edge offset (Anchor2 uses the near edge facing the source)\n const toLayers = info.targetOccurrenceDepth || 0;\n let toX: number;\n if (isReverse) {\n // RTL: target is on the left, use its right edge\n toX = rawToX + OCCURRENCE_BAR_SIDE_WIDTH * toLayers;\n } else {\n // LTR: target is on the right, use its left edge\n toX = toLayers === 0\n ? rawToX\n : (toLayers <= 1 ? rawToX : rawToX + OCCURRENCE_BAR_SIDE_WIDTH * (toLayers - 1)) - OCCURRENCE_BAR_SIDE_WIDTH;\n }\n // HTML Anchor2.edgeOffset subtracts LIFELINE_WIDTH from the container width.\n // For RTL returns, add LIFELINE_WIDTH to reach the inner edge of the target.\n // For LTR returns, the +1 stroke correction on fromX (line 680) already\n // accounts for the Anchor2 LIFELINE_WIDTH subtraction — applying it again\n // on toX would double-count and shrink the arrow by 2px instead of 1px.\n if (isReverse) {\n toX += LIFELINE_WIDTH;\n }\n // Return Y positioning: subpixel browser measurement (scoring coord = attrY + 21)\n // shows the two sub-cases that the positioning engine distinguishes with 0 vs 16px:\n // - return with coord.height=0: HTML collapses margin (CSS margin-bottom:-16px on\n // last child inside occurrence), SVG needs 16.5. This applies to returns inside\n // sync blocks AND returns inside fragment sections that are themselves inside an\n // occurrence (e.g. Alt inside a sync method call).\n // - all other returns (root/async, or height>0): SVG needs 15.5\n // These are +0.5 adjustments on the original 16/15 split, validated by\n // emoji-async-return (root returns: 87.4%->97%) and emoji-return-chain (block returns: 94.5%->98%).\n const returnOffset = coord.height === 0 ? 16.5 : 15.5;\n const returnY = coord.top + adjust + returnOffset;\n returns.push({\n fromX,\n toX,\n y: returnY,\n label: info.label,\n isReverse,\n isSelf: info.isSelf,\n number: info.number,\n });\n const returnBottomPad = coord.height === 0 ? 45.5 : 44.5;\n maxReturnBottom = Math.max(maxReturnBottom, returnY + returnBottomPad);\n continue;\n }\n\n // --- Dividers ---\n if (info.kind === \"divider\") {\n const cleanLabel = info.label.replace(/^=+\\s*|\\s*=+$/g, \"\").trim();\n dividers.push({\n y: coord.top + adjust + coord.height / 2,\n width: diagramWidth,\n label: info.label,\n labelWidth: measureSvgFragmentLabelWidth(resolveEmojiInText(cleanLabel)),\n });\n continue;\n }\n }\n\n // With scope-aware return debt adjustments, returns are naturally spaced.\n // Only enforce minimum gap if returns genuinely overlap (e.g., assignment returns\n // at occurrence bottom that coincide with explicit returns).\n const MIN_RETURN_GAP = 16;\n returns.sort((a, b) => a.y - b.y);\n for (let i = 1; i < returns.length; i++) {\n if (returns[i].y - returns[i - 1].y < MIN_RETURN_GAP) {\n returns[i] = { ...returns[i], y: returns[i - 1].y + MIN_RETURN_GAP };\n }\n }\n\n // Offset nested occurrences: in HTML, inner occurrences on the same participant\n // are rendered inside the outer occurrence DOM element, offset right by\n // OCCURRENCE_BAR_SIDE_WIDTH (7px) per nesting level. Detect nesting by Y-range containment.\n for (let i = 0; i < occurrences.length; i++) {\n const inner = occurrences[i];\n let depth = 0;\n for (let j = 0; j < occurrences.length; j++) {\n if (i === j) continue;\n const outer = occurrences[j];\n if (outer.participantName === inner.participantName &&\n outer.y <= inner.y &&\n outer.y + outer.height >= inner.y + inner.height) {\n depth++;\n }\n }\n if (depth > 0) {\n occurrences[i] = { ...inner, x: inner.x + depth * OCCURRENCE_BAR_SIDE_WIDTH };\n }\n }\n\n const totalReturnDebt = adjustMap.get(\"__totalDebt__\") || 0;\n return { messages, selfCalls, occurrences, creations, fragments, returns, dividers, comments, totalReturnDebt, maxReturnBottom };\n}\n","/**\n * Builds DiagramGeometry from parser output + positioning engine.\n * Pure function — no DOM, no React, no side effects.\n *\n * This is the orchestrator — geometry construction for participants,\n * statements, and groups is delegated to focused modules.\n */\nimport type { Coordinates } from \"@/positioning/Coordinates\";\nimport type { VerticalCoordinates } from \"@/positioning/VerticalCoordinates\";\nimport {\n FRAGMENT_MIN_WIDTH,\n FRAGMENT_PADDING_X,\n} from \"@/positioning/Constants\";\nimport { TextType } from \"@/positioning/Coordinate\";\nimport { OrderedParticipants, _STARTER_ } from \"@/parser/OrderedParticipants\";\nimport { getLocalParticipantNames } from \"@/positioning/LocalParticipants\";\nimport { AllMessages } from \"@/parser/MessageCollector\";\nimport FrameBuilder from \"@/parser/FrameBuilder\";\nimport FrameBorder from \"@/positioning/FrameBorder\";\nimport type { DiagramGeometry, FragmentGeometry } from \"./geometry\";\nimport type { RootContextNode } from \"@/parser/AntlrTypes\";\nimport { PARTICIPANT_VISUAL_HEIGHT } from \"./svgConstants\";\nimport { buildParticipants, buildLifelines, buildGroups } from \"./buildParticipantGeometry\";\nimport { buildMessages } from \"./buildStatementGeometry\";\n\nexport interface BuildGeometryInput {\n rootContext: RootContextNode;\n coordinates: Coordinates;\n verticalCoordinates: VerticalCoordinates;\n title?: string;\n measureText?: (text: string, type: TextType) => number;\n}\n\nexport function buildGeometry(input: BuildGeometryInput): DiagramGeometry {\n const { rootContext, coordinates, verticalCoordinates, title, measureText } = input;\n const participantModels = OrderedParticipants(rootContext);\n const totalHeight = verticalCoordinates.getTotalHeight();\n\n // Compute FrameBorder — extra left/right padding from fragment nesting depth.\n // Matches HTML renderer's SeqDiagram.tsx frameBorderLeft calculation.\n const allParticipantNames = coordinates.orderedParticipantNames();\n const frameBuilder = new FrameBuilder(allParticipantNames as string[]);\n const frame = frameBuilder.getFrame(rootContext);\n const frameBorder = FrameBorder(frame);\n\n const participants = buildParticipants(\n participantModels,\n coordinates,\n verticalCoordinates,\n measureText,\n );\n const buildResult = buildMessages(\n rootContext,\n coordinates,\n verticalCoordinates,\n participants,\n measureText,\n );\n const { messages, selfCalls, occurrences, creations, fragments, returns, dividers, comments } = buildResult;\n\n // Compute diagram height from the positioning engine's totalHeight (primary) or\n // max rendered content Y (fallback). Returns need more bottom overhead than other elements\n // because their Y = coord.top + adjust + 16 represents the visual bottom of a 16px element,\n // and HTML's CSS adds ~60px of space below the last return. Empirically: +47 (= viewHeight\n // overhead) gives the right frame height matching HTML. Other content uses +13 (= SVG\n // bottom space = viewHeight_overhead(47) - headerLineY(34)).\n let maxOccBottom = 0;\n let maxOtherY = 0;\n for (const o of occurrences) maxOccBottom = Math.max(maxOccBottom, o.y + o.height);\n for (const m of messages) maxOtherY = Math.max(maxOtherY, m.y);\n for (const s of selfCalls) maxOtherY = Math.max(maxOtherY, s.y + s.height);\n for (const c of creations) maxOtherY = Math.max(maxOtherY, c.message.y + PARTICIPANT_VISUAL_HEIGHT);\n for (const f of fragments) maxOtherY = Math.max(maxOtherY, f.y + f.height);\n for (const d of dividers) maxOtherY = Math.max(maxOtherY, d.y);\n const diagramHeight = Math.max(\n totalHeight + 28,\n maxOccBottom + 13,\n maxOtherY + 13,\n buildResult.maxReturnBottom,\n );\n const lifelineBottom = diagramHeight + PARTICIPANT_VISUAL_HEIGHT - 28;\n\n // Build lifelines AFTER height adjustment so they extend to the correct bottom\n const lifelines = buildLifelines(\n participants,\n lifelineBottom,\n );\n\n // Compute diagramWidth matching HTML's TotalWidth formula (WidthOfContext.ts).\n // HTML uses participantWidth = distance(left, right) + half(left) + half(right),\n // NOT coordinates.getWidth() (which can include extra left(firstParticipant) offset).\n // In SVG, border.left/.right are added separately in composeSvg, so we include only\n // participantWidth + extraWidthDueToSelfMessage here.\n const localParticipants = getLocalParticipantNames(rootContext);\n const orderedNames = coordinates.orderedParticipantNames();\n const leftParticipant = orderedNames.find(p => localParticipants.includes(p)) || \"\";\n const rightParticipant = orderedNames.slice().reverse().find(p => localParticipants.includes(p)) || \"\";\n\n const participantWidth =\n coordinates.distance(leftParticipant, rightParticipant) +\n coordinates.half(leftParticipant) +\n coordinates.half(rightParticipant);\n\n const selfMessages = AllMessages(rootContext).filter(m => m.from === m.to);\n const extraWidths = selfMessages.map(m =>\n coordinates.getMessageWidth(m) -\n coordinates.distance(m.from || _STARTER_, rightParticipant) -\n coordinates.half(rightParticipant)\n );\n const extraWidthDueToSelfMessage = Math.max(0, ...extraWidths);\n\n let diagramWidth = Math.max(participantWidth, FRAGMENT_MIN_WIDTH) + extraWidthDueToSelfMessage;\n\n // Expand width to fit labels that extend beyond\n if (measureText) {\n // Title does not expand diagramWidth. The HTML renderer does not expand the\n // sequence diagram width for the title — TotalWidth() is participant-based only.\n // The frame may expand via CSS whitespace-nowrap for very long titles, but the\n // old * 1.15 multiplier grossly over-corrected, causing 28px+ mismatches.\n\n // Expand for message labels extending beyond diagram edge\n const LABEL_PAD = 10;\n for (const msg of messages) {\n const labelW = measureText(msg.label, TextType.MessageContent);\n const midX = (msg.fromX + msg.toX) / 2;\n const rightExtent = midX + labelW / 2 + LABEL_PAD;\n if (rightExtent > diagramWidth) diagramWidth = rightExtent;\n }\n for (const ret of returns) {\n const labelW = measureText(ret.label, TextType.MessageContent);\n const midX = (ret.fromX + ret.toX) / 2;\n const rightExtent = midX + labelW / 2 + LABEL_PAD;\n if (rightExtent > diagramWidth) diagramWidth = rightExtent;\n }\n for (const cr of creations) {\n const labelW = measureText(cr.message.label, TextType.MessageContent);\n const midX = (cr.message.fromX + cr.message.toX) / 2;\n const rightExtent = midX + labelW / 2 + LABEL_PAD;\n if (rightExtent > diagramWidth) diagramWidth = rightExtent;\n }\n }\n\n // Shift fragment left edges into the diagram padding area (matching HTML CSS\n // where fragments use left: -frameBorderLeft). Position-only shift.\n // Also shift fragment-level comments by the same amount so they stay aligned.\n for (const f of fragments) {\n f.x -= frameBorder.left;\n }\n for (const c of comments) {\n if (c.fragmentComment) {\n c.x -= frameBorder.left;\n }\n }\n\n // Compute spatial nesting depth for each fragment (how many other fragments\n // fully contain it). This is more accurate than info.depth which includes\n // message block nesting, not just fragment nesting.\n const nestDepths = new Map<FragmentGeometry, number>();\n for (const inner of fragments) {\n let nestDepth = 0;\n for (const outer of fragments) {\n if (outer === inner) continue;\n if (outer.x <= inner.x && outer.y <= inner.y &&\n outer.x + outer.width >= inner.x + inner.width &&\n outer.y + outer.height >= inner.y + inner.height) {\n nestDepth++;\n }\n }\n nestDepths.set(inner, nestDepth);\n inner.x += nestDepth * FRAGMENT_PADDING_X;\n }\n\n // Extend fragment right edges into the frameBorder area ONLY when the\n // fragment already spans (nearly) the full diagram width. Fragments whose\n // local participants are a subset of all participants should keep their\n // computed width — they don't stretch to the full diagram in HTML either.\n const contentRightEdge = diagramWidth + frameBorder.right;\n for (const f of fragments) {\n const nd = nestDepths.get(f) || 0;\n const targetRight = contentRightEdge - nd * FRAGMENT_PADDING_X;\n const currentRight = f.x + f.width;\n // Only extend if the fragment is already within 20px of the target\n // (i.e., it spans nearly all participants and just needs the frameBorder extension)\n if (currentRight >= targetRight - 20 && currentRight < targetRight) {\n f.width = targetRight - f.x;\n }\n }\n\n // Build group geometry from participants that share a groupId\n const groups = buildGroups(participants, diagramHeight);\n\n return {\n width: diagramWidth,\n height: diagramHeight,\n frameBorderLeft: frameBorder.left,\n frameBorderRight: frameBorder.right,\n title,\n participants,\n lifelines,\n messages,\n selfCalls,\n occurrences,\n creations,\n fragments,\n dividers,\n returns,\n comments,\n groups,\n };\n}\n","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n <g>\\n <path d=\\\"M15.5489 4.19771C15.5489 5.18773 15.1485 6.13721 14.4358 6.83726C13.7231 7.53731 12.7565 7.93058 11.7486 7.93058C10.7407 7.93058 9.77403 7.53731 9.06133 6.83726C8.34863 6.13721 7.94824 5.18773 7.94824 4.19771C7.94824 3.20768 8.34863 2.25822 9.06133 1.55818C9.77403 0.858126 10.7407 0.464844 11.7486 0.464844C12.7565 0.464844 13.7231 0.858126 14.4358 1.55818C15.1485 2.25822 15.5489 3.20768 15.5489 4.19771Z\\\" stroke=\\\"currentColor\\\"/>\\n <path d=\\\"M6.54883 11.2152L17.2025 11.2073M11.7471 8.06641V19.5806V8.06641ZM11.7471 19.4385L6.79789 23.5738L11.7471 19.4385ZM11.7551 19.4385L17.1864 23.3055L11.7551 19.4385Z\\\" stroke=\\\"currentColor\\\"/>\\n </g>\\n</svg>\\n\"","export default \"<svg width=\\\"101\\\" height=\\\"78\\\" viewBox=\\\"0 0 101 78\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n\\t<path d=\\\"M96.3563 39.4479C96.3563 48.4904 92.6755 57.1625 86.1237 63.5566C79.5718 69.9506 70.6856 73.5427 61.4199 73.5427C52.1541 73.5427 43.2679 69.9506 36.7161 63.5566C30.1642 57.1625 26.4834 48.4904 26.4834 39.4479C26.4834 30.147 30.1642 21.2271 36.7161 14.6504C43.2679 8.07366 52.1541 4.37891 61.4199 4.37891C70.6856 4.37891 79.5718 8.07366 86.1237 14.6504C92.6755 21.2271 96.3563 30.147 96.3563 39.4479V39.4479Z\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"4\\\"/>\\n\\t<path d=\\\"M27.3611 39.4482H3.93945\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"4\\\"/>\\n\\t<path d=\\\"M4.91504 4.37891V74.5168\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"4\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"77\\\" height=\\\"86\\\" viewBox=\\\"0 0 77 86\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n\\t<g>\\n\\t\\t<path d=\\\"M74.0149 46.8888C74.0149 51.5755 73.0918 56.2163 71.2983 60.5463C69.5048 64.8762 66.876 68.8105 63.562 72.1245C60.248 75.4385 56.3137 78.0673 51.9838 79.8608C47.6538 81.6543 43.013 82.5774 38.3263 82.5774C33.6396 82.5774 28.9988 81.6543 24.6689 79.8608C20.3389 78.0673 16.4046 75.4385 13.0907 72.1245C9.77666 68.8105 7.14785 64.8762 5.35433 60.5463C3.56081 56.2163 2.6377 51.5755 2.6377 46.8888C2.6377 42.2021 3.56081 37.5613 5.35433 33.2314C7.14785 28.9014 9.77666 24.9671 13.0907 21.6532C16.4046 18.3392 20.3389 15.7104 24.6689 13.9168C28.9988 12.1233 33.6396 11.2002 38.3263 11.2002C43.013 11.2002 47.6538 12.1233 51.9838 13.9168C56.3137 15.7104 60.248 18.3392 63.562 21.6532C66.876 24.9671 69.5048 28.9014 71.2983 33.2314C73.0918 37.5613 74.0149 42.2021 74.0149 46.8888V46.8888Z\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"4.98203\\\"/>\\n\\t\\t<path d=\\\"M47.5352 2.30371L37.5352 11.5001L47.5352 20.6966\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"6\\\"/>\\n\\t</g>\\n</svg>\\n\"","export default \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n <path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M12.258 0.001L12.514 0.005L12.769 0.01L13.022 0.018L13.273 0.028L13.522 0.04L13.769 0.055L14.015 0.071L14.257 0.09L14.498 0.11L14.737 0.133L14.973 0.157L15.206 0.184L15.437 0.212L15.666 0.243L15.891 0.275L16.114 0.309L16.334 0.345L16.551 0.383L16.765 0.423L16.976 0.464L17.184 0.507L17.389 0.552L17.59 0.598L17.788 0.646L17.982 0.696L18.173 0.747L18.36 0.8L18.543 0.854L18.723 0.91L18.898 0.967L19.07 1.026L19.238 1.086L19.401 1.147L19.561 1.21L19.716 1.274L19.866 1.34L19.94 1.373L20.013 1.406L20.084 1.44L20.154 1.474L20.223 1.509L20.291 1.544L20.358 1.579L20.424 1.614L20.488 1.65L20.552 1.686L20.614 1.722L20.674 1.758L20.734 1.795L20.792 1.832L20.85 1.869L20.905 1.907L20.96 1.945L21.013 1.983L21.065 2.021L21.116 2.06L21.166 2.099L21.214 2.138L21.261 2.177L21.306 2.217L21.35 2.257L21.393 2.297L21.434 2.337L21.474 2.378L21.513 2.419L21.55 2.46L21.586 2.501L21.62 2.542L21.653 2.584L21.685 2.626L21.715 2.668L21.744 2.71L21.771 2.752L21.797 2.795L21.821 2.838L21.844 2.881L21.865 2.924L21.885 2.967L21.903 3.011L21.92 3.054L21.935 3.098L21.948 3.142L21.96 3.186L21.971 3.231L21.98 3.275L21.987 3.32L21.993 3.365L21.997 3.41L21.999 3.455L22 3.5V20.5L21.999 20.545L21.997 20.59L21.993 20.635L21.987 20.68L21.98 20.725L21.971 20.769L21.96 20.814L21.948 20.858L21.935 20.902L21.92 20.946L21.903 20.989L21.885 21.033L21.865 21.076L21.844 21.119L21.821 21.162L21.797 21.205L21.771 21.248L21.744 21.29L21.715 21.332L21.685 21.374L21.653 21.416L21.62 21.458L21.586 21.499L21.55 21.54L21.513 21.581L21.474 21.622L21.434 21.663L21.393 21.703L21.35 21.743L21.306 21.783L21.261 21.823L21.214 21.862L21.166 21.901L21.116 21.94L21.065 21.979L21.013 22.017L20.96 22.055L20.905 22.093L20.85 22.131L20.792 22.168L20.734 22.205L20.674 22.242L20.614 22.278L20.552 22.314L20.488 22.35L20.424 22.386L20.358 22.421L20.291 22.456L20.223 22.491L20.154 22.526L20.084 22.56L20.013 22.594L19.94 22.627L19.866 22.66L19.716 22.726L19.561 22.79L19.401 22.853L19.238 22.914L19.07 22.974L18.898 23.033L18.723 23.09L18.543 23.146L18.36 23.2L18.173 23.253L17.982 23.304L17.788 23.354L17.59 23.402L17.389 23.448L17.184 23.493L16.976 23.536L16.765 23.577L16.551 23.617L16.334 23.655L16.114 23.691L15.891 23.725L15.666 23.757L15.437 23.788L15.206 23.816L14.973 23.843L14.737 23.867L14.498 23.89L14.257 23.91L14.015 23.929L13.769 23.945L13.522 23.96L13.273 23.972L13.022 23.982L12.769 23.99L12.514 23.995L12.258 23.999L12 24L11.742 23.999L11.486 23.995L11.231 23.99L10.978 23.982L10.727 23.972L10.478 23.96L10.231 23.945L9.986 23.929L9.743 23.91L9.502 23.89L9.264 23.867L9.028 23.843L8.794 23.816L8.563 23.788L8.335 23.757L8.109 23.725L7.886 23.691L7.666 23.655L7.449 23.617L7.235 23.577L7.024 23.536L6.816 23.493L6.612 23.448L6.411 23.402L6.213 23.354L6.018 23.304L5.828 23.253L5.641 23.2L5.457 23.146L5.278 23.09L5.102 23.033L4.93 22.974L4.763 22.914L4.599 22.853L4.44 22.79L4.285 22.726L4.134 22.66L4.06 22.627L3.988 22.594L3.916 22.56L3.846 22.526L3.777 22.491L3.709 22.456L3.642 22.421L3.576 22.386L3.512 22.35L3.449 22.314L3.387 22.278L3.326 22.242L3.266 22.205L3.208 22.168L3.151 22.131L3.095 22.093L3.04 22.055L2.987 22.017L2.935 21.979L2.884 21.94L2.835 21.901L2.786 21.862L2.74 21.823L2.694 21.783L2.65 21.743L2.607 21.703L2.566 21.663L2.526 21.622L2.487 21.581L2.45 21.54L2.414 21.499L2.38 21.458L2.347 21.416L2.315 21.374L2.285 21.332L2.256 21.29L2.229 21.248L2.203 21.205L2.179 21.162L2.156 21.119L2.135 21.076L2.115 21.033L2.097 20.989L2.08 20.946L2.065 20.902L2.052 20.858L2.04 20.814L2.029 20.769L2.02 20.725L2.013 20.68L2.007 20.635L2.003 20.59L2.001 20.545L2 20.5V3.5L2.001 3.455L2.003 3.41L2.007 3.365L2.013 3.32L2.02 3.275L2.029 3.231L2.04 3.186L2.052 3.142L2.065 3.098L2.08 3.054L2.097 3.011L2.115 2.967L2.135 2.924L2.156 2.881L2.179 2.838L2.203 2.795L2.229 2.752L2.256 2.71L2.285 2.668L2.315 2.626L2.347 2.584L2.38 2.542L2.414 2.501L2.45 2.46L2.487 2.419L2.526 2.378L2.566 2.337L2.607 2.297L2.65 2.257L2.694 2.217L2.74 2.177L2.786 2.138L2.835 2.099L2.884 2.06L2.935 2.021L2.987 1.983L3.04 1.945L3.095 1.907L3.151 1.869L3.208 1.832L3.266 1.795L3.326 1.758L3.387 1.722L3.449 1.686L3.512 1.65L3.576 1.614L3.642 1.579L3.709 1.544L3.777 1.509L3.846 1.474L3.916 1.44L3.988 1.406L4.06 1.373L4.134 1.34L4.285 1.274L4.44 1.21L4.599 1.147L4.763 1.086L4.93 1.026L5.102 0.967L5.278 0.91L5.457 0.854L5.641 0.8L5.828 0.747L6.018 0.696L6.213 0.646L6.411 0.598L6.612 0.552L6.816 0.507L7.024 0.464L7.235 0.423L7.449 0.383L7.666 0.345L7.886 0.309L8.109 0.275L8.335 0.243L8.563 0.212L8.794 0.184L9.028 0.157L9.264 0.133L9.502 0.11L9.743 0.09L9.986 0.071L10.231 0.055L10.478 0.04L10.727 0.028L10.978 0.018L11.231 0.01L11.486 0.005L11.742 0.001L12 0L12.258 0.001V0.001ZM3 20.5V20.51L3.001 20.531L3.004 20.552L3.008 20.574L3.013 20.595L3.019 20.617L3.026 20.639L3.035 20.662L3.045 20.684L3.056 20.707L3.068 20.73L3.081 20.753L3.096 20.776L3.112 20.8L3.129 20.823L3.147 20.847L3.166 20.871L3.187 20.895L3.209 20.92L3.232 20.944L3.256 20.969L3.308 21.018L3.364 21.068L3.425 21.119L3.491 21.17L3.561 21.221L3.636 21.272L3.715 21.324L3.799 21.376L3.887 21.428L3.979 21.48L4.076 21.532L4.178 21.583L4.283 21.635L4.393 21.687L4.507 21.738L4.626 21.789L4.749 21.84L4.876 21.89L5.007 21.94L5.142 21.99L5.281 22.038L5.425 22.087L5.572 22.134L5.724 22.181L5.879 22.228L6.039 22.273L6.202 22.318L6.369 22.361L6.54 22.404L6.716 22.445L6.894 22.486L7.077 22.525L7.264 22.564L7.454 22.601L7.648 22.636L7.845 22.671L8.047 22.704L8.251 22.735L8.46 22.765L8.672 22.794L8.888 22.821L9.107 22.846L9.329 22.87L9.555 22.891L9.785 22.911L10.018 22.929L10.254 22.945L10.494 22.96L10.737 22.972L10.983 22.982L11.232 22.99L11.485 22.995L11.741 22.999L12 23L12.26 22.999L12.517 22.995L12.771 22.99L13.021 22.982L13.268 22.971L13.512 22.959L13.753 22.945L13.99 22.929L14.223 22.911L14.454 22.89L14.68 22.869L14.904 22.845L15.124 22.819L15.34 22.792L15.552 22.764L15.762 22.733L15.967 22.702L16.169 22.668L16.367 22.634L16.561 22.598L16.752 22.561L16.939 22.522L17.122 22.482L17.301 22.442L17.476 22.4L17.648 22.357L17.816 22.313L17.979 22.268L18.139 22.222L18.294 22.176L18.446 22.129L18.594 22.081L18.737 22.032L18.876 21.983L19.012 21.933L19.143 21.883L19.269 21.833L19.392 21.782L19.51 21.73L19.624 21.679L19.734 21.627L19.84 21.575L19.941 21.523L20.037 21.471L20.129 21.419L20.217 21.366L20.3 21.315L20.379 21.263L20.453 21.211L20.523 21.16L20.588 21.109L20.648 21.058L20.704 21.008L20.755 20.958L20.778 20.934L20.801 20.909L20.822 20.885L20.842 20.861L20.861 20.837L20.879 20.813L20.896 20.789L20.911 20.766L20.925 20.742L20.938 20.719L20.95 20.696L20.96 20.673L20.97 20.651L20.978 20.629L20.984 20.607L20.99 20.585L20.994 20.563L20.998 20.542L20.999 20.521L21 20.5V16.373L20.923 16.428L20.843 16.481L20.76 16.535L20.675 16.588L20.588 16.64L20.498 16.692L20.405 16.743L20.31 16.793L20.213 16.843L20.113 16.892L20.011 16.941L19.906 16.989L19.8 17.036L19.691 17.083L19.58 17.129L19.466 17.174L19.351 17.219L19.233 17.263L19.113 17.306L18.991 17.348L18.867 17.39L18.741 17.431L18.613 17.471L18.483 17.511L18.351 17.549L18.217 17.587L18.082 17.624L17.944 17.661L17.805 17.696L17.663 17.731L17.52 17.765L17.376 17.798L17.229 17.83L17.081 17.861L16.931 17.891L16.78 17.921L16.627 17.95L16.473 17.977L16.317 18.004L16.159 18.03L16 18.055L15.839 18.079L15.677 18.102L15.514 18.124L15.349 18.145L15.183 18.165L15.016 18.184L14.847 18.202L14.678 18.219L14.507 18.235L14.334 18.25L14.161 18.264L13.986 18.277L13.811 18.289L13.634 18.3L13.456 18.31L13.277 18.318L13.098 18.326L12.917 18.332L12.735 18.337L12.553 18.341L12.369 18.344L12.185 18.346H11.815L11.631 18.344L11.447 18.341L11.265 18.337L11.083 18.332L10.902 18.326L10.723 18.318L10.544 18.31L10.366 18.3L10.19 18.289L10.014 18.277L9.839 18.264L9.666 18.25L9.494 18.235L9.323 18.219L9.153 18.202L8.984 18.184L8.817 18.165L8.651 18.145L8.486 18.124L8.323 18.102L8.161 18.079L8 18.055L7.841 18.03L7.684 18.004L7.528 17.977L7.373 17.95L7.22 17.921L7.069 17.891L6.919 17.861L6.771 17.83L6.625 17.798L6.48 17.765L6.337 17.731L6.196 17.696L6.056 17.661L5.919 17.624L5.783 17.587L5.649 17.549L5.517 17.511L5.387 17.471L5.259 17.431L5.133 17.39L5.009 17.348L4.887 17.306L4.767 17.262L4.65 17.219L4.534 17.174L4.421 17.129L4.309 17.083L4.2 17.036L4.094 16.989L3.989 16.941L3.887 16.892L3.787 16.843L3.69 16.793L3.595 16.743L3.502 16.691L3.412 16.64L3.325 16.588L3.24 16.535L3.157 16.481L3.077 16.427L3 16.373V20.5V20.5ZM3 14.846V14.857L3.001 14.878L3.004 14.899L3.008 14.92L3.013 14.942L3.019 14.964L3.026 14.986L3.035 15.008L3.045 15.03L3.056 15.053L3.068 15.076L3.081 15.099L3.096 15.123L3.112 15.146L3.129 15.17L3.147 15.194L3.166 15.218L3.187 15.242L3.209 15.266L3.232 15.291L3.256 15.315L3.308 15.365L3.364 15.415L3.425 15.465L3.491 15.516L3.561 15.567L3.636 15.619L3.715 15.67L3.799 15.722L3.887 15.774L3.979 15.826L4.076 15.878L4.178 15.93L4.283 15.982L4.393 16.033L4.507 16.084L4.626 16.136L4.749 16.186L4.876 16.237L5.007 16.287L5.142 16.336L5.281 16.385L5.425 16.433L5.572 16.481L5.724 16.528L5.879 16.574L6.039 16.619L6.202 16.664L6.369 16.708L6.54 16.75L6.716 16.792L6.894 16.832L7.077 16.872L7.264 16.91L7.454 16.947L7.648 16.983L7.845 17.017L8.047 17.05L8.251 17.082L8.46 17.112L8.672 17.14L8.888 17.167L9.107 17.192L9.329 17.216L9.555 17.238L9.785 17.258L10.018 17.276L10.254 17.292L10.494 17.306L10.737 17.318L10.983 17.328L11.232 17.336L11.485 17.342L11.741 17.345L12 17.346L12.26 17.345L12.517 17.342L12.771 17.336L13.021 17.328L13.268 17.318L13.512 17.306L13.753 17.291L13.99 17.275L14.223 17.257L14.454 17.237L14.68 17.215L14.904 17.191L15.124 17.166L15.34 17.139L15.552 17.11L15.762 17.08L15.967 17.048L16.169 17.015L16.367 16.98L16.561 16.944L16.752 16.907L16.939 16.868L17.122 16.829L17.301 16.788L17.476 16.746L17.648 16.703L17.816 16.659L17.979 16.614L18.139 16.569L18.294 16.522L18.446 16.475L18.594 16.427L18.737 16.379L18.876 16.329L19.012 16.28L19.143 16.23L19.269 16.179L19.392 16.128L19.51 16.077L19.624 16.025L19.734 15.973L19.84 15.921L19.941 15.869L20.037 15.817L20.129 15.765L20.217 15.713L20.3 15.661L20.379 15.609L20.453 15.558L20.523 15.506L20.588 15.455L20.648 15.405L20.704 15.354L20.755 15.305L20.778 15.28L20.801 15.256L20.822 15.231L20.842 15.207L20.861 15.183L20.879 15.159L20.896 15.135L20.911 15.112L20.925 15.089L20.938 15.065L20.95 15.043L20.96 15.02L20.97 14.997L20.978 14.975L20.984 14.953L20.99 14.931L20.994 14.91L20.998 14.888L20.999 14.867L21 14.846V10.707L20.923 10.761L20.843 10.815L20.76 10.869L20.675 10.921L20.588 10.974L20.498 11.025L20.405 11.076L20.31 11.127L20.213 11.177L20.113 11.226L20.011 11.275L19.906 11.323L19.8 11.37L19.691 11.417L19.58 11.463L19.466 11.508L19.351 11.552L19.233 11.596L19.113 11.64L18.991 11.682L18.867 11.724L18.741 11.765L18.613 11.805L18.483 11.844L18.351 11.883L18.217 11.921L18.082 11.958L17.944 11.994L17.805 12.03L17.663 12.065L17.52 12.098L17.376 12.131L17.229 12.164L17.081 12.195L16.931 12.225L16.78 12.255L16.627 12.283L16.473 12.311L16.317 12.338L16.159 12.364L16 12.389L15.839 12.413L15.677 12.436L15.514 12.458L15.349 12.479L15.183 12.499L15.016 12.518L14.847 12.536L14.678 12.553L14.507 12.569L14.334 12.584L14.161 12.598L13.986 12.611L13.811 12.623L13.634 12.634L13.456 12.643L13.277 12.652L13.098 12.659L12.917 12.666L12.735 12.671L12.553 12.675L12.369 12.678L12.185 12.68H11.815L11.631 12.678L11.447 12.675L11.265 12.671L11.083 12.666L10.902 12.659L10.723 12.652L10.544 12.643L10.366 12.634L10.19 12.623L10.014 12.611L9.839 12.598L9.666 12.584L9.494 12.569L9.323 12.553L9.153 12.536L8.984 12.518L8.817 12.499L8.651 12.479L8.486 12.458L8.323 12.436L8.161 12.413L8 12.389L7.841 12.364L7.684 12.338L7.528 12.311L7.373 12.283L7.22 12.255L7.069 12.225L6.919 12.195L6.771 12.164L6.625 12.131L6.48 12.098L6.337 12.065L6.196 12.03L6.056 11.994L5.919 11.958L5.783 11.921L5.649 11.883L5.517 11.844L5.387 11.805L5.259 11.765L5.133 11.724L5.009 11.682L4.887 11.639L4.767 11.596L4.65 11.552L4.534 11.508L4.421 11.462L4.309 11.416L4.2 11.37L4.094 11.323L3.989 11.275L3.887 11.226L3.787 11.177L3.69 11.127L3.595 11.076L3.502 11.025L3.412 10.974L3.325 10.921L3.24 10.869L3.157 10.815L3.077 10.761L3 10.707V14.846V14.846ZM3 9.18V9.191L3.001 9.211L3.004 9.233L3.008 9.254L3.013 9.276L3.019 9.297L3.026 9.319L3.035 9.342L3.045 9.364L3.056 9.387L3.068 9.41L3.081 9.433L3.096 9.456L3.112 9.48L3.129 9.504L3.147 9.527L3.166 9.551L3.187 9.576L3.209 9.6L3.232 9.624L3.256 9.649L3.308 9.699L3.364 9.749L3.425 9.799L3.491 9.85L3.561 9.901L3.636 9.953L3.715 10.004L3.799 10.056L3.887 10.108L3.979 10.16L4.076 10.212L4.178 10.264L4.283 10.315L4.393 10.367L4.507 10.418L4.626 10.469L4.749 10.52L4.876 10.57L5.007 10.62L5.142 10.67L5.281 10.719L5.425 10.767L5.572 10.815L5.724 10.862L5.879 10.908L6.039 10.953L6.202 10.998L6.369 11.041L6.54 11.084L6.716 11.126L6.894 11.166L7.077 11.206L7.264 11.244L7.454 11.281L7.648 11.317L7.845 11.351L8.047 11.384L8.251 11.416L8.46 11.446L8.672 11.474L8.888 11.501L9.107 11.526L9.329 11.55L9.555 11.571L9.785 11.591L10.018 11.609L10.254 11.626L10.494 11.64L10.737 11.652L10.983 11.662L11.232 11.67L11.485 11.676L11.741 11.679L12 11.68L12.26 11.679L12.517 11.676L12.771 11.67L13.021 11.662L13.268 11.652L13.512 11.639L13.753 11.625L13.99 11.609L14.223 11.591L14.454 11.571L14.68 11.549L14.904 11.525L15.124 11.5L15.34 11.473L15.552 11.444L15.762 11.414L15.967 11.382L16.169 11.349L16.367 11.314L16.561 11.278L16.752 11.241L16.939 11.202L17.122 11.163L17.301 11.122L17.476 11.08L17.648 11.037L17.816 10.993L17.979 10.948L18.139 10.903L18.294 10.856L18.446 10.809L18.594 10.761L18.737 10.712L18.876 10.663L19.012 10.614L19.143 10.563L19.269 10.513L19.392 10.462L19.51 10.41L19.624 10.359L19.734 10.307L19.84 10.255L19.941 10.203L20.037 10.151L20.129 10.099L20.217 10.047L20.3 9.995L20.379 9.943L20.453 9.891L20.523 9.84L20.588 9.789L20.648 9.738L20.704 9.688L20.755 9.639L20.778 9.614L20.801 9.589L20.822 9.565L20.842 9.541L20.861 9.517L20.879 9.493L20.896 9.469L20.911 9.446L20.925 9.422L20.938 9.399L20.95 9.376L20.96 9.354L20.97 9.331L20.978 9.309L20.984 9.287L20.99 9.265L20.994 9.243L20.998 9.222L20.999 9.201L21 9.18V5.027L20.923 5.081L20.843 5.135L20.76 5.188L20.675 5.241L20.588 5.294L20.498 5.345L20.405 5.396L20.31 5.447L20.213 5.497L20.113 5.546L20.011 5.594L19.906 5.642L19.8 5.69L19.691 5.736L19.58 5.782L19.466 5.828L19.351 5.872L19.233 5.916L19.113 5.959L18.991 6.002L18.867 6.044L18.741 6.085L18.613 6.125L18.483 6.164L18.351 6.203L18.217 6.241L18.082 6.278L17.944 6.314L17.805 6.35L17.663 6.384L17.52 6.418L17.376 6.451L17.229 6.483L17.081 6.515L16.931 6.545L16.78 6.575L16.627 6.603L16.473 6.631L16.317 6.658L16.159 6.684L16 6.708L15.839 6.732L15.677 6.755L15.514 6.778L15.349 6.799L15.183 6.819L15.016 6.838L14.847 6.856L14.678 6.873L14.507 6.889L14.334 6.904L14.161 6.918L13.986 6.931L13.811 6.943L13.634 6.953L13.456 6.963L13.277 6.972L13.098 6.979L12.917 6.985L12.735 6.991L12.553 6.995L12.369 6.998L12.185 6.999L12 7L11.815 6.999L11.631 6.998L11.447 6.995L11.265 6.991L11.083 6.985L10.902 6.979L10.723 6.972L10.544 6.963L10.366 6.953L10.19 6.943L10.014 6.931L9.839 6.918L9.666 6.904L9.494 6.889L9.323 6.873L9.153 6.856L8.984 6.838L8.817 6.819L8.651 6.799L8.486 6.778L8.323 6.755L8.161 6.732L8 6.708L7.841 6.684L7.684 6.658L7.528 6.631L7.373 6.603L7.22 6.575L7.069 6.545L6.919 6.515L6.771 6.483L6.625 6.451L6.48 6.418L6.337 6.384L6.196 6.35L6.056 6.314L5.919 6.278L5.783 6.241L5.649 6.203L5.517 6.164L5.387 6.125L5.259 6.084L5.133 6.043L5.009 6.002L4.887 5.959L4.767 5.916L4.65 5.872L4.534 5.828L4.421 5.782L4.309 5.736L4.2 5.69L4.094 5.642L3.989 5.594L3.887 5.546L3.787 5.496L3.69 5.447L3.595 5.396L3.502 5.345L3.412 5.293L3.325 5.241L3.24 5.188L3.157 5.135L3.077 5.081L3 5.027V9.18V9.18ZM11.74 1.001L11.483 1.005L11.229 1.01L10.979 1.018L10.732 1.029L10.488 1.041L10.247 1.055L10.01 1.071L9.777 1.089L9.546 1.11L9.32 1.132L9.096 1.155L8.876 1.181L8.66 1.208L8.448 1.236L8.238 1.267L8.033 1.299L7.831 1.332L7.633 1.366L7.439 1.402L7.248 1.44L7.061 1.478L6.878 1.518L6.699 1.559L6.524 1.601L6.352 1.644L6.184 1.687L6.021 1.732L5.861 1.778L5.706 1.824L5.554 1.872L5.406 1.92L5.263 1.968L5.124 2.017L4.988 2.067L4.857 2.117L4.731 2.168L4.608 2.219L4.49 2.27L4.376 2.322L4.266 2.374L4.16 2.426L4.059 2.478L3.963 2.53L3.871 2.582L3.783 2.634L3.7 2.686L3.621 2.738L3.547 2.789L3.477 2.841L3.412 2.892L3.352 2.942L3.296 2.992L3.245 3.042L3.222 3.067L3.199 3.091L3.178 3.115L3.158 3.14L3.139 3.164L3.121 3.188L3.104 3.211L3.089 3.235L3.075 3.258L3.062 3.281L3.05 3.304L3.04 3.327L3.03 3.349L3.022 3.371L3.016 3.394L3.01 3.415L3.006 3.437L3.002 3.458L3.001 3.479L3 3.5L3.001 3.521L3.002 3.542L3.006 3.563L3.01 3.585L3.016 3.606L3.022 3.629L3.03 3.651L3.04 3.673L3.05 3.696L3.062 3.719L3.075 3.742L3.089 3.765L3.104 3.789L3.121 3.812L3.139 3.836L3.158 3.86L3.178 3.885L3.199 3.909L3.222 3.933L3.245 3.958L3.296 4.008L3.352 4.058L3.412 4.108L3.477 4.159L3.547 4.211L3.621 4.262L3.7 4.314L3.783 4.366L3.871 4.418L3.963 4.47L4.059 4.522L4.16 4.574L4.266 4.626L4.376 4.678L4.49 4.73L4.608 4.781L4.731 4.832L4.857 4.883L4.988 4.933L5.124 4.983L5.263 5.032L5.406 5.08L5.554 5.128L5.706 5.176L5.861 5.222L6.021 5.268L6.184 5.313L6.352 5.356L6.524 5.399L6.699 5.441L6.878 5.482L7.061 5.522L7.248 5.56L7.439 5.598L7.633 5.634L7.831 5.668L8.033 5.701L8.238 5.733L8.448 5.764L8.66 5.792L8.876 5.819L9.096 5.845L9.32 5.868L9.546 5.89L9.777 5.911L10.01 5.929L10.247 5.945L10.488 5.959L10.732 5.971L10.979 5.982L11.229 5.99L11.483 5.995L11.74 5.999L12 6L12.26 5.999L12.517 5.995L12.771 5.99L13.021 5.982L13.268 5.971L13.512 5.959L13.753 5.945L13.99 5.929L14.223 5.911L14.454 5.89L14.68 5.868L14.904 5.845L15.124 5.819L15.34 5.792L15.552 5.764L15.762 5.733L15.967 5.701L16.169 5.668L16.367 5.634L16.561 5.598L16.752 5.56L16.939 5.522L17.122 5.482L17.301 5.441L17.476 5.399L17.648 5.356L17.816 5.313L17.979 5.268L18.139 5.222L18.294 5.176L18.446 5.128L18.594 5.08L18.737 5.032L18.876 4.983L19.012 4.933L19.143 4.883L19.269 4.832L19.392 4.781L19.51 4.73L19.624 4.678L19.734 4.626L19.84 4.574L19.941 4.522L20.037 4.47L20.129 4.418L20.217 4.366L20.3 4.314L20.379 4.262L20.453 4.211L20.523 4.159L20.588 4.108L20.648 4.058L20.704 4.008L20.755 3.958L20.778 3.933L20.801 3.909L20.822 3.885L20.842 3.86L20.861 3.836L20.879 3.812L20.896 3.789L20.911 3.765L20.925 3.742L20.938 3.719L20.95 3.696L20.96 3.673L20.97 3.651L20.978 3.629L20.984 3.606L20.99 3.585L20.994 3.563L20.998 3.542L20.999 3.521L21 3.5L20.999 3.479L20.998 3.458L20.994 3.437L20.99 3.415L20.984 3.394L20.978 3.371L20.97 3.349L20.96 3.327L20.95 3.304L20.938 3.281L20.925 3.258L20.911 3.235L20.896 3.211L20.879 3.188L20.861 3.164L20.842 3.14L20.822 3.115L20.801 3.091L20.778 3.067L20.755 3.042L20.704 2.992L20.648 2.942L20.588 2.892L20.523 2.841L20.453 2.789L20.379 2.738L20.3 2.686L20.217 2.634L20.129 2.582L20.037 2.53L19.941 2.478L19.84 2.426L19.734 2.374L19.624 2.322L19.51 2.27L19.392 2.219L19.269 2.168L19.143 2.117L19.012 2.067L18.876 2.017L18.737 1.968L18.594 1.92L18.446 1.872L18.294 1.824L18.139 1.778L17.979 1.732L17.816 1.687L17.648 1.644L17.476 1.601L17.301 1.559L17.122 1.518L16.939 1.478L16.752 1.44L16.561 1.402L16.367 1.366L16.169 1.332L15.967 1.299L15.762 1.267L15.552 1.236L15.34 1.208L15.124 1.181L14.904 1.155L14.68 1.132L14.454 1.11L14.223 1.089L13.99 1.071L13.753 1.055L13.512 1.041L13.268 1.029L13.021 1.018L12.771 1.01L12.517 1.005L12.26 1.001L12 1L11.74 1.001V1.001Z\\\" fill=\\\"currentColor\\\"/>\\n</svg>\\n\"","export default \"<svg width=\\\"77\\\" height=\\\"80\\\" viewBox=\\\"0 0 77 80\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n\\t<g>\\n\\t\\t<path d=\\\"M74.0149 38.8888C74.0149 43.5755 73.0918 48.2163 71.2983 52.5463C69.5048 56.8762 66.876 60.8105 63.562 64.1245C60.248 67.4385 56.3137 70.0673 51.9838 71.8608C47.6538 73.6543 43.013 74.5774 38.3263 74.5774C33.6396 74.5774 28.9988 73.6543 24.6689 71.8608C20.3389 70.0673 16.4046 67.4385 13.0907 64.1245C9.77666 60.8105 7.14785 56.8762 5.35433 52.5463C3.56081 48.2163 2.6377 43.5755 2.6377 38.8888C2.6377 34.2021 3.56081 29.5613 5.35433 25.2314C7.14785 20.9014 9.77666 16.9671 13.0907 13.6532C16.4046 10.3392 20.3389 7.71035 24.6689 5.91683C28.9988 4.12331 33.6396 3.2002 38.3263 3.2002C43.013 3.2002 47.6538 4.12331 51.9838 5.91683C56.3137 7.71035 60.248 10.3392 63.562 13.6532C66.876 16.9671 69.5048 20.9014 71.2983 25.2314C73.0918 29.5613 74.0149 34.2021 74.0149 38.8888V38.8888Z\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"4.98203\\\"/>\\n\\t\\t<path d=\\\"M2.69922 75.4727L75.6992 75.5154\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"4\\\"/>\\n\\t</g>\\n</svg>\\n\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<svg width=\\\"48px\\\" height=\\\"48px\\\" viewBox=\\\"0 0 48 48\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\\n <title>Icon-Resource/Compute/Res_Amazon-EC2_Instance_48</title>\\n <g id=\\\"Icon-Resource/Compute/Res_Amazon-EC2_Instance_48\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\">\\n <path d=\\\"M9,39 L39,39 L39,9 L9,9 L9,39 Z M46,13 L46,11 L41,11 L41,8 C41,7.448 40.552,7 40,7 L37,7 L37,2 L35,2 L35,7 L31,7 L31,2 L29,2 L29,7 L25,7 L25,2 L23,2 L23,7 L19,7 L19,2 L17,2 L17,7 L13,7 L13,2 L11,2 L11,7 L8,7 C7.447,7 7,7.448 7,8 L7,11 L2,11 L2,13 L7,13 L7,17 L2,17 L2,19 L7,19 L7,23 L2,23 L2,25 L7,25 L7,29 L2,29 L2,31 L7,31 L7,35 L2,35 L2,37 L7,37 L7,40 C7,40.553 7.447,41 8,41 L11,41 L11,46 L13,46 L13,41 L17,41 L17,46 L19,46 L19,41 L23,41 L23,46 L25,46 L25,41 L29,41 L29,46 L31,46 L31,41 L35,41 L35,46 L37,46 L37,41 L40,41 C40.552,41 41,40.553 41,40 L41,37 L46,37 L46,35 L41,35 L41,31 L46,31 L46,29 L41,29 L41,25 L46,25 L46,23 L41,23 L41,19 L46,19 L46,17 L41,17 L41,13 L46,13 Z\\\" id=\\\"Amazon-EC2-Instance_Resource-Icon_light-bg\\\" fill=\\\"#ED7100\\\"></path>\\n </g>\\n</svg>\\n\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<svg width=\\\"48px\\\" height=\\\"48px\\\" viewBox=\\\"0 0 48 48\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\\n <title>Icon-Resource/Security-Identity-and-Compliance/Res_AWS-Identity-Access-Management_IAM-Access-Analyzer_48</title>\\n <g id=\\\"Icon-Resource/Security-Identity-and-Compliance/Res_AWS-Identity-Access-Management_IAM-Access-Analyzer_48\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\">\\n <path d=\\\"M15,25.001 L19,25.001 L19,23.001 L15,23.001 L15,25.001 Z M4,27.001 L11,27.001 L11,20.001 L4,20.001 L4,27.001 Z M12,29.001 L3,29.001 C2.448,29.001 2,28.553 2,28.001 L2,19.001 C2,18.448 2.448,18.001 3,18.001 L12,18.001 C12.552,18.001 13,18.448 13,19.001 L13,28.001 C13,28.553 12.552,29.001 12,29.001 L12,29.001 Z M43.2,27.001 L40,21.891 L36.8,27.001 L43.2,27.001 Z M45.87,28.481 C45.696,28.799 45.362,28.998 45,29.0010017 L35,29.0010017 C34.448,29.002 33.999,28.555 33.9979861,28.003 C33.997,27.815 34.05,27.631 34.149,27.471 L39.149,19.471 C39.44,19.001 40.058,18.857 40.526,19.148 C40.658,19.229 40.769,19.34 40.851,19.471 L45.851,27.471 C46.038,27.779 46.046,28.165 45.87,28.481 L45.87,28.481 Z M43,41.001 C43,39.344 41.657,38.001 40,38.001 C38.343,38.001 37,39.344 37,41.001 C37,42.658 38.343,44.001 40,44.001 C41.657,44.001 43,42.658 43,41.001 L43,41.001 Z M45,41.001 C45.003,43.762 42.767,46.003 40.005,46.0060018 C37.625,46.008 35.573,44.333 35.101,42.001 L7,42.001 C6.448,42.001 6,41.553 6,41.001 L6,31.001 L8,31.001 L8,40.001 L35.101,40.001 C35.649,37.295 38.288,35.546 40.995,36.096 C43.327,36.569 45.003,38.621 45,41.001 L45,41.001 Z M22,25.001 L26,25.001 L26,23.001 L22,23.001 L22,25.001 Z M37,7.001 C37,8.658 38.343,10.001 40,10.001 C41.657,10.001 43,8.658 43,7.001 C43,5.344 41.657,4.001 40,4.001 C38.343,4.001 37,5.344 37,7.001 L37,7.001 Z M8,16.001 L6,16.001 L6,7.001 C6,6.448 6.448,6.001 7,6.001 L35.101,6.001 C35.652,3.295 38.294,1.55 40.999,2.102 C43.704,2.654 45.45,5.295 44.897,8.001 C44.346,10.706 41.704,12.452 38.999,11.9 C37.035,11.499 35.501,9.965 35.101,8.001 L8,8.001 L8,16.001 Z M29,25.001 L33,25.001 L33,23.001 L29,23.001 L29,25.001 Z\\\" id=\\\"AWS-Identity-and-Access-Management_AWS-IAM-Access-Analyzer_Resource-Icon_light-bg\\\" fill=\\\"#DD344C\\\"></path>\\n </g>\\n</svg>\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<svg width=\\\"48px\\\" height=\\\"48px\\\" viewBox=\\\"0 0 48 48\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\\n <title>Icon-Resource/Compute/Res_AWS-Lambda_Lambda-Function_48</title>\\n <g id=\\\"Icon-Resource/Compute/Res_AWS-Lambda_Lambda-Function_48\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\">\\n <path d=\\\"M24,44 C12.972,44 4,35.028 4,24 C4,12.972 12.972,4 24,4 C35.028,4 44,12.972 44,24 C44,35.028 35.028,44 24,44 L24,44 Z M24,2 C11.869,2 2,11.869 2,24 C2,36.131 11.869,46 24,46 C36.131,46 46,36.131 46,24 C46,11.869 36.131,2 24,2 L24,2 Z M17.231,35.25 L11.876,35.25 L18.221,21.959 L20.902,27.492 L17.231,35.25 Z M19.114,19.215 C18.946,18.87 18.597,18.651 18.214,18.651 L18.211,18.651 C17.826,18.652 17.477,18.874 17.312,19.221 L9.389,35.819 C9.24,36.129 9.262,36.493 9.445,36.783 C9.628,37.074 9.947,37.25 10.291,37.25 L17.864,37.25 C18.251,37.25 18.603,37.027 18.769,36.678 L22.915,27.915 C23.044,27.642 23.043,27.323 22.911,27.051 L19.114,19.215 Z M36.125,35.25 L30.673,35.25 L20.761,13.953 C20.597,13.601 20.243,13.375 19.854,13.375 L16.251,13.375 L16.255,9.25 L23.475,9.25 L33.339,30.545 C33.503,30.898 33.856,31.125 34.246,31.125 L36.125,31.125 L36.125,35.25 Z M37.125,29.125 L34.885,29.125 L25.021,7.83 C24.856,7.477 24.503,7.25 24.113,7.25 L15.256,7.25 C14.704,7.25 14.257,7.697 14.256,8.249 L14.25,14.374 C14.25,14.64 14.355,14.894 14.543,15.082 C14.73,15.27 14.984,15.375 15.25,15.375 L19.217,15.375 L29.129,36.672 C29.293,37.024 29.646,37.25 30.035,37.25 L37.125,37.25 C37.678,37.25 38.125,36.803 38.125,36.25 L38.125,30.125 C38.125,29.572 37.678,29.125 37.125,29.125 L37.125,29.125 Z\\\" id=\\\"Amazon-Lambda-Lambda-Function_Resource-Icon_light-bg\\\" fill=\\\"#ED7100\\\"></path>\\n </g>\\n</svg>\\n\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<svg width=\\\"48px\\\" height=\\\"48px\\\" viewBox=\\\"0 0 48 48\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\\n <title>Icon-Resource/Application-Integration/Res_Amazon-Simple-Notification-Service_Topic_48</title>\\n <g id=\\\"Icon-Resource/Application-Integration/Res_Amazon-Simple-Notification-Service_Topic_48\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\">\\n <path d=\\\"M44,38.5 L46,38.5 L46,36.5 L44,36.5 L44,38.5 Z M46,33 L46,34.5 L44,34.5 L44,34 L43.5,34 L43.5,32 L45,32 C45.553,32 46,32.447 46,33 L46,33 Z M13.5,34 L16.5,34 L16.5,32 L13.5,32 L13.5,34 Z M37.5,34 L40.5,34 L40.5,32 L37.5,32 L37.5,34 Z M19.5,34 L22.5,34 L22.5,32 L19.5,32 L19.5,34 Z M7.5,34 L10.5,34 L10.5,32 L7.5,32 L7.5,34 Z M31.5,34 L34.5,34 L34.5,32 L31.5,32 L31.5,34 Z M25.5,34 L28.5,34 L28.5,32 L25.5,32 L25.5,34 Z M3,32 L4.5,32 L4.5,34 L4,34 L4,34.5 L2,34.5 L2,33 C2,32.447 2.447,32 3,32 L3,32 Z M2,38.5 L4,38.5 L4,36.5 L2,36.5 L2,38.5 Z M4,41 L4.5,41 L4.5,43 L3,43 C2.447,43 2,42.553 2,42 L2,40.5 L4,40.5 L4,41 Z M19.5,43 L22.5,43 L22.5,41 L19.5,41 L19.5,43 Z M31.5,43 L34.5,43 L34.5,41 L31.5,41 L31.5,43 Z M37.5,43 L40.5,43 L40.5,41 L37.5,41 L37.5,43 Z M7.5,43 L10.5,43 L10.5,41 L7.5,41 L7.5,43 Z M25.5,43 L28.5,43 L28.5,41 L25.5,41 L25.5,43 Z M13.5,43 L16.5,43 L16.5,41 L13.5,41 L13.5,43 Z M44,40.5 L46,40.5 L46,42 C46,42.553 45.553,43 45,43 L43.5,43 L43.5,41 L44,41 L44,40.5 Z M44,25.5 L46,25.5 L46,23.5 L44,23.5 L44,25.5 Z M46,20 L46,21.5 L44,21.5 L44,21 L43.5,21 L43.5,19 L45,19 C45.553,19 46,19.447 46,20 L46,20 Z M31.5,21 L34.5,21 L34.5,19 L31.5,19 L31.5,21 Z M7.5,21 L10.5,21 L10.5,19 L7.5,19 L7.5,21 Z M37.5,21 L40.5,21 L40.5,19 L37.5,19 L37.5,21 Z M13.5,21 L16.5,21 L16.5,19 L13.5,19 L13.5,21 Z M19.5,21 L22.5,21 L22.5,19 L19.5,19 L19.5,21 Z M25.5,21 L28.5,21 L28.5,19 L25.5,19 L25.5,21 Z M3,19 L4.5,19 L4.5,21 L4,21 L4,21.5 L2,21.5 L2,20 C2,19.447 2.447,19 3,19 L3,19 Z M2,25.5 L4,25.5 L4,23.5 L2,23.5 L2,25.5 Z M4,28 L4.5,28 L4.5,30 L3,30 C2.447,30 2,29.553 2,29 L2,27.5 L4,27.5 L4,28 Z M19.5,30 L22.5,30 L22.5,28 L19.5,28 L19.5,30 Z M31.5,30 L34.5,30 L34.5,28 L31.5,28 L31.5,30 Z M7.5,30 L10.5,30 L10.5,28 L7.5,28 L7.5,30 Z M13.5,30 L16.5,30 L16.5,28 L13.5,28 L13.5,30 Z M37.5,30 L40.5,30 L40.5,28 L37.5,28 L37.5,30 Z M25.5,30 L28.5,30 L28.5,28 L25.5,28 L25.5,30 Z M44,27.5 L46,27.5 L46,29 C46,29.553 45.553,30 45,30 L43.5,30 L43.5,28 L44,28 L44,27.5 Z M4,15 L44,15 L44,7 L4,7 L4,15 Z M45,5 L3,5 C2.447,5 2,5.447 2,6 L2,16 C2,16.553 2.447,17 3,17 L45,17 C45.553,17 46,16.553 46,16 L46,6 C46,5.447 45.553,5 45,5 L45,5 Z\\\" id=\\\"Amazon-Simple-Notification-Service_Topic_Resource-Icon_light-bg\\\" fill=\\\"#E7157B\\\"></path>\\n </g>\\n</svg>\"","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<svg width=\\\"48px\\\" height=\\\"48px\\\" viewBox=\\\"0 0 48 48\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\\n <title>Icon-Resource/Application-Integration/Res_Amazon-Simple-Queue-Service_Queue_48</title>\\n <g id=\\\"Icon-Resource/Application-Integration/Res_Amazon-Simple-Queue-Service_Queue_48\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\">\\n <path d=\\\"M37.449,22.261 L37.449,26.221 L35.026,24.207 L37.449,22.261 Z M37.81,29.121 C37.993,29.273 38.22,29.352 38.449,29.352 C38.594,29.352 38.738,29.321 38.874,29.257 C39.224,29.092 39.449,28.74 39.449,28.352 L39.449,20.176 C39.449,19.791 39.228,19.441 38.882,19.275 C38.535,19.108 38.123,19.156 37.823,19.397 L32.819,23.414 C32.585,23.602 32.448,23.885 32.4449503,24.185 C32.442,24.486 32.575,24.771 32.806,24.963 L37.81,29.121 Z M10.527,22.307 L12.951,24.322 L10.527,26.267 L10.527,22.307 Z M9.095,29.253 C9.232,29.32 9.38,29.352 9.527,29.352 C9.751,29.352 9.972,29.277 10.153,29.132 L15.158,25.115 C15.392,24.927 15.529,24.644 15.5320497,24.344 C15.535,24.043 15.402,23.758 15.171,23.566 L10.166,19.407 C9.868,19.16 9.453,19.107 9.102,19.271 C8.752,19.436 8.527,19.788 8.527,20.176 L8.527,28.352 C8.527,28.737 8.748,29.087 9.095,29.253 L9.095,29.253 Z M28.368,34.027 L30.368,34.027 L30.368,14.747 L28.368,14.747 L28.368,34.027 Z M23.121,34.027 L25.121,34.027 L25.121,14.747 L23.121,14.747 L23.121,34.027 Z M17.711,34.027 L19.711,34.027 L19.711,14.747 L17.711,14.747 L17.711,34.027 Z M3.999,35.773 L43.977,35.773 L43.977,13.001 L3.999,13.001 L3.999,35.773 Z M44.977,11 L3,11 C2.447,11 2,11.448 2,12 L2,36.773 C2,37.325 2.447,37.773 3,37.773 L44.977,37.773 C45.53,37.773 45.977,37.325 45.977,36.773 L45.977,12 C45.977,11.448 45.53,11 44.977,11 L44.977,11 Z\\\" id=\\\"Amazon-Simple-Notification-Service_Queue\\\" fill=\\\"#E7157B\\\"></path>\\n </g>\\n</svg>\"","export default \"<svg id=\\\"a2c88306-fa03-4e5b-b192-401f0b77808b\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"18\\\" height=\\\"18\\\" viewBox=\\\"0 0 18 18\\\"><defs><linearGradient id=\\\"b403aca7-f387-4434-96b4-ae157edc835f\\\" x1=\\\"-175.993\\\" y1=\\\"-343.723\\\" x2=\\\"-175.993\\\" y2=\\\"-359.232\\\" gradientTransform=\\\"translate(212.573 370.548) scale(1.156 1.029)\\\" gradientUnits=\\\"userSpaceOnUse\\\"><stop offset=\\\"0\\\" stop-color=\\\"#fea11b\\\" /><stop offset=\\\"0.284\\\" stop-color=\\\"#fea51a\\\" /><stop offset=\\\"0.547\\\" stop-color=\\\"#feb018\\\" /><stop offset=\\\"0.8\\\" stop-color=\\\"#ffc314\\\" /><stop offset=\\\"1\\\" stop-color=\\\"#ffd70f\\\" /></linearGradient></defs><title>Icon-compute-29</title><g><path d=\\\"M2.37,7.475H3.2a.267.267,0,0,1,.267.267v6.148a.533.533,0,0,1-.533.533H2.1a0,0,0,0,1,0,0V7.741a.267.267,0,0,1,.267-.267Z\\\" transform=\\\"translate(12.507 16.705) rotate(134.919)\\\" fill=\\\"#50e6ff\\\" /><path d=\\\"M2.325,3.6h.833a.267.267,0,0,1,.267.267v6.583a0,0,0,0,1,0,0H2.591a.533.533,0,0,1-.533-.533V3.865A.267.267,0,0,1,2.325,3.6Z\\\" transform=\\\"translate(5.759 0.114) rotate(44.919)\\\" fill=\\\"#1490df\\\" /></g><g><path d=\\\"M14.53,7.475h.833a.533.533,0,0,1,.533.533v6.148a.267.267,0,0,1-.267.267H14.8a.267.267,0,0,1-.267-.267V7.475a0,0,0,0,1,0,0Z\\\" transform=\\\"translate(12.223 -7.555) rotate(45.081)\\\" fill=\\\"#50e6ff\\\" /><path d=\\\"M15.108,3.6h.833a0,0,0,0,1,0,0v6.583a.267.267,0,0,1-.267.267h-.833a.267.267,0,0,1-.267-.267V4.131a.533.533,0,0,1,.533-.533Z\\\" transform=\\\"translate(31.022 1.222) rotate(135.081)\\\" fill=\\\"#1490df\\\" /></g><path d=\\\"M8.459,9.9H4.87a.193.193,0,0,1-.2-.181.166.166,0,0,1,.018-.075L8.991,1.13a.206.206,0,0,1,.186-.106h4.245a.193.193,0,0,1,.2.181.165.165,0,0,1-.035.1L8.534,7.966h4.928a.193.193,0,0,1,.2.181.176.176,0,0,1-.052.122L5.421,16.788c-.077.046-.624.5-.356-.189h0Z\\\" fill=\\\"url(#b403aca7-f387-4434-96b4-ae157edc835f)\\\" /></svg>\"","/**\n * Inline SVG icon paths for common participant types.\n * Build from the same raw SVG assets used by the HTML renderer so source\n * icons stay identical across renderers.\n */\n\nimport ActorSvg from \"@/assets/actor.svg?raw\";\nimport BoundarySvg from \"@/assets/Robustness_Diagram_Boundary.svg?raw\";\nimport ControlSvg from \"@/assets/Robustness_Diagram_Control.svg?raw\";\nimport DatabaseSvg from \"@/assets/database.svg?raw\";\nimport EntitySvg from \"@/assets/Robustness_Diagram_Entity.svg?raw\";\nimport Ec2Svg from \"@/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Compute/Res_Amazon-EC2_Instance_48.svg?raw\";\nimport IamSvg from \"@/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Security-Identity-Compliance/Res_AWS-Identity-Access-Management_IAM-Access-Analyzer_48.svg?raw\";\nimport LambdaSvg from \"@/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Compute/Res_AWS-Lambda_Lambda-Function_48.svg?raw\";\nimport SnsSvg from \"@/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Application-Integration/Res_Amazon-Simple-Notification-Service_Topic_48.svg?raw\";\nimport SqsSvg from \"@/assets/AWS-Asset-Package_02062024/Resource-Icons_01312024/Res_Application-Integration/Res_Amazon-Simple-Queue-Service_Queue_48.svg?raw\";\nimport AzureFunctionSvg from \"@/assets/Azure_Public_Service_Icons/Icons/Compute/10029-icon-service-Function-Apps.svg?raw\";\n\nexport interface IconDefinition {\n /** ViewBox for the icon (default \"0 0 24 24\") */\n viewBox?: string;\n /** Presentation attributes from the source <svg> wrapper (e.g. fill=\"none\") */\n attributes?: string;\n /** SVG path data or full SVG content (without outer <svg> tag) */\n content: string;\n}\n\nconst PRESENTATION_ATTRIBUTES = new Set([\n \"fill\",\n \"fill-rule\",\n \"fill-opacity\",\n \"stroke\",\n \"stroke-width\",\n \"stroke-linecap\",\n \"stroke-linejoin\",\n \"stroke-miterlimit\",\n \"stroke-opacity\",\n \"clip-rule\",\n \"opacity\",\n \"color\",\n \"style\",\n \"preserveAspectRatio\",\n]);\n\nfunction parseRawSvg(raw: string): IconDefinition {\n const outer = raw.match(/<svg\\b([^>]*)>/i)?.[1];\n const viewBox = raw.match(/viewBox=\"([^\"]+)\"/i)?.[1];\n const inner = raw.match(/<svg\\b[^>]*>([\\s\\S]*?)<\\/svg>/i)?.[1]?.trim();\n if (!outer || !viewBox || !inner) {\n throw new Error(\"Invalid raw SVG asset\");\n }\n\n const attributes = Array.from(\n outer.matchAll(/([:\\w-]+)=\"([^\"]*)\"/g),\n ([, name, value]) => ({ name, value }),\n )\n .filter(({ name }) => PRESENTATION_ATTRIBUTES.has(name))\n .map(({ name, value }) => `${name}=\"${value}\"`)\n .join(\" \");\n\n return { viewBox, attributes, content: inner };\n}\n\n/**\n * Common icons for SVG renderer.\n * Icons are built from the same raw SVG assets as AsyncIcon/LazyIcons.\n */\nexport const ICONS: Record<string, IconDefinition> = {\n actor: parseRawSvg(ActorSvg),\n database: parseRawSvg(DatabaseSvg),\n ec2: parseRawSvg(Ec2Svg),\n lambda: parseRawSvg(LambdaSvg),\n azurefunction: parseRawSvg(AzureFunctionSvg),\n sqs: parseRawSvg(SqsSvg),\n sns: parseRawSvg(SnsSvg),\n iam: parseRawSvg(IamSvg),\n boundary: parseRawSvg(BoundarySvg),\n control: parseRawSvg(ControlSvg),\n entity: parseRawSvg(EntitySvg),\n};\n\n/**\n * Get icon definition for a participant type.\n * Returns undefined if icon not available (will fall back to text label).\n */\nexport function getIcon(type: string | undefined): IconDefinition | undefined {\n if (!type) return undefined;\n const key = type.toLowerCase();\n return ICONS[key];\n}\n","/**\n * Shared SVG rendering utilities for XML-safe string escaping\n * and CSS-to-SVG style conversion.\n */\n\nexport function esc(s: string): string {\n return s\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\");\n}\n\nexport function styleToAttr(style: Record<string, string>): string {\n return Object.entries(style)\n .map(([k, v]) => `${esc(k)}: ${esc(v)}`)\n .join(\"; \");\n}\n","import { getEmojiUnicode } from \"@/emoji/resolveEmoji\";\nimport type { ParticipantGeometry } from \"../geometry\";\nimport { getIcon } from \"../icons\";\nimport { PARTICIPANT_EMOJI_WIDTH } from \"../svgConstants\";\nimport { esc } from \"./svgUtils\";\n\n/**\n * Stroke inset for SVG border-box emulation.\n * CSS border-box keeps the border INSIDE the element's width/height.\n * SVG centered stroke extends half the stroke width OUTSIDE the rect.\n * Inset the rect by half the stroke width on each side so the outer\n * stroke edge aligns with the CSS border outer edge.\n */\nconst STROKE_WIDTH = 2;\nconst HALF_STROKE = STROKE_WIDTH / 2; // 1px inset\nconst ICON_SIZE = 24;\nconst ICON_MARGIN_RIGHT = 4;\nconst ICON_PAINT_OFFSET_X = 4;\nconst LABEL_PAD_LEFT = 8;\nconst LABEL_HORIZONTAL_PADDING = 16;\nconst STEREOTYPE_VERTICAL_OFFSET = 8;\nconst STEREOTYPE_FONT_SIZE = 16;\nconst BOUNDARY_ICON_VERTICAL_TWEAK = 2.75;\nconst PARTICIPANT_TEXT_FILL = \"#222\";\n\nexport function renderParticipant(p: ParticipantGeometry): string {\n if (p.isStarter) return renderStarterParticipant(p);\n\n // rx=3 so that with stroke-width:2 centered, outer visible radius is 3+1=4, matching CSS border-radius:4\n const rx = 3;\n const x = p.x - p.width / 2 + HALF_STROKE;\n const rectY = p.y + HALF_STROKE;\n const rectW = p.width - STROKE_WIDTH;\n const rectH = p.height - STROKE_WIDTH;\n\n const EMOJI_FONT_ATTRS = `font-family=\"'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji','Twemoji Mozilla',sans-serif\"`;\n\n // Icon positioning (if present)\n const icon = getIcon(p.type);\n let iconSvg = \"\";\n let emojiIconSvg = \"\";\n let textX = p.x;\n let textAnchor: \"start\" | \"middle\" = \"middle\";\n\n const textY = p.y + p.height / 2 - 0.25;\n const labelY = p.stereotype ? textY + STEREOTYPE_VERTICAL_OFFSET : textY;\n\n if (icon) {\n const textWidth = p.labelWidth ?? 0;\n // HTML centers the whole icon+label row. The label glyphs sit inside a span\n // with 8px left/right inline padding, so SVG needs to place text from the\n // padded glyph origin rather than the visual center of the participant box.\n // When both a type icon and emoji are present, the emoji tspan is rendered\n // inside the <text> element but textWidth only covers the plain label.\n // Add PARTICIPANT_EMOJI_WIDTH to account for the emoji glyph + space.\n const emojiExtra = p.emoji ? PARTICIPANT_EMOJI_WIDTH : 0;\n const groupWidth = ICON_SIZE + ICON_MARGIN_RIGHT + LABEL_HORIZONTAL_PADDING + textWidth + emojiExtra;\n const groupX = p.x - groupWidth / 2;\n const iconX = groupX + ICON_PAINT_OFFSET_X;\n const iconType = p.type?.toLowerCase();\n const iconY = p.y + (p.height - ICON_SIZE) / 2 + (iconType === \"boundary\" ? BOUNDARY_ICON_VERTICAL_TWEAK : 0);\n if (p.emoji) {\n // When both type icon and emoji are present, render the emoji as a separate\n // <text> element (like emoji-only participants) positioned immediately after\n // the type icon. The label text starts after the emoji + gap.\n // HTML layout: [4px iconOffset][icon 24px][4px iconMargin][emoji 16px][4px mr-1 margin][4px px-1 padding][labelText]\n const emojiTextX = iconX + ICON_SIZE + ICON_MARGIN_RIGHT;\n textX = emojiTextX + PARTICIPANT_EMOJI_WIDTH + 4;\n emojiIconSvg = `<text x=\"${emojiTextX}\" y=\"${labelY}\" dominant-baseline=\"central\" ${EMOJI_FONT_ATTRS} class=\"participant-emoji\">${esc(getEmojiUnicode(p.emoji))}</text>`;\n } else {\n textX = groupX + ICON_SIZE + ICON_MARGIN_RIGHT + LABEL_PAD_LEFT;\n }\n textAnchor = \"start\";\n\n const [, , vbW, vbH] = (icon.viewBox || \"0 0 24 24\").split(\" \").map(Number);\n const scale = ICON_SIZE / Math.max(vbW, vbH);\n const iconAttrs = icon.attributes ? ` ${icon.attributes}` : \"\";\n\n iconSvg = `<g class=\"participant-icon\" transform=\"translate(${iconX}, ${iconY}) scale(${scale})\"${iconAttrs}>\n ${icon.content}\n </g>`;\n } else if (p.emoji) {\n // Emoji-only participant (no SVG type icon): render emoji as a separate text element\n // positioned to the left of the label, matching HTML's flex row layout.\n // HTML layout: [emoji:16px][gap:4px][leftpad:4px][labelText][rightpad:4px]\n // PARTICIPANT_EMOJI_WIDTH (20) covers emoji(16) + gap(4).\n // When a stereotype is present, the inner column width = max(emojiRowWidth, stereotypeGlyphWidth).\n // The entire inner column is centered at p.x: emojiX = p.x - innerColWidth/2.\n const textWidth = p.labelWidth ?? 0;\n const groupWidth = PARTICIPANT_EMOJI_WIDTH + 8 + textWidth; // 8 = leftpad(4) + rightpad(4)\n const innerColWidth = Math.max(groupWidth, p.stereotypeWidth ?? 0);\n const groupX = p.x - innerColWidth / 2;\n const emojiTextX = groupX;\n textX = groupX + PARTICIPANT_EMOJI_WIDTH + 4; // after emoji(16)+gap(4)=20, then leftpad(4)\n textAnchor = \"start\";\n\n emojiIconSvg = `<text x=\"${emojiTextX}\" y=\"${labelY}\" dominant-baseline=\"central\" ${EMOJI_FONT_ATTRS} class=\"participant-emoji\">${esc(getEmojiUnicode(p.emoji))}</text>`;\n }\n\n // Match the current HTML renderer: stereotypes inherit the same 16px text styling\n // and theme-default participant text color rather than SVG-side contrast heuristics.\n let stereotypeSvg = \"\";\n if (p.stereotype) {\n // Stereotype is always centered over the full participant box (text-anchor=\"middle\").\n // When a type icon is present, center over the label portion only.\n // When no icon (plain or emoji-only), center at p.x (participant center).\n const stereoX = icon && p.labelWidth != null\n ? textX + p.labelWidth / 2\n : p.x;\n const stereoAnchor = \"middle\";\n const stereoY = textY - STEREOTYPE_VERTICAL_OFFSET;\n stereotypeSvg = `<text x=\"${stereoX}\" y=\"${stereoY}\" text-anchor=\"${stereoAnchor}\" dominant-baseline=\"central\" class=\"stereotype-label\" font-size=\"${STEREOTYPE_FONT_SIZE}\"${participantTextStyle()}>${esc(\"«\" + p.stereotype + \"»\")}</text>`;\n }\n\n // Aliased labels (e.g. \"b:B\") — use textLength to pin the text extent to the\n // measured glyph width. HTML renders the label at natural glyph width with CSS\n // padding around it (not between characters). Setting textLength = glyphWidth\n // ensures SVG matches the HTML glyph rendering without artificial stretching.\n const useTextLength = p.labelWidth != null && p.name.includes(\":\");\n const textLengthAttr = useTextLength\n ? ` textLength=\"${p.labelWidth}\" lengthAdjust=\"spacing\"`\n : \"\";\n\n const { fillStyle, textStyle } = colorAttrs(p.color);\n\n // When emoji is rendered as a separate <text> element (either emoji-only or icon+emoji),\n // do not include it as a tspan inside the label text element.\n const emojiTspan = \"\";\n\n return `<g class=\"participant\" data-participant=\"${esc(p.name)}\">\n <rect x=\"${x}\" y=\"${rectY}\" width=\"${rectW}\" height=\"${rectH}\" rx=\"${rx}\" class=\"participant-box\"${fillStyle}/>\n ${iconSvg}\n ${emojiIconSvg}\n ${stereotypeSvg}\n <text x=\"${textX}\" y=\"${labelY}\" text-anchor=\"${textAnchor}\" dominant-baseline=\"central\" class=\"participant-label\"${textLengthAttr}${textStyle}>${emojiTspan}${esc(p.label)}</text>\n</g>`;\n}\n\nexport function renderParticipantBottom(p: ParticipantGeometry, bottomY: number): string {\n if (!p.showBottom || p.isStarter) return \"\";\n const rx = 3;\n const x = p.x - p.width / 2 + HALF_STROKE;\n const rectY = bottomY + HALF_STROKE;\n const rectW = p.width - STROKE_WIDTH;\n const rectH = p.height - STROKE_WIDTH;\n const textY = bottomY + p.height / 2 - 0.25;\n\n const useTextLength = p.labelWidth != null && p.name.includes(\":\");\n const textLengthAttr = useTextLength\n ? ` textLength=\"${p.labelWidth}\" lengthAdjust=\"spacing\"`\n : \"\";\n\n const { fillStyle, textStyle } = colorAttrs(p.color);\n\n const EMOJI_FONT_ATTRS = `font-family=\"'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji','Twemoji Mozilla',sans-serif\"`;\n const icon = getIcon(p.type);\n\n // Emoji-only bottom participant: render emoji as separate element, same as top box.\n // Apply same inner-column centering as top box: innerColWidth = max(emojiRowWidth, stereotypeGlyphWidth).\n if (p.emoji && !icon) {\n const textWidth = p.labelWidth ?? 0;\n const groupWidth = PARTICIPANT_EMOJI_WIDTH + 8 + textWidth;\n const innerColWidth = Math.max(groupWidth, p.stereotypeWidth ?? 0);\n const groupX = p.x - innerColWidth / 2;\n const emojiTextX = groupX;\n const textX = groupX + PARTICIPANT_EMOJI_WIDTH + 4;\n const emojiIconSvg = `<text x=\"${emojiTextX}\" y=\"${textY}\" dominant-baseline=\"central\" ${EMOJI_FONT_ATTRS} class=\"participant-emoji\">${esc(getEmojiUnicode(p.emoji))}</text>`;\n return `<g class=\"participant participant-bottom\" data-participant=\"${esc(p.name)}\">\n <rect x=\"${x}\" y=\"${rectY}\" width=\"${rectW}\" height=\"${rectH}\" rx=\"${rx}\" class=\"participant-box\"${fillStyle}/>\n ${emojiIconSvg}\n <text x=\"${textX}\" y=\"${textY}\" text-anchor=\"start\" dominant-baseline=\"central\" class=\"participant-label\"${textLengthAttr}${textStyle}>${esc(p.label)}</text>\n</g>`;\n }\n\n // Icon+emoji case: render emoji as a separate element, same as top box\n if (p.emoji && icon) {\n const textWidth = p.labelWidth ?? 0;\n const emojiExtra = PARTICIPANT_EMOJI_WIDTH;\n const groupWidth = ICON_SIZE + ICON_MARGIN_RIGHT + LABEL_HORIZONTAL_PADDING + textWidth + emojiExtra;\n const groupX = p.x - groupWidth / 2;\n const iconX = groupX + ICON_PAINT_OFFSET_X;\n const emojiTextX = iconX + ICON_SIZE + ICON_MARGIN_RIGHT;\n const textX = emojiTextX + PARTICIPANT_EMOJI_WIDTH + 4;\n const emojiIconSvg = `<text x=\"${emojiTextX}\" y=\"${textY}\" dominant-baseline=\"central\" ${EMOJI_FONT_ATTRS} class=\"participant-emoji\">${esc(getEmojiUnicode(p.emoji))}</text>`;\n return `<g class=\"participant participant-bottom\" data-participant=\"${esc(p.name)}\">\n <rect x=\"${x}\" y=\"${rectY}\" width=\"${rectW}\" height=\"${rectH}\" rx=\"${rx}\" class=\"participant-box\"${fillStyle}/>\n ${emojiIconSvg}\n <text x=\"${textX}\" y=\"${textY}\" text-anchor=\"start\" dominant-baseline=\"central\" class=\"participant-label\"${textLengthAttr}${textStyle}>${esc(p.label)}</text>\n</g>`;\n }\n\n return `<g class=\"participant participant-bottom\" data-participant=\"${esc(p.name)}\">\n <rect x=\"${x}\" y=\"${rectY}\" width=\"${rectW}\" height=\"${rectH}\" rx=\"${rx}\" class=\"participant-box\"${fillStyle}/>\n <text x=\"${p.x}\" y=\"${textY}\" text-anchor=\"middle\" dominant-baseline=\"central\" class=\"participant-label\"${textLengthAttr}${textStyle}>${esc(p.label)}</text>\n</g>`;\n}\n\nfunction renderStarterParticipant(p: ParticipantGeometry): string {\n const icon = getIcon(\"actor\");\n if (!icon) {\n return \"\";\n }\n\n const rx = 3;\n const boxX = p.x - p.width / 2 + HALF_STROKE;\n const rectY = p.y + HALF_STROKE;\n const rectW = p.width - STROKE_WIDTH;\n const rectH = p.height - STROKE_WIDTH;\n\n // HTML renderer places icon 2px left of box center due to CSS box-model padding.\n const iconX = p.x - ICON_SIZE / 2 - 2;\n const iconY = p.y + (p.height - ICON_SIZE) / 2;\n const [, , vbW, vbH] = (icon.viewBox || \"0 0 24 24\").split(\" \").map(Number);\n const scale = ICON_SIZE / Math.max(vbW, vbH);\n const iconAttrs = icon.attributes ? ` ${icon.attributes}` : \"\";\n\n return `<g class=\"participant participant-starter\" data-participant=\"${esc(p.name)}\">\n <rect x=\"${boxX}\" y=\"${rectY}\" width=\"${rectW}\" height=\"${rectH}\" rx=\"${rx}\" class=\"participant-box\"/>\n <g class=\"participant-icon\" transform=\"translate(${iconX}, ${iconY}) scale(${scale})\"${iconAttrs}>\n ${icon.content}\n </g>\n</g>`;\n}\n\n/**\n * Normalize a color string to a # prefixed hex value.\n * Parser may provide \"FFEBE6\" or \"#FFEBE6\".\n */\nfunction normalizeHexColor(color: string): string {\n const c = color.startsWith(\"#\") ? color : `#${color}`;\n return c;\n}\n\n/**\n * Build fill and text-color style attributes for a participant with a background color.\n */\nfunction colorAttrs(color: string | undefined): { fillStyle: string; textStyle: string } {\n if (!color) {\n return { fillStyle: \"\", textStyle: \"\" };\n }\n const hex = normalizeHexColor(color);\n return {\n fillStyle: ` style=\"fill:${hex};\"`,\n textStyle: participantTextStyle(),\n };\n}\n\nfunction participantTextStyle(): string {\n return ` style=\"fill:${PARTICIPANT_TEXT_FILL};\"`;\n}\n\n","import type { LifelineGeometry } from \"../geometry\";\n\nexport function renderLifeline(l: LifelineGeometry): string {\n // Use x+0.5 to align 1px stroke to pixel grid (avoids anti-aliased 2px blur)\n const x = l.x + 0.5;\n return `<line x1=\"${x}\" y1=\"${l.topY}\" x2=\"${x}\" y2=\"${l.bottomY}\" class=\"lifeline\" stroke-dasharray=\"${l.dashed ? \"5,5\" : \"none\"}\" stroke-dashoffset=\"${l.dashed ? \"5\" : \"0\"}\" shape-rendering=\"crispEdges\"/>`;\n}\n","import type { MessageGeometry, SelfCallGeometry } from \"../geometry\";\nimport { esc, styleToAttr } from \"./svgUtils\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\n\nexport function renderMessage(m: MessageGeometry): string {\n // HTML arrow SVG container spans from left_lifeline_center+1 to right_lifeline_center.\n // Left endpoint = center+1 (right edge of 2px lifeline), right endpoint = center.\n const isLTR = m.fromX < m.toX;\n const fromX = isLTR ? m.fromX + 1 : m.fromX;\n const toX = isLTR ? m.toX : m.toX + 1;\n\n // HTML centers the label between source lifeline and arrowhead tip.\n // The arrowhead is 7px wide, so CSS centering excludes half the arrowhead (3.5px),\n // shifting the label center toward the source. +0.5 for lifeline width averaging.\n const direction = Math.sign(m.toX - m.fromX);\n const labelX = (m.fromX + m.toX) / 2 - direction * 3.5 + 0.5;\n const labelY = m.y - 3.5;\n\n const dashAttr = m.arrowStyle === \"dashed\" ? ' stroke-dasharray=\"6,4\"' : \"\";\n const styleAttr = m.style ? ` style=\"${styleToAttr(m.style)}\"` : \"\";\n\n // Sequence number: positioned to the LEFT of the message with 4px gap (matching HTML pr-1).\n const numberX = Math.min(fromX, toX) - 4;\n const numberSvg = m.number\n ? `<text x=\"${numberX}\" y=\"${labelY}\" text-anchor=\"end\" class=\"seq-number\">${esc(m.number)}</text>`\n : \"\";\n\n const lineY = m.y - 0.5;\n return `<g class=\"message\">\n <line x1=\"${fromX}\" y1=\"${lineY}\" x2=\"${toX}\" y2=\"${lineY}\" class=\"message-line\"${dashAttr}/>\n ${renderArrowHead(toX, lineY, m.isReverse, m.arrowStyle)}\n <text x=\"${labelX}\" y=\"${labelY}\" text-anchor=\"middle\" class=\"message-label\"${styleAttr}>${esc(resolveEmojiInText(m.label))}</text>\n ${numberSvg}\n</g>`;\n}\n\nexport function renderSelfCall(s: SelfCallGeometry): string {\n const x1 = s.x;\n // HTML SelfInvocation layout (flex-col): label on top, SVG arrow below.\n // s.y = coord.top = top of the self-invocation element.\n // Label: sync self calls sit 1px lower than async in the DOM.\n const isAsync = s.arrowStyle === \"open\";\n const labelX = x1 + 6;\n const labelY = s.y + (isAsync ? 15 : 12);\n\n // Sequence number: positioned to the left of the self-call origin.\n // HTML positions the number at the container top (flush), while the label is 2px below.\n // For async, labelY = s.y + 15, but number should be at s.y + 11 (4px higher).\n // For sync, labelY = s.y + 11, number at same Y (both flush with container).\n const numberY = s.y + 12;\n const numberSvg = s.number\n ? `<text x=\"${x1 - 3}\" y=\"${numberY}\" text-anchor=\"end\" class=\"seq-number\">${esc(s.number)}</text>`\n : \"\";\n\n // Reuse the exact same SVG structure as the HTML SelfInvocation component:\n // <svg width=\"30\" height=\"24\">\n // <path d=\"M0,2 L26,2 Q28,2 28,4 L28,13 Q28,15 26,15 L{1|14},15\"/>\n // <g transform=\"translate({0|7}, 10)\"><ArrowHead {open|fill} rtl/></g>\n // </svg>\n // Position: +1px right of s.x (matching HTML CSS border offset).\n // Browser-native screenshots show sync self-call arrows need to sit 2px lower\n // than the previous SVG placement, while async self-call arrows already match.\n const svgX = x1 + 1;\n const svgY = s.y + (isAsync ? 20 : 14);\n\n // Async: open arrowhead at left edge (L1,15, translate(0,10), fill=none, no Z)\n // Sync: filled arrowhead at midpoint (L14,15, translate(7,10), fill=#000, Z)\n const pathEnd = isAsync ? \"L1,15\" : \"L14,15\";\n const arrowTx = isAsync ? 0 : 7;\n const arrowFill = isAsync ? \"none\" : \"#000\";\n const arrowPath = isAsync\n ? 'M1 1.25 L6.15 4.5 L1 7.75'\n : 'M1 1.25 L6.15 4.5 L1 7.75 Z';\n\n return `<g class=\"message self-call\">\n <svg x=\"${svgX}\" y=\"${svgY}\" width=\"30\" height=\"24\">\n <path d=\"M0,2 L26,2 Q28,2 28,4 L28,13 Q28,15 26,15 ${pathEnd}\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\"/>\n <g transform=\"translate(${arrowTx}, 10)\">\n <svg height=\"10\" width=\"7\" viewBox=\"0 0 7 9\">\n <g transform=\"scale(-1, 1) translate(-7, 0)\">\n <path d=\"${arrowPath}\" stroke=\"#000\" stroke-linecap=\"round\" fill=\"${arrowFill}\" stroke-width=\"2\"/>\n </g>\n </svg>\n </g>\n </svg>\n <text x=\"${labelX}\" y=\"${labelY}\" text-anchor=\"start\" class=\"message-label\"${s.style ? ` style=\"${styleToAttr(s.style)}\"` : \"\"}>${esc(resolveEmojiInText(s.label.trim()))}</text>\n ${numberSvg}\n</g>`;\n}\n\n/**\n * Renders an arrowhead using the exact same structure as HTML's ArrowHead.tsx:\n * <svg width=\"7\" height=\"10\" viewBox=\"0 0 7 9\"> with path M1,1.25 L6.15,4.5 L1,7.75\n * RTL uses scale(-1,1) translate(-7,0) to mirror.\n *\n * The viewBox 7x9 → display 7x10 creates a slight vertical stretch (10/9)\n * that matches HTML's rendering. The tip is at viewBox (6.15, 4.5).\n */\nfunction renderArrowHead(\n tipX: number,\n tipY: number,\n pointsLeft: boolean,\n style: string,\n): string {\n const isFilled = style !== \"open\" && style !== \"dashed\";\n const pathD = isFilled\n ? \"M1 1.25 L6.15 4.5 L1 7.75 Z\"\n : \"M1 1.25 L6.15 4.5 L1 7.75\";\n const fillAttr = isFilled ? \"#000\" : \"none\";\n\n // Match the HTML renderer's placement exactly: the 7x10 arrowhead SVG is\n // anchored flush to the message edge, and the path sits inside that box.\n // Aligning the mathematical tip directly makes the native SVG paint about\n // 0.85px too far outward on both LTR and RTL arrows.\n const svgX = pointsLeft ? tipX : tipX - 7;\n const svgY = tipY - 5;\n const rtlTransform = pointsLeft ? ' transform=\"scale(-1, 1) translate(-7, 0)\"' : \"\";\n\n return `<svg x=\"${svgX}\" y=\"${svgY}\" width=\"7\" height=\"10\" viewBox=\"0 0 7 9\" overflow=\"visible\" class=\"arrow-head${isFilled ? \"\" : \" arrow-open\"}\">\n <g${rtlTransform}>\n <path d=\"${pathD}\" stroke=\"#000\" stroke-linecap=\"round\" stroke-width=\"2\" fill=\"${fillAttr}\"/>\n </g>\n </svg>`;\n}\n\n","import type { OccurrenceGeometry } from \"../geometry\";\nimport { esc } from \"./svgUtils\";\n\nexport function renderOccurrence(o: OccurrenceGeometry): string {\n // SVG stroke is centered on the rect boundary (1px inside, 1px outside).\n // HTML uses border-box with border-2 (fully inside the 15px element).\n // Inset rect by 1px so the stroke stays within the same visual footprint.\n const strokeHalf = 1; // half of stroke-width: 2\n const rx = o.x + strokeHalf;\n return `<rect x=\"${rx}\" y=\"${o.y + strokeHalf}\" width=\"${o.width - strokeHalf * 2}\" height=\"${o.height - strokeHalf * 2}\" rx=\"1\" class=\"occurrence\" data-participant=\"${esc(o.participantName)}\"/>`;\n}\n\n","import type { FragmentGeometry } from \"../geometry\";\nimport { esc } from \"./svgUtils\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\n\nconst HEADER_HEIGHT = 25;\nconst BRACKET_WIDTH = 3.89;\nconst TEXT_PAD_X = 4;\n\n/**\n * Stroke inset for SVG border-box emulation.\n * CSS border-box keeps the border INSIDE the element's width/height.\n * SVG centered stroke extends half the stroke width OUTSIDE the rect.\n * Inset the rect by half the stroke width on each side so the outer\n * stroke edge aligns with the CSS border outer edge.\n */\nconst STROKE_WIDTH = 1;\nconst HALF_STROKE = STROKE_WIDTH / 2; // 0.5px inset\n\nexport function renderFragment(f: FragmentGeometry): string {\n const parts: string[] = [];\n\n // Fragment border rect — inset by half stroke width so outer stroke\n // edge matches CSS border-box model (border inside the bounding box)\n parts.push(\n `<rect x=\"${f.x + HALF_STROKE}\" y=\"${f.y + HALF_STROKE}\" width=\"${f.width - STROKE_WIDTH}\" height=\"${f.height - STROKE_WIDTH}\" rx=\"4\" class=\"fragment-border\"/>`,\n );\n\n // Full-width header bar (matches HTML's bg-skin-fragment-header)\n // 1px inside the border on all sides, offset by any comment height\n const headerX = f.x + 1;\n const headerY = f.headerY;\n const headerW = f.width - 2;\n parts.push(\n `<rect x=\"${headerX}\" y=\"${headerY}\" width=\"${headerW}\" height=\"${HEADER_HEIGHT}\" class=\"fragment-header\"/>`,\n );\n\n\n // Kind-specific icon inside the header bar\n // Each fragment type uses its own icon matching the HTML/React renderer\n const iconX = headerX + 4;\n const iconY = headerY;\n parts.push(getFragmentIcon(f.kind, iconX, iconY));\n\n const kindLabel = getKindLabel(f.kind);\n const labelX = headerX + 26; // after the diamond icon\n parts.push(\n `<text x=\"${labelX}\" y=\"${headerY + HEADER_HEIGHT / 2 - 0.5}\" dominant-baseline=\"central\" class=\"fragment-label\">${esc(kindLabel)}</text>`,\n );\n\n // Sequence number: positioned to the left of the fragment with 4px gap (matching HTML pr-1)\n if (f.number) {\n parts.push(\n `<text x=\"${f.x - 3}\" y=\"${headerY + HEADER_HEIGHT / 2 - 4.5}\" text-anchor=\"end\" dominant-baseline=\"central\" class=\"seq-number\">${esc(f.number)}</text>`,\n );\n }\n\n // Condition label below the header (matches HTML's text-skin-fragment div)\n // HTML: .text-skin-fragment div top = headerBottom, span.condition top = headerBottom + 2 (padding)\n // SVG dominant-baseline=\"hanging\" puts text top ~2.6px above y → need y = htmlTextTop + 2.6\n if (f.label) {\n const condY = headerY + HEADER_HEIGHT + 15;\n parts.push(renderBracketedLabel(headerX, condY, f.label, f.labelWidth, \"fragment-condition\"));\n }\n\n // Section separator lines and labels (for multi-section fragments like alt, tcf)\n if (f.sections.length > 1) {\n for (let i = 1; i < f.sections.length; i++) {\n const section = f.sections[i];\n const lineY = section.y;\n const separatorY = lineY + HALF_STROKE;\n // Separator line (inset for par content areas, full width for alt/tcf)\n const sepX1 = f.x + 1 + (section.contentInsetLeft ?? 0);\n const sepX2 = f.x + f.width - 1;\n parts.push(\n `<line x1=\"${sepX1}\" y1=\"${separatorY}\" x2=\"${sepX2}\" y2=\"${separatorY}\" class=\"fragment-separator\"/>`,\n );\n // Section label — split into keyword + condition (e.g. \"catch\" + \"error\") as separate elements\n // Both catch and finally have a semi-transparent white background (bg-skin-frame opacity-65)\n if (section.label) {\n const labelY = lineY + 16;\n const isFinally = section.label.startsWith(\"finally\");\n const isBracketed = !!section.innerLabel && section.label !== \"[else]\";\n if (isBracketed) {\n const labelX = f.x + 1;\n parts.push(\n renderBracketedLabel(labelX, labelY, section.innerLabel!, section.innerLabelWidth, \"fragment-section-label\"),\n );\n continue;\n }\n // Split \"catch error\" → [\"catch\", \"error\"], \"else [cond]\" → [\"else\", \"[cond]\"], \"finally\" → [\"finally\"]\n const spaceIdx = section.label.indexOf(\" \");\n if (spaceIdx > 0 && !isFinally) {\n const keyword = section.keyword || section.label.substring(0, spaceIdx);\n const condition = section.detail || section.label.substring(spaceIdx + 1);\n const keywordWidth = section.keywordWidth ?? keyword.length * 7;\n const keywordX = f.x + 5;\n const conditionX = keywordX + keywordWidth + TEXT_PAD_X * 2;\n // Group with opacity 0.65 matches HTML parent opacity (affects both bg and text together)\n const bgWidth = (section.keywordWidth ?? keyword.length * 7) + (section.detailWidth ?? condition.length * 7) + TEXT_PAD_X * 4;\n parts.push(\n `<g opacity=\"0.65\">` +\n `<rect x=\"${keywordX - TEXT_PAD_X}\" y=\"${lineY + 1}\" width=\"${bgWidth}\" height=\"20\" fill=\"#fff\"/>` +\n `<text x=\"${keywordX}\" y=\"${labelY}\" class=\"fragment-section-label\" fill=\"#222\">${esc(keyword)}</text>` +\n `<text x=\"${conditionX}\" y=\"${labelY}\" class=\"fragment-section-label\" fill=\"#222\">${esc(condition)}</text>` +\n `</g>`,\n );\n } else {\n const finallyX = f.x + 5;\n const finallyY = labelY;\n if (section.label === \"[else]\") {\n parts.push(\n `<text x=\"${finallyX}\" y=\"${finallyY}\" class=\"fragment-section-label\">${esc(section.label)}</text>`,\n );\n continue;\n }\n const bgWidth = (section.labelWidth ?? section.label.length * 7) + TEXT_PAD_X * 2;\n const bgY = lineY + 1;\n const bgHeight = 20;\n parts.push(\n `<g opacity=\"0.65\">` +\n `<rect x=\"${finallyX - TEXT_PAD_X}\" y=\"${bgY}\" width=\"${bgWidth}\" height=\"${bgHeight}\" fill=\"#fff\"/>` +\n `<text x=\"${finallyX}\" y=\"${finallyY}\" class=\"fragment-section-label\">${esc(section.label)}</text>` +\n `</g>`,\n );\n }\n }\n }\n }\n\n return `<g class=\"fragment fragment-${f.kind}\">\\n ${parts.join(\"\\n \")}\\n</g>`;\n}\n\nfunction renderBracketedLabel(x: number, y: number, innerText: string, innerWidth?: number, cls: string = \"fragment-condition\"): string {\n const measuredInnerWidth = innerWidth ?? innerText.length * 7;\n const innerX = x + BRACKET_WIDTH + TEXT_PAD_X;\n const closeX = innerX + measuredInnerWidth + TEXT_PAD_X;\n return (\n `<g>` +\n `<text x=\"${x}\" y=\"${y}\" class=\"${cls}\">[</text>` +\n `<text x=\"${innerX}\" y=\"${y}\" class=\"${cls}\" opacity=\"0.65\">${esc(resolveEmojiInText(innerText))}</text>` +\n `<text x=\"${closeX}\" y=\"${y}\" class=\"${cls}\">]</text>` +\n `</g>`\n );\n}\n\nfunction getKindLabel(kind: string): string {\n switch (kind) {\n case \"alt\": return \"Alt\";\n case \"loop\": return \"Loop\";\n case \"opt\": return \"Opt\";\n case \"par\": return \"Par\";\n case \"critical\": return \"Critical\";\n case \"section\": return \"Section\";\n case \"tcf\": return \"Try\";\n case \"ref\": return \"Ref\";\n default: return kind.charAt(0).toUpperCase() + kind.slice(1);\n }\n}\n\nfunction getFragmentIcon(kind: string, x: number, y: number): string {\n // Icons match src/components/Icon/icons/*-fragment.svg from the HTML renderer\n const w = 20;\n const h = 24;\n switch (kind) {\n case \"loop\":\n return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 1024 1024\" fill=\"#000\" stroke=\"none\">\n <path d=\"M960 101.84l-896.002.002c-35.344 0-64 28.656-64 64v576c0 35.36 28.656 64 64 64h160c20.496 0 32-26.32 32-31.984v-.016c0-5.824-10.88-32.416-32-32.416h-120.96c-21.376 0-38.72-17.344-38.72-38.72V206.002c0-21.391 17.328-38.72 38.72-38.72l818.272-1.007c21.376 0 38.72 17.328 38.72 38.72V702.69c0 21.376-17.344 38.72-38.72 38.72H518.142l75.984-68.912c9.344-8.944 12.369-23.408 3.025-32.336l-5.472-8.064c-9.376-8.945-24.496-8.945-33.84 0L428.111 750.53c-.192.16-.368.224-.528.368l-8.48 8.096c-4.672 4.431-7.008 10.335-6.976 16.223-.032 5.904 2.288 11.777 6.977 16.288l8.48 8.096c.16.16.368.192.528.336L555.84 915.44c9.344 8.944 24.464 8.944 33.84 0l5.472-8.065c9.344-8.944 6.32-23.44-3.025-32.368l-77.135-69.168H960c35.343 0 64-28.64 64-64v-576c0-35.344-28.657-64-64-64z\"/>\n </svg>`;\n case \"opt\":\n return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"7\" stroke=\"#000\" stroke-width=\"1.5\" stroke-dasharray=\"3 2\" stroke-linecap=\"round\"/>\n </svg>`;\n case \"par\":\n return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M5 10H19\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5 14H19\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>`;\n case \"critical\":\n return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M12 5L19 12L12 19L5 12L12 5Z\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12 9V13\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12 15V15.5\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>`;\n case \"tcf\":\n return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 76 76\" fill=\"#000\" stroke=\"none\">\n <path d=\"M 26,22.0001L 27,21.9998L 27,27L 26.0001,27.0003C 23.2386,27.0003 21.0001,29.2389 21.0001,32.0003L 21,46.0002C 21,48.7616 23.2386,51.0002 25.9999,51.0002L 27,51.0002L 27,47L 33.75,53.5L 27,60L 27,56L 26,56C 20.4771,56 16,51.5229 16,46L 16,32.0001C 16,26.4773 20.4771,22.0001 26,22.0001 Z M 33,27L 59,27L 59,32L 33,32L 33,27 Z M 36,35L 59,35L 59,40L 36,40L 36,35 Z M 33,43L 59,43L 59,48L 33,48L 33,43 Z\"/>\n </svg>`;\n case \"ref\":\n return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M10 6H18C19.1046 6 20 6.89543 20 8V16C20 17.1046 19.1046 18 18 18H10\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M10 6L6 12L10 18\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>`;\n case \"section\":\n return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 15 15\" fill=\"#000\" stroke=\"none\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2 1.5C2 1.77614 1.77614 2 1.5 2C1.22386 2 1 1.77614 1 1.5C1 1.22386 1.22386 1 1.5 1C1.77614 1 2 1.22386 2 1.5ZM2 5L2 10H13V5H2ZM2 4C1.44772 4 1 4.44772 1 5V10C1 10.5523 1.44772 11 2 11H13C13.5523 11 14 10.5523 14 10V5C14 4.44772 13.5523 4 13 4H2ZM1.5 14C1.77614 14 2 13.7761 2 13.5C2 13.2239 1.77614 13 1.5 13C1.22386 13 1 13.2239 1 13.5C1 13.7761 1.22386 14 1.5 14ZM4 1.5C4 1.77614 3.77614 2 3.5 2C3.22386 2 3 1.77614 3 1.5C3 1.22386 3.22386 1 3.5 1C3.77614 1 4 1.22386 4 1.5ZM3.5 14C3.77614 14 4 13.7761 4 13.5C4 13.2239 3.77614 13 3.5 13C3.22386 13 3 13.2239 3 13.5C3 13.7761 3.22386 14 3.5 14ZM6 1.5C6 1.77614 5.77614 2 5.5 2C5.22386 2 5 1.77614 5 1.5C5 1.22386 5.22386 1 5.5 1C5.77614 1 6 1.22386 6 1.5ZM5.5 14C5.77614 14 6 13.7761 6 13.5C6 13.2239 5.77614 13 5.5 13C5.22386 13 5 13.2239 5 13.5C5 13.7761 5.22386 14 5.5 14ZM8 1.5C8 1.77614 7.77614 2 7.5 2C7.22386 2 7 1.77614 7 1.5C7 1.22386 7.22386 1 7.5 1C7.77614 1 8 1.22386 8 1.5ZM7.5 14C7.77614 14 8 13.7761 8 13.5C8 13.2239 7.77614 13 7.5 13C7.22386 13 7 13.2239 7 13.5C7 13.7761 7.22386 14 7.5 14ZM10 1.5C10 1.77614 9.77614 2 9.5 2C9.22386 2 9 1.77614 9 1.5C9 1.22386 9.22386 1 9.5 1C9.77614 1 10 1.22386 10 1.5ZM9.5 14C9.77614 14 10 13.7761 10 13.5C10 13.2239 9.77614 13 9.5 13C9.22386 13 9 13.2239 9 13.5C9 13.7761 9.22386 14 9.5 14ZM12 1.5C12 1.77614 11.7761 2 11.5 2C11.2239 2 11 1.77614 11 1.5C11 1.22386 11.2239 1 11.5 1C11.7761 1 12 1.22386 12 1.5ZM11.5 14C11.7761 14 12 13.7761 12 13.5C12 13.2239 11.7761 13 11.5 13C11.2239 13 11 13.2239 11 13.5C11 13.7761 11.2239 14 11.5 14ZM14 1.5C14 1.77614 13.7761 2 13.5 2C13.2239 2 13 1.77614 13 1.5C13 1.22386 13.2239 1 13.5 1C13.7761 1 14 1.22386 14 1.5ZM13.5 14C13.7761 14 14 13.7761 14 13.5C14 13.2239 13.7761 13 13.5 13C13.2239 13 13 13.2239 13 13.5C13 13.7761 13.2239 14 13.5 14Z\"/>\n </svg>`;\n case \"alt\":\n default:\n // Diamond icon (alt-fragment.svg) — default for alt and unknown types\n return `<svg x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M12 8L20 12L12 16L4 12L12 8Z\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>`;\n }\n}\n\n","import type { CreationGeometry } from \"../geometry\";\nimport { esc, styleToAttr } from \"./svgUtils\";\n\nexport function renderCreation(c: CreationGeometry): string {\n const m = c.message;\n const p = c.participant;\n\n // Arrow stops at participant box edge (not center)\n const isRTL = m.toX < m.fromX;\n const adjustedToX = isRTL\n ? p.x + p.width / 2\n : p.x - p.width / 2;\n\n // fromX: +1 on left endpoint (matching message.ts lifeline offset convention).\n // toX: stop AT the participant rect edge — no +1, because SVG has no\n // z-ordering to hide arrowhead overlap like CSS does in HTML.\n const fromX = isRTL ? m.fromX : m.fromX + 1;\n const toX = isRTL ? adjustedToX : adjustedToX;\n\n // HTML label sits ~3px toward the sender side of the arrow midpoint.\n // LTR fromX has +1 lifeline offset shifting midpoint +0.5px, so offset is -3.\n // RTL fromX has no +1, so offset is +3.5 to match HTML positioning.\n const labelX = fromX + (toX - fromX) / 2 + (isRTL ? 3.5 : -3);\n const labelY = m.y - 3;\n\n const styleAttr = m.style ? ` style=\"${styleToAttr(m.style)}\"` : \"\";\n\n const numberX = Math.min(fromX, toX) - 4;\n const numberSvg = m.number\n ? `<text x=\"${numberX}\" y=\"${labelY}\" text-anchor=\"end\" class=\"seq-number\">${esc(m.number)}</text>`\n : \"\";\n\n // Creation labels like «payload» are rendered by HTML as three spans:\n // <span>«</span><span class=\"editable-span-base\" padding:4px>payload</span><span>»</span>\n // The 4px padding makes HTML wider. Replicate with tspan dx offsets.\n const labelContent = renderGuillemets(m.label, styleAttr);\n\n return `<g class=\"creation\">\n <line x1=\"${fromX}\" y1=\"${m.y}\" x2=\"${toX}\" y2=\"${m.y}\" class=\"message-line\" stroke-dasharray=\"6,4\"/>\n ${renderOpenArrow(toX, m.y, isRTL)}\n <text x=\"${labelX}\" y=\"${labelY}\" text-anchor=\"middle\" class=\"message-label\">${labelContent}</text>\n ${numberSvg}\n</g>`;\n}\n\nfunction renderGuillemets(label: string, styleAttr: string): string {\n const match = label.match(/^«(.+)»$/);\n if (match) {\n const inner = match[1];\n // HTML renders «create» (default, no params) as a single element.\n // Only «param» labels (with arguments) use three separate spans with\n // 4px padding on the middle editable-span. Skip dx for the default label.\n if (inner === \"create\") {\n return `<tspan${styleAttr}>${esc(label)}</tspan>`;\n }\n return `<tspan${styleAttr}>${esc(\"«\")}</tspan><tspan dx=\"4\"${styleAttr}>${esc(inner)}</tspan><tspan dx=\"4\"${styleAttr}>${esc(\"»\")}</tspan>`;\n }\n return `<tspan${styleAttr}>${esc(label)}</tspan>`;\n}\n\nfunction renderOpenArrow(tipX: number, tipY: number, pointsLeft: boolean): string {\n // Match HTML renderer's ArrowHead.tsx path: M1,1.25 L6.15,4.5 L1,7.75\n const w = 5.15;\n const halfH = 3.25;\n const dir = pointsLeft ? 1 : -1;\n const x1 = tipX + dir * w;\n const y1 = tipY - halfH;\n const y2 = tipY + halfH;\n return `<polyline points=\"${x1},${y1} ${tipX},${tipY} ${x1},${y2}\" fill=\"none\" stroke-linecap=\"round\" class=\"arrow-head arrow-open\"/>`;\n}\n\n","import type { ReturnGeometry } from \"../geometry\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\nimport { esc } from \"./svgUtils\";\n\nexport function renderReturn(r: ReturnGeometry): string {\n if (r.isSelf) {\n return renderSelfReturn(r);\n }\n\n const minX = Math.min(r.fromX, r.toX);\n // HTML centers the label text within a container that has 7px padding on the\n // arrow-tip side (for the arrowhead SVG). This shifts text center 3.5px away\n // from the tip. SVG has no such padding, so offset the label accordingly.\n const ARROW_PADDING_HALF = 3.5;\n const labelX = minX + Math.abs(r.toX - r.fromX) / 2\n + (r.isReverse ? ARROW_PADDING_HALF : -ARROW_PADDING_HALF);\n // HTML CSS snaps the return line to integer CSS pixels. SVG may produce fractional\n // coordinates (e.g. 153.5). Floor to match HTML's integer-snapped line position.\n const lineY = Math.floor(r.y);\n // Label sits 3px above the line. Use lineY (floored integer) so that both integer\n // r.y (assignment returns) and half-pixel r.y (keyword returns) produce the same\n // integer labelY that matches HTML. Previously \"-3.5 from r.y\" caused a -0.5px\n // offset when r.y is an integer (assignment return case).\n const labelY = lineY - 3;\n\n // Match HTML renderer's ArrowHead.tsx path: M1,1.25 L6.15,4.5 L1,7.75\n const arrowTipX = r.toX;\n const w = 5.15;\n const halfH = 3.25;\n const dir = r.isReverse ? -1 : 1;\n const ax1 = arrowTipX - dir * w;\n const ay1 = lineY - halfH;\n const ay2 = lineY + halfH;\n\n // Sequence number: always to the left of the return\n const numberX = Math.min(r.fromX, r.toX) - 4;\n const numberSvg = r.number\n ? `<text x=\"${numberX}\" y=\"${labelY}\" text-anchor=\"end\" class=\"seq-number\">${esc(r.number)}</text>`\n : \"\";\n\n return `<g class=\"return\">\n <line x1=\"${r.fromX}\" y1=\"${lineY}\" x2=\"${r.toX}\" y2=\"${lineY}\" class=\"return-line\"/>\n <polyline points=\"${ax1},${ay1} ${arrowTipX},${lineY} ${ax1},${ay2}\" fill=\"none\" stroke-linecap=\"round\" class=\"return-arrow\"/>\n <text x=\"${labelX}\" y=\"${labelY}\" text-anchor=\"middle\" class=\"return-label\">${esc(resolveEmojiInText(r.label))}</text>\n ${numberSvg}\n</g>`;\n}\n\n/**\n * Self-return: from === to (same participant). HTML renders a circular arrow\n * icon (12x12) + label text with no line/arrow. Match that layout.\n */\nfunction renderSelfReturn(r: ReturnGeometry): string {\n // HTML: icon is w-3 h-3 (12x12) with m-1 (4px margin), then label text.\n // r.y includes a +16 offset (for non-self return line positioning).\n // HTML container top = r.y - 16. Icon is 4px below container top (m-1 margin).\n const iconSize = 12;\n const iconMargin = 4;\n const iconX = r.fromX + iconMargin;\n const iconY = r.y - 12; // container top + 4px margin = (r.y - 16) + 4\n const labelX = iconX + iconSize + iconMargin;\n const labelY = r.y - 1; // text baseline: vertically center with icon\n\n // Circular arrow icon — simplified from HTML's 512x512 SVG path, scaled to 12x12\n return `<g class=\"return return-self\">\n <g transform=\"translate(${iconX},${iconY}) scale(${iconSize / 512})\">\n <path d=\"M256 0C114.84 0 0 114.84 0 256s114.84 256 256 256 256-114.84 256-256S397.16 0 256 0Zm0 469.33c-117.63 0-213.33-95.7-213.33-213.33S138.37 42.67 256 42.67 469.33 138.37 469.33 256 373.63 469.33 256 469.33Z\" class=\"return-icon\"/>\n <path d=\"M288 192h-87.16l27.58-27.58a21.33 21.33 0 1 0-30.17-30.17l-64 64a21.33 21.33 0 0 0 0 30.17l64 64a21.33 21.33 0 0 0 30.17-30.17l-27.58-27.58H288a53.33 53.33 0 0 1 0 106.67h-32a21.33 21.33 0 0 0 0 42.66h32a96 96 0 0 0 0-192Z\" class=\"return-icon\"/>\n </g>\n <text x=\"${labelX}\" y=\"${labelY}\" text-anchor=\"start\" class=\"return-label\">${esc(resolveEmojiInText(r.label))}</text>\n</g>`;\n}\n\n","import type { DividerGeometry } from \"../geometry\";\nimport { esc } from \"./svgUtils\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\n\nconst PAD_X = 8;\nconst BOX_HEIGHT = 28;\n\nexport function renderDivider(d: DividerGeometry): string {\n const rawLabel = d.label.replace(/^=+\\s*|\\s*=+$/g, \"\").trim();\n const label = resolveEmojiInText(rawLabel);\n const centerX = d.width / 2;\n const textWidth = d.labelWidth ?? label.length * 8;\n // Match HTML box-sizing: border-box with 1px border.\n // Total visual width = textWidth + 2*padding + 2*border = textWidth + 18.\n // SVG stroke is centered on the rect edge (0.5px inside, 0.5px outside),\n // so the rect dimensions are the border-box dimensions minus the stroke overshoot.\n const borderWidth = 1;\n const totalWidth = textWidth + PAD_X * 2 + borderWidth * 2;\n const innerWidth = totalWidth - borderWidth; // rect width (stroke centered)\n const innerHeight = BOX_HEIGHT - borderWidth;\n const boxX = centerX - innerWidth / 2;\n const boxY = d.y - innerHeight / 2;\n const outerLeft = boxX - borderWidth / 2; // visual left edge of stroke\n const outerRight = boxX + innerWidth + borderWidth / 2; // visual right edge\n const textY = d.y;\n\n return `<g class=\"divider\">\n <line x1=\"0\" y1=\"${d.y}\" x2=\"${outerLeft}\" y2=\"${d.y}\" class=\"divider-line\"/>\n <line x1=\"${outerRight}\" y1=\"${d.y}\" x2=\"${d.width}\" y2=\"${d.y}\" class=\"divider-line\"/>\n <rect x=\"${boxX}\" y=\"${boxY}\" width=\"${innerWidth}\" height=\"${innerHeight}\" rx=\"2\" class=\"divider-bg\"/>\n <text x=\"${centerX}\" y=\"${textY}\" text-anchor=\"middle\" dominant-baseline=\"central\" class=\"divider-label\">${esc(label)}</text>\n</g>`;\n}\n","import { marked } from \"marked\";\nimport type { CommentGeometry } from \"../geometry\";\nimport { esc, styleToAttr } from \"./svgUtils\";\n\n/**\n * Convert markdown text to SVG-safe content using the same parser (marked)\n * that the HTML renderer uses. This ensures code spans like `text` have\n * their backticks stripped, bold/italic get SVG-equivalent tspan styling,\n * and the rendered text content matches what HTML shows.\n */\nfunction markdownToSvgLines(text: string): string[] {\n const tokens = marked.lexer(text, { gfm: true, breaks: true });\n return collectLines(tokens);\n}\n\nfunction collectLines(tokens: marked.TokensList | marked.Token[]): string[] {\n const lines: string[][] = [[]];\n\n const pushFragment = (fragment: string) => {\n if (fragment) {\n lines[lines.length - 1].push(fragment);\n }\n };\n\n const pushLineBreak = () => {\n lines.push([]);\n };\n\n const walkTokens = (tokenList: marked.TokensList | marked.Token[]) => {\n tokenList.forEach((token, index) => {\n walkToken(token);\n\n if (\n index < tokenList.length - 1 &&\n (token.type === \"paragraph\" || token.type === \"code\")\n ) {\n pushLineBreak();\n }\n });\n };\n\n const walkToken = (token: marked.Token): void => {\n switch (token.type) {\n case \"paragraph\":\n walkTokens(token.tokens || []);\n return;\n case \"code\": {\n const codeLines = token.text.split(\"\\n\");\n codeLines.forEach((line, index) => {\n if (index > 0) {\n pushLineBreak();\n }\n pushFragment(`<tspan font-family=\"monospace\">${esc(line)}</tspan>`);\n });\n return;\n }\n case \"codespan\":\n pushFragment(esc(token.text));\n return;\n case \"strong\":\n pushFragment(`<tspan font-weight=\"bold\">${collectLines(token.tokens || []).join(\"\")}</tspan>`);\n return;\n case \"em\":\n pushFragment(`<tspan font-style=\"italic\">${collectLines(token.tokens || []).join(\"\")}</tspan>`);\n return;\n case \"text\":\n if (\"tokens\" in token && token.tokens) {\n walkTokens(token.tokens);\n return;\n }\n pushFragment(esc(token.raw));\n return;\n case \"br\":\n pushLineBreak();\n return;\n case \"space\":\n return;\n default:\n pushFragment(esc(token.raw || \"\"));\n }\n };\n\n walkTokens(tokens);\n\n return lines.map((line) => line.join(\"\"));\n}\n\nexport function renderComment(c: CommentGeometry): string {\n const styleAttr = c.style ? ` style=\"${styleToAttr(c.style)}\"` : \"\";\n const lines = markdownToSvgLines(c.text);\n const tspans = lines\n .map((line, index) =>\n index === 0\n ? `<tspan x=\"${c.x}\" y=\"${c.y}\">${line || \" \"}</tspan>`\n : `<tspan x=\"${c.x}\" dy=\"20\">${line || \" \"}</tspan>`,\n )\n .join(\"\");\n return `<text class=\"comment-text\"${styleAttr}>${tspans}</text>`;\n}\n","import type { GroupGeometry } from \"../geometry\";\nimport { esc } from \"./svgUtils\";\n\n/**\n * Renders a participant group as a dashed outline with a title bar,\n * matching the HTML renderer's outline-dashed style on LifeLineGroup.\n * Uses CSS classes from DEFAULT_THEME_STYLES for colors/typography parity.\n * Stroke width is applied inline from `sw` so geometry math and painted width\n * stay in sync.\n */\nexport function renderGroup(g: GroupGeometry): string {\n const titleBarHeight = 18;\n const sw = 1; // stroke-width\n const sw2 = sw / 2; // 0.5 — half stroke-width\n // SVG stroke is centered on the rect boundary. To align the stroke's outer edge with\n // HTML's CSS outline outer edge (which is drawn outside the border-box), the SVG rect\n // must be shifted outward by sw2 on each side. This aligns visual strokes at the cost\n // of a small sub-pixel offset in measured bounding boxes.\n const rectX = g.x - sw2;\n const rectY = g.y - sw - 1; // shift top up 0.5px to align with HTML outline outer edge\n const rectW = g.width + sw;\n const rectH = g.height + sw + 0.5; // compensate to keep bottom in place\n // Title text uses a small +0.85 adjustment to match HTML's chip text centering\n // after dominant-baseline differences between SVG and DOM text rendering.\n const titleY = g.y + titleBarHeight / 2 + 1;\n const titleText = g.name ? esc(g.name) : \"\";\n // Title background is inset by sw2 from the outline rect on all sides so the\n // full dashed border (including the inner half of the centered stroke) stays visible.\n const tbX = g.x + sw2;\n const tbY = rectY + sw2; // inner edge of top stroke\n const tbWidth = g.width - sw; // inset sw2 on each side\n const tbHeight = titleBarHeight + 1 + sw2; // cover through the title bar\n return `<g class=\"participant-group\">\n <rect x=\"${rectX}\" y=\"${rectY}\" width=\"${rectW}\" height=\"${rectH}\" class=\"group-outline\" stroke-width=\"${sw}\" stroke-dasharray=\"4 3\"/>\n ${titleText ? `<rect x=\"${tbX}\" y=\"${tbY}\" width=\"${tbWidth}\" height=\"${tbHeight}\" class=\"group-title-bg\"/>` : \"\"}\n ${titleText ? `<text x=\"${g.x + g.width / 2}\" y=\"${titleY}\" text-anchor=\"middle\" dominant-baseline=\"middle\" class=\"group-title-text\">${titleText}</text>` : \"\"}\n</g>`;\n}\n\n","/**\n * renderToSvg — Renders ZenUML DSL to native SVG content.\n *\n * Pipeline: parse → layout → geometry IR → SVG primitives → compose\n */\nimport { RootContext } from \"@/parser\";\nimport { Coordinates } from \"@/positioning/Coordinates\";\nimport { VerticalCoordinates } from \"@/positioning/VerticalCoordinates\";\nimport { WidthProviderOnCanvas } from \"@/positioning/WidthProviderFunc\";\nimport { buildGeometry } from \"./buildGeometry\";\nimport { renderParticipant } from \"./components/participant\";\nimport { renderLifeline } from \"./components/lifeline\";\nimport { renderMessage, renderSelfCall } from \"./components/message\";\nimport { renderOccurrence } from \"./components/occurrence\";\nimport { renderFragment } from \"./components/fragment\";\nimport { renderCreation } from \"./components/creation\";\nimport { renderReturn } from \"./components/return\";\nimport { renderDivider } from \"./components/divider\";\nimport { renderComment } from \"./components/comment\";\nimport { renderGroup } from \"./components/group\";\nimport { resolveEmojiInText } from \"@/emoji/resolveEmoji\";\nimport type { DiagramGeometry } from \"./geometry\";\n\nexport interface RenderOptions {\n theme?: \"theme-default\" | \"theme-mermaid\";\n /** Optional emoji shortcode-to-Unicode cache (for future use by Task 8) */\n emojiCache?: Map<string, string>;\n}\n\nexport interface RenderResult {\n svg: string;\n /** Inner SVG content (defs + g) for embedding into an existing SVG container */\n innerSvg: string;\n width: number;\n height: number;\n viewBox: string;\n /** The geometry IR used to produce this SVG (undefined for empty input) */\n geometry?: DiagramGeometry;\n}\n\nconst FRAME_HEADER_HEIGHT = 28;\nconst FRAME_BORDER_RADIUS = 4;\n\nconst DEFAULT_THEME_STYLES = `\n .frame-border-outer { fill: #666; }\n .frame-border-inner { fill: #ffffff; }\n .frame-header-bg { fill: #ffffff; }\n .frame-header-line { stroke: #666; stroke-width: 1; shape-rendering: crispEdges; }\n .frame-title { font-family: Helvetica, Verdana, serif; font-size: 16px; font-weight: 600; fill: #222; }\n .participant-box { fill: #ffffff; stroke: #666; stroke-width: 2; }\n .participant-label { font-family: Helvetica, Verdana, serif; font-size: 16px; fill: #222; }\n .participant-icon { color: #222; }\n .participant-icon [fill=\"currentColor\"]:not([stroke]) { stroke: #666; stroke-width: 1; }\n .lifeline { stroke: #666; stroke-width: 1; }\n .message-line { stroke: #000; stroke-width: 2; shape-rendering: crispEdges; }\n .message-label { font-family: Helvetica, Verdana, serif; font-size: 14px; fill: #222; }\n .arrow-head { fill: #000; stroke: #000; stroke-width: 2; }\n .arrow-open { fill: none; }\n .occurrence { fill: #dedede; stroke: #666; stroke-width: 2; shape-rendering: crispEdges; }\n .fragment-border { fill: none; stroke: #666; stroke-width: 1; shape-rendering: crispEdges; }\n .fragment-header { fill: #dedede; fill-opacity: 0.498; stroke: none; shape-rendering: crispEdges; }\n .fragment-label { font-family: Helvetica, Verdana, serif; font-size: 14px; font-weight: 600; fill: #000; }\n .fragment-condition { font-family: Helvetica, Verdana, serif; font-size: 14px; fill: #000; }\n .fragment-separator { stroke: #e5e7eb; stroke-width: 1; shape-rendering: crispEdges; }\n .fragment-section-label { font-family: Helvetica, Verdana, serif; font-size: 14px; fill: #000; }\n .return-line { stroke: #000; stroke-width: 2; stroke-dasharray: 6,4; shape-rendering: crispEdges; }\n .return-arrow { stroke: #000; stroke-width: 2; fill: none; }\n .return-label { font-family: Helvetica, Verdana, serif; font-size: 14px; fill: #222; }\n .return-icon { fill: #222; }\n .divider-line { stroke: #aaaa33; stroke-width: 1; }\n .divider-bg { fill: #fff5ad; stroke: #aaaa33; stroke-width: 1; }\n .divider-label { font-family: Helvetica, Verdana, serif; font-size: 14px; fill: #333; }\n .comment-text { font-family: Helvetica, Verdana, serif; font-size: 14px; fill: #333; opacity: 0.5; }\n .seq-number { font-family: Helvetica, Verdana, serif; font-size: 12px; font-weight: 100; fill: #6b7280; }\n .group-outline { fill: none; stroke: #666; }\n .group-title-bg { fill: #ffffff; stroke: none; }\n .group-title-text { font-family: Helvetica, Verdana, serif; font-size: 13px; font-weight: 400; fill: #222; }\n`;\n\nexport function renderToSvg(code: string, options?: RenderOptions): RenderResult {\n // 1. Parse\n const rootContext = RootContext(code);\n if (!rootContext) {\n return { svg: \"<svg></svg>\", innerSvg: \"\", width: 0, height: 0, viewBox: \"0 0 0 0\", geometry: undefined };\n }\n\n // 2. Layout (uses canvas provider — no DOM)\n const coordinates = new Coordinates(rootContext, WidthProviderOnCanvas);\n const verticalCoordinates = new VerticalCoordinates(rootContext);\n\n // 3. Extract title (resolve emoji shortcodes)\n const titleContext = rootContext.title?.();\n const rawTitle =\n titleContext && typeof (titleContext as any).content === \"function\"\n ? (titleContext as any).content()\n : undefined;\n const title = rawTitle ? resolveEmojiInText(rawTitle) : undefined;\n\n // 4. Build geometry IR\n const geometry = buildGeometry({\n rootContext,\n coordinates,\n verticalCoordinates,\n title,\n measureText: WidthProviderOnCanvas,\n });\n\n // 5. Render to SVG\n return { ...composeSvg(geometry, options), geometry };\n}\n\nfunction composeSvg(g: DiagramGeometry, options?: RenderOptions): RenderResult {\n void options;\n const padding = 10;\n const headerH = FRAME_HEADER_HEIGHT;\n // Content left offset = 1 (frame border) + 10 (seq-diagram px-2.5 padding) + frameBorderLeft\n // This matches the HTML layout: .frame(1px border) > .sequence-diagram(px-2.5) > div(paddingLeft:frameBorderLeft) > content\n const contentLeftMargin = 1 + padding + g.frameBorderLeft;\n const viewWidth = g.width + contentLeftMargin + padding + g.frameBorderRight + 1;\n const viewHeight = g.height + padding * 2 + headerH - 1; // -1 to match HTML CSS border-box visual height\n\n const parts: string[] = [];\n\n // Groups (behind everything, dashed outline containers)\n for (const grp of g.groups) {\n parts.push(renderGroup(grp));\n }\n\n // Lifelines (behind everything except groups)\n for (const l of g.lifelines) {\n parts.push(renderLifeline(l));\n }\n\n // Participants — split into non-creation (painted before occurrences) and\n // creation (painted after occurrences so the participant box covers the bar)\n const creationNames = new Set(g.creations.map(c => c.participant.name));\n for (const p of g.participants) {\n if (!creationNames.has(p.name)) {\n parts.push(renderParticipant(p));\n }\n }\n\n // Occurrences (activation boxes on lifelines — before messages so arrows paint on top)\n for (const o of g.occurrences) {\n parts.push(renderOccurrence(o));\n }\n\n // Creation participants (painted after occurrences so they appear on top of bars)\n for (const p of g.participants) {\n if (creationNames.has(p.name)) {\n parts.push(renderParticipant(p));\n }\n }\n\n // Messages\n for (const m of g.messages) {\n parts.push(renderMessage(m));\n }\n\n // Self-calls\n for (const s of g.selfCalls) {\n parts.push(renderSelfCall(s));\n }\n\n // Creation arrows (dashed line to newly created participant)\n for (const c of g.creations) {\n parts.push(renderCreation(c));\n }\n\n // Returns (dashed lines)\n for (const r of g.returns) {\n parts.push(renderReturn(r));\n }\n\n // Fragments (on top of occurrences, below dividers/comments)\n for (const f of g.fragments) {\n parts.push(renderFragment(f));\n }\n\n // Dividers (full-width lines with labels)\n for (const d of g.dividers) {\n parts.push(renderDivider(d));\n }\n\n // Comments (inline text above statements)\n for (const c of g.comments) {\n parts.push(renderComment(c));\n }\n\n // Frame: border as two nested rects (matches CSS border-box rendering)\n const r = FRAME_BORDER_RADIUS;\n const frameSvg = [\n `<rect class=\"frame-border-outer\" x=\"0\" y=\"0\" width=\"${viewWidth}\" height=\"${viewHeight}\" rx=\"${r}\" fill=\"#666\"/>`,\n `<rect class=\"frame-border-inner\" x=\"1\" y=\"1\" width=\"${viewWidth - 2}\" height=\"${viewHeight - 2}\" rx=\"${Math.max(0, r - 1)}\" fill=\"#fff\"/>`,\n ].join(\"\\n\");\n const contentPaddingTop = 6; // tuned to match HTML content Y offset (~34px below frame top)\n const headerLineY = headerH + contentPaddingTop; // 34 — content group Y offset\n const headerLineDrawY = headerLineY - 0.5; // 33.5 — half-pixel for crisp 1px line at pixel row 33, matching HTML header border-bottom\n const headerLineSvg = `<line class=\"frame-header-line\" x1=\"1\" y1=\"${headerLineDrawY}\" x2=\"${viewWidth - 1}\" y2=\"${headerLineDrawY}\"/>`;\n const titleSvg = g.title\n ? `<text x=\"5\" y=\"${headerLineDrawY / 2}\" dominant-baseline=\"central\" class=\"frame-title\">${escXml(g.title)}</text>`\n : \"\";\n\n const viewBox = `0 0 ${viewWidth} ${viewHeight}`;\n\n const defs = `<defs>\\n <style>${DEFAULT_THEME_STYLES}</style>\\n</defs>`;\n const frame = `${frameSvg}\\n${headerLineSvg}\\n${titleSvg}`;\n const content = `<g transform=\"translate(${contentLeftMargin}, ${headerLineY})\">\\n${parts.join(\"\\n\")}\\n</g>`;\n const innerSvg = `${defs}\\n${frame}\\n${content}`;\n\n const svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${viewWidth}\" height=\"${viewHeight}\" viewBox=\"${viewBox}\">\\n${innerSvg}\\n</svg>`;\n\n return { svg, innerSvg, width: viewWidth, height: viewHeight, viewBox };\n}\n\nfunction escXml(s: string): string {\n return s\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\");\n}\n","#!/usr/bin/env bun\n/**\n * ZenUML CLI — renders ZenUML DSL text to SVG or PNG.\n *\n * Usage:\n * zenuml -i diagram.zenuml # writes diagram.svg\n * zenuml -i diagram.zenuml -o out.svg # writes out.svg\n * zenuml -i diagram.zenuml -o out.png # writes out.png (auto-detects format)\n * zenuml -i diagram.zenuml -e png # writes diagram.png\n * zenuml -i - -o - # stdin → stdout\n * cat diagram.zenuml | zenuml -i - -o - # pipe mode\n * zenuml --check -i diagram.zenuml # validate syntax (exit 0 = valid)\n * zenuml --parse -i diagram.zenuml # output AST as JSON\n */\nimport { renderToSvg } from \"@/svg/renderToSvg\";\nimport type { RenderOptions } from \"@/svg/renderToSvg\";\nimport { setCanvasContext } from \"@/positioning/WidthProviderFunc\";\nimport Parser from \"@/parser/index.js\";\nimport { readFileSync, writeFileSync, mkdirSync, statSync, watch as fsWatch } from \"node:fs\";\nimport { resolve, basename, extname, dirname, join } from \"node:path\";\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction readVersion(): string {\n // Walk up from this file to find package.json at the project root.\n // In development the file lives at src/cli/zenuml.ts, so ../../package.json.\n // We use import.meta.dir which Bun resolves at runtime.\n const pkgPath = resolve(import.meta.dir, \"../../package.json\");\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\"));\n return pkg.version ?? \"unknown\";\n } catch {\n return \"unknown\";\n }\n}\n\nfunction printHelp(): void {\n const help = `\nUsage: zenuml [options]\n\nRender ZenUML DSL text to SVG or PNG.\n\nRendering:\n -i, --input <file> Input file (use \"-\" for stdin; repeatable)\n -o, --output <file> Output file (use \"-\" for stdout; default: <input>.svg)\n -e, --outputFormat <format> Output format: \"svg\" (default) or \"png\"\n -s, --scale <factor> Pixel scale factor for PNG (default: 2; ignored for SVG)\n -t, --theme <name> Theme name passed to renderer (e.g. \"theme-default\")\n -c, --configFile <file> JSON config file with { theme, scale, outputFormat }\n --md Markdown mode: render zenuml code blocks and produce output Markdown\n\nValidation:\n --check Validate syntax without rendering (exit 0 if valid, 1 if errors)\n --parse Parse input and output AST as JSON (exit 0 if valid, 1 if errors)\n --json Machine-readable JSON output for --check mode\n\nBatch & Watch:\n -w, --watch Watch input files and re-render on change (incompatible with --check, --parse, stdin)\n\nGeneral:\n -q, --quiet Suppress non-error output\n -h, --help Show this help message\n -V, --version Show version number\n\nConfig file values are overridden by CLI flags.\nRendering flags (-o, -e, -t, -s) are silently ignored in --check and --parse modes.\n\nExamples:\n zenuml -i diagram.zenuml\n zenuml -i diagram.zenuml -o output.svg\n zenuml -i diagram.zenuml -o output.png\n zenuml -i diagram.zenuml -e png -s 3\n zenuml -i diagram.zenuml -c config.json\n cat diagram.zenuml | zenuml -i - -o -\n zenuml --check -i file1.zenuml -i file2.zenuml\n zenuml --check --json -i file1.zenuml -i file2.zenuml\n zenuml --parse -i diagram.zenuml\n zenuml -i readme.md --md\n zenuml -i readme.md --md -e png\n`.trimStart();\n process.stdout.write(help);\n}\n\n// ---------------------------------------------------------------------------\n// Markdown block extractor\n// ---------------------------------------------------------------------------\n\nexport interface ZenumlBlock {\n /** Zero-based index of this block among all zenuml blocks in the document */\n index: number;\n /** The ZenUML DSL code inside the fence (may be empty string for empty blocks) */\n code: string;\n /** Title extracted from the info string after \"zenuml\" (trimmed), or empty string */\n title: string;\n /** The full raw fence text including the opening and closing ``` lines */\n raw: string;\n /** True if the code (trimmed) is empty — these blocks should be excluded from rendering */\n empty: boolean;\n}\n\n/**\n * Extract all ```zenuml ... ``` fenced code blocks from Markdown text.\n * Returns one ZenumlBlock per block, in document order.\n */\nexport function extractZenumlBlocks(md: string): ZenumlBlock[] {\n const results: ZenumlBlock[] = [];\n // Match fenced code blocks that start with ```zenuml (with optional title after)\n // Handles both ``` and ~~~ fences but we only care about backtick fences for ZenUML\n const fencePattern = /^(`{3,})zenuml([^\\n]*)\\n([\\s\\S]*?)\\n?\\1\\s*$/gm;\n let match: RegExpExecArray | null;\n let blockIndex = 0;\n while ((match = fencePattern.exec(md)) !== null) {\n const raw = match[0];\n const infoExtra = match[2]; // everything after \"zenuml\" on the opening line\n const code = match[3]; // content between fences\n const title = infoExtra.trim();\n const empty = code.trim().length === 0;\n results.push({ index: blockIndex++, code, title, raw, empty });\n }\n return results;\n}\n\n// ---------------------------------------------------------------------------\n// Glob expansion\n// ---------------------------------------------------------------------------\n\n/** Check if a string contains glob metacharacters. */\nfunction isGlobPattern(s: string): boolean {\n return /[*?[]/.test(s);\n}\n\n/** Expand inputs: literal paths pass through; glob patterns are expanded.\n * Returns the expanded list. Throws if a glob pattern matches zero files. */\nfunction expandInputs(inputs: string[]): string[] {\n const result: string[] = [];\n for (const input of inputs) {\n if (input === \"-\" || !isGlobPattern(input)) {\n result.push(input);\n continue;\n }\n // Glob expansion\n const glob = new Bun.Glob(input);\n const matches: string[] = [];\n for (const match of glob.scanSync({ cwd: process.cwd(), onlyFiles: true })) {\n matches.push(match);\n }\n if (matches.length === 0) {\n throw new Error(`Glob pattern \"${input}\" matched no files`);\n }\n // Sort for deterministic order\n matches.sort();\n result.push(...matches);\n }\n return result;\n}\n\n/** Check if a path is an existing directory. */\nfunction isDirectory(p: string): boolean {\n try {\n return statSync(p).isDirectory();\n } catch {\n return false;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Argument parsing\n// ---------------------------------------------------------------------------\n\ninterface CliArgs {\n inputs: string[];\n output?: string;\n outputFormat?: string;\n scale?: number;\n theme?: string;\n configFile?: string;\n check: boolean;\n parse: boolean;\n json: boolean;\n quiet: boolean;\n help: boolean;\n version: boolean;\n md: boolean;\n watch: boolean;\n}\n\nfunction parseArgs(argv: string[]): CliArgs {\n const args: CliArgs = { inputs: [], check: false, parse: false, json: false, quiet: false, help: false, version: false, md: false, watch: false };\n let i = 0;\n while (i < argv.length) {\n const arg = argv[i];\n switch (arg) {\n case \"-i\":\n case \"--input\":\n i++;\n args.inputs.push(argv[i]);\n break;\n case \"-o\":\n case \"--output\":\n i++;\n args.output = argv[i];\n break;\n case \"-e\":\n case \"--outputFormat\":\n i++;\n args.outputFormat = argv[i];\n break;\n case \"-s\":\n case \"--scale\":\n i++;\n args.scale = Number(argv[i]);\n break;\n case \"-t\":\n case \"--theme\":\n i++;\n args.theme = argv[i];\n break;\n case \"-c\":\n case \"--configFile\":\n i++;\n args.configFile = argv[i];\n break;\n case \"--md\":\n args.md = true;\n break;\n case \"--check\":\n args.check = true;\n break;\n case \"--parse\":\n args.parse = true;\n break;\n case \"--json\":\n args.json = true;\n break;\n case \"-q\":\n case \"--quiet\":\n args.quiet = true;\n break;\n case \"-h\":\n case \"--help\":\n args.help = true;\n break;\n case \"-V\":\n case \"--version\":\n args.version = true;\n break;\n case \"-w\":\n case \"--watch\":\n args.watch = true;\n break;\n default:\n process.stderr.write(`Unknown option: ${arg}\\nRun \"zenuml --help\" for usage.\\n`);\n process.exit(1);\n }\n i++;\n }\n return args;\n}\n\n// ---------------------------------------------------------------------------\n// Main\n// ---------------------------------------------------------------------------\n\n/** Load and merge config file values (if any). CLI flags override config. */\nfunction loadConfigFile(filePath: string): Record<string, unknown> {\n const resolved = resolve(filePath);\n let raw: string;\n try {\n raw = readFileSync(resolved, \"utf-8\");\n } catch {\n process.stderr.write(`Error: Cannot read config file: ${resolved}\\n`);\n process.exit(1);\n }\n try {\n return JSON.parse(raw);\n } catch {\n process.stderr.write(`Error: Invalid JSON in config file: ${resolved}\\n`);\n process.exit(1);\n }\n}\n\n/** Shared Playwright browser instance — launched once, reused across renders. */\nlet _browser: Awaited<ReturnType<typeof import(\"playwright-core\")[\"chromium\"][\"launch\"]>> | null = null;\n\nasync function getPlaywrightBrowser() {\n if (_browser) return _browser;\n const { chromium } = await import(\"playwright-core\");\n _browser = await chromium.launch();\n return _browser;\n}\n\n/** Shut down the shared browser (call before process exit). */\nasync function closeBrowser() {\n if (_browser) {\n await _browser.close();\n _browser = null;\n }\n}\n\n/** Rasterize an SVG string to PNG bytes using headless Chromium (Playwright). */\nasync function rasterizeToPng(\n svgString: string,\n svgWidth: number,\n svgHeight: number,\n scale: number,\n): Promise<Buffer> {\n const browser = await getPlaywrightBrowser();\n const page = await browser.newPage({\n viewport: {\n width: Math.ceil(svgWidth),\n height: Math.ceil(svgHeight),\n },\n deviceScaleFactor: scale,\n });\n\n try {\n const html = `<!DOCTYPE html>\n<html><head><style>\n html, body { margin: 0; padding: 0; background: white; overflow: hidden; }\n svg { display: block; width: ${svgWidth}px; height: ${svgHeight}px; }\n</style></head><body>${svgString}</body></html>`;\n\n await page.setContent(html, { waitUntil: \"load\" });\n const png = await page.screenshot({ type: \"png\" });\n return Buffer.from(png);\n } finally {\n await page.close();\n }\n}\n\n// ---------------------------------------------------------------------------\n// AST Serializer — converts ANTLR parse tree to JSON-safe plain object\n// ---------------------------------------------------------------------------\n\ninterface AstNode {\n type: string;\n ruleName?: string;\n text?: string;\n children?: AstNode[];\n}\n\n/** Get rule names from the parser embedded in a context node. */\nfunction getRuleNames(ctx: any): string[] | undefined {\n return ctx?.parser?.ruleNames;\n}\n\n/** Serialize an ANTLR parse tree node to a JSON-safe object. */\nfunction serializeParseTree(node: any): AstNode {\n if (!node) return { type: \"null\" };\n\n // Terminal node (leaf token)\n if (node.symbol !== undefined) {\n return {\n type: \"terminal\",\n text: node.getText(),\n };\n }\n\n // Parser rule context node\n const ruleNames = getRuleNames(node);\n const ruleName = ruleNames && node.ruleIndex !== undefined\n ? ruleNames[node.ruleIndex]\n : undefined;\n\n const result: AstNode = {\n type: \"rule\",\n };\n if (ruleName) {\n result.ruleName = ruleName;\n }\n\n const children = node.children;\n if (children && children.length > 0) {\n result.children = children.map((child: any) => serializeParseTree(child));\n }\n\n return result;\n}\n\n// ---------------------------------------------------------------------------\n// Check mode — validate syntax without rendering\n// ---------------------------------------------------------------------------\n\ninterface FileCheckResult {\n file: string;\n pass: boolean;\n errors: Array<{ line: number; column: number; msg: string }>;\n}\n\n/** Read code from a file path or stdin (\"-\"). */\nasync function readCode(input: string): Promise<string> {\n if (input === \"-\") {\n return readStdin();\n }\n const inputPath = resolve(input);\n try {\n return readFileSync(inputPath, \"utf-8\");\n } catch {\n throw new Error(`Cannot read input file: ${inputPath}`);\n }\n}\n\n/** Parse one file/input and return check result. Clears Parser.ErrorDetails before each parse. */\nasync function checkOne(input: string): Promise<FileCheckResult> {\n const fileName = input === \"-\" ? \"<stdin>\" : input;\n let code: string;\n try {\n code = await readCode(input);\n } catch (err: any) {\n return {\n file: fileName,\n pass: false,\n errors: [{ line: 0, column: 0, msg: err.message }],\n };\n }\n\n // Clear accumulated errors before parsing\n Parser.Errors.length = 0;\n Parser.ErrorDetails.length = 0;\n\n Parser.RootContext(code);\n\n const errors = Parser.ErrorDetails.map((e: any) => ({\n line: e.line,\n column: e.column,\n msg: e.msg,\n }));\n\n return {\n file: fileName,\n pass: errors.length === 0,\n errors,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Main\n// ---------------------------------------------------------------------------\n\nasync function main(): Promise<void> {\n // Inject @napi-rs/canvas context for accurate text measurement in renderToSvg.\n // Without this, WidthProviderOnCanvas falls back to character estimates which\n // produces incorrect layout (wrong participant spacing and message positioning).\n if (!globalThis.OffscreenCanvas && typeof document === \"undefined\") {\n try {\n const { createCanvas } = await import(\"@napi-rs/canvas\");\n setCanvasContext(createCanvas(1, 1).getContext(\"2d\") as any);\n } catch {\n // If @napi-rs/canvas is unavailable, fall back to character estimates\n }\n }\n\n // Skip the first two entries (bun executable + script path).\n const rawArgs = process.argv.slice(2);\n const args = parseArgs(rawArgs);\n\n // --help\n if (args.help) {\n printHelp();\n process.exit(0);\n }\n\n // --version\n if (args.version) {\n process.stdout.write(readVersion() + \"\\n\");\n process.exit(0);\n }\n\n // Require input\n if (args.inputs.length === 0) {\n process.stderr.write(\"Error: -i/--input is required. Use -h for help.\\n\");\n process.exit(1);\n }\n\n // ---------------------------------------------------------------------------\n // Glob expansion\n // ---------------------------------------------------------------------------\n let expandedInputs: string[];\n try {\n expandedInputs = expandInputs(args.inputs);\n } catch (err: any) {\n process.stderr.write(`Error: ${err.message}\\n`);\n process.exit(1);\n }\n\n // ---------------------------------------------------------------------------\n // --watch incompatibility checks\n // ---------------------------------------------------------------------------\n if (args.watch) {\n if (args.check) {\n process.stderr.write(\"Error: --watch is incompatible with --check.\\n\");\n process.exit(1);\n }\n if (args.parse) {\n process.stderr.write(\"Error: --watch is incompatible with --parse.\\n\");\n process.exit(1);\n }\n if (expandedInputs.includes(\"-\")) {\n process.stderr.write(\"Error: --watch is incompatible with stdin input.\\n\");\n process.exit(1);\n }\n }\n\n // ---------------------------------------------------------------------------\n // --check mode: validate syntax without rendering\n // ---------------------------------------------------------------------------\n if (args.check) {\n const results: FileCheckResult[] = [];\n for (const input of expandedInputs) {\n results.push(await checkOne(input));\n }\n\n if (args.json) {\n // Machine-readable JSON output to stdout\n process.stdout.write(JSON.stringify(results, null, 2) + \"\\n\");\n } else {\n // Human-readable output to stderr\n for (const r of results) {\n if (!r.pass) {\n if (expandedInputs.length > 1) {\n process.stderr.write(`${r.file}:\\n`);\n }\n for (const e of r.errors) {\n const prefix = expandedInputs.length > 1 ? \" \" : \"\";\n process.stderr.write(`${prefix}line ${e.line}, col ${e.column}: ${e.msg}\\n`);\n }\n }\n }\n }\n\n const anyFailed = results.some((r) => !r.pass);\n process.exit(anyFailed ? 1 : 0);\n }\n\n // ---------------------------------------------------------------------------\n // --parse mode: output AST as JSON (single input only)\n // ---------------------------------------------------------------------------\n if (args.parse) {\n if (expandedInputs.length > 1) {\n process.stderr.write(\"Error: --parse supports only a single input file.\\n\");\n process.exit(1);\n }\n const input = expandedInputs[0];\n let code: string;\n try {\n code = await readCode(input);\n } catch (err: any) {\n process.stderr.write(`Error: ${err.message}\\n`);\n process.exit(1);\n }\n\n // Clear accumulated errors before parsing\n Parser.Errors.length = 0;\n Parser.ErrorDetails.length = 0;\n\n const tree = Parser.RootContext(code);\n\n if (Parser.ErrorDetails.length > 0) {\n for (const e of Parser.ErrorDetails) {\n process.stderr.write(`line ${e.line}, col ${e.column}: ${e.msg}\\n`);\n }\n process.exit(1);\n }\n\n const ast = serializeParseTree(tree);\n process.stdout.write(JSON.stringify(ast, null, 2) + \"\\n\");\n process.exit(0);\n }\n\n // ---------------------------------------------------------------------------\n // --md mode: render Markdown with zenuml code blocks\n // ---------------------------------------------------------------------------\n // Determine if we're in Markdown mode: explicit --md flag or auto-detect from extension\n const isMdMode = args.md || expandedInputs.some(\n (f) => f !== \"-\" && /\\.(?:md|markdown)$/i.test(f),\n );\n\n if (isMdMode) {\n // Validate: --md with multiple inputs is an error\n if (expandedInputs.length > 1) {\n process.stderr.write(\"Error: --md mode supports only a single input file.\\n\");\n process.exit(1);\n }\n const inputArg = expandedInputs[0];\n\n // Validate: --md with non-.md input is an error (only when --md was explicitly passed)\n if (args.md && inputArg !== \"-\") {\n const ext = extname(inputArg).toLowerCase();\n if (ext !== \".md\" && ext !== \".markdown\") {\n process.stderr.write(`Error: --md flag requires a .md or .markdown input file, got: ${inputArg}\\n`);\n process.exit(1);\n }\n }\n\n // Read markdown content\n let mdContent: string;\n try {\n mdContent = await readCode(inputArg);\n } catch (err: any) {\n process.stderr.write(`Error: ${err.message}\\n`);\n process.exit(1);\n }\n\n // Effective format for diagram images\n const effectiveFormat = args.outputFormat ?? \"svg\";\n if (effectiveFormat !== \"svg\" && effectiveFormat !== \"png\") {\n process.stderr.write(`Error: Unsupported output format: \"${effectiveFormat}\". Use \"svg\" or \"png\".\\n`);\n process.exit(1);\n }\n\n // Determine output dir for images:\n // If -o is given (and not stdout), use that file's directory\n // Otherwise if input is a file, use input's directory\n // For -o - (stdout), images go adjacent to the input file (or cwd for stdin)\n let imageDir: string;\n let mdOutputPath: string;\n\n if (args.output && args.output !== \"-\") {\n const resolvedOutput = resolve(args.output);\n imageDir = dirname(resolvedOutput);\n mdOutputPath = resolvedOutput;\n } else if (args.output === \"-\") {\n // stdout: images go adjacent to input or cwd\n if (inputArg !== \"-\") {\n imageDir = dirname(resolve(inputArg));\n } else {\n imageDir = process.cwd();\n }\n mdOutputPath = \"-\";\n } else {\n // No -o: default output is {stem}-rendered.md adjacent to input\n if (inputArg !== \"-\") {\n const resolvedInput = resolve(inputArg);\n const inputDir = dirname(resolvedInput);\n const ext = extname(inputArg);\n const stem = basename(inputArg, ext);\n imageDir = inputDir;\n mdOutputPath = join(inputDir, `${stem}-rendered.md`);\n } else {\n imageDir = process.cwd();\n mdOutputPath = \"-\";\n }\n }\n\n // Determine stem for image file names (from input or output path)\n let imageStem: string;\n if (inputArg !== \"-\") {\n const ext = extname(inputArg);\n imageStem = basename(inputArg, ext);\n } else if (mdOutputPath !== \"-\") {\n const ext = extname(mdOutputPath);\n imageStem = basename(mdOutputPath, ext);\n } else {\n imageStem = \"diagram\";\n }\n\n // Extract zenuml blocks\n const blocks = extractZenumlBlocks(mdContent);\n\n // Effective render options\n const effectiveScale = args.scale ?? 2;\n const effectiveTheme = args.theme;\n const renderOptions: RenderOptions = {};\n if (effectiveTheme) {\n renderOptions.theme = effectiveTheme as RenderOptions[\"theme\"];\n }\n\n // Render each non-empty block and collect image paths\n const imageFiles: Map<number, string> = new Map();\n for (const block of blocks) {\n if (block.empty) continue;\n const imageFilename = `${imageStem}-zenuml-${block.index}.${effectiveFormat}`;\n const imageFilePath = join(imageDir, imageFilename);\n\n let svg: string;\n let svgWidth: number;\n let svgHeight: number;\n try {\n const result = renderToSvg(block.code, renderOptions);\n svg = result.svg;\n svgWidth = result.width;\n svgHeight = result.height;\n } catch (err: any) {\n process.stderr.write(`Error: Failed to render zenuml block ${block.index}: ${err.message}\\n`);\n process.exit(1);\n }\n\n // Ensure image directory exists\n mkdirSync(imageDir, { recursive: true });\n\n if (effectiveFormat === \"png\") {\n const pngBuffer = await rasterizeToPng(svg, svgWidth, svgHeight, effectiveScale);\n writeFileSync(imageFilePath, pngBuffer);\n } else {\n writeFileSync(imageFilePath, svg, \"utf-8\");\n }\n\n if (!args.quiet) {\n process.stderr.write(`Wrote ${imageFilePath}\\n`);\n }\n\n imageFiles.set(block.index, imageFilename);\n }\n\n // Replace blocks in the Markdown\n let outputMd = mdContent;\n // Process blocks in reverse order so that string offsets remain valid\n // We need to find and replace each raw block\n // Re-scan in reverse order to replace correctly\n const sortedBlocks = [...blocks].reverse();\n for (const block of sortedBlocks) {\n const altText = block.title || `diagram ${block.index + 1}`;\n if (block.empty) {\n // Remove empty blocks entirely\n outputMd = outputMd.replace(block.raw, \"\");\n } else {\n const imageFilename = imageFiles.get(block.index)!;\n const replacement = ``;\n outputMd = outputMd.replace(block.raw, replacement);\n }\n }\n\n // Write output Markdown\n if (mdOutputPath === \"-\") {\n process.stdout.write(outputMd);\n } else {\n mkdirSync(dirname(mdOutputPath), { recursive: true });\n writeFileSync(mdOutputPath, outputMd, \"utf-8\");\n if (!args.quiet) {\n process.stderr.write(`Wrote ${mdOutputPath}\\n`);\n }\n }\n\n process.exit(0);\n }\n\n // ---------------------------------------------------------------------------\n // Config file merging: config file < CLI flags\n // ---------------------------------------------------------------------------\n let configScale: number | undefined;\n let configTheme: string | undefined;\n let configOutputFormat: string | undefined;\n\n if (args.configFile) {\n const cfg = loadConfigFile(args.configFile);\n if (typeof cfg.scale === \"number\") configScale = cfg.scale;\n if (typeof cfg.theme === \"string\") configTheme = cfg.theme;\n if (typeof cfg.outputFormat === \"string\") configOutputFormat = cfg.outputFormat;\n }\n\n // ---------------------------------------------------------------------------\n // Validate: -o as single file + multiple inputs → error\n // ---------------------------------------------------------------------------\n const multipleInputs = expandedInputs.length > 1;\n if (multipleInputs && args.output && args.output !== \"-\" && !isDirectory(resolve(args.output))) {\n // -o is a file path (not a directory) with multiple inputs\n process.stderr.write(\"Error: -o must be a directory when multiple input files are provided.\\n\");\n process.exit(1);\n }\n\n // ---------------------------------------------------------------------------\n // --watch mode\n // ---------------------------------------------------------------------------\n if (args.watch) {\n const renderForWatch = async (inputArg: string): Promise<void> => {\n await renderOneFile(inputArg, args, {\n configScale,\n configTheme,\n configOutputFormat,\n multipleInputs,\n });\n };\n\n const renderMdForWatch = async (inputArg: string): Promise<void> => {\n // Re-invoke main md render for this file by delegating back through renderOneFile\n // but we need md-specific rendering — so call the same md render path.\n // For simplicity, we re-read and re-run the md render inline.\n let mdContent: string;\n try {\n mdContent = readFileSync(resolve(inputArg), \"utf-8\");\n } catch {\n throw new Error(`Cannot read input file: ${resolve(inputArg)}`);\n }\n\n const effectiveFormat = args.outputFormat ?? \"svg\";\n if (effectiveFormat !== \"svg\" && effectiveFormat !== \"png\") {\n throw new Error(`Unsupported output format: \"${effectiveFormat}\". Use \"svg\" or \"png\".`);\n }\n\n let mdOutputPath: string;\n let imageDir: string;\n\n if (args.output && args.output !== \"-\") {\n const resolvedOutput = resolve(args.output);\n imageDir = dirname(resolvedOutput);\n mdOutputPath = resolvedOutput;\n } else if (args.output === \"-\") {\n imageDir = dirname(resolve(inputArg));\n mdOutputPath = \"-\";\n } else {\n const resolvedInput = resolve(inputArg);\n const inputDir = dirname(resolvedInput);\n const ext = extname(inputArg);\n const stem = basename(inputArg, ext);\n imageDir = inputDir;\n mdOutputPath = join(inputDir, `${stem}-rendered.md`);\n }\n\n const ext = extname(inputArg);\n const imageStem = basename(inputArg, ext);\n const blocks = extractZenumlBlocks(mdContent);\n\n const effectiveScale = args.scale ?? configScale ?? 2;\n const effectiveTheme = args.theme ?? configTheme;\n const renderOptions: RenderOptions = {};\n if (effectiveTheme) {\n renderOptions.theme = effectiveTheme as RenderOptions[\"theme\"];\n }\n\n const imageFiles: Map<number, string> = new Map();\n for (const block of blocks) {\n if (block.empty) continue;\n const imageFilename = `${imageStem}-zenuml-${block.index}.${effectiveFormat}`;\n const imageFilePath = join(imageDir, imageFilename);\n\n const result = renderToSvg(block.code, renderOptions);\n const { svg, width: svgWidth, height: svgHeight } = result;\n\n mkdirSync(imageDir, { recursive: true });\n\n if (effectiveFormat === \"png\") {\n const pngBuffer = await rasterizeToPng(svg, svgWidth, svgHeight, effectiveScale);\n writeFileSync(imageFilePath, pngBuffer);\n } else {\n writeFileSync(imageFilePath, svg, \"utf-8\");\n }\n\n imageFiles.set(block.index, imageFilename);\n }\n\n let outputMd = mdContent;\n const sortedBlocks = [...blocks].reverse();\n for (const block of sortedBlocks) {\n const altText = block.title || `diagram ${block.index + 1}`;\n if (block.empty) {\n outputMd = outputMd.replace(block.raw, \"\");\n } else {\n const imageFilename = imageFiles.get(block.index)!;\n const replacement = ``;\n outputMd = outputMd.replace(block.raw, replacement);\n }\n }\n\n if (mdOutputPath === \"-\") {\n process.stdout.write(outputMd);\n } else {\n mkdirSync(dirname(mdOutputPath), { recursive: true });\n writeFileSync(mdOutputPath, outputMd, \"utf-8\");\n }\n };\n\n // Detect md inputs\n const hasMdInputs = expandedInputs.some((f) => /\\.(?:md|markdown)$/i.test(f));\n const renderMdFnForWatch = hasMdInputs ? renderMdForWatch : undefined;\n\n const watchHandle = await startWatchMode(\n expandedInputs,\n renderForWatch,\n undefined,\n undefined,\n undefined,\n renderMdFnForWatch,\n );\n\n process.on(\"SIGINT\", () => {\n watchHandle.shutdown();\n process.exit(0);\n });\n\n // Keep the process alive (watch mode runs indefinitely)\n await new Promise<void>(() => {});\n return;\n }\n\n // ---------------------------------------------------------------------------\n // Render mode — iterate all expanded inputs\n // ---------------------------------------------------------------------------\n let rendered = 0;\n let errors = 0;\n\n for (const inputArg of expandedInputs) {\n // Progress reporting\n if (!args.quiet) {\n const displayName = inputArg === \"-\" ? \"<stdin>\" : inputArg;\n process.stderr.write(`Rendering ${displayName}...\\n`);\n }\n\n try {\n await renderOneFile(inputArg, args, {\n configScale,\n configTheme,\n configOutputFormat,\n multipleInputs,\n });\n rendered++;\n } catch (err: any) {\n errors++;\n process.stderr.write(`Error: ${inputArg}: ${err.message}\\n`);\n }\n }\n\n // Summary line\n if (!args.quiet && expandedInputs.length > 1) {\n process.stderr.write(`Rendered ${rendered} files (${errors} errors)\\n`);\n }\n\n if (errors > 0) {\n process.exit(1);\n }\n}\n\n/** Render a single input file to its output. Throws on failure. */\nasync function renderOneFile(\n inputArg: string,\n args: CliArgs,\n config: {\n configScale?: number;\n configTheme?: string;\n configOutputFormat?: string;\n multipleInputs: boolean;\n },\n): Promise<void> {\n // Resolve effective values: CLI flag > config > default\n const outputPath = resolveOutput(inputArg, args.output, \".svg\");\n const autoFormatFromExt = outputPath !== \"-\" && extname(outputPath).toLowerCase() === \".png\" ? \"png\" : undefined;\n const effectiveFormat = args.outputFormat ?? config.configOutputFormat ?? autoFormatFromExt ?? \"svg\";\n\n // Validate format\n if (effectiveFormat !== \"svg\" && effectiveFormat !== \"png\") {\n throw new Error(`Unsupported output format: \"${effectiveFormat}\". Use \"svg\" or \"png\".`);\n }\n\n const effectiveScale = args.scale ?? config.configScale ?? 2;\n const effectiveTheme = args.theme ?? config.configTheme;\n\n // Read input\n let code: string;\n if (inputArg === \"-\") {\n code = await readStdin();\n } else {\n const inputPath = resolve(inputArg);\n try {\n code = readFileSync(inputPath, \"utf-8\");\n } catch {\n throw new Error(`Cannot read input file: ${inputPath}`);\n }\n }\n\n // Build render options\n const renderOptions: RenderOptions = {};\n if (effectiveTheme) {\n renderOptions.theme = effectiveTheme as RenderOptions[\"theme\"];\n }\n\n // Render SVG\n let svg: string;\n let svgWidth: number;\n let svgHeight: number;\n try {\n const result = renderToSvg(code, renderOptions);\n svg = result.svg;\n svgWidth = result.width;\n svgHeight = result.height;\n } catch (err: any) {\n throw new Error(`Failed to render diagram: ${err.message}`);\n }\n\n // Determine final output path (adjust extension if format is png and no explicit -o)\n let finalOutputPath = outputPath;\n if (effectiveFormat === \"png\" && finalOutputPath !== \"-\") {\n if (!args.output || isDirectory(resolve(args.output!))) {\n // Auto-generated or directory-based path: swap extension for .png\n const ext = extname(finalOutputPath);\n finalOutputPath = finalOutputPath.slice(0, -ext.length) + \".png\";\n }\n }\n\n // Ensure output directory exists\n if (finalOutputPath !== \"-\") {\n const dir = dirname(finalOutputPath);\n mkdirSync(dir, { recursive: true });\n }\n\n // Write output\n if (effectiveFormat === \"png\") {\n const pngBuffer = await rasterizeToPng(svg, svgWidth, svgHeight, effectiveScale);\n if (finalOutputPath === \"-\") {\n process.stdout.write(pngBuffer);\n } else {\n try {\n writeFileSync(finalOutputPath, pngBuffer);\n if (!args.quiet) {\n process.stderr.write(`Wrote ${finalOutputPath}\\n`);\n }\n } catch {\n throw new Error(`Cannot write output file: ${finalOutputPath}`);\n }\n }\n } else {\n // SVG output\n if (finalOutputPath === \"-\") {\n process.stdout.write(svg);\n } else {\n try {\n writeFileSync(finalOutputPath, svg, \"utf-8\");\n if (!args.quiet) {\n process.stderr.write(`Wrote ${finalOutputPath}\\n`);\n }\n } catch {\n throw new Error(`Cannot write output file: ${finalOutputPath}`);\n }\n }\n }\n}\n\nfunction resolveOutput(input: string, output: string | undefined, defaultExt: string = \".svg\"): string {\n if (output !== undefined) {\n if (output === \"-\") return \"-\";\n const resolvedOutput = resolve(output);\n if (isDirectory(resolvedOutput)) {\n // -o is a directory: output inside it using just the input's basename\n if (input === \"-\") return \"-\"; // stdin + directory doesn't make sense, fall to stdout\n const ext = extname(input);\n const base = basename(input, ext);\n return join(resolvedOutput, `${base}${defaultExt}`);\n }\n return resolvedOutput;\n }\n if (input === \"-\") return \"-\"; // stdin without -o → stdout\n // No -o: output adjacent to input with swapped extension\n const ext = extname(input);\n const base = basename(input, ext);\n const dir = dirname(resolve(input));\n return join(dir, `${base}${defaultExt}`);\n}\n\nasync function readStdin(): Promise<string> {\n const chunks: Uint8Array[] = [];\n for await (const chunk of Bun.stdin.stream()) {\n chunks.push(chunk as Uint8Array);\n }\n return Buffer.concat(chunks).toString(\"utf-8\");\n}\n\n// ---------------------------------------------------------------------------\n// Watch mode\n// ---------------------------------------------------------------------------\n\n/** Return a timestamp string in [HH:MM:SS] format using local time. */\nfunction watchTimestamp(): string {\n const now = new Date();\n const hh = String(now.getHours()).padStart(2, \"0\");\n const mm = String(now.getMinutes()).padStart(2, \"0\");\n const ss = String(now.getSeconds()).padStart(2, \"0\");\n return `[${hh}:${mm}:${ss}]`;\n}\n\nexport interface WatchHandle {\n shutdown: () => void;\n}\n\n/**\n * Start watch mode.\n *\n * @param inputs Resolved file paths to watch and render.\n * @param renderFn Called with a file path to re-render it. Must return a Promise.\n * @param watchFn Factory for a watcher. Defaults to node:fs.watch. Must return { close() }.\n * @param log Log function for render messages. Defaults to process.stderr.write.\n * @param delayMs Debounce delay in milliseconds. Defaults to 100.\n * @param renderMdFn Optional alternative render function for .md files. When provided,\n * .md inputs are rendered with this function instead of renderFn.\n */\nexport async function startWatchMode(\n inputs: string[],\n renderFn: (path: string) => Promise<void>,\n watchFn?: (path: string, handler: () => void) => { close(): void },\n log?: (msg: string) => void,\n delayMs?: number,\n renderMdFn?: (path: string) => Promise<void>,\n): Promise<WatchHandle> {\n const logFn = log ?? ((msg: string) => process.stderr.write(msg + \"\\n\"));\n const delay = delayMs ?? 100;\n\n // Default watcher using node:fs.watch\n const watchFactory = watchFn ?? ((path: string, handler: () => void) => {\n const watcher = fsWatch(path, () => handler());\n return { close: () => watcher.close() };\n });\n\n // Pick which render function to use for a given file\n function pickRender(p: string): (path: string) => Promise<void> {\n if (renderMdFn && /\\.(?:md|markdown)$/i.test(p)) {\n return renderMdFn;\n }\n return renderFn;\n }\n\n // Perform initial render for all inputs\n for (const input of inputs) {\n const rf = pickRender(input);\n const ts = watchTimestamp();\n try {\n await rf(input);\n logFn(`${ts} Rendered ${input} -> done`);\n } catch (err: any) {\n logFn(`${ts} Error: ${input}: ${err.message}`);\n }\n }\n\n // Set up per-file debounced watchers\n const handles: Array<{ close(): void }> = [];\n const timers = new Map<string, ReturnType<typeof setTimeout>>();\n\n for (const input of inputs) {\n const rf = pickRender(input);\n const handle = watchFactory(input, () => {\n // Debounce: clear any pending timer for this file\n const existing = timers.get(input);\n if (existing !== undefined) clearTimeout(existing);\n const t = setTimeout(async () => {\n timers.delete(input);\n const ts = watchTimestamp();\n try {\n await rf(input);\n logFn(`${ts} Rendered ${input} -> done`);\n } catch (err: any) {\n logFn(`${ts} Error: ${input}: ${err.message}`);\n }\n }, delay);\n timers.set(input, t);\n });\n handles.push(handle);\n }\n\n function shutdown(): void {\n // Cancel pending debounce timers\n for (const t of timers.values()) {\n clearTimeout(t);\n }\n timers.clear();\n // Close all watchers\n for (const h of handles) {\n h.close();\n }\n }\n\n return { shutdown };\n}\n\nif (import.meta.main) {\n main().finally(() => closeBrowser());\n}\n"],"names":["serializedATN","atn","decisionsToDFA","ProgContext","TitleContext","RetContext","ReturnAsyncMessageContext","DividerContext","StatContext","CreationContext","RefContext","MessageContext","AsyncMessageContext","ParametersContext","IfBlockContext","LoopContext","Participant","walker","Participants","seqParser","TextType","OwnableMessageType","logger","Comment","metrics","width","_HTML_PARTICIPANT_TOP","snapX","STROKE_WIDTH","HALF_STROKE","labelX","r","ext","base","fsWatch"],"mappings":";;;;;;;AAAA;AACA;;;AAIA,MAAMA,eAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACxE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACzE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACzE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACxE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACzE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AACvE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AAC1E,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACvE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACxE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACzE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACzE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;AACvE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;AAC1E,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACxE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AACxE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AACvE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;AAC3E,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AACxE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AACvE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AACvE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AACzE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AAC1E,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AACvE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACvE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC1E,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACzE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1E,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACzE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACxE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACxE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1E,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACxE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACzE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1E,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACzE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACzE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACxE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC1E,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1E,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACzE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1E,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACxE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACxE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACzE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACzE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC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AM,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACzE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACxE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACzE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACzE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACvE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACzE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACzE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACzE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AACzE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACzE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACzE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACzE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACzE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACzE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACzE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACzE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACxE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1E,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACzE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACxE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AAC1E,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AAC1E,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACzE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACvE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AAC1E,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACzE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACvE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACxE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACzE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC1E,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1E,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AAC1E,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACzE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1E,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACxE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1E,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACzE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACzE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACzE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACxE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1E,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACxE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACxE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACxE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACxE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACxE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACxE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACxE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACzE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACzE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACvE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACxE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1E,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACzE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACzE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AACvE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AACvE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,G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"}
|