geomerative 1.1.0-java → 2.0.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.mvn/extensions.xml +1 -1
  4. data/.mvn/wrapper/maven-wrapper.properties +1 -1
  5. data/CHANGELOG.md +3 -0
  6. data/COPYING.md +1 -1
  7. data/README.md +0 -1
  8. data/Rakefile +2 -15
  9. data/docs/_includes/header.html +6 -6
  10. data/docs/_includes/icon-github.svg +3 -1
  11. data/docs/_includes/icon-twitter.svg +3 -1
  12. data/docs/_includes/navigation.html +18 -18
  13. data/docs/_sass/_base.scss +79 -79
  14. data/docs/_sass/_layout.scss +137 -137
  15. data/docs/_sass/_syntax-highlighting.scss +64 -64
  16. data/docs/index.html +18 -18
  17. data/examples/data/bot1.svg +1 -1
  18. data/examples/data/lion.svg +156 -156
  19. data/examples/data/ruby.svg +1 -1
  20. data/geomerative.gemspec +1 -2
  21. data/lib/geomerative/version.rb +1 -1
  22. data/mvnw +234 -0
  23. data/mvnw.cmd +145 -0
  24. data/pom.rb +14 -13
  25. data/pom.xml +14 -13
  26. data/src/geomerative/FastRClip.java +2149 -2156
  27. data/src/geomerative/RClip.java +2237 -2539
  28. data/src/geomerative/RClosest.java +33 -31
  29. data/src/geomerative/RCommand.java +1750 -1758
  30. data/src/geomerative/RContour.java +290 -292
  31. data/src/geomerative/RFont.java +277 -246
  32. data/src/geomerative/RG.java +722 -727
  33. data/src/geomerative/RGeomElem.java +967 -960
  34. data/src/geomerative/RGroup.java +508 -467
  35. data/src/geomerative/RMatrix.java +304 -289
  36. data/src/geomerative/RMesh.java +241 -229
  37. data/src/geomerative/RPath.java +924 -925
  38. data/src/geomerative/RPoint.java +391 -391
  39. data/src/geomerative/RPolygon.java +998 -988
  40. data/src/geomerative/RRectangle.java +43 -52
  41. data/src/geomerative/RSVG.java +480 -516
  42. data/src/geomerative/RShape.java +1767 -1777
  43. data/src/geomerative/RStrip.java +173 -176
  44. data/src/geomerative/RStyle.java +197 -194
  45. data/src/org/apache/batik/svggen/font/Font.java +141 -142
  46. data/src/org/apache/batik/svggen/font/Glyph.java +102 -71
  47. data/src/org/apache/batik/svggen/font/Point.java +12 -12
  48. data/src/org/apache/batik/svggen/font/RandomAccessFileEmulator.java +14 -12
  49. data/src/org/apache/batik/svggen/font/table/ClassDef.java +12 -12
  50. data/src/org/apache/batik/svggen/font/table/ClassDefFormat1.java +27 -24
  51. data/src/org/apache/batik/svggen/font/table/ClassDefFormat2.java +20 -17
  52. data/src/org/apache/batik/svggen/font/table/CmapFormat.java +43 -43
  53. data/src/org/apache/batik/svggen/font/table/CmapFormat0.java +33 -26
  54. data/src/org/apache/batik/svggen/font/table/CmapFormat2.java +25 -20
  55. data/src/org/apache/batik/svggen/font/table/CmapFormat4.java +106 -96
  56. data/src/org/apache/batik/svggen/font/table/CmapFormat6.java +36 -32
  57. data/src/org/apache/batik/svggen/font/table/CmapIndexEntry.java +69 -49
  58. data/src/org/apache/batik/svggen/font/table/CmapTable.java +50 -50
  59. data/src/org/apache/batik/svggen/font/table/Coverage.java +19 -19
  60. data/src/org/apache/batik/svggen/font/table/CoverageFormat1.java +30 -27
  61. data/src/org/apache/batik/svggen/font/table/CoverageFormat2.java +26 -24
  62. data/src/org/apache/batik/svggen/font/table/CvtTable.java +16 -16
  63. data/src/org/apache/batik/svggen/font/table/Device.java +32 -32
  64. data/src/org/apache/batik/svggen/font/table/DirectoryEntry.java +39 -39
  65. data/src/org/apache/batik/svggen/font/table/Feature.java +26 -23
  66. data/src/org/apache/batik/svggen/font/table/FeatureList.java +37 -35
  67. data/src/org/apache/batik/svggen/font/table/FeatureRecord.java +22 -22
  68. data/src/org/apache/batik/svggen/font/table/FeatureTags.java +4 -3
  69. data/src/org/apache/batik/svggen/font/table/FpgmTable.java +9 -9
  70. data/src/org/apache/batik/svggen/font/table/GlyfCompositeComp.java +134 -132
  71. data/src/org/apache/batik/svggen/font/table/GlyfCompositeDescript.java +123 -122
  72. data/src/org/apache/batik/svggen/font/table/GlyfDescript.java +44 -44
  73. data/src/org/apache/batik/svggen/font/table/GlyfSimpleDescript.java +110 -109
  74. data/src/org/apache/batik/svggen/font/table/GlyfTable.java +46 -46
  75. data/src/org/apache/batik/svggen/font/table/GlyphDescription.java +25 -13
  76. data/src/org/apache/batik/svggen/font/table/GposTable.java +26 -23
  77. data/src/org/apache/batik/svggen/font/table/GsubTable.java +85 -82
  78. data/src/org/apache/batik/svggen/font/table/HeadTable.java +131 -131
  79. data/src/org/apache/batik/svggen/font/table/HheaTable.java +80 -80
  80. data/src/org/apache/batik/svggen/font/table/HmtxTable.java +50 -49
  81. data/src/org/apache/batik/svggen/font/table/KernSubtable.java +29 -27
  82. data/src/org/apache/batik/svggen/font/table/KernSubtableFormat0.java +35 -32
  83. data/src/org/apache/batik/svggen/font/table/KernSubtableFormat2.java +28 -26
  84. data/src/org/apache/batik/svggen/font/table/KernTable.java +36 -31
  85. data/src/org/apache/batik/svggen/font/table/KerningPair.java +27 -23
  86. data/src/org/apache/batik/svggen/font/table/LangSys.java +28 -26
  87. data/src/org/apache/batik/svggen/font/table/LangSysRecord.java +22 -22
  88. data/src/org/apache/batik/svggen/font/table/Ligature.java +24 -24
  89. data/src/org/apache/batik/svggen/font/table/LigatureSet.java +24 -24
  90. data/src/org/apache/batik/svggen/font/table/LigatureSubst.java +9 -9
  91. data/src/org/apache/batik/svggen/font/table/LigatureSubstFormat1.java +30 -30
  92. data/src/org/apache/batik/svggen/font/table/LocaTable.java +37 -37
  93. data/src/org/apache/batik/svggen/font/table/Lookup.java +41 -40
  94. data/src/org/apache/batik/svggen/font/table/LookupList.java +34 -34
  95. data/src/org/apache/batik/svggen/font/table/LookupSubtableFactory.java +7 -5
  96. data/src/org/apache/batik/svggen/font/table/MaxpTable.java +96 -96
  97. data/src/org/apache/batik/svggen/font/table/NameRecord.java +64 -65
  98. data/src/org/apache/batik/svggen/font/table/NameTable.java +33 -33
  99. data/src/org/apache/batik/svggen/font/table/Os2Table.java +196 -196
  100. data/src/org/apache/batik/svggen/font/table/Panose.java +14 -12
  101. data/src/org/apache/batik/svggen/font/table/PostTable.java +338 -338
  102. data/src/org/apache/batik/svggen/font/table/PrepTable.java +9 -9
  103. data/src/org/apache/batik/svggen/font/table/Program.java +15 -15
  104. data/src/org/apache/batik/svggen/font/table/RangeRecord.java +26 -25
  105. data/src/org/apache/batik/svggen/font/table/Script.java +38 -38
  106. data/src/org/apache/batik/svggen/font/table/ScriptList.java +42 -42
  107. data/src/org/apache/batik/svggen/font/table/ScriptRecord.java +22 -22
  108. data/src/org/apache/batik/svggen/font/table/ScriptTags.java +2 -1
  109. data/src/org/apache/batik/svggen/font/table/SingleSubst.java +15 -16
  110. data/src/org/apache/batik/svggen/font/table/SingleSubstFormat1.java +33 -33
  111. data/src/org/apache/batik/svggen/font/table/SingleSubstFormat2.java +32 -32
  112. data/src/org/apache/batik/svggen/font/table/Table.java +171 -170
  113. data/src/org/apache/batik/svggen/font/table/TableDirectory.java +55 -55
  114. data/src/org/apache/batik/svggen/font/table/TableFactory.java +92 -93
  115. metadata +10 -11
  116. data/.travis.yml +0 -9
@@ -18,7 +18,7 @@
18
18
  package org.apache.batik.svggen.font.table;
19
19
 
20
20
  import java.io.IOException;
21
- import org.apache.batik.svggen.font.*;
21
+ import org.apache.batik.svggen.font.RandomAccessFileEmulator;
22
22
 
23
23
  /**
24
24
  * @version $Id: PrepTable.java,v 1.3 2004/08/18 07:15:22 vhardy Exp $
@@ -26,13 +26,13 @@ import org.apache.batik.svggen.font.*;
26
26
  */
27
27
  public class PrepTable extends Program implements Table {
28
28
 
29
- public PrepTable(DirectoryEntry de,RandomAccessFileEmulator raf) throws IOException {
30
- raf.seek(de.getOffset());
31
- readInstructions(raf, de.getLength());
32
- }
29
+ public PrepTable(DirectoryEntry de, RandomAccessFileEmulator raf) throws IOException {
30
+ raf.seek(de.getOffset());
31
+ readInstructions(raf, de.getLength());
32
+ }
33
33
 
34
- @Override
35
- public int getType() {
36
- return prep;
37
- }
34
+ @Override
35
+ public int getType() {
36
+ return PREP;
37
+ }
38
38
  }
@@ -19,7 +19,7 @@ package org.apache.batik.svggen.font.table;
19
19
 
20
20
  import java.io.ByteArrayInputStream;
21
21
  import java.io.IOException;
22
- import org.apache.batik.svggen.font.*;
22
+ import org.apache.batik.svggen.font.RandomAccessFileEmulator;
23
23
 
24
24
  /**
25
25
  * @version $Id: Program.java,v 1.4 2004/08/18 07:15:22 vhardy Exp $
@@ -27,23 +27,23 @@ import org.apache.batik.svggen.font.*;
27
27
  */
28
28
  public abstract class Program {
29
29
 
30
- private short[] instructions;
30
+ private short[] instructions;
31
31
 
32
- public short[] getInstructions() {
33
- return instructions;
34
- }
32
+ public short[] getInstructions() {
33
+ return instructions;
34
+ }
35
35
 
36
- protected void readInstructions(RandomAccessFileEmulator raf, int count) throws IOException {
37
- instructions = new short[count];
38
- for (int i = 0; i < count; i++) {
39
- instructions[i] = (short) raf.readUnsignedByte();
40
- }
36
+ protected void readInstructions(RandomAccessFileEmulator raf, int count) throws IOException {
37
+ instructions = new short[count];
38
+ for (int i = 0; i < count; i++) {
39
+ instructions[i] = (short) raf.readUnsignedByte();
41
40
  }
41
+ }
42
42
 
43
- protected void readInstructions(ByteArrayInputStream bais, int count) {
44
- instructions = new short[count];
45
- for (int i = 0; i < count; i++) {
46
- instructions[i] = (short) bais.read();
47
- }
43
+ protected void readInstructions(ByteArrayInputStream bais, int count) {
44
+ instructions = new short[count];
45
+ for (int i = 0; i < count; i++) {
46
+ instructions[i] = (short) bais.read();
48
47
  }
48
+ }
49
49
  }
@@ -18,7 +18,7 @@
18
18
  package org.apache.batik.svggen.font.table;
19
19
 
20
20
  import java.io.IOException;
21
- import org.apache.batik.svggen.font.*;
21
+ import org.apache.batik.svggen.font.RandomAccessFileEmulator;
22
22
 
23
23
  /**
24
24
  * Coverage Index (GlyphID) = StartCoverageIndex + GlyphID - Start GlyphID
@@ -28,30 +28,31 @@ import org.apache.batik.svggen.font.*;
28
28
  */
29
29
  public class RangeRecord {
30
30
 
31
- private final int start;
32
- private final int end;
33
- private final int startCoverageIndex;
34
-
35
- /** Creates new RangeRecord
36
- * @param raf
37
- * @throws java.io.IOException
38
- */
39
- public RangeRecord(RandomAccessFileEmulator raf) throws IOException {
40
- start = raf.readUnsignedShort();
41
- end = raf.readUnsignedShort();
42
- startCoverageIndex = raf.readUnsignedShort();
43
- }
44
-
45
- public boolean isInRange(int glyphId) {
46
- return (start <= glyphId && glyphId <= end);
47
- }
48
-
49
- public int getCoverageIndex(int glyphId) {
50
- if (isInRange(glyphId)) {
51
- return startCoverageIndex + glyphId - start;
52
- }
53
- return -1;
31
+ private final int start;
32
+ private final int end;
33
+ private final int startCoverageIndex;
34
+
35
+ /**
36
+ * Creates new RangeRecord
37
+ *
38
+ * @param raf
39
+ * @throws java.io.IOException
40
+ */
41
+ public RangeRecord(RandomAccessFileEmulator raf) throws IOException {
42
+ start = raf.readUnsignedShort();
43
+ end = raf.readUnsignedShort();
44
+ startCoverageIndex = raf.readUnsignedShort();
45
+ }
46
+
47
+ public boolean isInRange(int glyphId) {
48
+ return (start <= glyphId && glyphId <= end);
49
+ }
50
+
51
+ public int getCoverageIndex(int glyphId) {
52
+ if (isInRange(glyphId)) {
53
+ return startCoverageIndex + glyphId - start;
54
54
  }
55
+ return -1;
56
+ }
55
57
 
56
58
  }
57
-
@@ -18,7 +18,7 @@
18
18
  package org.apache.batik.svggen.font.table;
19
19
 
20
20
  import java.io.IOException;
21
- import org.apache.batik.svggen.font.*;
21
+ import org.apache.batik.svggen.font.RandomAccessFileEmulator;
22
22
 
23
23
  /**
24
24
  *
@@ -27,46 +27,46 @@ import org.apache.batik.svggen.font.*;
27
27
  */
28
28
  public class Script {
29
29
 
30
- private final int defaultLangSysOffset;
31
- private final int langSysCount;
32
- private LangSysRecord[] langSysRecords;
33
- private LangSys defaultLangSys;
34
- private LangSys[] langSys;
30
+ private final int defaultLangSysOffset;
31
+ private final int langSysCount;
32
+ private LangSysRecord[] langSysRecords;
33
+ private LangSys defaultLangSys;
34
+ private LangSys[] langSys;
35
35
 
36
- /**
37
- * Creates new ScriptTable
38
- *
39
- * @param raf
40
- * @param offset
41
- * @throws java.io.IOException
42
- */
43
- protected Script(RandomAccessFileEmulator raf, int offset) throws IOException {
44
- raf.seek(offset);
45
- defaultLangSysOffset = raf.readUnsignedShort();
46
- langSysCount = raf.readUnsignedShort();
47
- if (langSysCount > 0) {
48
- langSysRecords = new LangSysRecord[langSysCount];
49
- for (int i = 0; i < langSysCount; i++) {
50
- langSysRecords[i] = new LangSysRecord(raf);
51
- }
52
- }
53
-
54
- // Read the LangSys tables
55
- if (langSysCount > 0) {
56
- langSys = new LangSys[langSysCount];
57
- for (int i = 0; i < langSysCount; i++) {
58
- raf.seek(offset + langSysRecords[i].getOffset());
59
- langSys[i] = new LangSys(raf);
60
- }
61
- }
62
- if (defaultLangSysOffset > 0) {
63
- raf.seek(offset + defaultLangSysOffset);
64
- defaultLangSys = new LangSys(raf);
65
- }
36
+ /**
37
+ * Creates new ScriptTable
38
+ *
39
+ * @param raf
40
+ * @param offset
41
+ * @throws java.io.IOException
42
+ */
43
+ protected Script(RandomAccessFileEmulator raf, int offset) throws IOException {
44
+ raf.seek(offset);
45
+ defaultLangSysOffset = raf.readUnsignedShort();
46
+ langSysCount = raf.readUnsignedShort();
47
+ if (langSysCount > 0) {
48
+ langSysRecords = new LangSysRecord[langSysCount];
49
+ for (int i = 0; i < langSysCount; i++) {
50
+ langSysRecords[i] = new LangSysRecord(raf);
51
+ }
66
52
  }
67
53
 
68
- public LangSys getDefaultLangSys() {
69
- return defaultLangSys;
54
+ // Read the LangSys tables
55
+ if (langSysCount > 0) {
56
+ langSys = new LangSys[langSysCount];
57
+ for (int i = 0; i < langSysCount; i++) {
58
+ raf.seek(offset + langSysRecords[i].getOffset());
59
+ langSys[i] = new LangSys(raf);
60
+ }
61
+ }
62
+ if (defaultLangSysOffset > 0) {
63
+ raf.seek(offset + defaultLangSysOffset);
64
+ defaultLangSys = new LangSys(raf);
70
65
  }
66
+ }
67
+
68
+ public LangSys getDefaultLangSys() {
69
+ return defaultLangSys;
70
+ }
71
71
 
72
72
  }
@@ -18,7 +18,7 @@
18
18
  package org.apache.batik.svggen.font.table;
19
19
 
20
20
  import java.io.IOException;
21
- import org.apache.batik.svggen.font.*;
21
+ import org.apache.batik.svggen.font.RandomAccessFileEmulator;
22
22
 
23
23
  /**
24
24
  *
@@ -27,52 +27,52 @@ import org.apache.batik.svggen.font.*;
27
27
  */
28
28
  public class ScriptList {
29
29
 
30
- private int scriptCount = 0;
31
- private final ScriptRecord[] scriptRecords;
32
- private final Script[] scripts;
30
+ private int scriptCount = 0;
31
+ private final ScriptRecord[] scriptRecords;
32
+ private final Script[] scripts;
33
33
 
34
- /**
35
- * Creates new ScriptList
36
- *
37
- * @param raf
38
- * @param offset
39
- * @throws java.io.IOException
40
- */
41
- protected ScriptList(RandomAccessFileEmulator raf, int offset) throws IOException {
42
- raf.seek(offset);
43
- scriptCount = raf.readUnsignedShort();
44
- scriptRecords = new ScriptRecord[scriptCount];
45
- scripts = new Script[scriptCount];
46
- for (int i = 0; i < scriptCount; i++) {
47
- scriptRecords[i] = new ScriptRecord(raf);
48
- }
49
- for (int i = 0; i < scriptCount; i++) {
50
- scripts[i] = new Script(raf, offset + scriptRecords[i].getOffset());
51
- }
34
+ /**
35
+ * Creates new ScriptList
36
+ *
37
+ * @param raf
38
+ * @param offset
39
+ * @throws java.io.IOException
40
+ */
41
+ protected ScriptList(RandomAccessFileEmulator raf, int offset) throws IOException {
42
+ raf.seek(offset);
43
+ scriptCount = raf.readUnsignedShort();
44
+ scriptRecords = new ScriptRecord[scriptCount];
45
+ scripts = new Script[scriptCount];
46
+ for (int i = 0; i < scriptCount; i++) {
47
+ scriptRecords[i] = new ScriptRecord(raf);
52
48
  }
53
-
54
- public int getScriptCount() {
55
- return scriptCount;
49
+ for (int i = 0; i < scriptCount; i++) {
50
+ scripts[i] = new Script(raf, offset + scriptRecords[i].getOffset());
56
51
  }
52
+ }
57
53
 
58
- public ScriptRecord getScriptRecord(int i) {
59
- return scriptRecords[i];
60
- }
54
+ public int getScriptCount() {
55
+ return scriptCount;
56
+ }
61
57
 
62
- public Script findScript(String tag) {
63
- if (tag.length() != 4) {
64
- return null;
65
- }
66
- int tagVal = ((tag.charAt(0) << 24)
67
- | (tag.charAt(1) << 16)
68
- | (tag.charAt(2) << 8)
69
- | tag.charAt(3));
70
- for (int i = 0; i < scriptCount; i++) {
71
- if (scriptRecords[i].getTag() == tagVal) {
72
- return scripts[i];
73
- }
74
- }
75
- return null;
58
+ public ScriptRecord getScriptRecord(int i) {
59
+ return scriptRecords[i];
60
+ }
61
+
62
+ public Script findScript(String tag) {
63
+ if (tag.length() != 4) {
64
+ return null;
65
+ }
66
+ int tagVal = ((tag.charAt(0) << 24)
67
+ | (tag.charAt(1) << 16)
68
+ | (tag.charAt(2) << 8)
69
+ | tag.charAt(3));
70
+ for (int i = 0; i < scriptCount; i++) {
71
+ if (scriptRecords[i].getTag() == tagVal) {
72
+ return scripts[i];
73
+ }
76
74
  }
75
+ return null;
76
+ }
77
77
 
78
78
  }
@@ -18,7 +18,7 @@
18
18
  package org.apache.batik.svggen.font.table;
19
19
 
20
20
  import java.io.IOException;
21
- import org.apache.batik.svggen.font.*;
21
+ import org.apache.batik.svggen.font.RandomAccessFileEmulator;
22
22
 
23
23
  /**
24
24
  *
@@ -27,26 +27,26 @@ import org.apache.batik.svggen.font.*;
27
27
  */
28
28
  public class ScriptRecord {
29
29
 
30
- private final int tag;
31
- private final int offset;
32
-
33
- /**
34
- * Creates new ScriptRecord
35
- *
36
- * @param raf
37
- * @throws java.io.IOException
38
- */
39
- protected ScriptRecord(RandomAccessFileEmulator raf) throws IOException {
40
- tag = raf.readInt();
41
- offset = raf.readUnsignedShort();
42
- }
43
-
44
- public int getTag() {
45
- return tag;
46
- }
47
-
48
- public int getOffset() {
49
- return offset;
50
- }
30
+ private final int tag;
31
+ private final int offset;
32
+
33
+ /**
34
+ * Creates new ScriptRecord
35
+ *
36
+ * @param raf
37
+ * @throws java.io.IOException
38
+ */
39
+ protected ScriptRecord(RandomAccessFileEmulator raf) throws IOException {
40
+ tag = raf.readInt();
41
+ offset = raf.readUnsignedShort();
42
+ }
43
+
44
+ public int getTag() {
45
+ return tag;
46
+ }
47
+
48
+ public int getOffset() {
49
+ return offset;
50
+ }
51
51
 
52
52
  }
@@ -24,5 +24,6 @@ package org.apache.batik.svggen.font.table;
24
24
  * @author <a href="mailto:vincent.hardy@eng.sun.com">Vincent Hardy</a>
25
25
  */
26
26
  public interface ScriptTags {
27
- String SCRIPT_TAG_ARAB = "arab";
27
+
28
+ String SCRIPT_TAG_ARAB = "arab";
28
29
  }
@@ -18,7 +18,7 @@
18
18
  package org.apache.batik.svggen.font.table;
19
19
 
20
20
  import java.io.IOException;
21
- import org.apache.batik.svggen.font.*;
21
+ import org.apache.batik.svggen.font.RandomAccessFileEmulator;
22
22
 
23
23
  /**
24
24
  *
@@ -27,21 +27,20 @@ import org.apache.batik.svggen.font.*;
27
27
  */
28
28
  public abstract class SingleSubst extends LookupSubtable {
29
29
 
30
- public abstract int getFormat();
31
-
32
- public abstract int substitute(int glyphId);
33
-
34
- public static SingleSubst read(RandomAccessFileEmulator raf, int offset) throws IOException {
35
- SingleSubst s = null;
36
- raf.seek(offset);
37
- int format = raf.readUnsignedShort();
38
- if (format == 1) {
39
- s = new SingleSubstFormat1(raf, offset);
40
- } else if (format == 2) {
41
- s = new SingleSubstFormat2(raf, offset);
42
- }
43
- return s;
30
+ public abstract int getFormat();
31
+
32
+ public abstract int substitute(int glyphId);
33
+
34
+ public static SingleSubst read(RandomAccessFileEmulator raf, int offset) throws IOException {
35
+ SingleSubst s = null;
36
+ raf.seek(offset);
37
+ int format = raf.readUnsignedShort();
38
+ if (format == 1) {
39
+ s = new SingleSubstFormat1(raf, offset);
40
+ } else if (format == 2) {
41
+ s = new SingleSubstFormat2(raf, offset);
44
42
  }
43
+ return s;
44
+ }
45
45
 
46
46
  }
47
-