From f27955146571a2c777643517e1873f72cc222b51 Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Fri, 9 Dec 2022 10:40:58 +0300 Subject: [PATCH] add root attributes --- examples/all.d2 | 19 + grammar.js | 180 ++++---- queries/highlights.scm | 6 +- src/grammar.json | 828 +++++++++---------------------------- src/node-types.json | 89 ++-- src/parser.c | Bin 101671 -> 76455 bytes test/corpus/attributes.txt | 45 ++ tree-sitter-d2.wasm | Bin 22751 -> 15627 bytes 8 files changed, 415 insertions(+), 752 deletions(-) create mode 100644 examples/all.d2 create mode 100644 test/corpus/attributes.txt diff --git a/examples/all.d2 b/examples/all.d2 new file mode 100644 index 0000000..500e34b --- /dev/null +++ b/examples/all.d2 @@ -0,0 +1,19 @@ +shape: oval +label: ten +constraint: utehu +icon: huell +opacity: 1 +fill: red +stroke: red +stroke-width: 5 +stroke-dash: 4 +border-radius: 1 +font-color: red +shadow: true +multiple: true +animated: true +link: https://to +near: abc + +hello + diff --git a/grammar.js b/grammar.js index 196bbc8..f397ded 100644 --- a/grammar.js +++ b/grammar.js @@ -1,11 +1,13 @@ const PREC = { COMMENT: -2, - UNQUOTED_STRING: 5, - CONTAINER: 9, - CONNECTION: 9, - SHAPE: 11, - IDENTIFIER: 12, - ARROW: 13, + UNQUOTED_STRING: 0, + CONTAINER: 2, + CONNECTION: 2, + SHAPE: 3, + IDENTIFIER: 0, + ARROW: 0, + ATTRIBUTE: 0, + ATTRIBUTE_KEY: 0, }; spaces = /[ \t]/; @@ -18,7 +20,7 @@ module.exports = grammar({ $.line_comment, ], - word: ($) => $._word, + word: ($) => $._identifier, conflicts: ($) => [ [$._connection_path, $.container], @@ -37,7 +39,20 @@ module.exports = grammar({ source_file: ($) => repeat($._new_root_definition), _new_root_definition: ($) => - choice($._eol, seq(choice($.shape, $.container, $.connection), $._end)), + choice( + $._eol, + seq( + choice( + alias($._new_root_attribute, $.attribute), + $.shape, + $.container, + $.connection + ), + $._end + ) + ), + + // connections connection: ($) => seq( @@ -57,6 +72,8 @@ module.exports = grammar({ $.shape_key ), + // containers + container: ($) => prec( PREC.CONTAINER, @@ -74,6 +91,20 @@ module.exports = grammar({ ) ), + _new_container_block: ($) => + prec( + PREC.CONTAINER, + seq("{", repeat($._new_container_block_definition), "}") + ), + + _new_container_block_definition: ($) => + prec( + PREC.CONTAINER, + choice($._eol, seq(choice($.shape, $.container, $.connection), $._end)) + ), + + // shapes + shape: ($) => prec( PREC.SHAPE, @@ -88,35 +119,87 @@ module.exports = grammar({ ) ), - shape_key: ($) => - choice( - $.string, - seq( - token(prec(PREC.IDENTIFIER, /\-?([\w\d]+|([\w\d]+( +|\-)[\w\d]+)+)/)), - optional($._dash) - ) - ), + shape_key: ($) => choice($.string, seq($._identifier, optional($._dash))), + + _identifier: ($) => + token(prec(PREC.IDENTIFIER, /\-?([\w\d]+|([\w\d]+( +|\-)[\w\d]+)+)/)), _new_shape_block: ($) => prec(PREC.SHAPE, seq("{", repeat($._new_shape_block_definition), "}")), _new_shape_block_definition: ($) => prec(PREC.SHAPE, choice($._eol)), - _new_container_block: ($) => + // attributes + + _new_root_attribute: ($) => prec( - PREC.CONTAINER, - seq("{", repeat($._new_container_block_definition), "}") + PREC.ATTRIBUTE, + seq(alias($._root_attr_key, $.attr_key), $._colon, $.attr_value) ), - _new_container_block_definition: ($) => - prec( - PREC.CONTAINER, - choice($._eol, seq(choice($.shape, $.container, $.connection), $._end)) + _root_attr_key: ($) => + choice( + "direction", + // reserved but doesn't affected for root + alias( + choice( + "shape", + "label", + "constraint", + "icon", + $._common_style_attr_key, + $._text_attr_key + ), + $.reserved + ) ), + _shape_attr_key: ($) => + prec( + PREC.ATTRIBUTE_KEY, + choice( + "shape", + "label", + // sql + "constraint", + // image + "icon", + "width", + "height" + ) + ), + + _style_attr_key: ($) => choice($._common_style_attr_key, "3d"), + + _common_style_attr_key: ($) => + choice( + "opacity", + "fill", + "stroke", + "stroke-width", + "stroke-dash", + "border-radius", + "font-color", + "shadow", + "multiple", + "animated", + "link" + ), + + _text_attr_key: ($) => "near", + + _connection_attr_key: ($) => choice("source-arrowhead", "target-arrowhead"), + + // + + label: ($) => choice($.string, $._unquoted_string), + + attr_value: ($) => seq(choice($.string, $._unquoted_string)), + // -------------------------------------------- // source_file: ($) => repeat($._root_definition), + /* _root_definition: ($) => choice( @@ -148,24 +231,6 @@ module.exports = grammar({ $.shape_key ), - _dash: ($) => token.immediate("-"), - - label: ($) => choice($.string, $._unquoted_string), - - attr_value: ($) => seq(spaces, choice($.string, $._unquoted_string)), - - _root_attribute: ($) => - choice( - seq( - alias($._root_attr_key, $.attr_key), - $._colon, - $.attr_value, - $._end - ), - alias(seq($._shape_attribute, $._end), $.invalid) - ), - - _root_attr_key: ($) => "direction", _shape_block: ($) => seq( @@ -211,38 +276,9 @@ module.exports = grammar({ _connection_attribute: ($) => seq(alias($._connection_attr_key, $.attr_key), $._colon, $.attr_value), + */ - _shape_attr_key: ($) => - choice( - "shape", - "label", - // sql - "constraint", - // image - "icon", - "width", - "height" - ), - - _style_attr_key: ($) => - choice( - "opacity", - "fill", - "stroke", - "stroke-width", - "stroke-dash", - "border-radius", - "font-color", - "shadow", - "multiple", - "animated", - "3d", - "link" - ), - - _text_attr_key: ($) => "near", - - _connection_attr_key: ($) => choice("source-arrowhead", "target-arrowhead"), + _dash: ($) => token.immediate("-"), _colon: ($) => seq(":"), diff --git a/queries/highlights.scm b/queries/highlights.scm index f9e3551..2e9f129 100644 --- a/queries/highlights.scm +++ b/queries/highlights.scm @@ -2,7 +2,7 @@ ;------------------------------------------------------------------------------- (ERROR) @error -(invalid (_) @error) +; (invalid (_) @error) ;------------------------------------------------------------------------------- (container_key) @constant @@ -15,7 +15,7 @@ (container_key (string) @string.special) (shape_key (string) @string) (label) @string -(attr_value) @string +; (attr_value) @string ; Comments ;------------------------------------------------------------------------------- @@ -42,4 +42,4 @@ ;------------------------------------------------------------------------------- (ERROR) @error -(invalid (_) @error) +; (invalid (_) @error) diff --git a/src/grammar.json b/src/grammar.json index eff3577..e973575 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -1,6 +1,6 @@ { "name": "d2", - "word": "_word", + "word": "_identifier", "rules": { "source_file": { "type": "REPEAT", @@ -22,6 +22,15 @@ { "type": "CHOICE", "members": [ + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "_new_root_attribute" + }, + "named": true, + "value": "attribute" + }, { "type": "SYMBOL", "name": "shape" @@ -97,7 +106,7 @@ "type": "REPEAT", "content": { "type": "PREC", - "value": 9, + "value": 2, "content": { "type": "SEQ", "members": [ @@ -126,7 +135,7 @@ }, "container": { "type": "PREC", - "value": 9, + "value": 2, "content": { "type": "SEQ", "members": [ @@ -230,9 +239,72 @@ ] } }, + "_new_container_block": { + "type": "PREC", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "REPEAT", + "content": { + "type": "SYMBOL", + "name": "_new_container_block_definition" + } + }, + { + "type": "STRING", + "value": "}" + } + ] + } + }, + "_new_container_block_definition": { + "type": "PREC", + "value": 2, + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_eol" + }, + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "shape" + }, + { + "type": "SYMBOL", + "name": "container" + }, + { + "type": "SYMBOL", + "name": "connection" + } + ] + }, + { + "type": "SYMBOL", + "name": "_end" + } + ] + } + ] + } + }, "shape": { "type": "PREC", - "value": 11, + "value": 3, "content": { "type": "SEQ", "members": [ @@ -318,15 +390,8 @@ "type": "SEQ", "members": [ { - "type": "TOKEN", - "content": { - "type": "PREC", - "value": 12, - "content": { - "type": "PATTERN", - "value": "\\-?([\\w\\d]+|([\\w\\d]+( +|\\-)[\\w\\d]+)+)" - } - } + "type": "SYMBOL", + "name": "_identifier" }, { "type": "CHOICE", @@ -344,9 +409,20 @@ } ] }, + "_identifier": { + "type": "TOKEN", + "content": { + "type": "PREC", + "value": 0, + "content": { + "type": "PATTERN", + "value": "\\-?([\\w\\d]+|([\\w\\d]+( +|\\-)[\\w\\d]+)+)" + } + } + }, "_new_shape_block": { "type": "PREC", - "value": 11, + "value": 3, "content": { "type": "SEQ", "members": [ @@ -370,7 +446,7 @@ }, "_new_shape_block_definition": { "type": "PREC", - "value": 11, + "value": 3, "content": { "type": "CHOICE", "members": [ @@ -381,656 +457,122 @@ ] } }, - "_new_container_block": { + "_new_root_attribute": { "type": "PREC", - "value": 9, + "value": 0, "content": { "type": "SEQ", "members": [ { - "type": "STRING", - "value": "{" - }, - { - "type": "REPEAT", + "type": "ALIAS", "content": { "type": "SYMBOL", - "name": "_new_container_block_definition" - } + "name": "_root_attr_key" + }, + "named": true, + "value": "attr_key" }, - { - "type": "STRING", - "value": "}" - } - ] - } - }, - "_new_container_block_definition": { - "type": "PREC", - "value": 9, - "content": { - "type": "CHOICE", - "members": [ { "type": "SYMBOL", - "name": "_eol" + "name": "_colon" }, { - "type": "SEQ", - "members": [ - { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "shape" - }, - { - "type": "SYMBOL", - "name": "container" - }, - { - "type": "SYMBOL", - "name": "connection" - } - ] - }, - { - "type": "SYMBOL", - "name": "_end" - } - ] + "type": "SYMBOL", + "name": "attr_value" } ] } }, - "_root_definition": { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "_emptyline" - }, - { - "type": "SYMBOL", - "name": "_root_attribute" - }, - { - "type": "SYMBOL", - "name": "connection" - }, - { - "type": "SYMBOL", - "name": "_shape_definition" - } - ] - }, - "_shape_definition": { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "_shape_path" - }, - { - "type": "CHOICE", - "members": [ - { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "dot" - }, - { - "type": "SYMBOL", - "name": "_shape_attribute" - } - ] - }, - { - "type": "SEQ", - "members": [ - { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "_colon" - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "PATTERN", - "value": "[ \\t]" - }, - { - "type": "SYMBOL", - "name": "label" - } - ] - }, - { - "type": "BLANK" - } - ] - } - ] - }, - { - "type": "BLANK" - } - ] - }, - { - "type": "CHOICE", - "members": [ - { - "type": "ALIAS", - "content": { - "type": "SYMBOL", - "name": "_shape_block" - }, - "named": true, - "value": "block" - }, - { - "type": "BLANK" - } - ] - } - ] - } - ] - }, - { - "type": "BLANK" - } - ] - }, - { - "type": "SYMBOL", - "name": "_end" - } - ] - }, - "_shape_path": { - "type": "SEQ", - "members": [ - { - "type": "PATTERN", - "value": "[ \\t]" - }, - { - "type": "REPEAT", - "content": { - "type": "SEQ", - "members": [ - { - "type": "ALIAS", - "content": { - "type": "SYMBOL", - "name": "shape_key" - }, - "named": true, - "value": "container_key" - }, - { - "type": "PATTERN", - "value": "[ \\t]" - }, - { - "type": "SYMBOL", - "name": "dot" - }, - { - "type": "PATTERN", - "value": "[ \\t]" - } - ] - } - }, - { - "type": "SYMBOL", - "name": "shape_key" - } - ] - }, - "_dash": { - "type": "IMMEDIATE_TOKEN", - "content": { - "type": "STRING", - "value": "-" - } - }, - "label": { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "string" - }, - { - "type": "SYMBOL", - "name": "_unquoted_string" - } - ] - }, - "attr_value": { - "type": "SEQ", - "members": [ - { - "type": "PATTERN", - "value": "[ \\t]" - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "string" - }, - { - "type": "SYMBOL", - "name": "_unquoted_string" - } - ] - } - ] - }, - "_root_attribute": { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "ALIAS", - "content": { - "type": "SYMBOL", - "name": "_root_attr_key" - }, - "named": true, - "value": "attr_key" - }, - { - "type": "SYMBOL", - "name": "_colon" - }, - { - "type": "SYMBOL", - "name": "attr_value" - }, - { - "type": "SYMBOL", - "name": "_end" - } - ] - }, - { - "type": "ALIAS", - "content": { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "_shape_attribute" - }, - { - "type": "SYMBOL", - "name": "_end" - } - ] - }, - "named": true, - "value": "invalid" - } - ] - }, "_root_attr_key": { - "type": "STRING", - "value": "direction" - }, - "_shape_block": { - "type": "SEQ", + "type": "CHOICE", "members": [ - { - "type": "PATTERN", - "value": "[ \\t]" - }, { "type": "STRING", - "value": "{" + "value": "direction" }, { - "type": "REPEAT", + "type": "ALIAS", "content": { "type": "CHOICE", "members": [ { - "type": "SYMBOL", - "name": "_emptyline" + "type": "STRING", + "value": "shape" }, { - "type": "SEQ", - "members": [ - { - "type": "PATTERN", - "value": "[ \\t]" - }, - { - "type": "SYMBOL", - "name": "_shape_block_definition" - } - ] + "type": "STRING", + "value": "label" + }, + { + "type": "STRING", + "value": "constraint" + }, + { + "type": "STRING", + "value": "icon" + }, + { + "type": "SYMBOL", + "name": "_common_style_attr_key" + }, + { + "type": "SYMBOL", + "name": "_text_attr_key" } ] - } - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "_shape_block_definition" - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "_end" - }, - { - "type": "BLANK" - } - ] - } - ] - }, - { - "type": "BLANK" - } - ] - }, - { - "type": "PATTERN", - "value": "[ \\t]" - }, - { - "type": "STRING", - "value": "}" - } - ] - }, - "_shape_block_definition": { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "connection" - }, - { - "type": "SYMBOL", - "name": "_shape_definition" - }, - { - "type": "SYMBOL", - "name": "_shape_attribute" - } - ] - }, - "_shape_attribute": { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "ALIAS", - "content": { - "type": "SYMBOL", - "name": "_shape_attr_key" - }, - "named": true, - "value": "attr_key" - }, - { - "type": "SYMBOL", - "name": "_colon" - }, - { - "type": "SYMBOL", - "name": "attr_value" - } - ] - }, - { - "type": "SYMBOL", - "name": "_style_attribute" - } - ] - }, - "_style_attribute": { - "type": "SEQ", - "members": [ - { - "type": "ALIAS", - "content": { - "type": "STRING", - "value": "style" }, "named": true, - "value": "attr_key" - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "dot" - }, - { - "type": "SYMBOL", - "name": "_inner_style_attribute" - } - ] - }, - { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "_colon" - }, - { - "type": "ALIAS", - "content": { - "type": "SYMBOL", - "name": "_style_attr_block" - }, - "named": true, - "value": "block" - } - ] - } - ] - } - ] - }, - "_style_attr_block": { - "type": "SEQ", - "members": [ - { - "type": "PATTERN", - "value": "[ \\t]" - }, - { - "type": "STRING", - "value": "{" - }, - { - "type": "PATTERN", - "value": "[ \\t]" - }, - { - "type": "REPEAT", - "content": { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "_emptyline" - }, - { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "_inner_style_attribute" - }, - { - "type": "SYMBOL", - "name": "_end" - } - ] - } - ] - } - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "SYMBOL", - "name": "_inner_style_attribute" - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "_end" - }, - { - "type": "BLANK" - } - ] - } - ] - }, - { - "type": "BLANK" - } - ] - }, - { - "type": "PATTERN", - "value": "[ \\t]" - }, - { - "type": "STRING", - "value": "}" - } - ] - }, - "_inner_style_attribute": { - "type": "SEQ", - "members": [ - { - "type": "PATTERN", - "value": "[ \\t]" - }, - { - "type": "ALIAS", - "content": { - "type": "SYMBOL", - "name": "_style_attr_key" - }, - "named": true, - "value": "attr_key" - }, - { - "type": "SYMBOL", - "name": "_colon" - }, - { - "type": "SYMBOL", - "name": "attr_value" - } - ] - }, - "_connection_attribute": { - "type": "SEQ", - "members": [ - { - "type": "ALIAS", - "content": { - "type": "SYMBOL", - "name": "_connection_attr_key" - }, - "named": true, - "value": "attr_key" - }, - { - "type": "SYMBOL", - "name": "_colon" - }, - { - "type": "SYMBOL", - "name": "attr_value" + "value": "reserved" } ] }, "_shape_attr_key": { + "type": "PREC", + "value": 0, + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "shape" + }, + { + "type": "STRING", + "value": "label" + }, + { + "type": "STRING", + "value": "constraint" + }, + { + "type": "STRING", + "value": "icon" + }, + { + "type": "STRING", + "value": "width" + }, + { + "type": "STRING", + "value": "height" + } + ] + } + }, + "_style_attr_key": { "type": "CHOICE", "members": [ { - "type": "STRING", - "value": "shape" + "type": "SYMBOL", + "name": "_common_style_attr_key" }, { "type": "STRING", - "value": "label" - }, - { - "type": "STRING", - "value": "constraint" - }, - { - "type": "STRING", - "value": "icon" - }, - { - "type": "STRING", - "value": "width" - }, - { - "type": "STRING", - "value": "height" + "value": "3d" } ] }, - "_style_attr_key": { + "_common_style_attr_key": { "type": "CHOICE", "members": [ { @@ -1073,10 +615,6 @@ "type": "STRING", "value": "animated" }, - { - "type": "STRING", - "value": "3d" - }, { "type": "STRING", "value": "link" @@ -1100,6 +638,44 @@ } ] }, + "label": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "string" + }, + { + "type": "SYMBOL", + "name": "_unquoted_string" + } + ] + }, + "attr_value": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "string" + }, + { + "type": "SYMBOL", + "name": "_unquoted_string" + } + ] + } + ] + }, + "_dash": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "STRING", + "value": "-" + } + }, "_colon": { "type": "SEQ", "members": [ @@ -1122,7 +698,7 @@ "type": "TOKEN", "content": { "type": "PREC", - "value": 13, + "value": 0, "content": { "type": "CHOICE", "members": [ @@ -1166,7 +742,7 @@ "type": "TOKEN", "content": { "type": "PREC", - "value": 5, + "value": 0, "content": { "type": "PATTERN", "value": "[\\w\\-?!]([^'\"`\\n;{}]*[\\w\\-?!])?" diff --git a/src/node-types.json b/src/node-types.json index 3c813bb..17e7779 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -2,7 +2,17 @@ { "type": "attr_key", "named": true, - "fields": {} + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "reserved", + "named": true + } + ] + } }, { "type": "attr_value", @@ -20,12 +30,12 @@ } }, { - "type": "block", + "type": "attribute", "named": true, "fields": {}, "children": { "multiple": true, - "required": false, + "required": true, "types": [ { "type": "attr_key", @@ -34,11 +44,18 @@ { "type": "attr_value", "named": true - }, - { - "type": "block", - "named": true - }, + } + ] + } + }, + { + "type": "block", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ { "type": "connection", "named": true @@ -47,25 +64,9 @@ "type": "container", "named": true }, - { - "type": "container_key", - "named": true - }, - { - "type": "dot", - "named": true - }, - { - "type": "label", - "named": true - }, { "type": "shape", "named": true - }, - { - "type": "shape_key", - "named": true } ] } @@ -151,33 +152,6 @@ ] } }, - { - "type": "invalid", - "named": true, - "fields": {}, - "children": { - "multiple": true, - "required": false, - "types": [ - { - "type": "attr_key", - "named": true - }, - { - "type": "attr_value", - "named": true - }, - { - "type": "block", - "named": true - }, - { - "type": "dot", - "named": true - } - ] - } - }, { "type": "label", "named": true, @@ -193,6 +167,11 @@ ] } }, + { + "type": "reserved", + "named": true, + "fields": {} + }, { "type": "shape", "named": true, @@ -239,6 +218,10 @@ "multiple": true, "required": false, "types": [ + { + "type": "attribute", + "named": true + }, { "type": "connection", "named": true @@ -307,6 +290,10 @@ "type": "constraint", "named": false }, + { + "type": "direction", + "named": false + }, { "type": "dot", "named": true diff --git a/src/parser.c b/src/parser.c index e023a529b7af655f7c7608d16ac5355baddec98e..adddd4d9b02c9effa675f63554e4952e190ecdc4 100644 GIT binary patch literal 76455 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 literal 101671 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 CHG