import datetime
from random import randint, choice
from utility import clamp, flatten, reduce

#######################################################################################################################
#######################################################################################################################
#######################################################################################################################


VERSION = \
    """	
    General Utility file of RGB colour values
    Version..............1.28
    Date...........2023-04-27
    Author(s)....Avery Briggs
    """


def VERSION_DETAILS():
    return VERSION.lower().split("version")[0].strip()


def VERSION_NUMBER():
    return float(".".join(VERSION.lower().split("version")[-1].split("date")[0].split(".")[-2:]).strip())


def VERSION_DATE():
    return datetime.datetime.strptime(VERSION.lower().split("date")[-1].split("author")[0].split(".")[-1].strip(),
                                      "%Y-%m-%d")


def VERSION_AUTHORS():
    return [w.removeprefix(".").strip().title() for w in VERSION.lower().split("author(s)")[-1].split("..") if
            w.strip()]


#######################################################################################################################
#######################################################################################################################
#######################################################################################################################


# More colour resources:
#   https://stackoverflow.com/questions/4969543/colour-chart-for-tkinter-and-tix
#   https://www.tcl.tk/man/tcl/TkCmd/colors.html
#   https://www.askpython.com/python-modules/tkinter/tkinter-colors
#   https://www.w3schools.com/colors/colors_picker.asp
#   https://colorpicker.me/#c22197
#   https://www.computerhope.com/htmcolor.htm


WILDERNESS_MINT = (98, 152, 100)

BWS_RED = (171, 35, 40)  # Crimson red
BWS_BLACK = (37, 40, 42)  # Black
BWS_GREY = (162, 170, 173)

STARGATE_BLUE = (27, 69, 129)

BLACK = (0, 0, 0)  # Black
WHITE = (255, 255, 255)  # White
DARK_GRAY = (50, 50, 50)  # Dark gray
LIGHT_GRAY = (175, 175, 175)  # Light gray
RED = (255, 0, 0)  # Red
GREEN = (0, 255, 0)  # Green
BLUE = (0, 0, 255)  # Blue

ALICEBLUE = (240, 248, 255)
ANTIQUEWHITE = (250, 235, 215)
ANTIQUEWHITE_1 = (255, 239, 219)
ANTIQUEWHITE_2 = (238, 223, 204)
ANTIQUEWHITE_3 = (205, 192, 176)
ANTIQUEWHITE_4 = (139, 131, 120)
AQUA = (0, 254, 254)
AQUAMARINE_2 = (118, 238, 198)
AQUAMARINE_4 = (69, 139, 116)
AZURE_2 = (224, 238, 238)
AZURE_3 = (193, 205, 205)
AZURE_4 = (131, 139, 139)
BANANA = (227, 207, 87)
BEIGE = (245, 245, 220)
BISQUE_2 = (238, 213, 183)
BISQUE_3 = (205, 183, 158)
BISQUE_4 = (139, 125, 107)
BLANCHEDALMOND = (255, 235, 205)
BLUEVIOLET = (138, 43, 226)
BLUE_2 = (0, 0, 238)
BRICK = (156, 102, 31)
BROWN = (165, 42, 42)
BROWN_1 = (255, 64, 64)
BROWN_2 = (238, 59, 59)
BROWN_3 = (205, 51, 51)
BROWN_4 = (139, 35, 35)
BURLYWOOD = (222, 184, 135)
BURLYWOOD_1 = (255, 211, 155)
BURLYWOOD_2 = (238, 197, 145)
BURLYWOOD_3 = (205, 170, 125)
BURLYWOOD_4 = (139, 115, 85)
BURNTSIENNA = (138, 54, 15)
BURNTUMBER = (138, 51, 36)
CADETBLUE = (95, 158, 160)
CADETBLUE_1 = (152, 245, 255)
CADETBLUE_2 = (142, 229, 238)
CADETBLUE_3 = (122, 197, 205)
CADETBLUE_4 = (83, 134, 139)
CADMIUMORANGE = (255, 97, 3)
CADMIUMYELLOW = (255, 153, 18)
CARROT = (237, 145, 33)
CHARTREUSE_2 = (118, 238, 0)
CHARTREUSE_3 = (102, 205, 0)
CHARTREUSE_4 = (69, 139, 0)
CHOCOLATE = (210, 105, 30)
CHOCOLATE_1 = (255, 127, 36)
CHOCOLATE_2 = (238, 118, 33)
CHOCOLATE_3 = (205, 102, 29)
COBALT = (61, 89, 171)
COBALTGREEN = (61, 145, 64)
COLDGREY = (128, 138, 135)
CORAL = (255, 127, 80)
CORAL_1 = (255, 114, 86)
CORAL_2 = (238, 106, 80)
CORAL_3 = (205, 91, 69)
CORAL_4 = (139, 62, 47)
CORNFLOWERBLUE = (100, 149, 237)
CORNSILK_2 = (238, 232, 205)
CORNSILK_3 = (205, 200, 177)
CORNSILK_4 = (139, 136, 120)
CRIMSON = (220, 20, 60)
CYAN = (0, 255, 255)
CYAN_2 = (0, 238, 238)
CYAN_3 = (0, 205, 205)
DARKGOLDENROD = (184, 134, 11)
DARKGOLDENROD_1 = (255, 185, 15)
DARKGOLDENROD_2 = (238, 173, 14)
DARKGOLDENROD_3 = (205, 149, 12)
DARKGOLDENROD_4 = (139, 101, 8)
DARKGRAY = (169, 169, 169)
DARKGREEN = (0, 100, 0)
DARKKHAKI = (189, 183, 107)
DARKOLIVEGREEN = (85, 107, 47)
DARKOLIVEGREEN_1 = (202, 255, 112)
DARKOLIVEGREEN_2 = (188, 238, 104)
DARKOLIVEGREEN_3 = (162, 205, 90)
DARKOLIVEGREEN_4 = (110, 139, 61)
DARKORANGE = (255, 140, 0)
DARKORANGE_1 = (255, 127, 0)
DARKORANGE_2 = (238, 118, 0)
DARKORANGE_3 = (205, 102, 0)
DARKORANGE_4 = (139, 69, 0)
DARKORCHID = (153, 50, 204)
DARKORCHID_1 = (191, 62, 255)
DARKORCHID_2 = (178, 58, 238)
DARKORCHID_3 = (154, 50, 205)
DARKORCHID_4 = (104, 34, 139)
DARKSALMON = (233, 150, 122)
DARKSEAGREEN = (143, 188, 143)
DARKSEAGREEN_1 = (193, 255, 193)
DARKSEAGREEN_2 = (180, 238, 180)
DARKSEAGREEN_3 = (155, 205, 155)
DARKSEAGREEN_4 = (105, 139, 105)
DARKSLATEBLUE = (72, 61, 139)
DARKSLATEGRAY = (47, 79, 79)
DARKSLATEGRAY_1 = (151, 255, 255)
DARKSLATEGRAY_2 = (141, 238, 238)
DARKSLATEGRAY_3 = (121, 205, 205)
DARKSLATEGRAY_4 = (82, 139, 139)
DARKTURQUOISE = (0, 206, 209)
DARKVIOLET = (148, 0, 211)
DEEPPINK_2 = (238, 18, 137)
DEEPPINK_3 = (205, 16, 118)
DEEPPINK_4 = (139, 10, 80)
DEEPSKYBLUE_2 = (0, 178, 238)
DEEPSKYBLUE_3 = (0, 154, 205)
DEEPSKYBLUE_4 = (0, 104, 139)
DODGERBLUE_2 = (28, 134, 238)
DODGERBLUE_3 = (24, 116, 205)
DODGERBLUE_4 = (16, 78, 139)
EGGSHELL = (252, 230, 201)
EMERALDGREEN = (0, 201, 87)
FIREBRICK = (178, 34, 34)
FIREBRICK_1 = (255, 48, 48)
FIREBRICK_2 = (238, 44, 44)
FIREBRICK_3 = (205, 38, 38)
FIREBRICK_4 = (139, 26, 26)
FLESH = (255, 125, 64)
FLORALWHITE = (255, 250, 240)
FORESTGREEN = (34, 139, 34)
GAINSBORO = (220, 220, 220)
GHOSTWHITE = (248, 248, 255)
GOLDENROD = (218, 165, 32)
GOLDENROD_1 = (255, 193, 37)
GOLDENROD_2 = (238, 180, 34)
GOLDENROD_3 = (205, 155, 29)
GOLDENROD_4 = (139, 105, 20)
GOLD_2 = (238, 201, 0)
GOLD_3 = (205, 173, 0)
GOLD_4 = (139, 117, 0)
GRAY = (128, 128, 128)
GRAY_1 = (3, 3, 3)
GRAY_10 = (26, 26, 26)
GRAY_11 = (28, 28, 28)
GRAY_12 = (31, 31, 31)
GRAY_13 = (33, 33, 33)
GRAY_14 = (36, 36, 36)
GRAY_15 = (38, 38, 38)
GRAY_16 = (41, 41, 41)
GRAY_17 = (43, 43, 43)
GRAY_18 = (46, 46, 46)
GRAY_19 = (48, 48, 48)
GRAY_2 = (5, 5, 5)
GRAY_20 = (51, 51, 51)
GRAY_21 = (54, 54, 54)
GRAY_22 = (56, 56, 56)
GRAY_23 = (59, 59, 59)
GRAY_24 = (61, 61, 61)
GRAY_25 = (64, 64, 64)
GRAY_26 = (66, 66, 66)
GRAY_27 = (69, 69, 68)
GRAY_28 = (71, 71, 71)
GRAY_29 = (74, 74, 74)
GRAY_3 = (8, 8, 8)
GRAY_30 = (77, 77, 77)
GRAY_31 = (79, 79, 79)
GRAY_32 = (82, 82, 82)
GRAY_33 = (84, 84, 84)
GRAY_34 = (87, 87, 87)
GRAY_35 = (89, 89, 89)
GRAY_36 = (92, 92, 92)
GRAY_37 = (94, 94, 94)
GRAY_38 = (97, 97, 97)
GRAY_39 = (99, 99, 99)
GRAY_4 = (10, 10, 10)
GRAY_40 = (102, 102, 102)
GRAY_42 = (107, 107, 107)
GRAY_43 = (110, 110, 110)
GRAY_44 = (112, 112, 112)
GRAY_45 = (115, 115, 115)
GRAY_46 = (117, 117, 116)
GRAY_47 = (120, 120, 120)
GRAY_48 = (122, 122, 122)
GRAY_49 = (125, 125, 125)
GRAY_5 = (13, 13, 13)
GRAY_50 = (127, 127, 127)
GRAY_51 = (130, 130, 130)
GRAY_52 = (133, 133, 133)
GRAY_53 = (135, 135, 135)
GRAY_54 = (138, 138, 138)
GRAY_55 = (140, 140, 140)
GRAY_56 = (143, 143, 143)
GRAY_57 = (145, 145, 145)
GRAY_58 = (148, 148, 148)
GRAY_59 = (150, 150, 150)
GRAY_6 = (15, 15, 15)
GRAY_60 = (153, 153, 153)
GRAY_61 = (156, 156, 156)
GRAY_62 = (158, 158, 158)
GRAY_63 = (161, 161, 161)
GRAY_64 = (163, 163, 163)
GRAY_65 = (166, 166, 166)
GRAY_66 = (168, 168, 168)
GRAY_67 = (171, 171, 171)
GRAY_68 = (173, 173, 173)
GRAY_69 = (176, 176, 176)
GRAY_7 = (18, 18, 18)
GRAY_70 = (179, 179, 179)
GRAY_71 = (181, 181, 181)
GRAY_72 = (184, 184, 184)
GRAY_73 = (186, 186, 186)
GRAY_74 = (189, 189, 189)
GRAY_75 = (191, 191, 191)
GRAY_76 = (194, 194, 194)
GRAY_77 = (196, 196, 196)
GRAY_78 = (199, 199, 199)
GRAY_79 = (201, 201, 201)
GRAY_8 = (20, 20, 20)
GRAY_80 = (204, 204, 204)
GRAY_81 = (207, 207, 207)
GRAY_82 = (209, 209, 209)
GRAY_83 = (212, 212, 212)
GRAY_84 = (214, 214, 214)
GRAY_85 = (217, 217, 217)
GRAY_86 = (219, 219, 219)
GRAY_87 = (222, 222, 222)
GRAY_88 = (224, 224, 224)
GRAY_89 = (227, 227, 227)
GRAY_9 = (23, 23, 23)
GRAY_90 = (229, 229, 229)
GRAY_91 = (232, 232, 232)
GRAY_92 = (235, 235, 235)
GRAY_93 = (237, 237, 237)
GRAY_94 = (240, 240, 240)
GRAY_95 = (242, 242, 242)
GRAY_97 = (247, 247, 247)
GRAY_98 = (250, 250, 250)
GRAY_99 = (252, 252, 252)
GREENYELLOW = (173, 255, 47)
GREEN_1__LIME_ = (0, 240, 0)
GREEN_2 = (0, 238, 0)
GREEN_3 = (0, 205, 0)
GREEN_4 = (0, 139, 0)
HONEYDEW_2 = (224, 238, 224)
HONEYDEW_3 = (193, 205, 193)
HONEYDEW_4 = (131, 139, 131)
HOTPINK = (255, 105, 180)
HOTPINK_1 = (255, 110, 180)
HOTPINK_2 = (238, 106, 167)
HOTPINK_3 = (205, 96, 144)
HOTPINK_4 = (139, 58, 98)
INDIANRED = (205, 92, 92)
INDIANRED_1 = (255, 106, 106)
INDIANRED_2 = (238, 99, 99)
INDIANRED_3 = (205, 85, 85)
INDIANRED_4 = (139, 58, 58)
INDIAN_RED = (176, 23, 31)
INDIGO = (75, 0, 130)
IVORYBLACK = (41, 36, 33)
IVORY_2 = (238, 238, 224)
IVORY_3 = (205, 205, 193)
IVORY_4 = (139, 139, 131)
KHAKI = (240, 230, 140)
KHAKI_1 = (255, 246, 143)
KHAKI_2 = (238, 230, 133)
KHAKI_3 = (205, 198, 115)
KHAKI_4 = (139, 134, 78)
LAVENDER = (230, 230, 250)
LAVENDERBLUSH_2 = (238, 224, 229)
LAVENDERBLUSH_3 = (205, 193, 197)
LAVENDERBLUSH_4 = (139, 131, 134)
LAWNGREEN = (124, 252, 0)
LEMONCHIFFON_2 = (238, 233, 191)
LEMONCHIFFON_3 = (205, 201, 165)
LEMONCHIFFON_4 = (139, 137, 112)
LIGHTBLUE = (173, 216, 230)
LIGHTBLUE_1 = (191, 239, 255)
LIGHTBLUE_2 = (178, 223, 238)
LIGHTBLUE_3 = (154, 192, 205)
LIGHTBLUE_4 = (104, 131, 139)
LIGHTCORAL = (240, 128, 128)
LIGHTCYAN_2 = (209, 238, 238)
LIGHTCYAN_3 = (180, 205, 205)
LIGHTCYAN_4 = (122, 139, 139)
LIGHTGOLDENRODYELLOW = (250, 250, 210)
LIGHTGOLDENROD_1 = (255, 236, 139)
LIGHTGOLDENROD_2 = (238, 220, 130)
LIGHTGOLDENROD_3 = (205, 190, 112)
LIGHTGOLDENROD_4 = (139, 129, 76)
LIGHTGREY = (211, 211, 211)
LIGHTPINK = (255, 182, 193)
LIGHTPINK_1 = (255, 174, 185)
LIGHTPINK_2 = (238, 162, 173)
LIGHTPINK_3 = (205, 140, 149)
LIGHTPINK_4 = (139, 95, 101)
LIGHTSALMON_2 = (238, 149, 114)
LIGHTSALMON_3 = (205, 129, 98)
LIGHTSALMON_4 = (139, 87, 66)
LIGHTSEAGREEN = (32, 178, 170)
LIGHTSKYBLUE = (135, 206, 250)
LIGHTSKYBLUE_1 = (176, 226, 255)
LIGHTSKYBLUE_2 = (164, 211, 238)
LIGHTSKYBLUE_3 = (141, 182, 205)
LIGHTSKYBLUE_4 = (96, 123, 139)
LIGHTSLATEBLUE = (132, 112, 255)
LIGHTSLATEGRAY = (119, 136, 153)
LIGHTSTEELBLUE = (176, 196, 222)
LIGHTSTEELBLUE_1 = (202, 225, 255)
LIGHTSTEELBLUE_2 = (188, 210, 238)
LIGHTSTEELBLUE_3 = (162, 181, 205)
LIGHTSTEELBLUE_4 = (110, 123, 139)
LIGHTYELLOW_2 = (238, 238, 209)
LIGHTYELLOW_3 = (205, 205, 180)
LIGHTYELLOW_4 = (139, 139, 122)
LIMEGREEN = (50, 205, 50)
LINEN = (250, 240, 230)
MAGENTA = (255, 0, 255)
MAGENTA_2 = (238, 0, 238)
MAGENTA_3 = (205, 0, 205)
MANGANESEBLUE = (3, 168, 158)
MAROON = (128, 0, 0)
MAROON_1 = (255, 52, 179)
MAROON_2 = (238, 48, 167)
MAROON_3 = (205, 41, 144)
MAROON_4 = (139, 28, 98)
MEDIUMORCHID = (186, 85, 211)
MEDIUMORCHID_1 = (224, 102, 255)
MEDIUMORCHID_2 = (209, 95, 238)
MEDIUMORCHID_3 = (180, 82, 205)
MEDIUMORCHID_4 = (122, 55, 139)
MEDIUMPURPLE = (147, 112, 219)
MEDIUMPURPLE_1 = (171, 130, 255)
MEDIUMPURPLE_2 = (159, 121, 238)
MEDIUMPURPLE_3 = (137, 104, 205)
MEDIUMPURPLE_4 = (93, 71, 139)
MEDIUMSEAGREEN = (60, 179, 113)
MEDIUMSLATEBLUE = (123, 104, 238)
MEDIUMSPRINGGREEN = (0, 250, 154)
MEDIUMTURQUOISE = (72, 209, 204)
MEDIUMVIOLETRED = (199, 21, 133)
MELON = (227, 168, 105)
MIDNIGHTBLUE = (25, 25, 112)
MINT = (189, 252, 201)
MINTCREAM = (245, 255, 250)
MISTYROSE_2 = (238, 213, 210)
MISTYROSE_3 = (205, 183, 181)
MISTYROSE_4 = (139, 125, 123)
MOCCASIN = (255, 228, 181)
NAVAJOWHITE_2 = (238, 207, 161)
NAVAJOWHITE_3 = (205, 179, 139)
NAVAJOWHITE_4 = (139, 121, 94)
NAVY = (0, 0, 128)
OLDLACE = (253, 245, 230)
OLIVE = (128, 128, 0)
OLIVEDRAB = (107, 142, 35)
OLIVEDRAB_1 = (192, 255, 62)
OLIVEDRAB_2 = (179, 238, 58)
OLIVEDRAB_4 = (105, 139, 34)
ORANGE = (255, 128, 0)
ORANGERED_2 = (238, 64, 0)
ORANGERED_3 = (205, 55, 0)
ORANGERED_4 = (139, 37, 0)
ORANGE_1__ORANGE_ = (255, 165, 0)
ORANGE_2 = (238, 154, 0)
ORANGE_3 = (205, 133, 0)
ORANGE_4 = (139, 90, 0)
ORCHID = (218, 112, 214)
ORCHID_1 = (255, 131, 250)
ORCHID_2 = (238, 122, 233)
ORCHID_3 = (205, 105, 201)
ORCHID_4 = (139, 71, 137)
PALEGOLDENROD = (238, 232, 170)
PALEGREEN = (152, 251, 152)
PALEGREEN_1 = (154, 255, 154)
PALEGREEN_3 = (124, 205, 124)
PALEGREEN_4 = (84, 139, 84)
PALETURQUOISE_1 = (187, 255, 255)
PALETURQUOISE_2__PALETURQUOISE_ = (174, 238, 238)
PALETURQUOISE_3 = (150, 205, 205)
PALETURQUOISE_4 = (102, 139, 139)
PALEVIOLETRED = (219, 112, 147)
PALEVIOLETRED_1 = (255, 130, 171)
PALEVIOLETRED_2 = (238, 121, 159)
PALEVIOLETRED_3 = (205, 104, 137)
PALEVIOLETRED_4 = (139, 71, 93)
PAPAYAWHIP = (255, 239, 213)
PEACHPUFF_2 = (238, 203, 173)
PEACHPUFF_3 = (205, 175, 149)
PEACHPUFF_4 = (139, 119, 101)
PEACOCK = (51, 161, 201)
PINK = (255, 192, 203)
PINK_1 = (255, 181, 197)
PINK_2 = (238, 169, 184)
PINK_3 = (205, 145, 158)
PINK_4 = (139, 99, 108)
PLUM = (221, 160, 221)
PLUM_1 = (255, 187, 255)
PLUM_2 = (238, 174, 238)
PLUM_3 = (205, 150, 205)
PLUM_4 = (139, 102, 139)
POWDERBLUE = (176, 224, 230)
PURPLE = (128, 0, 128)
PURPLE_1 = (155, 48, 255)
PURPLE_2 = (145, 44, 238)
PURPLE_3 = (125, 38, 205)
PURPLE_4 = (85, 26, 139)
RASPBERRY = (135, 38, 87)
RAWSIENNA = (199, 97, 20)
RED_2 = (238, 0, 0)
RED_3 = (205, 0, 0)
ROSYBROWN = (188, 143, 143)
ROSYBROWN_1 = (255, 193, 193)
ROSYBROWN_2 = (238, 180, 180)
ROSYBROWN_3 = (205, 155, 155)
ROSYBROWN_4 = (139, 105, 105)
ROYALBLUE = (65, 105, 225)
ROYALBLUE_1 = (72, 118, 255)
ROYALBLUE_2 = (67, 110, 238)
ROYALBLUE_3 = (58, 95, 205)
ROYALBLUE_4 = (39, 64, 139)
SALMON = (250, 128, 114)
SALMON_1 = (255, 140, 105)
SALMON_2 = (238, 130, 98)
SALMON_3 = (205, 112, 84)
SALMON_4 = (139, 76, 57)
SANDYBROWN = (244, 164, 96)
SAPGREEN = (48, 128, 20)
SEAGREEN_1 = (84, 255, 159)
SEAGREEN_2 = (78, 238, 148)
SEAGREEN_3 = (67, 205, 128)
SEASHELL_2 = (238, 229, 222)
SEASHELL_3 = (205, 197, 191)
SEASHELL_4 = (139, 134, 130)
SEPIA = (94, 38, 18)
SGI_BEET = (142, 56, 142)
SGI_BRIGHTGRAY = (197, 193, 170)
SGI_CHARTREUSE = (113, 198, 113)
SGI_DARKGRAY = (85, 85, 85)
SGI_GRAY_12 = (30, 30, 30)
SGI_GRAY_16 = (40, 40, 40)
SGI_GRAY_32 = (81, 81, 81)
SGI_GRAY_36 = (91, 91, 91)
SGI_GRAY_52 = (132, 132, 132)
SGI_GRAY_56 = (142, 142, 142)
SGI_GRAY_72 = (183, 183, 183)
SGI_GRAY_76 = (193, 193, 193)
SGI_GRAY_92 = (234, 234, 234)
SGI_GRAY_96 = (244, 244, 244)
SGI_LIGHTBLUE = (125, 158, 192)
SGI_LIGHTGRAY = (170, 170, 170)
SGI_OLIVEDRAB = (142, 142, 56)
SGI_SALMON = (198, 113, 113)
SGI_SLATEBLUE = (113, 113, 198)
SGI_TEAL = (56, 142, 142)
SIENNA = (160, 82, 45)
SIENNA_1 = (255, 130, 71)
SIENNA_2 = (238, 121, 66)
SIENNA_3 = (205, 104, 57)
SIENNA_4 = (139, 71, 38)
SILVER = (192, 192, 192)
SKYBLUE = (135, 206, 235)
SKYBLUE_1 = (135, 206, 255)
SKYBLUE_2 = (126, 192, 238)
SKYBLUE_3 = (108, 166, 205)
SKYBLUE_4 = (74, 112, 139)
SLATEBLUE = (106, 90, 205)
SLATEBLUE_1 = (131, 111, 255)
SLATEBLUE_2 = (122, 103, 238)
SLATEBLUE_3 = (105, 89, 205)
SLATEBLUE_4 = (71, 60, 139)
SLATEGRAY = (112, 128, 144)
SLATEGRAY_1 = (198, 226, 255)
SLATEGRAY_2 = (185, 211, 238)
SLATEGRAY_3 = (159, 182, 205)
SLATEGRAY_4 = (108, 123, 139)
SNOW_2 = (238, 233, 233)
SNOW_3 = (205, 201, 201)
SNOW_4 = (139, 137, 137)
SPRINGGREEN = (0, 255, 127)
SPRINGGREEN_1 = (0, 238, 118)
SPRINGGREEN_2 = (0, 205, 102)
SPRINGGREEN_3 = (0, 139, 69)
STEELBLUE = (70, 130, 180)
STEELBLUE_1 = (99, 184, 255)
STEELBLUE_2 = (92, 172, 238)
STEELBLUE_3 = (79, 148, 205)
STEELBLUE_4 = (54, 100, 139)
TAN = (210, 180, 140)
TAN_1 = (255, 165, 79)
TAN_2 = (238, 154, 73)
TAN_4 = (139, 90, 43)
TEAL = (0, 128, 128)
THISTLE = (216, 191, 216)
THISTLE_1 = (255, 225, 255)
THISTLE_2 = (238, 210, 238)
THISTLE_3 = (205, 181, 205)
THISTLE_4 = (139, 123, 139)
TOMATO_2 = (238, 92, 66)
TOMATO_3 = (205, 79, 57)
TOMATO_4 = (139, 54, 38)
TURQUOISE = (64, 224, 208)
TURQUOISEBLUE = (0, 199, 140)
TURQUOISE_1 = (0, 245, 255)
TURQUOISE_2 = (0, 229, 238)
TURQUOISE_3 = (0, 197, 205)
TURQUOISE_4 = (0, 134, 139)
VIOLET = (238, 130, 238)
VIOLETRED = (208, 32, 144)
VIOLETRED_1 = (255, 62, 150)
VIOLETRED_2 = (238, 58, 140)
VIOLETRED_3 = (205, 50, 120)
VIOLETRED_4 = (139, 34, 82)
WARMGREY = (128, 128, 105)
WHEAT = (245, 222, 179)
WHEAT_1 = (255, 231, 186)
WHEAT_2 = (238, 216, 174)
WHEAT_3 = (205, 186, 150)
WHEAT_4 = (139, 126, 102)
YELLOW_2 = (238, 238, 0)
YELLOW_3 = (205, 205, 0)
YELLOW_4 = (139, 139, 0)

NIGHT = (12, 9, 10)
CHARCOAL = (52, 40, 44)
OIL = (59, 49, 49)
LIGHT_BLACK = (69, 69, 69)
BLACK_CAT = (65, 56, 57)
IRIDIUM = (61, 60, 58)
BLACK_EEL = (70, 62, 63)
BLACK_COW = (76, 70, 70)
GRAY_WOLF = (80, 74, 75)
VAMPIRE_GRAY = (86, 80, 81)
IRON_GRAY = (82, 89, 93)
GRAY_DOLPHIN = (92, 88, 88)
CARBON_GRAY = (98, 93, 93)
ASH_GRAY = (102, 99, 98)
DIMGRAY_OR_DIMGREY = (105, 105, 105)
NARDO_GRAY = (104, 106, 108)
CLOUDY_GRAY = (109, 105, 104)
SMOKEY_GRAY = (114, 110, 109)
ALIEN_GRAY = (115, 111, 110)
SONIC_SILVER = (117, 117, 117)
PLATINUM_GRAY = (121, 121, 121)
GRANITE = (131, 126, 124)
BATTLESHIP_GRAY = (132, 132, 130)
GUNMETAL_GRAY = (141, 145, 141)
GRAY_CLOUD = (182, 182, 180)
PALE_SILVER = (201, 192, 187)
GRAY_GOOSE = (209, 208, 206)
PLATINUM_SILVER = (206, 206, 206)
SILVER_WHITE = (218, 219, 221)
PLATINUM = (229, 228, 226)
METALLIC_SILVER = (188, 198, 204)
BLUE_GRAY = (152, 175, 199)
ROMAN_SILVER = (131, 137, 150)
RAT_GRAY = (109, 123, 141)
SLATE_GRANITE_GRAY = (101, 115, 131)
JET_GRAY = (97, 109, 126)
MIST_BLUE = (100, 109, 126)
MARBLE_BLUE = (86, 109, 126)
SLATE_BLUE_GREY = (115, 124, 161)
LIGHT_PURPLE_BLUE = (114, 143, 206)
AZURE_BLUE = (72, 99, 160)
BLUE_JAY = (43, 84, 126)
CHARCOAL_BLUE = (54, 69, 79)
DARK_BLUE_GREY = (41, 70, 91)
DARK_SLATE = (43, 56, 86)
DEEP_SEA_BLUE = (18, 52, 86)
NIGHT_BLUE = (21, 27, 84)
DENIM_DARK_BLUE = (21, 27, 141)
DARKBLUE = (0, 0, 139)
LAPIS_BLUE = (21, 49, 126)
NEW_MIDNIGHT_BLUE = (0, 0, 160)
EARTH_BLUE = (0, 0, 165)
COBALT_BLUE = (0, 32, 194)
MEDIUMBLUE = (0, 0, 205)
BLUEBERRY_BLUE = (0, 65, 194)
CANARY_BLUE = (41, 22, 245)
SAMCO_BLUE = (0, 2, 255)
BRIGHT_BLUE = (9, 9, 255)
BLUE_ORCHID = (31, 69, 252)
SAPPHIRE_BLUE = (37, 84, 199)
BLUE_EYES = (21, 105, 199)
BRIGHT_NAVY_BLUE = (25, 116, 210)
BALLOON_BLUE = (43, 96, 222)
OCEAN_BLUE = (43, 101, 236)
BLUE_RIBBON = (48, 110, 255)
BLUE_DRESS = (21, 125, 236)
NEON_BLUE = (21, 137, 255)
DODGERBLUE = (30, 144, 255)
GLACIAL_BLUE_ICE = (54, 139, 193)
SILK_BLUE = (72, 138, 199)
WINDOWS_BLUE = (53, 126, 199)
BLUE_IVY = (48, 144, 199)
BLUE_KOI = (101, 158, 199)
COLUMBIA_BLUE = (135, 175, 199)
BABY_BLUE = (149, 185, 199)
SKY_BLUE_DRESS = (102, 152, 255)
ICEBERG = (86, 165, 236)
BUTTERFLY_BLUE = (56, 172, 236)
DEEPSKYBLUE = (0, 191, 255)
MIDDAY_BLUE = (59, 185, 255)
CRYSTAL_BLUE = (92, 179, 255)
DENIM_BLUE = (121, 186, 236)
DAY_SKY_BLUE = (130, 202, 255)
JEANS_BLUE = (160, 207, 236)
BLUE_ANGEL = (183, 206, 236)
PASTEL_BLUE = (180, 207, 236)
LIGHT_DAY_BLUE = (173, 223, 255)
SEA_BLUE = (194, 223, 255)
HEAVENLY_BLUE = (198, 222, 255)
ROBIN_EGG_BLUE = (189, 237, 255)
CORAL_BLUE = (175, 220, 236)
GULF_BLUE = (201, 223, 236)
PASTEL_LIGHT_BLUE = (213, 214, 234)
LAVENDER_BLUE = (227, 228, 250)
WHITE_BLUE = (219, 233, 250)
WATER = (235, 244, 250)
AZURE = (240, 255, 255)
LIGHTCYAN = (224, 255, 255)
LIGHT_SLATE = (204, 255, 255)
ELECTRIC_BLUE = (154, 254, 255)
TRON_BLUE = (125, 253, 254)
BLUE_ZIRCON = (87, 254, 255)
BRIGHT_CYAN = (10, 255, 255)
CELESTE = (80, 235, 236)
BLUE_DIAMOND = (78, 226, 236)
BRIGHT_TURQUOISE = (22, 226, 245)
BLUE_LAGOON = (142, 235, 236)
PALETURQUOISE = (175, 238, 238)
PALE_BLUE_LILY = (207, 236, 236)
LIGHT_TEAL = (179, 217, 217)
TIFFANY_BLUE = (129, 216, 208)
BLUE_HOSTA = (119, 191, 199)
CYAN_OPAQUE = (146, 199, 199)
NORTHERN_LIGHTS_BLUE = (120, 199, 199)
BLUE_GREEN = (123, 204, 181)
MEDIUMAQUAMARINE = (102, 205, 170)
MAGIC_MINT = (170, 240, 209)
LIGHT_AQUAMARINE = (147, 255, 232)
AQUAMARINE = (127, 255, 212)
BRIGHT_TEAL = (1, 249, 198)
DEEP_TURQUOISE = (72, 204, 205)
JELLYFISH = (70, 199, 199)
BLUE_TURQUOISE = (67, 198, 219)
MACAW_BLUE_GREEN = (67, 191, 199)
SEAFOAM_GREEN = (62, 169, 159)
DEEP_SEA = (59, 156, 156)
DARKCYAN = (0, 139, 139)
TEAL_GREEN = (0, 130, 127)
TEAL_BLUE = (0, 124, 128)
MEDIUM_TEAL = (4, 95, 95)
DARK_TEAL = (4, 93, 93)
DEEP_TEAL = (3, 62, 62)
DARKSLATEGRAY_OR_DARKSLATEGREY = (37, 56, 60)
GUNMETAL = (44, 53, 57)
BLUE_MOSS_GREEN = (60, 86, 91)
BEETLE_GREEN = (76, 120, 126)
GRAYISH_TURQUOISE = (94, 125, 126)
GREENISH_BLUE = (48, 125, 126)
AQUAMARINE_STONE = (52, 135, 129)
SEA_TURTLE_GREEN = (67, 141, 128)
DULL_SEA_GREEN = (78, 137, 117)
DARK_GREEN_BLUE = (31, 99, 87)
DEEP_SEA_GREEN = (48, 103, 84)
BOTTLE_GREEN = (0, 106, 78)
SEAGREEN = (46, 139, 87)
ELF_GREEN = (27, 138, 107)
DARK_MINT = (49, 144, 110)
JADE = (0, 163, 108)
EARTH_GREEN = (52, 165, 111)
CHROME_GREEN = (26, 162, 96)
EMERALD = (80, 200, 120)
METALLIC_GREEN = (124, 157, 142)
CAMOUFLAGE_GREEN = (120, 134, 107)
SAGE_GREEN = (132, 139, 121)
HAZEL_GREEN = (97, 124, 88)
VENOM_GREEN = (114, 140, 0)
MILITARY_GREEN = (78, 91, 49)
GREEN_LEAVES = (58, 95, 11)
ARMY_GREEN = (75, 83, 32)
FERN_GREEN = (102, 124, 38)
FALL_FOREST_GREEN = (78, 146, 88)
IRISH_GREEN = (8, 160, 75)
PINE_GREEN = (56, 124, 68)
MEDIUM_FOREST_GREEN = (52, 114, 53)
JUNGLE_GREEN = (52, 124, 44)
CACTUS_GREEN = (34, 116, 66)
DEEP_GREEN = (5, 102, 8)
DEEP_EMERALD_GREEN = (4, 99, 7)
HUNTER_GREEN = (53, 94, 59)
DARK_FOREST_GREEN = (37, 65, 23)
LOTUS_GREEN = (0, 66, 37)
SEAWEED_GREEN = (67, 124, 23)
SHAMROCK_GREEN = (52, 124, 23)
GREEN_ONION = (106, 161, 33)
MOSS_GREEN = (138, 154, 91)
GRASS_GREEN = (63, 155, 11)
GREEN_PEPPER = (74, 160, 44)
DARK_LIME_GREEN = (65, 163, 23)
PARROT_GREEN = (18, 173, 43)
CLOVER_GREEN = (62, 160, 85)
DINOSAUR_GREEN = (115, 161, 108)
GREEN_SNAKE = (108, 187, 60)
ALIEN_GREEN = (108, 196, 23)
GREEN_APPLE = (76, 196, 23)
PEA_GREEN = (82, 208, 23)
KELLY_GREEN = (76, 197, 82)
ZOMBIE_GREEN = (84, 197, 113)
GREEN_PEAS = (137, 195, 92)
DOLLAR_BILL_GREEN = (133, 187, 101)
FROG_GREEN = (153, 198, 142)
TURQUOISE_GREEN = (160, 214, 180)
BASIL_GREEN = (130, 159, 130)
GRAY_GREEN = (162, 173, 156)
IGUANA_GREEN = (156, 176, 113)
CITRON_GREEN = (143, 179, 29)
ACID_GREEN = (176, 191, 26)
AVOCADO_GREEN = (178, 194, 72)
PISTACHIO_GREEN = (157, 194, 9)
SALAD_GREEN = (161, 201, 53)
YELLOWGREEN = (154, 205, 50)
PASTEL_GREEN = (119, 221, 119)
HUMMINGBIRD_GREEN = (127, 232, 23)
NEBULA_GREEN = (89, 232, 23)
STOPLIGHT_GO_GREEN = (87, 233, 100)
NEON_GREEN = (22, 245, 41)
JADE_GREEN = (94, 251, 110)
LIME_MINT_GREEN = (54, 245, 127)
EMERALD_GREEN = (95, 251, 23)
LIME = (0, 250, 0)
BRIGHT_GREEN = (102, 255, 0)
CHARTREUSE = (127, 255, 0)
YELLOW_LAWN_GREEN = (135, 247, 23)
ALOE_VERA_GREEN = (152, 245, 22)
DULL_GREEN_YELLOW = (177, 251, 23)
LEMON_GREEN = (173, 248, 2)
CHAMELEON_GREEN = (189, 245, 22)
NEON_YELLOW_GREEN = (218, 238, 1)
YELLOW_GREEN_GROSBEAK = (226, 245, 22)
TEA_GREEN = (204, 251, 93)
SLIME_GREEN = (188, 233, 84)
ALGAE_GREEN = (100, 233, 134)
LIGHTGREEN = (144, 238, 144)
DRAGON_GREEN = (106, 251, 146)
MINT_GREEN = (152, 255, 152)
GREEN_THUMB = (181, 234, 170)
ORGANIC_BROWN = (227, 249, 166)
LIGHT_JADE = (195, 253, 184)
LIGHT_MINT_GREEN = (194, 229, 211)
LIGHT_ROSE_GREEN = (219, 249, 219)
CHROME_WHITE = (232, 241, 212)
HONEYDEW = (240, 255, 240)
LEMONCHIFFON = (255, 250, 205)
PARCHMENT = (255, 255, 194)
CREAM = (255, 255, 204)
CREAM_WHITE = (255, 253, 208)
LIGHTYELLOW = (255, 255, 224)
CORNSILK = (255, 248, 220)
BLONDE = (251, 246, 217)
CHAMPAGNE = (247, 231, 206)
BISQUE = (255, 228, 196)
PEACH = (255, 229, 180)
LIGHT_ORANGE = (254, 216, 177)
PEACHPUFF = (255, 218, 185)
CORAL_PEACH = (251, 213, 171)
NAVAJOWHITE = (255, 222, 173)
GOLDEN_BLONDE = (251, 231, 161)
GOLDEN_SILK = (243, 227, 195)
DARK_BLONDE = (240, 226, 182)
LIGHT_GOLD = (241, 229, 172)
VANILLA = (243, 229, 171)
TAN_BROWN = (236, 229, 182)
DIRTY_WHITE = (232, 228, 201)
CARDBOARD_BROWN = (237, 218, 116)
HARVEST_GOLD = (237, 226, 117)
SUN_YELLOW = (255, 232, 124)
CORN_YELLOW = (255, 243, 128)
PASTEL_YELLOW = (250, 248, 132)
NEON_YELLOW = (255, 255, 51)
YELLOW = (255, 255, 0)
CANARY_YELLOW = (255, 239, 0)
BANANA_YELLOW = (245, 226, 22)
MUSTARD_YELLOW = (255, 219, 88)
GOLDEN_YELLOW = (255, 223, 0)
BOLD_YELLOW = (249, 219, 36)
RUBBER_DUCKY_YELLOW = (255, 216, 1)
GOLD = (255, 215, 0)
BRIGHT_GOLD = (253, 208, 23)
CHROME_GOLD = (255, 206, 68)
GOLDEN_BROWN = (234, 193, 23)
DEEP_YELLOW = (246, 190, 0)
MACARONI_AND_CHEESE = (242, 187, 102)
SAFFRON = (251, 185, 23)
NEON_GOLD = (253, 189, 1)
BEER = (251, 177, 23)
YELLOW_ORANGE_OR_ORANGE_YELLOW = (255, 174, 66)
CANTALOUPE = (255, 166, 47)
CHEESE_ORANGE = (255, 166, 0)
BROWN_SAND = (238, 154, 77)
BROWN_SUGAR = (226, 167, 111)
CAMEL_BROWN = (193, 154, 107)
DEER_BROWN = (230, 191, 131)
LIGHT_FRENCH_BEIGE = (200, 173, 127)
SAND = (194, 178, 128)
SAGE = (188, 184, 138)
FALL_LEAF_BROWN = (200, 181, 96)
GINGER_BROWN = (201, 190, 98)
BRONZE_GOLD = (201, 174, 93)
OLIVE_GREEN = (186, 184, 108)
BRASS = (181, 166, 66)
COOKIE_BROWN = (199, 163, 23)
METALLIC_GOLD = (212, 175, 55)
BEE_YELLOW = (233, 171, 23)
SCHOOL_BUS_YELLOW = (232, 163, 23)
ORANGE_GOLD = (212, 160, 23)
CARAMEL = (198, 142, 23)
CINNAMON = (197, 137, 23)
PERU = (205, 133, 63)
BRONZE = (205, 127, 50)
TIGER_ORANGE = (200, 129, 65)
COPPER = (184, 115, 51)
DARK_GOLD = (170, 108, 57)
METALLIC_BRONZE = (169, 113, 66)
DARK_ALMOND = (171, 120, 78)
WOOD = (150, 111, 51)
OAK_BROWN = (128, 101, 23)
ANTIQUE_BRONZE = (102, 93, 30)
HAZEL = (142, 118, 24)
DARK_YELLOW = (139, 128, 0)
DARK_MOCCASIN = (130, 120, 57)
KHAKI_GREEN = (138, 134, 93)
MILLENNIUM_JADE = (147, 145, 124)
DARK_BEIGE = (159, 140, 118)
BULLET_SHELL = (175, 155, 96)
ARMY_BROWN = (130, 123, 96)
SANDSTONE = (120, 109, 95)
TAUPE = (72, 60, 50)
MOCHA = (73, 61, 38)
MILK_CHOCOLATE = (81, 59, 28)
GRAY_BROWN = (61, 54, 53)
DARK_COFFEE = (59, 47, 47)
OLD_BURGUNDY = (67, 48, 46)
WESTERN_CHARCOAL = (73, 65, 63)
BAKERS_BROWN = (92, 51, 23)
DARK_BROWN = (101, 67, 33)
SEPIA_BROWN = (112, 66, 20)
DARK_BRONZE = (128, 74, 0)
COFFEE = (111, 78, 55)
BROWN_BEAR = (131, 92, 59)
RED_DIRT = (127, 82, 23)
SADDLEBROWN = (139, 69, 19)
DARK_SIENNA = (138, 65, 23)
SANGRIA = (126, 56, 23)
BLOOD_RED = (126, 53, 23)
CHESTNUT = (149, 69, 53)
CORAL_BROWN = (158, 70, 56)
CHESTNUT_RED = (195, 74, 44)
MAHOGANY = (192, 64, 0)
RED_GOLD = (235, 84, 6)
RED_FOX = (195, 88, 23)
DARK_BISQUE = (184, 101, 0)
LIGHT_BROWN = (181, 101, 29)
PETRA_GOLD = (183, 103, 52)
RUST = (195, 98, 65)
COPPER_RED = (203, 109, 81)
ORANGE_SALMON = (196, 116, 81)
SEDONA = (204, 102, 0)
PAPAYA_ORANGE = (229, 103, 23)
HALLOWEEN_ORANGE = (230, 108, 44)
NEON_ORANGE = (255, 103, 0)
BRIGHT_ORANGE = (255, 95, 31)
PUMPKIN_ORANGE = (248, 114, 23)
CARROT_ORANGE = (248, 128, 23)
CONSTRUCTION_CONE_ORANGE = (248, 116, 49)
INDIAN_SAFFRON = (255, 119, 34)
SUNRISE_ORANGE = (230, 116, 81)
MANGO_ORANGE = (255, 128, 64)
BASKET_BALL_ORANGE = (248, 129, 88)
LIGHT_SALMON_ROSE = (249, 150, 107)
LIGHTSALMON = (255, 160, 122)
TANGERINE = (231, 138, 97)
LIGHT_COPPER = (218, 138, 103)
SALMON_PINK = (255, 134, 116)
PEACH_PINK = (249, 139, 136)
PASTEL_RED = (246, 114, 128)
PINK_CORAL = (231, 116, 113)
BEAN_RED = (247, 93, 89)
VALENTINE_RED = (229, 84, 81)
TOMATO = (255, 99, 71)
SHOCKING_ORANGE = (229, 91, 60)
ORANGERED = (255, 69, 0)
NEON_RED = (253, 28, 3)
SCARLET_RED = (255, 36, 0)
RUBY_RED = (246, 34, 23)
FERRARI_RED = (247, 13, 26)
FIRE_ENGINE_RED = (246, 40, 23)
LAVA_RED = (228, 34, 23)
LOVE_RED = (228, 27, 23)
GRAPEFRUIT = (220, 56, 31)
CHERRY_RED = (194, 70, 65)
CHILLI_PEPPER = (193, 27, 23)
TOMATO_SAUCE_RED = (178, 24, 7)
CARBON_RED = (167, 13, 42)
CRANBERRY = (159, 0, 15)
SAFFRON_RED = (147, 19, 20)
CRIMSON_RED = (153, 0, 0)
RED_WINE_OR_WINE_RED = (153, 0, 18)
DARKRED = (139, 0, 0)
BURGUNDY = (140, 0, 26)
VERMILION = (126, 25, 27)
DEEP_RED = (128, 5, 23)
RED_BLOOD = (102, 0, 0)
BLOOD_NIGHT = (85, 22, 6)
DARK_SCARLET = (86, 3, 25)
BLACK_BEAN = (61, 12, 2)
CHOCOLATE_BROWN = (63, 0, 15)
MIDNIGHT = (43, 27, 23)
PURPLE_LILY = (85, 10, 53)
PURPLE_MAROON = (129, 5, 65)
PLUM_PIE = (125, 5, 65)
PLUM_VELVET = (125, 5, 82)
DARK_RASPBERRY = (130, 37, 86)
VELVET_MAROON = (126, 53, 77)
ROSY_FINCH = (127, 78, 82)
DULL_PURPLE = (127, 82, 93)
PUCE = (127, 90, 88)
ROSE_DUST = (153, 112, 112)
PASTEL_BROWN = (177, 144, 127)
ROSY_PINK = (179, 132, 129)
KHAKI_ROSE = (197, 144, 142)
LIPSTICK_PINK = (196, 135, 147)
PINK_BROWN = (196, 129, 137)
OLD_ROSE = (192, 128, 129)
DUSTY_PINK = (213, 138, 148)
PINK_DAISY = (231, 153, 163)
ROSE = (232, 173, 170)
DUSTY_ROSE = (201, 169, 166)
SILVER_PINK = (196, 174, 173)
GOLD_PINK = (230, 199, 194)
ROSE_GOLD = (236, 197, 192)
DEEP_PEACH = (255, 203, 164)
PASTEL_ORANGE = (248, 184, 139)
DESERT_SAND = (237, 201, 175)
UNBLEACHED_SILK = (255, 221, 202)
PIG_PINK = (253, 215, 228)
PALE_PINK = (242, 212, 215)
BLUSH = (255, 230, 232)
MISTYROSE = (255, 228, 225)
PINK_BUBBLE_GUM = (255, 223, 221)
LIGHT_ROSE = (251, 207, 205)
LIGHT_RED = (255, 204, 203)
WARM_PINK = (246, 198, 189)
DEEP_ROSE = (251, 187, 185)
SOFT_PINK = (255, 184, 191)
DONUT_PINK = (250, 175, 190)
BABY_PINK = (250, 175, 186)
FLAMINGO_PINK = (249, 167, 176)
PASTEL_PINK = (254, 163, 170)
ROSE_PINK_OR_PINK_ROSE = (231, 161, 176)
CADILLAC_PINK = (227, 138, 174)
CARNATION_PINK = (247, 120, 161)
PASTEL_ROSE = (229, 120, 143)
BLUSH_RED = (229, 110, 148)
PURPLE_PINK = (209, 101, 135)
TULIP_PINK = (194, 90, 124)
BASHFUL_PINK = (194, 82, 131)
DARK_PINK = (231, 84, 128)
DARK_HOT_PINK = (246, 96, 171)
WATERMELON_PINK = (252, 108, 133)
VIOLET_RED = (246, 53, 138)
HOT_DEEP_PINK = (245, 40, 135)
BRIGHT_PINK = (255, 0, 127)
DEEPPINK = (255, 20, 147)
NEON_PINK = (245, 53, 170)
CHROME_PINK = (255, 51, 170)
NEON_HOT_PINK = (253, 52, 156)
PINK_CUPCAKE = (228, 94, 157)
ROYAL_PINK = (231, 89, 172)
DIMORPHOTHECA_MAGENTA = (227, 49, 157)
PINK_LEMONADE = (228, 40, 124)
RED_PINK = (250, 42, 85)
BRIGHT_MAROON = (195, 33, 72)
ROSE_RED = (194, 30, 86)
ROGUE_PINK = (193, 40, 105)
BURNT_PINK = (193, 34, 103)
PINK_VIOLET = (202, 34, 107)
MAGENTA_PINK = (204, 51, 139)
DARK_CARNATION_PINK = (193, 34, 131)
RASPBERRY_PURPLE = (179, 68, 108)
PINK_PLUM = (185, 59, 143)
DEEP_MAUVE = (223, 115, 212)
FUCHSIA = (254, 118, 254)
FUCHSIA_PINK = (255, 119, 255)
BRIGHT_NEON_PINK = (244, 51, 255)
CRIMSON_PURPLE = (226, 56, 236)
HELIOTROPE_PURPLE = (212, 98, 255)
TYRIAN_PURPLE = (196, 90, 236)
PURPLE_FLOWER = (167, 74, 199)
ORCHID_PURPLE = (176, 72, 181)
RICH_LILAC = (182, 102, 210)
PASTEL_VIOLET = (210, 145, 188)
MAUVE_TAUPE = (145, 95, 109)
VIOLA_PURPLE = (126, 88, 126)
EGGPLANT = (97, 64, 81)
PLUM_PURPLE = (88, 55, 89)
GRAPE = (94, 90, 128)
PURPLE_NAVY = (78, 81, 128)
BLUE_LOTUS = (105, 96, 236)
BLURPLE = (88, 101, 242)
LIGHT_SLATE_BLUE = (115, 106, 255)
PERIWINKLE_PURPLE = (117, 117, 207)
VERY_PERI = (102, 103, 171)
BRIGHT_GRAPE = (111, 45, 168)
PURPLE_AMETHYST = (108, 45, 199)
BRIGHT_PURPLE = (106, 13, 173)
DEEP_PERIWINKLE = (84, 83, 166)
PURPLE_HAZE = (78, 56, 126)
PURPLE_IRIS = (87, 27, 126)
DARK_PURPLE = (75, 1, 80)
DEEP_PURPLE = (54, 1, 63)
MIDNIGHT_PURPLE = (46, 26, 71)
PURPLE_MONSTER = (70, 27, 126)
BLUE_WHALE = (52, 45, 126)
REBECCAPURPLE = (102, 51, 153)
PURPLE_JAM = (106, 40, 126)
DARKMAGENTA = (139, 0, 139)
FRENCH_LILAC = (134, 96, 142)
PURPLE_VIOLET = (141, 56, 201)
JASMINE_PURPLE = (162, 59, 236)
PURPLE_DAFFODIL = (176, 65, 255)
CLEMATIS_VIOLET = (132, 45, 206)
PURPLE_SAGE_BUSH = (122, 93, 199)
LOVELY_PURPLE = (127, 56, 236)
NEON_PURPLE = (157, 0, 255)
PURPLE_PLUM = (142, 53, 239)
AZTECH_PURPLE = (137, 59, 255)
LIGHT_PURPLE = (132, 103, 215)
CROCUS_PURPLE = (145, 114, 236)
PURPLE_MIMOSA = (158, 123, 255)
PERIWINKLE = (204, 204, 255)
PALE_LILAC = (220, 208, 255)
LAVENDER_PURPLE = (150, 123, 182)
ROSE_PURPLE = (176, 159, 202)
LILAC = (200, 162, 200)
MAUVE = (224, 176, 255)
BRIGHT_LILAC = (216, 145, 239)
PURPLE_DRAGON = (195, 142, 199)
BLUSH_PINK = (230, 169, 236)
PASTEL_PURPLE = (242, 162, 232)
BLOSSOM_PINK = (249, 183, 255)
WISTERIA_PURPLE = (198, 174, 199)
PURPLE_THISTLE = (210, 185, 211)
PURPLE_WHITE = (223, 211, 227)
PERIWINKLE_PINK = (233, 207, 236)
COTTON_CANDY = (252, 223, 255)
LAVENDER_PINOCCHIO = (235, 221, 226)
DARK_WHITE = (225, 217, 209)
ASH_WHITE = (233, 228, 212)
WHITE_CHOCOLATE = (237, 230, 214)
SOFT_IVORY = (250, 240, 221)
OFF_WHITE = (248, 240, 227)
PEARL_WHITE = (248, 246, 240)
RED_WHITE = (243, 232, 234)
LAVENDERBLUSH = (255, 240, 245)
PEARL = (253, 238, 244)
EGG_SHELL = (255, 249, 227)
SEASHELL = (255, 245, 238)
BONE_WHITE = (249, 246, 238)
RICE = (250, 245, 239)
IVORY = (255, 255, 240)
WHITE_GOLD = (255, 255, 244)
LIGHT_WHITE = (255, 255, 247)
WHITESMOKE = (245, 245, 245)
COTTON = (251, 251, 249)
SNOW = (255, 250, 250)
MILK_WHITE = (254, 252, 255)
HALF_WHITE = (255, 254, 250)


# removed 2023-04-27 to ensure that COLOURS and COLOURS_INVERSE dictionaries are the same length.
# AQUAMARINE_1__AQUAMARINE_ = (127, 255, 212)
# AQUAMARINE_3__MEDIUMAQUAMARINE_ = (102, 205, 170)
# AZURE_1__AZURE_ = (240, 255, 255)
# BISQUE_1__BISQUE_ = (255, 228, 196)
# BLUE_3__MEDIUMBLUE_ = (0, 0, 205)
# BLUE_4__DARKBLUE_ = (0, 0, 139)
# CHARTREUSE_1__CHARTREUSE_ = (127, 255, 0)
# CHOCOLATE_4__SADDLEBROWN_ = (139, 69, 19)
# CORNSILK_1__CORNSILK_ = (255, 248, 220)
# CYAN__AQUA = (0, 255, 255)
# CYAN_4__DARKCYAN_ = (0, 139, 139)
# DEEPPINK_1__DEEPPINK_ = (255, 20, 147)
# DEEPSKYBLUE_1__DEEPSKYBLUE_ = (0, 191, 255)
# DIMGRAY__GRAY_42_ = (105, 105, 105)
# DODGERBLUE_1__DODGERBLUE_ = (30, 144, 255)
# GOLD_1__GOLD_ = (255, 215, 0)
# HONEYDEW_1__HONEYDEW_ = (240, 255, 240)
# IVORY_1__IVORY_ = (255, 255, 240)
# LAVENDERBLUSH_1__LAVENDERBLUSH_ = (255, 240, 245)
# LEMONCHIFFON_1__LEMONCHIFFON_ = (255, 250, 205)
# LIGHTCYAN_1__LIGHTCYAN_ = (224, 255, 255)
# LIGHTSALMON_1__LIGHTSALMON_ = (255, 160, 122)
# LIGHTYELLOW_1__LIGHTYELLOW_ = (255, 255, 224)
# MAGENTA_4__DARKMAGENTA_ = (139, 0, 139)
# MAGENTA__FUCHSIA_ = (255, 0, 255)
# MISTYROSE_1__MISTYROSE_ = (255, 228, 225)
# NAVAJOWHITE_1__NAVAJOWHITE_ = (255, 222, 173)
# OLIVEDRAB_3__YELLOWGREEN_ = (154, 205, 50)
# ORANGERED_1__ORANGERED_ = (255, 69, 0)
# PALEGREEN_2__LIGHTGREEN_ = (144, 238, 144)
# PEACHPUFF_1__PEACHPUFF_ = (255, 218, 185)
# RED_1__RED_ = (255, 0, 0)
# RED_4__DARKRED_ = (139, 0, 0)
# SEAGREEN_4__SEAGREEN_ = (46, 139, 87)
# SEASHELL_1__SEASHELL_ = (255, 245, 238)
# SNOW_1__SNOW_ = (255, 250, 250)
# TAN_3__PERU_ = (205, 133, 63)
# TOMATO_1__TOMATO_ = (255, 99, 71)
# WHITE_SMOKE__GRAY_96_ = (245, 245, 245)
# YELLOW_1__YELLOW_ = (255, 255, 0)
# GRAY_OR_GREY = (128, 128, 128)
# DARKGRAY_OR_DARKGREY = (169, 169, 169)
# LIGHTGRAY_OR_LIGHTGREY = (211, 211, 211)
# LIGHTSLATEGRAY_OR_LIGHTSLATEGREY = (119, 136, 153)
# SLATEGRAY_OR_SLATEGREY = (112, 128, 144)
# AQUA_OR_CYAN = (0, 255, 255)
# FUCHSIA_OR_MAGENTA = (255, 0, 255)

colour_values_list = [
    WILDERNESS_MINT,
    BWS_RED,
    BWS_BLACK,
    BWS_GREY,
    STARGATE_BLUE,
    BLACK,
    WHITE,
    DARK_GRAY,
    LIGHT_GRAY,
    RED,
    GREEN,
    BLUE,
    ALICEBLUE,
    ANTIQUEWHITE,
    ANTIQUEWHITE_1,
    ANTIQUEWHITE_2,
    ANTIQUEWHITE_3,
    ANTIQUEWHITE_4,
    AQUA,
    AQUAMARINE_2,
    AQUAMARINE_4,
    AZURE_2,
    AZURE_3,
    AZURE_4,
    BANANA,
    BEIGE,
    BISQUE_2,
    BISQUE_3,
    BISQUE_4,
    BLACK,
    BLANCHEDALMOND,
    BLUE,
    BLUEVIOLET,
    BLUE_2,
    BRICK,
    BROWN,
    BROWN_1,
    BROWN_2,
    BROWN_3,
    BROWN_4,
    BURLYWOOD,
    BURLYWOOD_1,
    BURLYWOOD_2,
    BURLYWOOD_3,
    BURLYWOOD_4,
    BURNTSIENNA,
    BURNTUMBER,
    CADETBLUE,
    CADETBLUE_1,
    CADETBLUE_2,
    CADETBLUE_3,
    CADETBLUE_4,
    CADMIUMORANGE,
    CADMIUMYELLOW,
    CARROT,
    CHARTREUSE_2,
    CHARTREUSE_3,
    CHARTREUSE_4,
    CHOCOLATE,
    CHOCOLATE_1,
    CHOCOLATE_2,
    CHOCOLATE_3,
    COBALT,
    COBALTGREEN,
    COLDGREY,
    CORAL,
    CORAL_1,
    CORAL_2,
    CORAL_3,
    CORAL_4,
    CORNFLOWERBLUE,
    CORNSILK_2,
    CORNSILK_3,
    CORNSILK_4,
    CRIMSON,
    CYAN,
    CYAN_2,
    CYAN_3,
    DARKGOLDENROD,
    DARKGOLDENROD_1,
    DARKGOLDENROD_2,
    DARKGOLDENROD_3,
    DARKGOLDENROD_4,
    DARKGRAY,
    DARKGREEN,
    DARKKHAKI,
    DARKOLIVEGREEN,
    DARKOLIVEGREEN_1,
    DARKOLIVEGREEN_2,
    DARKOLIVEGREEN_3,
    DARKOLIVEGREEN_4,
    DARKORANGE,
    DARKORANGE_1,
    DARKORANGE_2,
    DARKORANGE_3,
    DARKORANGE_4,
    DARKORCHID,
    DARKORCHID_1,
    DARKORCHID_2,
    DARKORCHID_3,
    DARKORCHID_4,
    DARKSALMON,
    DARKSEAGREEN,
    DARKSEAGREEN_1,
    DARKSEAGREEN_2,
    DARKSEAGREEN_3,
    DARKSEAGREEN_4,
    DARKSLATEBLUE,
    DARKSLATEGRAY,
    DARKSLATEGRAY_1,
    DARKSLATEGRAY_2,
    DARKSLATEGRAY_3,
    DARKSLATEGRAY_4,
    DARKTURQUOISE,
    DARKVIOLET,
    DEEPPINK_2,
    DEEPPINK_3,
    DEEPPINK_4,
    DEEPSKYBLUE_2,
    DEEPSKYBLUE_3,
    DEEPSKYBLUE_4,
    DODGERBLUE_2,
    DODGERBLUE_3,
    DODGERBLUE_4,
    EGGSHELL,
    EMERALDGREEN,
    FIREBRICK,
    FIREBRICK_1,
    FIREBRICK_2,
    FIREBRICK_3,
    FIREBRICK_4,
    FLESH,
    FLORALWHITE,
    FORESTGREEN,
    GAINSBORO,
    GHOSTWHITE,
    GOLDENROD,
    GOLDENROD_1,
    GOLDENROD_2,
    GOLDENROD_3,
    GOLDENROD_4,
    GOLD_2,
    GOLD_3,
    GOLD_4,
    GRAY,
    GRAY_1,
    GRAY_10,
    GRAY_11,
    GRAY_12,
    GRAY_13,
    GRAY_14,
    GRAY_15,
    GRAY_16,
    GRAY_17,
    GRAY_18,
    GRAY_19,
    GRAY_2,
    GRAY_20,
    GRAY_21,
    GRAY_22,
    GRAY_23,
    GRAY_24,
    GRAY_25,
    GRAY_26,
    GRAY_27,
    GRAY_28,
    GRAY_29,
    GRAY_3,
    GRAY_30,
    GRAY_31,
    GRAY_32,
    GRAY_33,
    GRAY_34,
    GRAY_35,
    GRAY_36,
    GRAY_37,
    GRAY_38,
    GRAY_39,
    GRAY_4,
    GRAY_40,
    GRAY_42,
    GRAY_43,
    GRAY_44,
    GRAY_45,
    GRAY_46,
    GRAY_47,
    GRAY_48,
    GRAY_49,
    GRAY_5,
    GRAY_50,
    GRAY_51,
    GRAY_52,
    GRAY_53,
    GRAY_54,
    GRAY_55,
    GRAY_56,
    GRAY_57,
    GRAY_58,
    GRAY_59,
    GRAY_6,
    GRAY_60,
    GRAY_61,
    GRAY_62,
    GRAY_63,
    GRAY_64,
    GRAY_65,
    GRAY_66,
    GRAY_67,
    GRAY_68,
    GRAY_69,
    GRAY_7,
    GRAY_70,
    GRAY_71,
    GRAY_72,
    GRAY_73,
    GRAY_74,
    GRAY_75,
    GRAY_76,
    GRAY_77,
    GRAY_78,
    GRAY_79,
    GRAY_8,
    GRAY_80,
    GRAY_81,
    GRAY_82,
    GRAY_83,
    GRAY_84,
    GRAY_85,
    GRAY_86,
    GRAY_87,
    GRAY_88,
    GRAY_89,
    GRAY_9,
    GRAY_90,
    GRAY_91,
    GRAY_92,
    GRAY_93,
    GRAY_94,
    GRAY_95,
    GRAY_97,
    GRAY_98,
    GRAY_99,
    GREEN,
    GREENYELLOW,
    GREEN_1__LIME_,
    GREEN_2,
    GREEN_3,
    GREEN_4,
    HONEYDEW_2,
    HONEYDEW_3,
    HONEYDEW_4,
    HOTPINK,
    HOTPINK_1,
    HOTPINK_2,
    HOTPINK_3,
    HOTPINK_4,
    INDIANRED,
    INDIANRED_1,
    INDIANRED_2,
    INDIANRED_3,
    INDIANRED_4,
    INDIAN_RED,
    INDIGO,
    IVORYBLACK,
    IVORY_2,
    IVORY_3,
    IVORY_4,
    KHAKI,
    KHAKI_1,
    KHAKI_2,
    KHAKI_3,
    KHAKI_4,
    LAVENDER,
    LAVENDERBLUSH_2,
    LAVENDERBLUSH_3,
    LAVENDERBLUSH_4,
    LAWNGREEN,
    LEMONCHIFFON_2,
    LEMONCHIFFON_3,
    LEMONCHIFFON_4,
    LIGHTBLUE,
    LIGHTBLUE_1,
    LIGHTBLUE_2,
    LIGHTBLUE_3,
    LIGHTBLUE_4,
    LIGHTCORAL,
    LIGHTCYAN_2,
    LIGHTCYAN_3,
    LIGHTCYAN_4,
    LIGHTGOLDENRODYELLOW,
    LIGHTGOLDENROD_1,
    LIGHTGOLDENROD_2,
    LIGHTGOLDENROD_3,
    LIGHTGOLDENROD_4,
    LIGHTGREY,
    LIGHTPINK,
    LIGHTPINK_1,
    LIGHTPINK_2,
    LIGHTPINK_3,
    LIGHTPINK_4,
    LIGHTSALMON_2,
    LIGHTSALMON_3,
    LIGHTSALMON_4,
    LIGHTSEAGREEN,
    LIGHTSKYBLUE,
    LIGHTSKYBLUE_1,
    LIGHTSKYBLUE_2,
    LIGHTSKYBLUE_3,
    LIGHTSKYBLUE_4,
    LIGHTSLATEBLUE,
    LIGHTSLATEGRAY,
    LIGHTSTEELBLUE,
    LIGHTSTEELBLUE_1,
    LIGHTSTEELBLUE_2,
    LIGHTSTEELBLUE_3,
    LIGHTSTEELBLUE_4,
    LIGHTYELLOW_2,
    LIGHTYELLOW_3,
    LIGHTYELLOW_4,
    LIMEGREEN,
    LINEN,
    MAGENTA,
    MAGENTA_2,
    MAGENTA_3,
    MANGANESEBLUE,
    MAROON,
    MAROON_1,
    MAROON_2,
    MAROON_3,
    MAROON_4,
    MEDIUMORCHID,
    MEDIUMORCHID_1,
    MEDIUMORCHID_2,
    MEDIUMORCHID_3,
    MEDIUMORCHID_4,
    MEDIUMPURPLE,
    MEDIUMPURPLE_1,
    MEDIUMPURPLE_2,
    MEDIUMPURPLE_3,
    MEDIUMPURPLE_4,
    MEDIUMSEAGREEN,
    MEDIUMSLATEBLUE,
    MEDIUMSPRINGGREEN,
    MEDIUMTURQUOISE,
    MEDIUMVIOLETRED,
    MELON,
    MIDNIGHTBLUE,
    MINT,
    MINTCREAM,
    MISTYROSE_2,
    MISTYROSE_3,
    MISTYROSE_4,
    MOCCASIN,
    NAVAJOWHITE_2,
    NAVAJOWHITE_3,
    NAVAJOWHITE_4,
    NAVY,
    OLDLACE,
    OLIVE,
    OLIVEDRAB,
    OLIVEDRAB_1,
    OLIVEDRAB_2,
    OLIVEDRAB_4,
    ORANGE,
    ORANGERED_2,
    ORANGERED_3,
    ORANGERED_4,
    ORANGE_1__ORANGE_,
    ORANGE_2,
    ORANGE_3,
    ORANGE_4,
    ORCHID,
    ORCHID_1,
    ORCHID_2,
    ORCHID_3,
    ORCHID_4,
    PALEGOLDENROD,
    PALEGREEN,
    PALEGREEN_1,
    PALEGREEN_3,
    PALEGREEN_4,
    PALETURQUOISE_1,
    PALETURQUOISE_2__PALETURQUOISE_,
    PALETURQUOISE_3,
    PALETURQUOISE_4,
    PALEVIOLETRED,
    PALEVIOLETRED_1,
    PALEVIOLETRED_2,
    PALEVIOLETRED_3,
    PALEVIOLETRED_4,
    PAPAYAWHIP,
    PEACHPUFF_2,
    PEACHPUFF_3,
    PEACHPUFF_4,
    PEACOCK,
    PINK,
    PINK_1,
    PINK_2,
    PINK_3,
    PINK_4,
    PLUM,
    PLUM_1,
    PLUM_2,
    PLUM_3,
    PLUM_4,
    POWDERBLUE,
    PURPLE,
    PURPLE_1,
    PURPLE_2,
    PURPLE_3,
    PURPLE_4,
    RASPBERRY,
    RAWSIENNA,
    RED_2,
    RED_3,
    ROSYBROWN,
    ROSYBROWN_1,
    ROSYBROWN_2,
    ROSYBROWN_3,
    ROSYBROWN_4,
    ROYALBLUE,
    ROYALBLUE_1,
    ROYALBLUE_2,
    ROYALBLUE_3,
    ROYALBLUE_4,
    SALMON,
    SALMON_1,
    SALMON_2,
    SALMON_3,
    SALMON_4,
    SANDYBROWN,
    SAPGREEN,
    SEAGREEN_1,
    SEAGREEN_2,
    SEAGREEN_3,
    SEASHELL_2,
    SEASHELL_3,
    SEASHELL_4,
    SEPIA,
    SGI_BEET,
    SGI_BRIGHTGRAY,
    SGI_CHARTREUSE,
    SGI_DARKGRAY,
    SGI_GRAY_12,
    SGI_GRAY_16,
    SGI_GRAY_32,
    SGI_GRAY_36,
    SGI_GRAY_52,
    SGI_GRAY_56,
    SGI_GRAY_72,
    SGI_GRAY_76,
    SGI_GRAY_92,
    SGI_GRAY_96,
    SGI_LIGHTBLUE,
    SGI_LIGHTGRAY,
    SGI_OLIVEDRAB,
    SGI_SALMON,
    SGI_SLATEBLUE,
    SGI_TEAL,
    SIENNA,
    SIENNA_1,
    SIENNA_2,
    SIENNA_3,
    SIENNA_4,
    SILVER,
    SKYBLUE,
    SKYBLUE_1,
    SKYBLUE_2,
    SKYBLUE_3,
    SKYBLUE_4,
    SLATEBLUE,
    SLATEBLUE_1,
    SLATEBLUE_2,
    SLATEBLUE_3,
    SLATEBLUE_4,
    SLATEGRAY,
    SLATEGRAY_1,
    SLATEGRAY_2,
    SLATEGRAY_3,
    SLATEGRAY_4,
    SNOW_2,
    SNOW_3,
    SNOW_4,
    SPRINGGREEN,
    SPRINGGREEN_1,
    SPRINGGREEN_2,
    SPRINGGREEN_3,
    STEELBLUE,
    STEELBLUE_1,
    STEELBLUE_2,
    STEELBLUE_3,
    STEELBLUE_4,
    TAN,
    TAN_1,
    TAN_2,
    TAN_4,
    TEAL,
    THISTLE,
    THISTLE_1,
    THISTLE_2,
    THISTLE_3,
    THISTLE_4,
    TOMATO_2,
    TOMATO_3,
    TOMATO_4,
    TURQUOISE,
    TURQUOISEBLUE,
    TURQUOISE_1,
    TURQUOISE_2,
    TURQUOISE_3,
    TURQUOISE_4,
    VIOLET,
    VIOLETRED,
    VIOLETRED_1,
    VIOLETRED_2,
    VIOLETRED_3,
    VIOLETRED_4,
    WARMGREY,
    WHEAT,
    WHEAT_1,
    WHEAT_2,
    WHEAT_3,
    WHEAT_4,
    WHITE,
    YELLOW_2,
    YELLOW_3,
    YELLOW_4,
    NIGHT,
    CHARCOAL,
    OIL,
    LIGHT_BLACK,
    BLACK_CAT,
    IRIDIUM,
    BLACK_EEL,
    BLACK_COW,
    GRAY_WOLF,
    VAMPIRE_GRAY,
    IRON_GRAY,
    GRAY_DOLPHIN,
    CARBON_GRAY,
    ASH_GRAY,
    DIMGRAY_OR_DIMGREY,
    NARDO_GRAY,
    CLOUDY_GRAY,
    SMOKEY_GRAY,
    ALIEN_GRAY,
    SONIC_SILVER,
    PLATINUM_GRAY,
    GRANITE,
    BATTLESHIP_GRAY,
    GUNMETAL_GRAY,
    GRAY_CLOUD,
    PALE_SILVER,
    GRAY_GOOSE,
    PLATINUM_SILVER,
    SILVER_WHITE,
    PLATINUM,
    METALLIC_SILVER,
    BLUE_GRAY,
    ROMAN_SILVER,
    RAT_GRAY,
    SLATE_GRANITE_GRAY,
    JET_GRAY,
    MIST_BLUE,
    MARBLE_BLUE,
    SLATE_BLUE_GREY,
    LIGHT_PURPLE_BLUE,
    AZURE_BLUE,
    BLUE_JAY,
    CHARCOAL_BLUE,
    DARK_BLUE_GREY,
    DARK_SLATE,
    DEEP_SEA_BLUE,
    NIGHT_BLUE,
    DENIM_DARK_BLUE,
    DARKBLUE,
    LAPIS_BLUE,
    NEW_MIDNIGHT_BLUE,
    EARTH_BLUE,
    COBALT_BLUE,
    MEDIUMBLUE,
    BLUEBERRY_BLUE,
    CANARY_BLUE,
    SAMCO_BLUE,
    BRIGHT_BLUE,
    BLUE_ORCHID,
    SAPPHIRE_BLUE,
    BLUE_EYES,
    BRIGHT_NAVY_BLUE,
    BALLOON_BLUE,
    OCEAN_BLUE,
    BLUE_RIBBON,
    BLUE_DRESS,
    NEON_BLUE,
    DODGERBLUE,
    GLACIAL_BLUE_ICE,
    SILK_BLUE,
    WINDOWS_BLUE,
    BLUE_IVY,
    BLUE_KOI,
    COLUMBIA_BLUE,
    BABY_BLUE,
    SKY_BLUE_DRESS,
    ICEBERG,
    BUTTERFLY_BLUE,
    DEEPSKYBLUE,
    MIDDAY_BLUE,
    CRYSTAL_BLUE,
    DENIM_BLUE,
    DAY_SKY_BLUE,
    JEANS_BLUE,
    BLUE_ANGEL,
    PASTEL_BLUE,
    LIGHT_DAY_BLUE,
    SEA_BLUE,
    HEAVENLY_BLUE,
    ROBIN_EGG_BLUE,
    CORAL_BLUE,
    GULF_BLUE,
    PASTEL_LIGHT_BLUE,
    LAVENDER_BLUE,
    WHITE_BLUE,
    WATER,
    AZURE,
    LIGHTCYAN,
    LIGHT_SLATE,
    ELECTRIC_BLUE,
    TRON_BLUE,
    BLUE_ZIRCON,
    BRIGHT_CYAN,
    CELESTE,
    BLUE_DIAMOND,
    BRIGHT_TURQUOISE,
    BLUE_LAGOON,
    PALETURQUOISE,
    PALE_BLUE_LILY,
    LIGHT_TEAL,
    TIFFANY_BLUE,
    BLUE_HOSTA,
    CYAN_OPAQUE,
    NORTHERN_LIGHTS_BLUE,
    BLUE_GREEN,
    MEDIUMAQUAMARINE,
    MAGIC_MINT,
    LIGHT_AQUAMARINE,
    AQUAMARINE,
    BRIGHT_TEAL,
    DEEP_TURQUOISE,
    JELLYFISH,
    BLUE_TURQUOISE,
    MACAW_BLUE_GREEN,
    SEAFOAM_GREEN,
    DEEP_SEA,
    DARKCYAN,
    TEAL_GREEN,
    TEAL_BLUE,
    MEDIUM_TEAL,
    DARK_TEAL,
    DEEP_TEAL,
    DARKSLATEGRAY_OR_DARKSLATEGREY,
    GUNMETAL,
    BLUE_MOSS_GREEN,
    BEETLE_GREEN,
    GRAYISH_TURQUOISE,
    GREENISH_BLUE,
    AQUAMARINE_STONE,
    SEA_TURTLE_GREEN,
    DULL_SEA_GREEN,
    DARK_GREEN_BLUE,
    DEEP_SEA_GREEN,
    BOTTLE_GREEN,
    SEAGREEN,
    ELF_GREEN,
    DARK_MINT,
    JADE,
    EARTH_GREEN,
    CHROME_GREEN,
    EMERALD,
    METALLIC_GREEN,
    CAMOUFLAGE_GREEN,
    SAGE_GREEN,
    HAZEL_GREEN,
    VENOM_GREEN,
    MILITARY_GREEN,
    GREEN_LEAVES,
    ARMY_GREEN,
    FERN_GREEN,
    FALL_FOREST_GREEN,
    IRISH_GREEN,
    PINE_GREEN,
    MEDIUM_FOREST_GREEN,
    JUNGLE_GREEN,
    CACTUS_GREEN,
    DEEP_GREEN,
    DEEP_EMERALD_GREEN,
    HUNTER_GREEN,
    DARK_FOREST_GREEN,
    LOTUS_GREEN,
    SEAWEED_GREEN,
    SHAMROCK_GREEN,
    GREEN_ONION,
    MOSS_GREEN,
    GRASS_GREEN,
    GREEN_PEPPER,
    DARK_LIME_GREEN,
    PARROT_GREEN,
    CLOVER_GREEN,
    DINOSAUR_GREEN,
    GREEN_SNAKE,
    ALIEN_GREEN,
    GREEN_APPLE,
    PEA_GREEN,
    KELLY_GREEN,
    ZOMBIE_GREEN,
    GREEN_PEAS,
    DOLLAR_BILL_GREEN,
    FROG_GREEN,
    TURQUOISE_GREEN,
    BASIL_GREEN,
    GRAY_GREEN,
    IGUANA_GREEN,
    CITRON_GREEN,
    ACID_GREEN,
    AVOCADO_GREEN,
    PISTACHIO_GREEN,
    SALAD_GREEN,
    YELLOWGREEN,
    PASTEL_GREEN,
    HUMMINGBIRD_GREEN,
    NEBULA_GREEN,
    STOPLIGHT_GO_GREEN,
    NEON_GREEN,
    JADE_GREEN,
    LIME_MINT_GREEN,
    EMERALD_GREEN,
    LIME,
    BRIGHT_GREEN,
    CHARTREUSE,
    YELLOW_LAWN_GREEN,
    ALOE_VERA_GREEN,
    DULL_GREEN_YELLOW,
    LEMON_GREEN,
    CHAMELEON_GREEN,
    NEON_YELLOW_GREEN,
    YELLOW_GREEN_GROSBEAK,
    TEA_GREEN,
    SLIME_GREEN,
    ALGAE_GREEN,
    LIGHTGREEN,
    DRAGON_GREEN,
    MINT_GREEN,
    GREEN_THUMB,
    ORGANIC_BROWN,
    LIGHT_JADE,
    LIGHT_MINT_GREEN,
    LIGHT_ROSE_GREEN,
    CHROME_WHITE,
    HONEYDEW,
    LEMONCHIFFON,
    PARCHMENT,
    CREAM,
    CREAM_WHITE,
    LIGHTYELLOW,
    CORNSILK,
    BLONDE,
    CHAMPAGNE,
    BISQUE,
    PEACH,
    LIGHT_ORANGE,
    PEACHPUFF,
    CORAL_PEACH,
    NAVAJOWHITE,
    GOLDEN_BLONDE,
    GOLDEN_SILK,
    DARK_BLONDE,
    LIGHT_GOLD,
    VANILLA,
    TAN_BROWN,
    DIRTY_WHITE,
    CARDBOARD_BROWN,
    HARVEST_GOLD,
    SUN_YELLOW,
    CORN_YELLOW,
    PASTEL_YELLOW,
    NEON_YELLOW,
    YELLOW,
    CANARY_YELLOW,
    BANANA_YELLOW,
    MUSTARD_YELLOW,
    GOLDEN_YELLOW,
    BOLD_YELLOW,
    RUBBER_DUCKY_YELLOW,
    GOLD,
    BRIGHT_GOLD,
    CHROME_GOLD,
    GOLDEN_BROWN,
    DEEP_YELLOW,
    MACARONI_AND_CHEESE,
    SAFFRON,
    NEON_GOLD,
    BEER,
    YELLOW_ORANGE_OR_ORANGE_YELLOW,
    CANTALOUPE,
    CHEESE_ORANGE,
    BROWN_SAND,
    BROWN_SUGAR,
    CAMEL_BROWN,
    DEER_BROWN,
    LIGHT_FRENCH_BEIGE,
    SAND,
    SAGE,
    FALL_LEAF_BROWN,
    GINGER_BROWN,
    BRONZE_GOLD,
    OLIVE_GREEN,
    BRASS,
    COOKIE_BROWN,
    METALLIC_GOLD,
    BEE_YELLOW,
    SCHOOL_BUS_YELLOW,
    ORANGE_GOLD,
    CARAMEL,
    CINNAMON,
    PERU,
    BRONZE,
    TIGER_ORANGE,
    COPPER,
    DARK_GOLD,
    METALLIC_BRONZE,
    DARK_ALMOND,
    WOOD,
    OAK_BROWN,
    ANTIQUE_BRONZE,
    HAZEL,
    DARK_YELLOW,
    DARK_MOCCASIN,
    KHAKI_GREEN,
    MILLENNIUM_JADE,
    DARK_BEIGE,
    BULLET_SHELL,
    ARMY_BROWN,
    SANDSTONE,
    TAUPE,
    MOCHA,
    MILK_CHOCOLATE,
    GRAY_BROWN,
    DARK_COFFEE,
    OLD_BURGUNDY,
    WESTERN_CHARCOAL,
    BAKERS_BROWN,
    DARK_BROWN,
    SEPIA_BROWN,
    DARK_BRONZE,
    COFFEE,
    BROWN_BEAR,
    RED_DIRT,
    SADDLEBROWN,
    DARK_SIENNA,
    SANGRIA,
    BLOOD_RED,
    CHESTNUT,
    CORAL_BROWN,
    CHESTNUT_RED,
    MAHOGANY,
    RED_GOLD,
    RED_FOX,
    DARK_BISQUE,
    LIGHT_BROWN,
    PETRA_GOLD,
    RUST,
    COPPER_RED,
    ORANGE_SALMON,
    SEDONA,
    PAPAYA_ORANGE,
    HALLOWEEN_ORANGE,
    NEON_ORANGE,
    BRIGHT_ORANGE,
    PUMPKIN_ORANGE,
    CARROT_ORANGE,
    CONSTRUCTION_CONE_ORANGE,
    INDIAN_SAFFRON,
    SUNRISE_ORANGE,
    MANGO_ORANGE,
    BASKET_BALL_ORANGE,
    LIGHT_SALMON_ROSE,
    LIGHTSALMON,
    TANGERINE,
    LIGHT_COPPER,
    SALMON_PINK,
    PEACH_PINK,
    PASTEL_RED,
    PINK_CORAL,
    BEAN_RED,
    VALENTINE_RED,
    TOMATO,
    SHOCKING_ORANGE,
    ORANGERED,
    NEON_RED,
    SCARLET_RED,
    RUBY_RED,
    FERRARI_RED,
    FIRE_ENGINE_RED,
    LAVA_RED,
    LOVE_RED,
    GRAPEFRUIT,
    CHERRY_RED,
    CHILLI_PEPPER,
    TOMATO_SAUCE_RED,
    CARBON_RED,
    CRANBERRY,
    SAFFRON_RED,
    CRIMSON_RED,
    RED_WINE_OR_WINE_RED,
    DARKRED,
    BURGUNDY,
    VERMILION,
    DEEP_RED,
    RED_BLOOD,
    BLOOD_NIGHT,
    DARK_SCARLET,
    BLACK_BEAN,
    CHOCOLATE_BROWN,
    MIDNIGHT,
    PURPLE_LILY,
    PURPLE_MAROON,
    PLUM_PIE,
    PLUM_VELVET,
    DARK_RASPBERRY,
    VELVET_MAROON,
    ROSY_FINCH,
    DULL_PURPLE,
    PUCE,
    ROSE_DUST,
    PASTEL_BROWN,
    ROSY_PINK,
    KHAKI_ROSE,
    LIPSTICK_PINK,
    PINK_BROWN,
    OLD_ROSE,
    DUSTY_PINK,
    PINK_DAISY,
    ROSE,
    DUSTY_ROSE,
    SILVER_PINK,
    GOLD_PINK,
    ROSE_GOLD,
    DEEP_PEACH,
    PASTEL_ORANGE,
    DESERT_SAND,
    UNBLEACHED_SILK,
    PIG_PINK,
    PALE_PINK,
    BLUSH,
    MISTYROSE,
    PINK_BUBBLE_GUM,
    LIGHT_ROSE,
    LIGHT_RED,
    WARM_PINK,
    DEEP_ROSE,
    SOFT_PINK,
    DONUT_PINK,
    BABY_PINK,
    FLAMINGO_PINK,
    PASTEL_PINK,
    ROSE_PINK_OR_PINK_ROSE,
    CADILLAC_PINK,
    CARNATION_PINK,
    PASTEL_ROSE,
    BLUSH_RED,
    PURPLE_PINK,
    TULIP_PINK,
    BASHFUL_PINK,
    DARK_PINK,
    DARK_HOT_PINK,
    WATERMELON_PINK,
    VIOLET_RED,
    HOT_DEEP_PINK,
    BRIGHT_PINK,
    DEEPPINK,
    NEON_PINK,
    CHROME_PINK,
    NEON_HOT_PINK,
    PINK_CUPCAKE,
    ROYAL_PINK,
    DIMORPHOTHECA_MAGENTA,
    PINK_LEMONADE,
    RED_PINK,
    BRIGHT_MAROON,
    ROSE_RED,
    ROGUE_PINK,
    BURNT_PINK,
    PINK_VIOLET,
    MAGENTA_PINK,
    DARK_CARNATION_PINK,
    RASPBERRY_PURPLE,
    PINK_PLUM,
    DEEP_MAUVE,
    FUCHSIA,
    FUCHSIA_PINK,
    BRIGHT_NEON_PINK,
    CRIMSON_PURPLE,
    HELIOTROPE_PURPLE,
    TYRIAN_PURPLE,
    PURPLE_FLOWER,
    ORCHID_PURPLE,
    RICH_LILAC,
    PASTEL_VIOLET,
    MAUVE_TAUPE,
    VIOLA_PURPLE,
    EGGPLANT,
    PLUM_PURPLE,
    GRAPE,
    PURPLE_NAVY,
    BLUE_LOTUS,
    BLURPLE,
    LIGHT_SLATE_BLUE,
    PERIWINKLE_PURPLE,
    VERY_PERI,
    BRIGHT_GRAPE,
    PURPLE_AMETHYST,
    BRIGHT_PURPLE,
    DEEP_PERIWINKLE,
    PURPLE_HAZE,
    PURPLE_IRIS,
    DARK_PURPLE,
    DEEP_PURPLE,
    MIDNIGHT_PURPLE,
    PURPLE_MONSTER,
    BLUE_WHALE,
    REBECCAPURPLE,
    PURPLE_JAM,
    DARKMAGENTA,
    FRENCH_LILAC,
    PURPLE_VIOLET,
    JASMINE_PURPLE,
    PURPLE_DAFFODIL,
    CLEMATIS_VIOLET,
    PURPLE_SAGE_BUSH,
    LOVELY_PURPLE,
    NEON_PURPLE,
    PURPLE_PLUM,
    AZTECH_PURPLE,
    LIGHT_PURPLE,
    CROCUS_PURPLE,
    PURPLE_MIMOSA,
    PERIWINKLE,
    PALE_LILAC,
    LAVENDER_PURPLE,
    ROSE_PURPLE,
    LILAC,
    MAUVE,
    BRIGHT_LILAC,
    PURPLE_DRAGON,
    BLUSH_PINK,
    PASTEL_PURPLE,
    BLOSSOM_PINK,
    WISTERIA_PURPLE,
    PURPLE_THISTLE,
    PURPLE_WHITE,
    PERIWINKLE_PINK,
    COTTON_CANDY,
    LAVENDER_PINOCCHIO,
    DARK_WHITE,
    ASH_WHITE,
    WHITE_CHOCOLATE,
    SOFT_IVORY,
    OFF_WHITE,
    PEARL_WHITE,
    RED_WHITE,
    LAVENDERBLUSH,
    PEARL,
    EGG_SHELL,
    SEASHELL,
    BONE_WHITE,
    RICE,
    IVORY,
    WHITE_GOLD,
    LIGHT_WHITE,
    WHITESMOKE,
    COTTON,
    SNOW,
    MILK_WHITE,
    HALF_WHITE
]

colour_names_list = [
    "WILDERNESS_MINT",
    "BWS_RED",
    "BWS_BLACK",
    "BWS_GREY",
    "STARGATE_BLUE",
    "BLACK",
    "WHITE",
    "DARK_GRAY",
    "LIGHT_GRAY",
    "RED",
    "GREEN",
    "BLUE",
    "ALICEBLUE",
    "ANTIQUEWHITE",
    "ANTIQUEWHITE_1",
    "ANTIQUEWHITE_2",
    "ANTIQUEWHITE_3",
    "ANTIQUEWHITE_4",
    "AQUA",
    "AQUAMARINE_2",
    "AQUAMARINE_4",
    "AZURE_2",
    "AZURE_3",
    "AZURE_4",
    "BANANA",
    "BEIGE",
    "BISQUE_2",
    "BISQUE_3",
    "BISQUE_4",
    "BLACK",
    "BLANCHEDALMOND",
    "BLUE",
    "BLUEVIOLET",
    "BLUE_2",
    "BRICK",
    "BROWN",
    "BROWN_1",
    "BROWN_2",
    "BROWN_3",
    "BROWN_4",
    "BURLYWOOD",
    "BURLYWOOD_1",
    "BURLYWOOD_2",
    "BURLYWOOD_3",
    "BURLYWOOD_4",
    "BURNTSIENNA",
    "BURNTUMBER",
    "CADETBLUE",
    "CADETBLUE_1",
    "CADETBLUE_2",
    "CADETBLUE_3",
    "CADETBLUE_4",
    "CADMIUMORANGE",
    "CADMIUMYELLOW",
    "CARROT",
    "CHARTREUSE_2",
    "CHARTREUSE_3",
    "CHARTREUSE_4",
    "CHOCOLATE",
    "CHOCOLATE_1",
    "CHOCOLATE_2",
    "CHOCOLATE_3",
    "COBALT",
    "COBALTGREEN",
    "COLDGREY",
    "CORAL",
    "CORAL_1",
    "CORAL_2",
    "CORAL_3",
    "CORAL_4",
    "CORNFLOWERBLUE",
    "CORNSILK_2",
    "CORNSILK_3",
    "CORNSILK_4",
    "CRIMSON",
    "CYAN",
    "CYAN_2",
    "CYAN_3",
    "DARKGOLDENROD",
    "DARKGOLDENROD_1",
    "DARKGOLDENROD_2",
    "DARKGOLDENROD_3",
    "DARKGOLDENROD_4",
    "DARKGRAY",
    "DARKGREEN",
    "DARKKHAKI",
    "DARKOLIVEGREEN",
    "DARKOLIVEGREEN_1",
    "DARKOLIVEGREEN_2",
    "DARKOLIVEGREEN_3",
    "DARKOLIVEGREEN_4",
    "DARKORANGE",
    "DARKORANGE_1",
    "DARKORANGE_2",
    "DARKORANGE_3",
    "DARKORANGE_4",
    "DARKORCHID",
    "DARKORCHID_1",
    "DARKORCHID_2",
    "DARKORCHID_3",
    "DARKORCHID_4",
    "DARKSALMON",
    "DARKSEAGREEN",
    "DARKSEAGREEN_1",
    "DARKSEAGREEN_2",
    "DARKSEAGREEN_3",
    "DARKSEAGREEN_4",
    "DARKSLATEBLUE",
    "DARKSLATEGRAY",
    "DARKSLATEGRAY_1",
    "DARKSLATEGRAY_2",
    "DARKSLATEGRAY_3",
    "DARKSLATEGRAY_4",
    "DARKTURQUOISE",
    "DARKVIOLET",
    "DEEPPINK_2",
    "DEEPPINK_3",
    "DEEPPINK_4",
    "DEEPSKYBLUE_2",
    "DEEPSKYBLUE_3",
    "DEEPSKYBLUE_4",
    "DODGERBLUE_2",
    "DODGERBLUE_3",
    "DODGERBLUE_4",
    "EGGSHELL",
    "EMERALDGREEN",
    "FIREBRICK",
    "FIREBRICK_1",
    "FIREBRICK_2",
    "FIREBRICK_3",
    "FIREBRICK_4",
    "FLESH",
    "FLORALWHITE",
    "FORESTGREEN",
    "GAINSBORO",
    "GHOSTWHITE",
    "GOLDENROD",
    "GOLDENROD_1",
    "GOLDENROD_2",
    "GOLDENROD_3",
    "GOLDENROD_4",
    "GOLD_2",
    "GOLD_3",
    "GOLD_4",
    "GRAY",
    "GRAY_1",
    "GRAY_10",
    "GRAY_11",
    "GRAY_12",
    "GRAY_13",
    "GRAY_14",
    "GRAY_15",
    "GRAY_16",
    "GRAY_17",
    "GRAY_18",
    "GRAY_19",
    "GRAY_2",
    "GRAY_20",
    "GRAY_21",
    "GRAY_22",
    "GRAY_23",
    "GRAY_24",
    "GRAY_25",
    "GRAY_26",
    "GRAY_27",
    "GRAY_28",
    "GRAY_29",
    "GRAY_3",
    "GRAY_30",
    "GRAY_31",
    "GRAY_32",
    "GRAY_33",
    "GRAY_34",
    "GRAY_35",
    "GRAY_36",
    "GRAY_37",
    "GRAY_38",
    "GRAY_39",
    "GRAY_4",
    "GRAY_40",
    "GRAY_42",
    "GRAY_43",
    "GRAY_44",
    "GRAY_45",
    "GRAY_46",
    "GRAY_47",
    "GRAY_48",
    "GRAY_49",
    "GRAY_5",
    "GRAY_50",
    "GRAY_51",
    "GRAY_52",
    "GRAY_53",
    "GRAY_54",
    "GRAY_55",
    "GRAY_56",
    "GRAY_57",
    "GRAY_58",
    "GRAY_59",
    "GRAY_6",
    "GRAY_60",
    "GRAY_61",
    "GRAY_62",
    "GRAY_63",
    "GRAY_64",
    "GRAY_65",
    "GRAY_66",
    "GRAY_67",
    "GRAY_68",
    "GRAY_69",
    "GRAY_7",
    "GRAY_70",
    "GRAY_71",
    "GRAY_72",
    "GRAY_73",
    "GRAY_74",
    "GRAY_75",
    "GRAY_76",
    "GRAY_77",
    "GRAY_78",
    "GRAY_79",
    "GRAY_8",
    "GRAY_80",
    "GRAY_81",
    "GRAY_82",
    "GRAY_83",
    "GRAY_84",
    "GRAY_85",
    "GRAY_86",
    "GRAY_87",
    "GRAY_88",
    "GRAY_89",
    "GRAY_9",
    "GRAY_90",
    "GRAY_91",
    "GRAY_92",
    "GRAY_93",
    "GRAY_94",
    "GRAY_95",
    "GRAY_97",
    "GRAY_98",
    "GRAY_99",
    "GREEN",
    "GREENYELLOW",
    "GREEN_1__LIME_",
    "GREEN_2",
    "GREEN_3",
    "GREEN_4",
    "HONEYDEW_2",
    "HONEYDEW_3",
    "HONEYDEW_4",
    "HOTPINK",
    "HOTPINK_1",
    "HOTPINK_2",
    "HOTPINK_3",
    "HOTPINK_4",
    "INDIANRED",
    "INDIANRED_1",
    "INDIANRED_2",
    "INDIANRED_3",
    "INDIANRED_4",
    "INDIAN_RED",
    "INDIGO",
    "IVORYBLACK",
    "IVORY_2",
    "IVORY_3",
    "IVORY_4",
    "KHAKI",
    "KHAKI_1",
    "KHAKI_2",
    "KHAKI_3",
    "KHAKI_4",
    "LAVENDER",
    "LAVENDERBLUSH_2",
    "LAVENDERBLUSH_3",
    "LAVENDERBLUSH_4",
    "LAWNGREEN",
    "LEMONCHIFFON_2",
    "LEMONCHIFFON_3",
    "LEMONCHIFFON_4",
    "LIGHTBLUE",
    "LIGHTBLUE_1",
    "LIGHTBLUE_2",
    "LIGHTBLUE_3",
    "LIGHTBLUE_4",
    "LIGHTCORAL",
    "LIGHTCYAN_2",
    "LIGHTCYAN_3",
    "LIGHTCYAN_4",
    "LIGHTGOLDENRODYELLOW",
    "LIGHTGOLDENROD_1",
    "LIGHTGOLDENROD_2",
    "LIGHTGOLDENROD_3",
    "LIGHTGOLDENROD_4",
    "LIGHTGREY",
    "LIGHTPINK",
    "LIGHTPINK_1",
    "LIGHTPINK_2",
    "LIGHTPINK_3",
    "LIGHTPINK_4",
    "LIGHTSALMON_2",
    "LIGHTSALMON_3",
    "LIGHTSALMON_4",
    "LIGHTSEAGREEN",
    "LIGHTSKYBLUE",
    "LIGHTSKYBLUE_1",
    "LIGHTSKYBLUE_2",
    "LIGHTSKYBLUE_3",
    "LIGHTSKYBLUE_4",
    "LIGHTSLATEBLUE",
    "LIGHTSLATEGRAY",
    "LIGHTSTEELBLUE",
    "LIGHTSTEELBLUE_1",
    "LIGHTSTEELBLUE_2",
    "LIGHTSTEELBLUE_3",
    "LIGHTSTEELBLUE_4",
    "LIGHTYELLOW_2",
    "LIGHTYELLOW_3",
    "LIGHTYELLOW_4",
    "LIMEGREEN",
    "LINEN",
    "MAGENTA",
    "MAGENTA_2",
    "MAGENTA_3",
    "MANGANESEBLUE",
    "MAROON",
    "MAROON_1",
    "MAROON_2",
    "MAROON_3",
    "MAROON_4",
    "MEDIUMORCHID",
    "MEDIUMORCHID_1",
    "MEDIUMORCHID_2",
    "MEDIUMORCHID_3",
    "MEDIUMORCHID_4",
    "MEDIUMPURPLE",
    "MEDIUMPURPLE_1",
    "MEDIUMPURPLE_2",
    "MEDIUMPURPLE_3",
    "MEDIUMPURPLE_4",
    "MEDIUMSEAGREEN",
    "MEDIUMSLATEBLUE",
    "MEDIUMSPRINGGREEN",
    "MEDIUMTURQUOISE",
    "MEDIUMVIOLETRED",
    "MELON",
    "MIDNIGHTBLUE",
    "MINT",
    "MINTCREAM",
    "MISTYROSE_2",
    "MISTYROSE_3",
    "MISTYROSE_4",
    "MOCCASIN",
    "NAVAJOWHITE_2",
    "NAVAJOWHITE_3",
    "NAVAJOWHITE_4",
    "NAVY",
    "OLDLACE",
    "OLIVE",
    "OLIVEDRAB",
    "OLIVEDRAB_1",
    "OLIVEDRAB_2",
    "OLIVEDRAB_4",
    "ORANGE",
    "ORANGERED_2",
    "ORANGERED_3",
    "ORANGERED_4",
    "ORANGE_1__ORANGE_",
    "ORANGE_2",
    "ORANGE_3",
    "ORANGE_4",
    "ORCHID",
    "ORCHID_1",
    "ORCHID_2",
    "ORCHID_3",
    "ORCHID_4",
    "PALEGOLDENROD",
    "PALEGREEN",
    "PALEGREEN_1",
    "PALEGREEN_3",
    "PALEGREEN_4",
    "PALETURQUOISE_1",
    "PALETURQUOISE_2__PALETURQUOISE_",
    "PALETURQUOISE_3",
    "PALETURQUOISE_4",
    "PALEVIOLETRED",
    "PALEVIOLETRED_1",
    "PALEVIOLETRED_2",
    "PALEVIOLETRED_3",
    "PALEVIOLETRED_4",
    "PAPAYAWHIP",
    "PEACHPUFF_2",
    "PEACHPUFF_3",
    "PEACHPUFF_4",
    "PEACOCK",
    "PINK",
    "PINK_1",
    "PINK_2",
    "PINK_3",
    "PINK_4",
    "PLUM",
    "PLUM_1",
    "PLUM_2",
    "PLUM_3",
    "PLUM_4",
    "POWDERBLUE",
    "PURPLE",
    "PURPLE_1",
    "PURPLE_2",
    "PURPLE_3",
    "PURPLE_4",
    "RASPBERRY",
    "RAWSIENNA",
    "RED_2",
    "RED_3",
    "ROSYBROWN",
    "ROSYBROWN_1",
    "ROSYBROWN_2",
    "ROSYBROWN_3",
    "ROSYBROWN_4",
    "ROYALBLUE",
    "ROYALBLUE_1",
    "ROYALBLUE_2",
    "ROYALBLUE_3",
    "ROYALBLUE_4",
    "SALMON",
    "SALMON_1",
    "SALMON_2",
    "SALMON_3",
    "SALMON_4",
    "SANDYBROWN",
    "SAPGREEN",
    "SEAGREEN_1",
    "SEAGREEN_2",
    "SEAGREEN_3",
    "SEASHELL_2",
    "SEASHELL_3",
    "SEASHELL_4",
    "SEPIA",
    "SGI_BEET",
    "SGI_BRIGHTGRAY",
    "SGI_CHARTREUSE",
    "SGI_DARKGRAY",
    "SGI_GRAY_12",
    "SGI_GRAY_16",
    "SGI_GRAY_32",
    "SGI_GRAY_36",
    "SGI_GRAY_52",
    "SGI_GRAY_56",
    "SGI_GRAY_72",
    "SGI_GRAY_76",
    "SGI_GRAY_92",
    "SGI_GRAY_96",
    "SGI_LIGHTBLUE",
    "SGI_LIGHTGRAY",
    "SGI_OLIVEDRAB",
    "SGI_SALMON",
    "SGI_SLATEBLUE",
    "SGI_TEAL",
    "SIENNA",
    "SIENNA_1",
    "SIENNA_2",
    "SIENNA_3",
    "SIENNA_4",
    "SILVER",
    "SKYBLUE",
    "SKYBLUE_1",
    "SKYBLUE_2",
    "SKYBLUE_3",
    "SKYBLUE_4",
    "SLATEBLUE",
    "SLATEBLUE_1",
    "SLATEBLUE_2",
    "SLATEBLUE_3",
    "SLATEBLUE_4",
    "SLATEGRAY",
    "SLATEGRAY_1",
    "SLATEGRAY_2",
    "SLATEGRAY_3",
    "SLATEGRAY_4",
    "SNOW_2",
    "SNOW_3",
    "SNOW_4",
    "SPRINGGREEN",
    "SPRINGGREEN_1",
    "SPRINGGREEN_2",
    "SPRINGGREEN_3",
    "STEELBLUE",
    "STEELBLUE_1",
    "STEELBLUE_2",
    "STEELBLUE_3",
    "STEELBLUE_4",
    "TAN",
    "TAN_1",
    "TAN_2",
    "TAN_4",
    "TEAL",
    "THISTLE",
    "THISTLE_1",
    "THISTLE_2",
    "THISTLE_3",
    "THISTLE_4",
    "TOMATO_2",
    "TOMATO_3",
    "TOMATO_4",
    "TURQUOISE",
    "TURQUOISEBLUE",
    "TURQUOISE_1",
    "TURQUOISE_2",
    "TURQUOISE_3",
    "TURQUOISE_4",
    "VIOLET",
    "VIOLETRED",
    "VIOLETRED_1",
    "VIOLETRED_2",
    "VIOLETRED_3",
    "VIOLETRED_4",
    "WARMGREY",
    "WHEAT",
    "WHEAT_1",
    "WHEAT_2",
    "WHEAT_3",
    "WHEAT_4",
    "WHITE",
    "YELLOW_2",
    "YELLOW_3",
    "YELLOW_4",
    "NIGHT",
    "CHARCOAL",
    "OIL",
    "LIGHT_BLACK",
    "BLACK_CAT",
    "IRIDIUM",
    "BLACK_EEL",
    "BLACK_COW",
    "GRAY_WOLF",
    "VAMPIRE_GRAY",
    "IRON_GRAY",
    "GRAY_DOLPHIN",
    "CARBON_GRAY",
    "ASH_GRAY",
    "DIMGRAY_OR_DIMGREY",
    "NARDO_GRAY",
    "CLOUDY_GRAY",
    "SMOKEY_GRAY",
    "ALIEN_GRAY",
    "SONIC_SILVER",
    "PLATINUM_GRAY",
    "GRANITE",
    "BATTLESHIP_GRAY",
    "GUNMETAL_GRAY",
    "GRAY_CLOUD",
    "PALE_SILVER",
    "GRAY_GOOSE",
    "PLATINUM_SILVER",
    "SILVER_WHITE",
    "PLATINUM",
    "METALLIC_SILVER",
    "BLUE_GRAY",
    "ROMAN_SILVER",
    "RAT_GRAY",
    "SLATE_GRANITE_GRAY",
    "JET_GRAY",
    "MIST_BLUE",
    "MARBLE_BLUE",
    "SLATE_BLUE_GREY",
    "LIGHT_PURPLE_BLUE",
    "AZURE_BLUE",
    "BLUE_JAY",
    "CHARCOAL_BLUE",
    "DARK_BLUE_GREY",
    "DARK_SLATE",
    "DEEP_SEA_BLUE",
    "NIGHT_BLUE",
    "DENIM_DARK_BLUE",
    "DARKBLUE",
    "LAPIS_BLUE",
    "NEW_MIDNIGHT_BLUE",
    "EARTH_BLUE",
    "COBALT_BLUE",
    "MEDIUMBLUE",
    "BLUEBERRY_BLUE",
    "CANARY_BLUE",
    "SAMCO_BLUE",
    "BRIGHT_BLUE",
    "BLUE_ORCHID",
    "SAPPHIRE_BLUE",
    "BLUE_EYES",
    "BRIGHT_NAVY_BLUE",
    "BALLOON_BLUE",
    "OCEAN_BLUE",
    "BLUE_RIBBON",
    "BLUE_DRESS",
    "NEON_BLUE",
    "DODGERBLUE",
    "GLACIAL_BLUE_ICE",
    "SILK_BLUE",
    "WINDOWS_BLUE",
    "BLUE_IVY",
    "BLUE_KOI",
    "COLUMBIA_BLUE",
    "BABY_BLUE",
    "SKY_BLUE_DRESS",
    "ICEBERG",
    "BUTTERFLY_BLUE",
    "DEEPSKYBLUE",
    "MIDDAY_BLUE",
    "CRYSTAL_BLUE",
    "DENIM_BLUE",
    "DAY_SKY_BLUE",
    "JEANS_BLUE",
    "BLUE_ANGEL",
    "PASTEL_BLUE",
    "LIGHT_DAY_BLUE",
    "SEA_BLUE",
    "HEAVENLY_BLUE",
    "ROBIN_EGG_BLUE",
    "CORAL_BLUE",
    "GULF_BLUE",
    "PASTEL_LIGHT_BLUE",
    "LAVENDER_BLUE",
    "WHITE_BLUE",
    "WATER",
    "AZURE",
    "LIGHTCYAN",
    "LIGHT_SLATE",
    "ELECTRIC_BLUE",
    "TRON_BLUE",
    "BLUE_ZIRCON",
    "BRIGHT_CYAN",
    "CELESTE",
    "BLUE_DIAMOND",
    "BRIGHT_TURQUOISE",
    "BLUE_LAGOON",
    "PALETURQUOISE",
    "PALE_BLUE_LILY",
    "LIGHT_TEAL",
    "TIFFANY_BLUE",
    "BLUE_HOSTA",
    "CYAN_OPAQUE",
    "NORTHERN_LIGHTS_BLUE",
    "BLUE_GREEN",
    "MEDIUMAQUAMARINE",
    "MAGIC_MINT",
    "LIGHT_AQUAMARINE",
    "AQUAMARINE",
    "BRIGHT_TEAL",
    "DEEP_TURQUOISE",
    "JELLYFISH",
    "BLUE_TURQUOISE",
    "MACAW_BLUE_GREEN",
    "SEAFOAM_GREEN",
    "DEEP_SEA",
    "DARKCYAN",
    "TEAL_GREEN",
    "TEAL_BLUE",
    "MEDIUM_TEAL",
    "DARK_TEAL",
    "DEEP_TEAL",
    "DARKSLATEGRAY_OR_DARKSLATEGREY",
    "GUNMETAL",
    "BLUE_MOSS_GREEN",
    "BEETLE_GREEN",
    "GRAYISH_TURQUOISE",
    "GREENISH_BLUE",
    "AQUAMARINE_STONE",
    "SEA_TURTLE_GREEN",
    "DULL_SEA_GREEN",
    "DARK_GREEN_BLUE",
    "DEEP_SEA_GREEN",
    "BOTTLE_GREEN",
    "SEAGREEN",
    "ELF_GREEN",
    "DARK_MINT",
    "JADE",
    "EARTH_GREEN",
    "CHROME_GREEN",
    "EMERALD",
    "METALLIC_GREEN",
    "CAMOUFLAGE_GREEN",
    "SAGE_GREEN",
    "HAZEL_GREEN",
    "VENOM_GREEN",
    "MILITARY_GREEN",
    "GREEN_LEAVES",
    "ARMY_GREEN",
    "FERN_GREEN",
    "FALL_FOREST_GREEN",
    "IRISH_GREEN",
    "PINE_GREEN",
    "MEDIUM_FOREST_GREEN",
    "JUNGLE_GREEN",
    "CACTUS_GREEN",
    "DEEP_GREEN",
    "DEEP_EMERALD_GREEN",
    "HUNTER_GREEN",
    "DARK_FOREST_GREEN",
    "LOTUS_GREEN",
    "SEAWEED_GREEN",
    "SHAMROCK_GREEN",
    "GREEN_ONION",
    "MOSS_GREEN",
    "GRASS_GREEN",
    "GREEN_PEPPER",
    "DARK_LIME_GREEN",
    "PARROT_GREEN",
    "CLOVER_GREEN",
    "DINOSAUR_GREEN",
    "GREEN_SNAKE",
    "ALIEN_GREEN",
    "GREEN_APPLE",
    "PEA_GREEN",
    "KELLY_GREEN",
    "ZOMBIE_GREEN",
    "GREEN_PEAS",
    "DOLLAR_BILL_GREEN",
    "FROG_GREEN",
    "TURQUOISE_GREEN",
    "BASIL_GREEN",
    "GRAY_GREEN",
    "IGUANA_GREEN",
    "CITRON_GREEN",
    "ACID_GREEN",
    "AVOCADO_GREEN",
    "PISTACHIO_GREEN",
    "SALAD_GREEN",
    "YELLOWGREEN",
    "PASTEL_GREEN",
    "HUMMINGBIRD_GREEN",
    "NEBULA_GREEN",
    "STOPLIGHT_GO_GREEN",
    "NEON_GREEN",
    "JADE_GREEN",
    "LIME_MINT_GREEN",
    "EMERALD_GREEN",
    "LIME",
    "BRIGHT_GREEN",
    "CHARTREUSE",
    "YELLOW_LAWN_GREEN",
    "ALOE_VERA_GREEN",
    "DULL_GREEN_YELLOW",
    "LEMON_GREEN",
    "CHAMELEON_GREEN",
    "NEON_YELLOW_GREEN",
    "YELLOW_GREEN_GROSBEAK",
    "TEA_GREEN",
    "SLIME_GREEN",
    "ALGAE_GREEN",
    "LIGHTGREEN",
    "DRAGON_GREEN",
    "MINT_GREEN",
    "GREEN_THUMB",
    "ORGANIC_BROWN",
    "LIGHT_JADE",
    "LIGHT_MINT_GREEN",
    "LIGHT_ROSE_GREEN",
    "CHROME_WHITE",
    "HONEYDEW",
    "LEMONCHIFFON",
    "PARCHMENT",
    "CREAM",
    "CREAM_WHITE",
    "LIGHTYELLOW",
    "CORNSILK",
    "BLONDE",
    "CHAMPAGNE",
    "BISQUE",
    "PEACH",
    "LIGHT_ORANGE",
    "PEACHPUFF",
    "CORAL_PEACH",
    "NAVAJOWHITE",
    "GOLDEN_BLONDE",
    "GOLDEN_SILK",
    "DARK_BLONDE",
    "LIGHT_GOLD",
    "VANILLA",
    "TAN_BROWN",
    "DIRTY_WHITE",
    "CARDBOARD_BROWN",
    "HARVEST_GOLD",
    "SUN_YELLOW",
    "CORN_YELLOW",
    "PASTEL_YELLOW",
    "NEON_YELLOW",
    "YELLOW",
    "CANARY_YELLOW",
    "BANANA_YELLOW",
    "MUSTARD_YELLOW",
    "GOLDEN_YELLOW",
    "BOLD_YELLOW",
    "RUBBER_DUCKY_YELLOW",
    "GOLD",
    "BRIGHT_GOLD",
    "CHROME_GOLD",
    "GOLDEN_BROWN",
    "DEEP_YELLOW",
    "MACARONI_AND_CHEESE",
    "SAFFRON",
    "NEON_GOLD",
    "BEER",
    "YELLOW_ORANGE_OR_ORANGE_YELLOW",
    "CANTALOUPE",
    "CHEESE_ORANGE",
    "BROWN_SAND",
    "BROWN_SUGAR",
    "CAMEL_BROWN",
    "DEER_BROWN",
    "LIGHT_FRENCH_BEIGE",
    "SAND",
    "SAGE",
    "FALL_LEAF_BROWN",
    "GINGER_BROWN",
    "BRONZE_GOLD",
    "OLIVE_GREEN",
    "BRASS",
    "COOKIE_BROWN",
    "METALLIC_GOLD",
    "BEE_YELLOW",
    "SCHOOL_BUS_YELLOW",
    "ORANGE_GOLD",
    "CARAMEL",
    "CINNAMON",
    "PERU",
    "BRONZE",
    "TIGER_ORANGE",
    "COPPER",
    "DARK_GOLD",
    "METALLIC_BRONZE",
    "DARK_ALMOND",
    "WOOD",
    "OAK_BROWN",
    "ANTIQUE_BRONZE",
    "HAZEL",
    "DARK_YELLOW",
    "DARK_MOCCASIN",
    "KHAKI_GREEN",
    "MILLENNIUM_JADE",
    "DARK_BEIGE",
    "BULLET_SHELL",
    "ARMY_BROWN",
    "SANDSTONE",
    "TAUPE",
    "MOCHA",
    "MILK_CHOCOLATE",
    "GRAY_BROWN",
    "DARK_COFFEE",
    "OLD_BURGUNDY",
    "WESTERN_CHARCOAL",
    "BAKERS_BROWN",
    "DARK_BROWN",
    "SEPIA_BROWN",
    "DARK_BRONZE",
    "COFFEE",
    "BROWN_BEAR",
    "RED_DIRT",
    "SADDLEBROWN",
    "DARK_SIENNA",
    "SANGRIA",
    "BLOOD_RED",
    "CHESTNUT",
    "CORAL_BROWN",
    "CHESTNUT_RED",
    "MAHOGANY",
    "RED_GOLD",
    "RED_FOX",
    "DARK_BISQUE",
    "LIGHT_BROWN",
    "PETRA_GOLD",
    "RUST",
    "COPPER_RED",
    "ORANGE_SALMON",
    "SEDONA",
    "PAPAYA_ORANGE",
    "HALLOWEEN_ORANGE",
    "NEON_ORANGE",
    "BRIGHT_ORANGE",
    "PUMPKIN_ORANGE",
    "CARROT_ORANGE",
    "CONSTRUCTION_CONE_ORANGE",
    "INDIAN_SAFFRON",
    "SUNRISE_ORANGE",
    "MANGO_ORANGE",
    "BASKET_BALL_ORANGE",
    "LIGHT_SALMON_ROSE",
    "LIGHTSALMON",
    "TANGERINE",
    "LIGHT_COPPER",
    "SALMON_PINK",
    "PEACH_PINK",
    "PASTEL_RED",
    "PINK_CORAL",
    "BEAN_RED",
    "VALENTINE_RED",
    "TOMATO",
    "SHOCKING_ORANGE",
    "ORANGERED",
    "NEON_RED",
    "SCARLET_RED",
    "RUBY_RED",
    "FERRARI_RED",
    "FIRE_ENGINE_RED",
    "LAVA_RED",
    "LOVE_RED",
    "GRAPEFRUIT",
    "CHERRY_RED",
    "CHILLI_PEPPER",
    "TOMATO_SAUCE_RED",
    "CARBON_RED",
    "CRANBERRY",
    "SAFFRON_RED",
    "CRIMSON_RED",
    "RED_WINE_OR_WINE_RED",
    "DARKRED",
    "BURGUNDY",
    "VERMILION",
    "DEEP_RED",
    "RED_BLOOD",
    "BLOOD_NIGHT",
    "DARK_SCARLET",
    "BLACK_BEAN",
    "CHOCOLATE_BROWN",
    "MIDNIGHT",
    "PURPLE_LILY",
    "PURPLE_MAROON",
    "PLUM_PIE",
    "PLUM_VELVET",
    "DARK_RASPBERRY",
    "VELVET_MAROON",
    "ROSY_FINCH",
    "DULL_PURPLE",
    "PUCE",
    "ROSE_DUST",
    "PASTEL_BROWN",
    "ROSY_PINK",
    "KHAKI_ROSE",
    "LIPSTICK_PINK",
    "PINK_BROWN",
    "OLD_ROSE",
    "DUSTY_PINK",
    "PINK_DAISY",
    "ROSE",
    "DUSTY_ROSE",
    "SILVER_PINK",
    "GOLD_PINK",
    "ROSE_GOLD",
    "DEEP_PEACH",
    "PASTEL_ORANGE",
    "DESERT_SAND",
    "UNBLEACHED_SILK",
    "PIG_PINK",
    "PALE_PINK",
    "BLUSH",
    "MISTYROSE",
    "PINK_BUBBLE_GUM",
    "LIGHT_ROSE",
    "LIGHT_RED",
    "WARM_PINK",
    "DEEP_ROSE",
    "SOFT_PINK",
    "DONUT_PINK",
    "BABY_PINK",
    "FLAMINGO_PINK",
    "PASTEL_PINK",
    "ROSE_PINK_OR_PINK_ROSE",
    "CADILLAC_PINK",
    "CARNATION_PINK",
    "PASTEL_ROSE",
    "BLUSH_RED",
    "PURPLE_PINK",
    "TULIP_PINK",
    "BASHFUL_PINK",
    "DARK_PINK",
    "DARK_HOT_PINK",
    "WATERMELON_PINK",
    "VIOLET_RED",
    "HOT_DEEP_PINK",
    "BRIGHT_PINK",
    "DEEPPINK",
    "NEON_PINK",
    "CHROME_PINK",
    "NEON_HOT_PINK",
    "PINK_CUPCAKE",
    "ROYAL_PINK",
    "DIMORPHOTHECA_MAGENTA",
    "PINK_LEMONADE",
    "RED_PINK",
    "BRIGHT_MAROON",
    "ROSE_RED",
    "ROGUE_PINK",
    "BURNT_PINK",
    "PINK_VIOLET",
    "MAGENTA_PINK",
    "DARK_CARNATION_PINK",
    "RASPBERRY_PURPLE",
    "PINK_PLUM",
    "DEEP_MAUVE",
    "FUCHSIA",
    "FUCHSIA_PINK",
    "BRIGHT_NEON_PINK",
    "CRIMSON_PURPLE",
    "HELIOTROPE_PURPLE",
    "TYRIAN_PURPLE",
    "PURPLE_FLOWER",
    "ORCHID_PURPLE",
    "RICH_LILAC",
    "PASTEL_VIOLET",
    "MAUVE_TAUPE",
    "VIOLA_PURPLE",
    "EGGPLANT",
    "PLUM_PURPLE",
    "GRAPE",
    "PURPLE_NAVY",
    "BLUE_LOTUS",
    "BLURPLE",
    "LIGHT_SLATE_BLUE",
    "PERIWINKLE_PURPLE",
    "VERY_PERI",
    "BRIGHT_GRAPE",
    "PURPLE_AMETHYST",
    "BRIGHT_PURPLE",
    "DEEP_PERIWINKLE",
    "PURPLE_HAZE",
    "PURPLE_IRIS",
    "DARK_PURPLE",
    "DEEP_PURPLE",
    "MIDNIGHT_PURPLE",
    "PURPLE_MONSTER",
    "BLUE_WHALE",
    "REBECCAPURPLE",
    "PURPLE_JAM",
    "DARKMAGENTA",
    "FRENCH_LILAC",
    "PURPLE_VIOLET",
    "JASMINE_PURPLE",
    "PURPLE_DAFFODIL",
    "CLEMATIS_VIOLET",
    "PURPLE_SAGE_BUSH",
    "LOVELY_PURPLE",
    "NEON_PURPLE",
    "PURPLE_PLUM",
    "AZTECH_PURPLE",
    "LIGHT_PURPLE",
    "CROCUS_PURPLE",
    "PURPLE_MIMOSA",
    "PERIWINKLE",
    "PALE_LILAC",
    "LAVENDER_PURPLE",
    "ROSE_PURPLE",
    "LILAC",
    "MAUVE",
    "BRIGHT_LILAC",
    "PURPLE_DRAGON",
    "BLUSH_PINK",
    "PASTEL_PURPLE",
    "BLOSSOM_PINK",
    "WISTERIA_PURPLE",
    "PURPLE_THISTLE",
    "PURPLE_WHITE",
    "PERIWINKLE_PINK",
    "COTTON_CANDY",
    "LAVENDER_PINOCCHIO",
    "DARK_WHITE",
    "ASH_WHITE",
    "WHITE_CHOCOLATE",
    "SOFT_IVORY",
    "OFF_WHITE",
    "PEARL_WHITE",
    "RED_WHITE",
    "LAVENDERBLUSH",
    "PEARL",
    "EGG_SHELL",
    "SEASHELL",
    "BONE_WHITE",
    "RICE",
    "IVORY",
    "WHITE_GOLD",
    "LIGHT_WHITE",
    "WHITESMOKE",
    "COTTON",
    "SNOW",
    "MILK_WHITE",
    "HALF_WHITE"
]


def iscolour(c, g=None, b=None):
    # print("c: <{}>, t: <{}>".format(c, type(c)))
    # print("c: <{}>, t: <{}>".format(g, type(g)))
    # print("c: <{}>, t: <{}>".format(b, type(b)))
    if is_rgb_colour(c, g, b):
        return True
    elif is_hex_colour(c):
        return True
    elif isinstance(c, str) and g is None and b is None:
        c = c.replace("-", "_")
        if c.upper() in COLOURS:
            return True
    return False


def rgb_to_hex(colour):
    if is_hex_colour(colour):
        return colour
    elif iscolour(colour) and isinstance(colour, str):
        # print(f"{colour}")
        return rgb_to_hex(eval(colour))
    r, g, b = None, None, None
    try:
        r, g, b = colour
        return "#{}{}{}".format(*list(map(lambda x: hex(int(x) % 256)[2:].rjust(2, "0"), [r, g, b]))).upper()
    except ValueError:
        raise ValueError("Failed to convert r: {}, g: {}, b: {} values to a hex colour.".format(r, g, b))
    except TypeError:
        raise TypeError("Failed to convert r: {}, g: {}, b: {} values to a hex colour.".format(r, g, b))


def hex_to_rgb(colour):
    if is_rgb_colour(colour):
        return colour
    elif iscolour(colour) and isinstance(colour, str) and not ("#" in colour and (len(colour) == 7)):
        print(f"{colour}")
        try:
            return eval(colour)
        except NameError as ne:
            raise NameError(ne)
    try:
        return (int(colour[1:3], 16), int(colour[3:5], 16), int(colour[5:], 16))
    except ValueError:
        raise ValueError("Failed to convert colour: {} to a valid RGB colour.".format(colour))
    except TypeError:
        raise TypeError("Failed to convert colour: {} to a valid RGB colour.".format(colour))


def is_rgb_colour(c, g=None, b=None):
    if g is not None and b is not None:
        if isinstance(c, list):
            c = c + [g, b]
        elif isinstance(c, tuple):
            c = (*c, g, b)
        elif isinstance(c, int) or isinstance(c, float):
            c = [c] + [g, b]
    if (isinstance(c, tuple) or isinstance(c, list)) and len(c) == 3:
        if all([(isinstance(x, int) or isinstance(x, float)) and -1 < x < 256 for x in c]):
            return True
    return False


def is_hex_colour(c):
    if isinstance(c, str) and (len(c) == 7 or len(c) == 6):
        if len(c) == 7:
            if c[0] != "#":
                return False
            c = c[1:]
        valid = list(map(str, range(10))) + [chr(97 + x) for x in range(6)] + [chr(65 + x) for x in range(6)]
        for i in c:
            if i not in valid:
                return False
        return True
    return False


# COLOURS = dict(zip(colour_names_list, colour_values_list))
COLOURS = dict(zip(colour_names_list, [{"R": r, "G": g, "B": b} for r, g, b in colour_values_list]))
COLOURS_INVERSE = dict(zip([rgb_to_hex(rgb) for rgb in colour_values_list], colour_names_list))


def get_all_colours(rtype=list, return_hex=False):
    if return_hex:
        lst = [rgb_to_hex(c) for c in colour_values_list]
    else:
        lst = colour_values_list

    if rtype == dict:
        return dict(zip(colour_names_list, lst))
    elif isinstance(rtype, str) and rtype.lower() == "both":
        return colour_names_list, lst
    elif isinstance(rtype, str) and rtype.lower() == "names":
        return colour_names_list
    else:
        return lst


def random_colour(name=False, rgb=True):
    """Choose a random colour from the list of known colours."""
    if not name:
        if rgb:
            return choice(get_all_colours())
        else:
            return rgb_to_hex(choice(get_all_colours()))
    else:
        return choice(list(get_all_colours(rtype=dict).keys()))


def random_rgb(l_bound=10, h_bound=245):
    """Return random RGB color using bounds."""
    l_bound = clamp(0, l_bound, 255)
    h_bound = clamp(l_bound, h_bound, 255)
    return (
        randint(l_bound, h_bound),
        randint(l_bound, h_bound),
        randint(l_bound, h_bound)
    )


# def rgb_to_hex(colour):
#    return "#" + "".join([hex(x).split("x")[-1] for x in colour]).upper()


# def iscolour(c, g=None, b=None):
#     print("c: <{}>, t: <{}>".format(c, type(c)))
#     print("c: <{}>, t: <{}>".format(g, type(g)))
#     print("c: <{}>, t: <{}>".format(b, type(b)))
#     if g is not None and b is not None:
#         if isinstance(c, list):
#             c = c + [g, b]
#         elif isinstance(c, tuple):
#             c = (*c, g, b)
#         elif isinstance(c, int) or isinstance(c, float):
#             c = [c] + [g, b]
#     if (isinstance(c, tuple) or isinstance(c, list)) and len(c) == 3:
#         if all([(isinstance(x, int) or isinstance(x, float)) and -1 < x < 256 for x in c]):
#             return True
#     elif isinstance(c, str) and (len(c) == 7 or len(c) == 6):
#         # print("str parsing")
#         if len(c) == 7:
#             if c[0] != "#":
#                 return False
#             c = c[1:]
#         valid = list(map(str, range(10))) + [chr(97 + x) for x in range(6)] + [chr(65 + x) for x in range(6)]
#         # print("valid: {}".format(valid))
#         for i in c:
#             if i not in valid:
#                 return False
#         return True
#     elif isinstance(c, str) and g is None and b is None:
#         if c in COLOURS:
#             return True
#     return False


class Colour:

    class ColourCreationError(Exception):
        pass

    def __init__(self, c, g=None, b=None, hex_code=None, rgb_code=None, colour_name=None):
        self.hex_code = hex_code
        self.rgb_code = rgb_code
        self.colour_name = colour_name
        # print(f"{c=}, {g=}, {b=}, {self.hex_code=}, {self.rgb_code=}")
        if not iscolour(c, g, b):
            raise Colour.ColourCreationError(f"Error params {c=}, {g=}, {b=} do not represent a valid or known colour.")
        else:
            if is_rgb_colour(c, g, b):
                if g is None and b is None:
                    r, g, b = c
                else:
                    r, g, b = c, g, b
            elif is_hex_colour(c):
                if not c.startswith("#"):
                    c = f"#{c}"
                r, g, b = hex_to_rgb(c)
            elif isinstance(c, str) and ((col := c.replace("-", "_").upper()) in COLOURS):
                r, g, b = COLOURS[col]["R"], COLOURS[col]["G"], COLOURS[col]["B"]
            else:
                r, g, b = None, None, None
                # print(f"{c=}, {type(c)=}")

            self.rgb_code = r, g, b
            # print(f"{self.hex_code=}, {self.rgb_code=}")
            self.hex_code = rgb_to_hex(self.rgb_code)

            if self.colour_name is None:
                if self.hex_code in COLOURS_INVERSE:
                    self.colour_name = COLOURS_INVERSE[self.hex_code]

            # print(f"{self.hex_code=}, {self.rgb_code=}")
            # self.hex_code = rgb_to_hex(self.rgb_code)

    def __iter__(self):
        rgb = self.rgb_code
        for code in rgb:
            yield code

    def __hash__(self):
        return self.hex_code

    def __eq__(self, other):
        return isinstance(other, Colour) and self.hex_code == other.hex_code

    def __repr__(self):
        r, g, b = self.rgb_code
        name = self.colour_name if self.colour_name else "UNNAMED"
        return "<Colour RGB=({r}, {g}, {b}), hex = '{h}', name = '{n}'>".format(r=r, g=g, b=b, h=self.hex_code, n=name)


def gradient(x, n, c1, c2, rgb=True):
    """Using increments, calculate a colour between two colours.
    ex. gradient(5, 10, BLACK, WHITE) -> A colour 5/10 te way between c1 & c2.
                                      -> .
    :rtype: Tuple object representing an RGB colour (R, G, B)
    """
    assert isinstance(x, int) or isinstance(x, float), "Parameter \"x\": ({}) needs to be a number.".format(x)
    assert isinstance(n, int) or isinstance(n, float), "Parameter \"n\": ({}) needs to be a number.".format(n)
    assert iscolour(c1), "Parameter \"c1\": ({}) needs to be a colour.".format(c1)
    assert iscolour(c2), "Parameter \"c2\": ({}) needs to be a colour.".format(c2)
    assert x <= n, "Parameter \"x\": ({}) needs to be less than or equal to parameter \"n\": ({}).".format(x, n)
    assert 0 < n, "Parameter \"n\": ({}) must be non-zero and positive.".format(n)
    r1, g1, b1 = Colour(c1).rgb_code
    r2, g2, b2 = Colour(c2).rgb_code
    p = abs(x / n)
    r_diff = p * abs(r1 - r2)
    g_diff = p * abs(g1 - g2)
    b_diff = p * abs(b1 - b2)
    if r1 >= r2:
        r_diff *= -1
    if g1 >= g2:
        g_diff *= -1
    if b1 >= b2:
        b_diff *= -1

    new_colour = r1 + r_diff, g1 + g_diff, b1 + b_diff
    if rgb:
        return new_colour
    return rgb_to_hex(new_colour)


# Darken an RGB color using a proportion p (0-1)
def darken(c, p, rgb=True):
    if is_hex_colour(c):
        c = hex_to_rgb(c)
    if not iscolour(c):
        raise ValueError(f"Error cannot brighten non-colour object: {c}")
    r, g, b = c
    r = clamp(0, round(r - (255 * p)), 255)
    g = clamp(0, round(g - (255 * p)), 255)
    b = clamp(0, round(b - (255 * p)), 255)
    return (r, g, b) if rgb else rgb_to_hex((r, g, b))


# Brighten an RGB color using a proportion p (0-1)
def brighten(c, p, rgb=True):
    if is_hex_colour(c):
        c = hex_to_rgb(c)
    if not iscolour(c):
        raise ValueError(f"Error cannot brighten non-colour object: {c}")
    r, g, b = c
    r = clamp(0, round(r + (255 * p)), 255)
    g = clamp(0, round(g + (255 * p)), 255)
    b = clamp(0, round(b + (255 * p)), 255)
    return (r, g, b) if rgb else rgb_to_hex((r, g, b))


def font_foreground(colour_in, threshold=255 * 3 / 2, rgb=True):
    """Given a background colour and a minimum threshold, return BLACK or WHITE to ensure a font of this colour will be visible on the background."""
    assert iscolour(
        colour_in), f"Error cannot infer the correct font fore-colour from a non colour object. Got '{colour_in}', type={type(colour_in)}"
    try:
        if isinstance(colour_in, str):
            colour_in = hex_to_rgb(colour_in)
        s = sum(colour_in)
        if s < threshold:
            # return WHITE on BLACK
            return WHITE if rgb else rgb_to_hex(WHITE)
        else:
            # return BLACK on WHITE
            return BLACK if rgb else rgb_to_hex(BLACK)
    except ValueError as ve:
        raise ValueError(f"Error cannot convert \'{colour_in}\' to a valid RGB colour scheme.", ve)
    except IndexError as ie:
        raise IndexError(f"Error cannot convert \'{colour_in}\' to a valid RGB colour scheme.", ie)
    except TypeError as te:
        raise TypeError(f"Error cannot convert \'{colour_in}\' to a valid RGB colour scheme.", te)


def rainbow_gradient(n_slices=None, start_colour="red", rgb=True):
    # values = [(255, i, 0) for i in range(256)] + \
    #          [(i, 255, 0) for i in range(255, -1, -1)] + \
    #          [(0, 255, i) for i in range(255)] + \
    #          [(0, i, 255) for i in range(255, -1, -1)] + \
    #          [(i, 0, 255) for i in range(256)] + \
    #          [(255, 0, i) for i in range(255, -1, -1)]
    lst = "red", "yellow", "green", "cyan", "blue", "magenta"
    valid_starts = list(lst)  # set(lst).union(set(map(str.upper, lst))).union(set(map(str.title, lst)))
    start_colour = start_colour.lower()
    if start_colour not in valid_starts:
        start_colour = "red"
    colour_lsts = [
        red_yellow := [(255, i, 0) for i in range(256)],
        yellow_green := [(i, 255, 0) for i in range(255, -1, -1)],
        green_cyan := [(0, 255, i) for i in range(255)],
        cyan_blue := [(0, i, 255) for i in range(255, -1, -1)],
        blue_magenta := [(i, 0, 255) for i in range(256)],
        magenta_red := [(255, 0, i) for i in range(255, -1, -1)]
    ]
    idx = valid_starts.index(start_colour)
    # print(f"idx: {idx}")
    # print(f"A({len(values)}): <{values}>")
    values = flatten(colour_lsts[idx:] + colour_lsts[:idx])
    # print(f"A({len(values)}): <{values}>")
    # print(f"len(values): {len(values)}")
    l = len(values)
    if isinstance(n_slices, int):
        p = min(l, n_slices) / (l if l != 0 else 1)
    elif isinstance(n_slices, float):
        p = max(0, min(1, n_slices))
    elif n_slices is None:
        p = 1
    else:
        raise TypeError(f"Param 'n_slice' not recognized: <{type(n_slices)}>")
    values = reduce(values, p, how="distribute")
    # print(f"C({len(values)}): <{values}>")
    # print(f"D({len(lst)}): <{lst[idx:] + lst[:idx]}>")
    for val in values:
        if rgb:
            yield val
        else:
            yield rgb_to_hex(val)


def get_colour_name(hx, name_only=True, r_type=dict, rgb=False, certainty_as_percent=True, default_colour=None):
    """Given an input, hex or return the closest name for that colour.
    Modified from: https://stackoverflow.com/questions/2453344/find-the-colour-name-from-a-hexadecimal-colour-code
    :param hx - colour value to determine the colour name of. Can be hex colour, RGB colour, or known name.
    :param name_only - default True for simple string name result, otherwise, it will include data on its search.
    :param r_type - control whether you get a list, tuple, or a dict result
    :param rgb - returned colour representation in the data, default hex
    :param certainty_as_percent - convert certainty number to a percentage when returning data.
    :param default_colour - if the colour name cannot be determined, then return the default value.
    :return string name for the colour, or an iterable of data collected while deciphering this input.
    :raises Assertion Error if r_type not recognized, ValueError if the input is not recognized as a colour via Colour class"""

    assert r_type in [dict, list, tuple], f"Error, r_type must be one of; list, tuple, or dict. Got '{r_type}'."

    # print(f"START hx='{hx}', dc='{default_colour}'")

    res_keys = ["name", "hex", "exact", "certainty", "certainty_score"]
    t = (255**2)*3
    if rgb:
        res_keys.insert(1, "rgb")
        res_keys.remove("hex")

    if isinstance(hx, Colour):
        c = hx.hex_code if not rgb else hx.rgb_code
        result = dict(zip(res_keys, (hx.colour_name, c, True, 1, 0)))
    else:
        if hx in COLOURS:
            # print(f"A")
            c = COLOURS[hx] if not rgb else rgb_to_hex(COLOURS[hx])
            result = dict(zip(res_keys, (hx, c, True, 1, t)))
        else:
            # print(f"B")

            try:
                c = Colour(hx)
            except Colour.ColourCreationError as cce1:
                if default_colour is not None:
                    try:
                        c = Colour(default_colour)
                    except Colour.ColourCreationError as cce2:
                        c = None
                    else:
                        # print(f"BACK_IN {c=}")
                        hx = get_colour_name(c, name_only=True)
                        result = dict(zip(res_keys, (hx, c.hex_code, False, 0, t)))
                        # print(f"result {result}")
                    # return default_colour
                else:
                    raise TypeError(f"Error cannot determine colour name from input '{hx}'. Perhaps try passing a default colour using the param 'default_colour'.")

            if c is not None:
                hx = c.hex_code

                if not hx.startswith("#"):
                    hx = f"#{hx}"

                # if color is found in dict
                # print(f"{hx=}, {COLOURS_INVERSE.get(hx.upper(), None)=}")
                if COLOURS_INVERSE.get(hx.upper(), None):
                    # print(f"C")
                    # c = f"#{hx}" if not rgb else rgb_to_hex(hx)
                    c = hx if not rgb else rgb_to_hex(hx)
                    result = dict(zip(res_keys, (COLOURS_INVERSE[hx.upper()], c, True, 1, t)))

                else:
                    # print(f"D")
                    # print(f"SEARCHING {hx=}")

                    # # else return its closest available color
                    m = float("inf")
                    k = "000000"
                    hx = hx.removeprefix("#")
                    for key in COLOURS_INVERSE.keys():
                        key = key.removeprefix("#") if key else k
                        a = int(hx[:2], 16) - int(key[:2], 16)
                        b = int(hx[2:4], 16) - int(key[2:4], 16)
                        c = int(hx[4:], 16) - int(key[4:], 16)

                        v = a * a + b * b + c * c  # simple measure for distance between colors

                        # v = (r1 - r2)^2 + (g1 - g2)^2 + (b1 - b2)^2
                        # print(f"{key=}, {k=}, {v=}, {m=}")

                        if v < m:
                            m = v
                            k = key

                    n = COLOURS_INVERSE[f"#{k}"]
                    c = f"#{hx}" if not rgb else rgb_to_hex(f"#{hx}")
                    result = dict(zip(res_keys, (n, c, False, (1 - (m / t)), m)))
            else:
                raise ValueError(f"Error cannot determine colour name from input '{hx}'")

    if certainty_as_percent:
        result["certainty"] = f"{result['certainty']*100:.4f} %"
    if r_type == dict:
        if name_only:
            return result["name"]
        return result
    else:
        if name_only:
            return list(result.values())[0]
        return list(result.values())


if __name__ == '__main__':
    print(f"{get_colour_name('f0f8ff')=}")  # found in dict
    print(f"{get_colour_name('faeb11')=}")  # closest to Antique white
    print(f"{get_colour_name('968244')=}")
    print(f"{get_colour_name('FF0000')=}")
    print(f"{get_colour_name((255, 0, 0))=}")
    print(f"{get_colour_name('BLUE')=}")
    print(f"{get_colour_name('blue')=}")
    print(f"{get_colour_name('blue-indigo', default_colour='blue')=}")
    print(f"{get_colour_name('banana-yellow')=}")
    print(f"{get_colour_name('banana_yellow')=}")
    print(f"{get_colour_name('blue-indigo')=}")

    len_a, len_b = len(COLOURS), len(COLOURS_INVERSE)
    d = abs(len_a - len_b)

    if d != 0:

        print(f"len(COLOURS) = {len_a}")
        print(f"len(COLOURS_INVERSE) = {len_b}")

        found = {}
        for k, v in COLOURS.items():
            nk = rgb_to_hex(v.values())
            if nk not in found:
                found[nk] = []
            found[nk].append(k)

        print(f"\n\n\t\tNeeds fixing:\n")
        for k, v in found.items():
            if len(v) > 1:
                print(f"{k=}, {v=}")

        assert len_a == len_b, f"Error, these lists must be the same length, or some colours have duplicate hex keys.\n{d} colour(s) need fixed"
