diff --git a/asciidoc/images/ivy-lierre.svg b/asciidoc/images/ivy-lierre.svg new file mode 100644 index 000000000..d41e67ce0 --- /dev/null +++ b/asciidoc/images/ivy-lierre.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + diff --git a/asciidoc/images/logo.png b/asciidoc/images/logo.png deleted file mode 100644 index 5c01f3d94..000000000 Binary files a/asciidoc/images/logo.png and /dev/null differ diff --git a/doc/images/ivy-lierre.svg b/doc/images/ivy-lierre.svg new file mode 100644 index 000000000..d41e67ce0 --- /dev/null +++ b/doc/images/ivy-lierre.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + diff --git a/doc/images/logo.png b/doc/images/logo.png deleted file mode 100644 index 5c01f3d94..000000000 Binary files a/doc/images/logo.png and /dev/null differ diff --git a/src/java/org/apache/ivy/logo.png b/src/java/org/apache/ivy/logo.png deleted file mode 100644 index 4baf17047..000000000 Binary files a/src/java/org/apache/ivy/logo.png and /dev/null differ diff --git a/src/java/org/apache/ivy/plugins/report/ivy-report.css b/src/java/org/apache/ivy/plugins/report/ivy-report.css index 135bc26a0..43166e863 100644 --- a/src/java/org/apache/ivy/plugins/report/ivy-report.css +++ b/src/java/org/apache/ivy/plugins/report/ivy-report.css @@ -15,47 +15,42 @@ * limitations under the License. * */ - + body { - font-family:"Trebuchet MS",Verdana,Geneva,Arial,Helvetica,sans-serif; - font-size:small; + font-family: "Trebuchet MS",Verdana,Geneva,Arial,Helvetica,sans-serif; + font-size: small; } div#logo { - float: right; - padding-left: 10px; - padding-bottom: 10px; - background: white; - text-align: center; -} - -#logo img { - border: 0; + float: right; + padding-left: 10px; + padding-bottom: 10px; + background: white; + text-align: center; + width: 142px; } div#date { - font-style: italic; - padding-left: 60px; - padding-bottom: 40px; + font-style: italic; + padding-left: 60px; + padding-bottom: 40px; } - h1 { - margin-bottom:2px; - - border-color:#7A9437; - border-style:solid; - border-width:0 0 3px 0; + margin-bottom: 2px; + border-color: #7A9437; + border-style: solid; + border-width: 0 0 3px 0; } span#module { - color:#7A9437; - text-decoration:none; + color: #7A9437; + text-decoration: none; } span#organisation { - color:black; - text-decoration:none; + color: black; + text-decoration: none; } #confmenu { @@ -64,13 +59,13 @@ span#organisation { margin: 12px 0px 0px 0px; padding: 0px; z-index: 1; - padding-left: 10px + padding-left: 10px } #confmenu li { display: inline; overflow: hidden; - list-style-type: none; + list-style-type: none; } #confmenu a, a.active { @@ -79,14 +74,9 @@ span#organisation { font: bold 1em "Trebuchet MS", Arial, sans-serif; border: 2px solid black; padding: 2px 5px 0px 5px; - text-decoration: none; + text-decoration: none; } -/* -background: #ABAD85 #CED4BD -background: #DEE4CD - */ - #confmenu a.active { color: #7A9437; background: #DEE4CD; @@ -95,20 +85,20 @@ background: #DEE4CD #confmenu a:hover { color: #fff; - background: #ADC09F; + background: #ADC09F; } #confmenu a:visited { - color: #DEDECF; + color: #DEDECF; } #confmenu a.active:visited { - color: #7A9437; + color: #7A9437; } #confmenu a.active:hover { background: #DEE4CD; - color: #DEDECF; + color: #DEDECF; } #content { @@ -116,52 +106,49 @@ background: #DEE4CD padding: 20px; border: 2px solid black; border-top: none; - z-index: 2; + z-index: 2; } #content a { text-decoration: none; - color: #E8E9BE; + color: #E8E9BE; } -#content a:hover { - background: #898B5E; +#content a:hover { + background: #898B5E; } - h2 { - margin-bottom:2px; - font-size:medium; - - border-color:#7A9437; - border-style:solid; - border-width:0 0 2px 0; + margin-bottom: 2px; + font-size: medium; + border-color: #7A9437; + border-style: solid; + border-width: 0 0 2px 0; } h3 { - margin-top:30px; - margin-bottom:2px; - padding: 5 5 5 0; - font-size: 24px; - border-style:solid; - border-width:0 0 2px 0; + margin-top: 30px; + margin-bottom: 2px; + padding: 5 5 5 0; + font-size: 24px; + border-style: solid; + border-width: 0 0 2px 0; } h4 { - margin-bottom:2px; - margin-top:2px; - font-size:medium; - - border-color:#7A9437; - border-style:dashed; - border-width:0 0 1px 0; + margin-bottom: 2px; + margin-top: 2px; + font-size: medium; + border-color: #7A9437; + border-style: dashed; + border-width: 0 0 1px 0; } h5 { - margin-bottom:2px; - margin-top:2px; - margin-left:20px; - font-size:medium; + margin-bottom: 2px; + margin-top: 2px; + margin-left: 20px; + font-size: medium; } span.resolved { @@ -170,110 +157,113 @@ span.resolved { font-size: small; } - -#content table { - border-collapse:collapse; - width:90%; - margin:auto; +#content table { + border-collapse: collapse; + width: 90%; + margin: auto; margin-top: 5px; } + #content thead { - background-color:#CED4BD; - border:1px solid #7A9437; + background-color: #CED4BD; + border: 1px solid #7A9437; } + #content tbody { - border-collapse:collapse; - background-color:#FFFFFF; - border:1px solid #7A9437; + border-collapse: collapse; + background-color: #FFFFFF; + border: 1px solid #7A9437; } #content th { - font-family:monospace; - border:1px solid #7A9437; - padding:5px; + font-family: monospace; + border: 1px solid #7A9437; + padding: 5px; } #content td { - border:1px dotted #7A9437; - padding:0 3 0 3; + border: 1px dotted #7A9437; + padding: 0 3 0 3; } #content table a { - color:#7A9437; - text-decoration:none; + color: #7A9437; + text-decoration: none; } #content table a:hover { - background-color:#CED4BD; - color:#7A9437; + background-color: #CED4BD; + color: #7A9437; } - - table.deps { - border-collapse:collapse; - width:90%; - margin:auto; + border-collapse: collapse; + width: 90%; + margin: auto; margin-top: 5px; } table.deps thead { - background-color:#CED4BD; - border:1px solid #7A9437; + background-color: #CED4BD; + border: 1px solid #7A9437; } table.deps tbody { - border-collapse:collapse; - background-color:#FFFFFF; - border:1px solid #7A9437; + border-collapse: collapse; + background-color: #FFFFFF; + border: 1px solid #7A9437; } table.deps th { - font-family:monospace; - border:1px solid #7A9437; - padding:2; + font-family: monospace; + border: 1px solid #7A9437; + padding: 2; } table.deps td { - border:1px dotted #7A9437; - padding:0 3 0 3; + border: 1px dotted #7A9437; + padding: 0 3 0 3; } - - - - table.header { - border:0; - width:90%; - margin:auto; + border: 0; + width: 90%; + margin: auto; margin-top: 5px; } table.header thead { - border:0; + border: 0; } + table.header tbody { - border:0; + border: 0; } + table.header tr { - padding:0px; - border:0; + padding: 0px; + border: 0; } + table.header td { - padding:0 3 0 3; - border:0; + padding: 0 3 0 3; + border: 0; } td.title { - width:150px; - margin-right:15px; - - font-size:small; - font-weight:700; + width: 150px; + margin-right: 15px; + font-size: small; + font-weight: 700; } td.title:first-letter { - color:#7A9437; - background-color:transparent; + color: #7A9437; + background-color: transparent; } +/* Firefox seems to need this */ + +svg.icon { + heigth: 1rem; + width: 1rem; +} diff --git a/src/java/org/apache/ivy/plugins/report/ivy-report.xsl b/src/java/org/apache/ivy/plugins/report/ivy-report.xsl index af5f95304..863d3c597 100644 --- a/src/java/org/apache/ivy/plugins/report/ivy-report.xsl +++ b/src/java/org/apache/ivy/plugins/report/ivy-report.xsl @@ -15,37 +15,36 @@ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations - under the License. + under the License. --> - + - - + + - - - + + + - - + + - - - - - + + + + + - + - - - + + +
No dependency @@ -72,7 +71,7 @@ - +
@@ -136,7 +135,7 @@ - +
@@ -161,24 +160,16 @@ - searched + searchedrequired a search in repository - downloaded + downloadeddownloaded from repository - - http://ant.apache.org/ivy/images/evicted.gif - evicted - evicted by - + evicted by evicted by other revisions - - http://ant.apache.org/ivy/images/error.gif - error - error: - + error: caused an error during resolution @@ -210,7 +201,7 @@ - + @@ -228,7 +219,7 @@ - +
  • @@ -242,7 +233,7 @@ - + -- :: @@ -254,27 +245,28 @@ Ivy report :: <xsl:value-of select="info/@module"/> by <xsl:value-of select="info/@organisation"/> :: <xsl:value-of select="info/@conf"/> - - - - + + + + - +

    - - - by + + by

    - resolved on + resolved on @@ -289,19 +281,19 @@

    Dependencies Stats

    - - +
    Modules
    Revisions - ( searched searched, - downloaded downloaded, - evicted evicted, - errors error)
    Artifacts +
    Revisions + ( searched searchedmodule revisions which required a search with a dependency resolver to be resolved, + downloaded downloadedmodule revisions for which ivy file was downloaded by dependency resolver, + evicted evictedmodule revisions which were evicted by others, + errors errormodule revisions on which error occurred)
    Artifacts ( downloaded, failed)
    Artifacts size kB ( kB downloaded, kB in cache)
    - +

    Errors

    @@ -379,14 +371,14 @@ -

    Details

    +

    Details

    - by -

    +

    @@ -406,7 +398,7 @@ - +

    @@ -420,10 +412,10 @@ - + - - +
    Status
    Publication
    Evicted by +
    Evicted by @@ -461,11 +453,11 @@
    - +
    Dependencies
    @@ -498,13 +490,13 @@ kB - +
    - +
    - +
    diff --git a/src/java/org/apache/ivy/util/CredentialsUtil.java b/src/java/org/apache/ivy/util/CredentialsUtil.java index 492bdead9..c9f9073f3 100644 --- a/src/java/org/apache/ivy/util/CredentialsUtil.java +++ b/src/java/org/apache/ivy/util/CredentialsUtil.java @@ -17,6 +17,12 @@ */ package org.apache.ivy.util; +import javax.swing.JCheckBox; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPasswordField; +import javax.swing.JTextField; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; @@ -26,16 +32,6 @@ import java.io.IOException; import java.util.Properties; -import javax.swing.ImageIcon; -import javax.swing.JCheckBox; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JPasswordField; -import javax.swing.JTextField; - -import org.apache.ivy.Ivy; - public final class CredentialsUtil { @SuppressWarnings("serial") @@ -103,7 +99,7 @@ public static Credentials promptCredentials(Credentials c, File passfile) { } CredentialPanel credentialPanel = new CredentialPanel(c, passfile); if (JOptionPane.showOptionDialog(null, credentialPanel, c.getHost() + " credentials", - JOptionPane.OK_CANCEL_OPTION, 0, new ImageIcon(Ivy.class.getResource("logo.png")), + JOptionPane.OK_CANCEL_OPTION, 0, new IvyLogo(), null, JOptionPane.OK_OPTION) == JOptionPane.OK_OPTION) { String username = credentialPanel.userNameField.getText(); String passwd = credentialPanel.passwordField.getText(); diff --git a/src/java/org/apache/ivy/util/IvyLogo.java b/src/java/org/apache/ivy/util/IvyLogo.java new file mode 100644 index 000000000..fb258969d --- /dev/null +++ b/src/java/org/apache/ivy/util/IvyLogo.java @@ -0,0 +1,346 @@ +package org.apache.ivy.util; + +import javax.swing.Icon; +import java.awt.Color; +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.geom.AffineTransform; +import java.awt.geom.GeneralPath; +import java.awt.image.BufferedImage; +import java.util.LinkedList; + +import static java.awt.Color.WHITE; +import static java.lang.Math.min; + +/** + * This class has been automatically generated using + * Flamingo SVG transcoder. + */ +public class IvyLogo implements Icon { + + /** Maximum dimension of an icon in JInfoPane */ + private static final int MAX_INFO_ICON_SIZE = 128; + + /** The colour of this icon. */ + private static final Color COLOUR = new Color(0x6E9244); + + /** The width of this icon. */ + private int width; + + /** The height of this icon. */ + private int height; + + /** The rendered image. */ + private BufferedImage image; + + /** + * Creates a new Ivy logo transcoded from SVG image. + */ + public IvyLogo() { + this(MAX_INFO_ICON_SIZE, MAX_INFO_ICON_SIZE); + } + + /** + * Creates a new Ivy logo transcoded from SVG image. + * + * @param width ditto + * @param height ditto + */ + public IvyLogo(int width, int height) { + this.width = width; + this.height = height; + } + + @Override + public int getIconHeight() { + return height; + } + + @Override + public int getIconWidth() { + return width; + } + + @Override + public void paintIcon(Component c, Graphics g, int x, int y) { + if (image == null) { + image = new BufferedImage(getIconWidth(), getIconHeight(), BufferedImage.TYPE_INT_ARGB); + double coef = min((double) width, (double) height); + + Graphics2D g2d = image.createGraphics(); + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2d.scale(coef, coef); + paint(g2d); + g2d.dispose(); + } + + g.drawImage(image, x, y, null); + } + + /** + * Paints the Ivy logo transcoded from SVG image on the specified graphics context. + * + * @param g Graphics context. + */ + private static void paint(Graphics2D g) { + LinkedList transformations = new LinkedList<>(); + + transformations.offer(g.getTransform()); + g.transform(new AffineTransform(0.002013243f, 0, 0, 0.002013243f, 0, 0.1471439f)); + + GeneralPath shape = new GeneralPath(); + shape.moveTo(35.696, 151.511); + shape.lineTo(62.092, 151.511); + shape.curveTo(57.965, 148.382, 52.366997, 144.04001, 52.321, 140.41); + shape.curveTo(52.299, 139.578, 52.273, 138.417, 52.203, 137.017); + shape.curveTo(49.002, 138.843, 36.882, 141.357, 29.575998, 134.83499); + shape.curveTo(22.129997, 128.16899, 20.846998, 119.81799, 23.196999, 115.88399); + shape.curveTo(25.544998, 111.969986, 32.066998, 111.875984, 32.066998, 111.875984); + shape.lineTo(32.377, 108.74499); + shape.curveTo(32.377, 108.74499, 22.484999, 103.57199, 16.532999, 91.16899); + shape.curveTo(10.58, 78.766, 6.453, 63.87, 6.453, 63.87); + shape.curveTo(6.453, 63.87, 13.353001, 59.507, 23.126999, 61.048); + shape.curveTo(32.898, 62.568, 37.476997, 66.552, 39.822998, 65.745); + shape.curveTo(42.955, 54.288, 70.421, 3.413, 75.046, -0.003); + shape.curveTo(89.633, 6.281, 89.941, 43.307, 90.107, 46.13); + shape.curveTo(90.273, 48.953003, 90.107, 69.825, 90.107, 72.648); + shape.curveTo(90.107, 75.471, 91.98, 76.798004, 95.919, 77.203); + shape.curveTo(99.833, 77.605, 126.703995, 60.888, 133.465, 58.681004); + shape.curveTo(133.465, 82.448006, 118.66499, 103.937004, 111.146996, 112.189); + shape.curveTo(106.521996, 120.587006, 109.98499, 122.200005, 111.050995, 126.136); + shape.curveTo(112.117, 130.074, 112.16499, 138.683, 111.548996, 140.321); + shape.curveTo(107.422, 141.483, 90.297, 141.96, 84.01199, 139.8); + shape.curveTo(77.728, 137.642, 77.465996, 134.179, 75.57099, 132.779); + shape.curveTo(75.40499, 132.66301, 64.06699, 131.238, 56.715992, 134.10701); + shape.lineTo(56.57299, 140.488); + shape.curveTo(60.79499, 144.38, 63.94999, 145.94301, 67.24599, 151.49501); + shape.lineTo(154.74199, 151.49501); + shape.lineTo(185.887, 241.76501); + shape.lineTo(218.808, 151.49503); + shape.lineTo(317.356, 151.49503); + shape.lineTo(352.249, 244.82703); + shape.lineTo(383.227, 151.49503); + shape.lineTo(433.93597, 151.49503); + shape.curveTo(434.22098, 139.23003, 443.80298, 140.75102, 446.649, 140.68103); + shape.curveTo(446.033, 139.73303, 443.352, 137.78603, 444.253, 134.86903); + shape.curveTo(445.155, 131.97304, 452.06, 132.87903, 452.06, 132.87903); + shape.curveTo(452.06, 132.87903, 454.312, 127.51803, 455.378, 125.00403); + shape.curveTo(456.443, 122.48803, 460.524, 121.897026, 460.524, 121.897026); + shape.curveTo(460.524, 121.897026, 458.05698, 131.79103, 462.421, 131.79103); + shape.lineTo(483.07898, 131.79103); + shape.curveTo(483.07898, 131.79103, 475.51398, 139.07004, 472.309, 139.64403); + shape.curveTo(469.106, 140.23602, 462.98798, 143.43703, 464.88498, 144.60103); + shape.curveTo(466.78098, 145.76303, 471.87997, 149.20303, 470.99997, 151.50203); + shape.curveTo(470.12497, 153.80403, 457.74396, 149.19904, 457.74396, 151.50203); + shape.curveTo(457.74396, 153.80403, 450.22296, 157.35902, 450.60196, 154.06403); + shape.curveTo(450.98297, 150.76703, 451.45596, 144.41202, 449.95895, 143.17703); + shape.curveTo(448.44095, 141.94504, 444.24194, 142.27704, 440.85394, 142.70103); + shape.curveTo(437.45895, 143.12903, 437.65094, 151.50203, 437.65094, 151.50203); + shape.lineTo(444.24594, 151.50203); + shape.lineTo(442.15994, 156.48103); + shape.curveTo(459.73395, 157.16904, 462.31995, 174.76804, 463.05594, 173.08504); + shape.curveTo(463.88495, 171.16304, 466.80093, 164.92604, 467.39594, 164.21404); + shape.curveTo(469.60092, 161.53203, 475.33994, 161.86603, 476.71494, 162.88704); + shape.curveTo(479.06595, 164.61604, 477.11795, 168.31905, 481.76892, 171.04404); + shape.curveTo(489.52493, 174.38904, 495.21494, 173.39503, 496.70993, 175.66904); + shape.curveTo(495.37994, 179.18204, 489.31192, 187.00703, 485.72992, 188.52304); + shape.curveTo(483.09592, 189.63805, 482.83392, 193.81204, 483.30893, 194.78705); + shape.curveTo(488.33792, 205.36505, 487.03693, 212.55106, 485.58594, 222.20505); + shape.curveTo(473.32294, 212.78905, 464.71295, 202.09204, 460.77594, 203.51405); + shape.curveTo(456.83795, 204.93906, 442.20395, 206.03105, 442.20395, 206.03105); + shape.curveTo(442.20395, 206.03105, 446.02194, 219.29105, 444.29196, 225.69305); + shape.curveTo(443.19995, 229.72406, 448.13495, 228.82605, 448.13495, 228.82605); + shape.curveTo(448.13495, 228.82605, 452.42795, 223.75105, 455.20193, 222.27705); + shape.curveTo(457.97592, 220.83205, 461.32092, 219.88106, 465.80493, 220.99805); + shape.curveTo(470.36093, 222.56204, 471.14392, 230.06004, 475.48392, 232.57005); + shape.curveTo(478.6849, 234.44505, 492.75192, 249.69505, 492.75192, 249.69505); + shape.curveTo(492.75192, 249.69505, 485.94293, 253.09105, 480.18494, 253.34906); + shape.curveTo(474.41794, 253.60905, 466.14194, 253.29906, 463.53693, 254.03706); + shape.curveTo(459.80994, 255.08206, 455.87494, 283.26108, 449.47092, 289.30807); + shape.curveTo(441.6459, 280.05606, 440.24393, 267.5081, 437.4689, 255.93507); + shape.curveTo(436.5919, 252.30608, 433.88892, 251.38107, 432.5839, 251.38107); + shape.curveTo(431.27887, 251.38107, 427.9589, 253.39807, 421.90988, 255.55608); + shape.curveTo(415.8599, 257.74008, 407.25488, 254.65608, 407.25488, 254.65608); + shape.lineTo(423.7349, 233.40608); + shape.curveTo(423.7349, 233.40608, 422.17288, 224.32208, 423.3079, 221.33308); + shape.curveTo(428.7429, 216.14009, 436.1629, 220.10109, 436.1629, 220.10109); + shape.lineTo(442.8269, 226.26709); + shape.curveTo(443.0619, 218.82208, 440.4069, 210.02109, 435.1179, 205.37209); + shape.curveTo(431.6319, 202.31009, 426.55588, 201.31209, 423.4969, 201.00708); + shape.lineTo(377.29388, 310.82007); + shape.curveTo(356.13788, 361.10107, 301.13388, 351.40405, 266.33887, 346.13608); + shape.lineTo(262.18988, 310.91406); + shape.curveTo(275.40088, 312.59906, 313.8469, 319.78506, 320.67688, 293.72006); + shape.lineTo(267.14688, 183.90607); + shape.lineTo(210.86488, 293.72006); + shape.lineTo(159.08987, 293.72006); + shape.lineTo(97.61087, 171.64006); + shape.lineTo(97.61087, 207.41006); + shape.curveTo(98.58387, 207.47806, 99.33987, 207.83707, 99.98387, 208.40607); + shape.curveTo(101.54587, 209.83107, 108.616875, 214.90607, 110.01587, 216.94707); + shape.curveTo(113.76187, 222.35107, 119.16887, 221.66707, 118.33887, 226.46007); + shape.curveTo(116.22887, 229.51907, 113.00287, 227.55006, 111.60387, 226.93307); + shape.curveTo(110.18087, 226.31607, 105.48486, 217.92108, 103.91887, 216.66208); + shape.curveTo(102.63787, 215.64108, 99.88587, 212.58208, 97.633865, 212.34708); + shape.lineTo(97.633865, 231.10907); + shape.curveTo(107.16887, 240.73807, 120.07187, 253.42706, 121.635864, 254.68507); + shape.curveTo(124.15086, 256.72406, 127.58887, 258.76306, 130.10387, 259.38007); + shape.curveTo(132.61887, 259.99606, 135.91586, 260.16006, 136.83786, 261.10907); + shape.curveTo(140.13486, 264.40607, 138.97285, 267.08807, 135.41486, 267.39407); + shape.curveTo(133.54086, 267.56207, 123.01086, 265.59106, 121.303856, 263.38608); + shape.curveTo(119.57486, 261.1811, 108.59086, 248.86708, 108.59086, 248.86708); + shape.curveTo(108.59086, 248.86708, 101.52386, 240.87508, 99.03086, 239.45108); + shape.curveTo(98.579865, 239.19109, 98.08186, 238.76308, 97.60686, 238.22208); + shape.lineTo(97.60686, 293.70108); + shape.lineTo(49.293, 293.70108); + shape.curveTo(50.076, 295.31207, 51.878998, 299.3921, 50.385, 299.5351); + shape.curveTo(48.51, 299.70108, 47.398, 299.4391, 46.305, 297.2601); + shape.curveTo(45.973, 296.5961, 45.760002, 295.2401, 45.641, 293.7261); + shape.lineTo(35.796997, 293.7261); + shape.lineTo(35.796997, 236.2561); + shape.lineTo(35.774998, 236.2561); + shape.curveTo(35.373997, 236.37311, 34.992996, 236.4901, 34.635, 236.6101); + shape.curveTo(31.696, 236.70811, 28.822998, 236.30011, 27.258, 236.4441); + shape.curveTo(23.772999, 236.79811, 11.865, 249.10811, 9.92, 252.5961); + shape.curveTo(9.137, 254.0201, 6.149, 256.8391, 4.584, 257.2901); + shape.curveTo(3.0210001, 257.7661, -0.91799974, 254.7741, 0.1960001, 252.7351); + shape.curveTo(1.2870001, 250.6941, 6.149, 248.0401, 7.261, 247.70811); + shape.curveTo(8.354, 247.39711, 9.778, 243.31711, 11.507, 241.75612); + shape.curveTo(13.239, 240.19212, 22.654, 233.90312, 24.220001, 232.02812); + shape.curveTo(25.785002, 230.15512, 34.419003, 230.29912, 34.419003, 230.29912); + shape.lineTo(35.843002, 230.44212); + shape.lineTo(35.843002, 204.68213); + shape.curveTo(35.276, 204.04112, 34.869003, 203.59213, 34.751003, 203.40112); + shape.curveTo(33.495003, 201.43213, 31.999002, 204.58913, 32.476, 208.73912); + shape.curveTo(32.953003, 212.88712, 31.384003, 220.45612, 31.384003, 222.16312); + shape.curveTo(31.384003, 224.37012, 37.124, 227.57112, 33.735004, 229.58812); + shape.curveTo(33.047005, 229.99112, 30.341003, 229.37512, 28.162004, 225.29512); + shape.curveTo(25.955004, 221.21712, 28.162004, 205.98912, 28.162004, 205.98912); + shape.curveTo(28.162004, 205.98912, 28.588005, 197.26012, 32.218006, 196.95212); + shape.curveTo(33.904007, 196.80711, 35.088005, 196.80711, 35.869007, 196.88112); + shape.lineTo(35.869007, 151.43811); + shape.lineTo(35.696, 151.511); + shape.closePath(); + shape.moveTo(440.661, 160.026); + shape.lineTo(426.073, 194.653); + shape.curveTo(434.757, 197.786, 441.589, 204.946, 441.635, 204.924); + shape.curveTo(443.43802, 204.094, 444.21902, 203.621, 444.21902, 201.43799); + shape.curveTo(444.21902, 199.23299, 445.31104, 195.53398, 445.97504, 191.97499); + shape.curveTo(447.06903, 186.18799, 443.50803, 187.20499, 442.82303, 182.512); + shape.curveTo(441.82703, 175.633, 451.97504, 172.502, 455.88904, 175.01599); + shape.curveTo(456.91003, 175.657, 456.45804, 177.221, 457.57504, 177.86198); + shape.curveTo(458.66705, 178.47899, 460.44403, 178.19398, 460.80203, 177.62599); + shape.curveTo(462.62802, 174.54199, 460.89703, 174.258, 458.90604, 170.581); + shape.curveTo(455.34503, 159.34, 444.01004, 160.50099, 440.63803, 160.026); + shape.lineTo(440.661, 160.026); + shape.lineTo(440.661, 160.026); + shape.closePath(); + + g.setPaint(COLOUR); + g.fill(shape); + + shape = new GeneralPath(); + shape.moveTo(35.72, 196.954); + shape.curveTo(36.574, 197.024, 36.93, 197.12, 36.93, 197.12); + shape.curveTo(36.93, 197.12, 38.187, 197.288, 41.010002, 201.034); + shape.curveTo(43.833, 204.805, 45.090004, 208.176, 47.605003, 210.928); + shape.curveTo(50.121002, 213.68, 52.541004, 211.94899, 52.541004, 211.94899); + shape.curveTo(52.541004, 211.94899, 50.430004, 200.34999, 51.995003, 195.93799); + shape.curveTo(53.558002, 191.551, 55.099003, 190.60199, 56.667004, 189.344); + shape.curveTo(58.232002, 188.086, 60.557003, 186.07199, 58.354004, 184.032); + shape.curveTo(56.147003, 181.991, 54.487003, 172.644, 57.477005, 166.053); + shape.curveTo(60.463005, 159.459, 66.490005, 157.633, 66.490005, 157.633); + shape.curveTo(66.490005, 157.633, 68.62401, 156.897, 65.28001, 154.004); + shape.curveTo(64.49701, 153.316, 63.335007, 152.463, 62.051006, 151.465); + shape.lineTo(67.19701, 151.465); + shape.lineTo(69.90101, 154.668); + shape.curveTo(78.65301, 150.444, 87.78401, 154.286, 87.78401, 162.922); + shape.curveTo(89.041016, 163.868, 95.42201, 165.93399, 98.388016, 165.93399); + shape.lineTo(113.75501, 165.93399); + shape.curveTo(115.321014, 165.93399, 129.126, 157.963, 131.16501, 157.82098); + shape.curveTo(133.20401, 157.65498, 133.27501, 154.33798, 140.81702, 155.35599); + shape.curveTo(148.35902, 156.374, 148.26402, 155.094, 149.35602, 157.18199); + shape.curveTo(150.44702, 159.29, 147.55302, 161.405, 145.82202, 162.04199); + shape.curveTo(144.09302, 162.659, 134.43703, 161.68799, 132.87202, 161.68799); + shape.curveTo(131.31003, 161.68799, 119.68402, 167.452, 116.011024, 169.25299); + shape.curveTo(112.33302, 171.05699, 104.484024, 171.69398, 101.65803, 170.2); + shape.curveTo(98.83703, 168.706, 93.16703, 167.594, 93.16703, 167.594); + shape.lineTo(88.25903, 166.194); + shape.curveTo(88.25903, 166.194, 88.02303, 176.798, 86.15003, 181.213); + shape.curveTo(84.25303, 185.59999, 76.02303, 191.481, 73.53103, 191.481); + shape.curveTo(71.01703, 191.481, 72.17903, 193.475, 72.17903, 193.475); + shape.curveTo(74.716034, 198.502, 73.270035, 205.26201, 67.10303, 210.362); + shape.curveTo(69.68803, 217.524, 81.26303, 197.602, 84.205025, 197.602); + shape.curveTo(86.86102, 197.602, 87.40602, 198.811, 86.97903, 201.63301); + shape.lineTo(77.065025, 212.49402); + shape.curveTo(77.065025, 212.49402, 73.649025, 214.76802, 70.94602, 214.60402); + shape.curveTo(70.163025, 214.55702, 69.45202, 215.76602, 69.689026, 217.49802); + shape.curveTo(69.998024, 219.70302, 69.287025, 221.51001, 70.54302, 222.60002); + shape.curveTo(71.803024, 223.69202, 76.71102, 220.98701, 78.301025, 219.11401); + shape.curveTo(79.86403, 217.24101, 87.40602, 211.07301, 91.678024, 208.98701); + shape.curveTo(94.19302, 207.77802, 96.01802, 207.30301, 97.41602, 207.39902); + shape.lineTo(97.440025, 212.33401); + shape.curveTo(96.91902, 212.28502, 96.39603, 212.38301, 95.94602, 212.71501); + shape.curveTo(93.59702, 214.445, 87.09902, 219.23601, 87.09902, 220.16002); + shape.curveTo(87.09902, 220.51402, 90.06202, 222.51102, 97.413025, 231.07002); + shape.lineTo(97.413025, 238.21303); + shape.curveTo(95.27802, 235.84203, 93.024025, 231.38103, 91.246025, 230.35902); + shape.curveTo(89.06303, 229.10002, 86.93102, 225.02303, 86.31103, 223.62302); + shape.curveTo(85.69603, 222.20102, 83.32403, 223.00801, 82.84803, 224.71701); + shape.curveTo(82.37103, 226.447, 81.68603, 228.18001, 80.24003, 230.48201); + shape.curveTo(76.77703, 236.033, 70.25703, 236.529, 69.28203, 237.503); + shape.curveTo(68.191025, 238.595, 71.86703, 241.179, 72.816025, 242.294); + shape.curveTo(73.76502, 243.386, 81.189026, 245.356, 83.72603, 254.772); + shape.curveTo(86.24103, 264.188, 83.74803, 271.327, 82.35103, 275.09702); + shape.curveTo(79.28903, 283.282, 73.74303, 283.993, 64.064026, 279.15503); + shape.curveTo(62.949024, 278.58502, 54.932026, 269.68903, 53.225025, 265.75302); + shape.curveTo(51.495026, 261.84103, 53.391026, 249.05602, 53.391026, 249.05602); + shape.curveTo(53.391026, 249.05602, 56.377026, 244.98001, 54.953026, 244.81401); + shape.curveTo(54.361027, 244.742, 54.810024, 242.988, 53.246025, 243.699); + shape.curveTo(51.086025, 244.695, 46.891026, 248.253, 46.891026, 248.253); + shape.lineTo(46.655025, 280.726); + shape.curveTo(46.655025, 280.726, 48.528027, 280.62802, 48.860023, 283.122); + shape.curveTo(49.16902, 285.59, 48.860023, 293.083, 48.860023, 293.083); + shape.lineTo(49.192024, 293.747); + shape.lineTo(45.54, 293.747); + shape.curveTo(45.255, 290.237, 45.421, 285.706, 45.421, 285.706); + shape.curveTo(45.421, 285.706, 43.525, 282.50598, 42.409, 281.102); + shape.curveTo(41.317, 279.68, 41.343002, 250.81499, 42.907, 246.56898); + shape.curveTo(44.471, 242.32498, 45.563, 240.68799, 47.768, 240.99498); + shape.curveTo(49.974003, 241.30698, 53.27, 240.82898, 53.27, 240.82898); + shape.curveTo(53.27, 240.82898, 54.053, 230.08798, 52.793, 229.44598); + shape.curveTo(51.537, 228.82898, 46.364998, 232.26799, 45.584, 233.52399); + shape.curveTo(44.873, 234.663, 39.514, 235.18399, 35.668, 236.29898); + shape.lineTo(35.739998, 230.53198); + shape.lineTo(39.155, 230.86398); + shape.curveTo(39.155, 230.86398, 42.830997, 228.34998, 44.729, 227.23499); + shape.curveTo(46.603, 226.14499, 51.939, 226.33798, 52.414, 224.67299); + shape.curveTo(52.891003, 223.01099, 52.959, 217.67499, 52.58, 216.846); + shape.curveTo(52.18, 216.01599, 50.018, 218.15099, 48.5, 216.72699); + shape.lineTo(35.716, 204.77399); + shape.lineTo(35.716, 196.96498); + shape.lineTo(35.739, 196.96498); + shape.lineTo(35.718, 196.96498); + shape.lineTo(35.72, 196.954); + shape.lineTo(35.72, 196.954); + shape.closePath(); + shape.moveTo(52.18, 136.687); + shape.curveTo(51.87, 130.023, 51.159, 118.948, 51.041, 118.044); + shape.curveTo(50.875, 116.952995, 44.448, 109.103, 44.448, 106.921); + shape.curveTo(44.448, 104.714, 42.739002, 100.492, 46.985, 101.751); + shape.curveTo(51.231, 103.009, 53.58, 107.253, 53.58, 107.253); + shape.curveTo(53.58, 107.253, 57.114002, 113.205, 57.114002, 114.772995); + shape.curveTo(57.114002, 115.815994, 56.878002, 126.657, 56.711002, 133.937); + shape.lineTo(52.182003, 136.71199); + shape.lineTo(52.182003, 136.687); + shape.lineTo(52.18, 136.687); + shape.closePath(); + + g.setPaint(WHITE); + g.fill(shape); + + g.setTransform(transformations.poll()); + } +}