ctx.rule(u'START',u'{Url}')
ctx.rule(u'Url',u'{Httpurl}')
ctx.rule(u'Url',u'{Ftpurl}')
ctx.rule(u'Url',u'{Telneturl}')
ctx.rule(u'Url',u'{Mailtourl}')
ctx.rule(u'Url',u'{Fileurl}')
ctx.rule(u'Url',u'{Otherurl}')
ctx.rule(u'Otherurl',u'{Genericurl}')
ctx.rule(u'Genericurl',u'{Scheme}:{Schemepart}')
ctx.rule(u'Scheme',u'{Lowalpha}{Scheme_term}')
ctx.rule(u'Scheme',u'{Digit}{Scheme_term}')
ctx.rule(u'Scheme',u'+{Scheme_term}')
ctx.rule(u'Scheme',u'_{Scheme_term}')
ctx.rule(u'Scheme',u'.{Scheme_term}')
ctx.rule(u'Scheme_term',u'{Scheme}')
ctx.rule(u'Scheme_term',u'')
ctx.rule(u'Schemepart',u'{Schemepart_xchar}')
ctx.rule(u'Schemepart',u'{Ip_schemepart}')
ctx.rule(u'Schemepart_xchar',u'{Xchar}{Schemepart_xchar}')
ctx.rule(u'Schemepart_xchar',u'')
ctx.rule(u'Ip_schemepart',u'//{Login}')
ctx.rule(u'Ip_schemepart',u'//{Login}/{Urlpath}')
ctx.rule(u'Login',u'{Hostport}')
ctx.rule(u'Login',u'{User}@{Hostport}')
ctx.rule(u'Login',u'{User}:{Password}@{Hostport}')
ctx.rule(u'Hostport',u'{Host}')
ctx.rule(u'Hostport',u'{Host}:{Port}')
ctx.rule(u'Host',u'{Hostname}')
ctx.rule(u'Host',u'{Hostnumber}')
ctx.rule(u'Hostname',u'{Hostname_domainlabel}{Toplabel}')
ctx.rule(u'Hostname',u'{Toplabel}')
ctx.rule(u'Hostname_domainlabel',u'{Domainlabel}.{Hostname_domainlabel}')
ctx.rule(u'Hostname_domainlabel',u'')
ctx.rule(u'Domainlabel',u'{Domainlabel}')
ctx.rule(u'Domainlabel',u'{Alphadigit}{Domainlabel}')
ctx.rule(u'Domainlabel',u'{Alphadigit}{Dashes}{Alphadigit}')
ctx.rule(u'Dashes',u'-{Dashes}')
ctx.rule(u'Dashes',u'')
ctx.rule(u'Toplabel',u'{Alpha}')
ctx.rule(u'Toplabel',u'{Toplabel_second}')
ctx.rule(u'Toplabel_second',u'{Alphadigit}{Toplabel_second}')
ctx.rule(u'Toplabel_second',u'{Alphadigit}{Dashes}{Alphadigit}')
ctx.rule(u'Alphadigit',u'{Alpha}')
ctx.rule(u'Alphadigit',u'{Digit}')
ctx.rule(u'Hostnumber',u'{Digits}.{Digits}.{Digits}.{Digits}')
ctx.rule(u'Port',u'{Digits}')
ctx.rule(u'User',u'{Segment}')
ctx.rule(u'Password',u'{Segment}')
ctx.rule(u'Urlpath',u'{Xchar}{Urlpath}')
ctx.rule(u'Urlpath',u'')
ctx.rule(u'Ftpurl',u'ftp://{Login}')
ctx.rule(u'Ftpurl',u'ftp://{Login}/{Fpath}')
ctx.rule(u'Ftpurl',u'ftp://{Login}/{Fpath};type={Ftptype}')
ctx.rule(u'Fpath',u'{Fsegment}')
ctx.rule(u'Fpath',u'{Fsegment}/{Fpath}')
ctx.rule(u'Fsegment',u'{Segment}')
ctx.rule(u'Ftptype',u'A')
ctx.rule(u'Ftptype',u'I')
ctx.rule(u'Ftptype',u'D')
ctx.rule(u'Ftptype',u'a')
ctx.rule(u'Ftptype',u'i')
ctx.rule(u'Ftptype',u'd')
ctx.rule(u'Fileurl',u'file://{Host}/{Fpath}')
ctx.rule(u'Fileurl',u'file://localhost/{Fpath}')
ctx.rule(u'Httpurl',u'{Http_schema}://{Hostport}')
ctx.rule(u'Httpurl',u'{Http_schema}://{Hostport}/{Hpath}')
ctx.rule(u'Httpurl',u'{Http_schema}://{Hostport}/{Hpath}?{Search}')
ctx.rule(u'Http_schema',u'http')
ctx.rule(u'Http_schema',u'https')
ctx.rule(u'Hpath',u'{Hsegment}')
ctx.rule(u'Hpath',u'{Hsegment}/{Hpath}')
ctx.rule(u'Hsegment',u'segment')
ctx.rule(u'Search',u'segment')
ctx.rule(u'Mailtourl',u'mailto:{Encoded822addr}')
ctx.rule(u'Encoded822addr',u'{Xchar}')
ctx.rule(u'Encoded822addr',u'{Xchar}{Encoded822addr}')
ctx.rule(u'Telneturl',u'telnet://{Login}')
ctx.rule(u'Telneturl',u'telnet://{Login}/')
ctx.rule(u'Segment',u'{Uchar}{Segment}')
ctx.rule(u'Segment',u';{Segment}')
ctx.rule(u'Segment',u'?{Segment}')
ctx.rule(u'Segment',u'&{Segment}')
ctx.rule(u'Segment',u'={Segment}')
ctx.rule(u'Segment',u'')
ctx.rule(u'Lowalpha',u'a')
ctx.rule(u'Lowalpha',u'b')
ctx.rule(u'Lowalpha',u'c')
ctx.rule(u'Lowalpha',u'd')
ctx.rule(u'Lowalpha',u'e')
ctx.rule(u'Lowalpha',u'f')
ctx.rule(u'Lowalpha',u'g')
ctx.rule(u'Lowalpha',u'h')
ctx.rule(u'Lowalpha',u'i')
ctx.rule(u'Lowalpha',u'j')
ctx.rule(u'Lowalpha',u'k')
ctx.rule(u'Lowalpha',u'l')
ctx.rule(u'Lowalpha',u'm')
ctx.rule(u'Lowalpha',u'n')
ctx.rule(u'Lowalpha',u'o')
ctx.rule(u'Lowalpha',u'p')
ctx.rule(u'Lowalpha',u'q')
ctx.rule(u'Lowalpha',u'r')
ctx.rule(u'Lowalpha',u's')
ctx.rule(u'Lowalpha',u't')
ctx.rule(u'Lowalpha',u'u')
ctx.rule(u'Lowalpha',u'v')
ctx.rule(u'Lowalpha',u'w')
ctx.rule(u'Lowalpha',u'x')
ctx.rule(u'Lowalpha',u'y')
ctx.rule(u'Lowalpha',u'z')
ctx.rule(u'Hialpha',u'A')
ctx.rule(u'Hialpha',u'B')
ctx.rule(u'Hialpha',u'C')
ctx.rule(u'Hialpha',u'D')
ctx.rule(u'Hialpha',u'E')
ctx.rule(u'Hialpha',u'F')
ctx.rule(u'Hialpha',u'G')
ctx.rule(u'Hialpha',u'H')
ctx.rule(u'Hialpha',u'I')
ctx.rule(u'Hialpha',u'J')
ctx.rule(u'Hialpha',u'K')
ctx.rule(u'Hialpha',u'L')
ctx.rule(u'Hialpha',u'M')
ctx.rule(u'Hialpha',u'N')
ctx.rule(u'Hialpha',u'O')
ctx.rule(u'Hialpha',u'P')
ctx.rule(u'Hialpha',u'Q')
ctx.rule(u'Hialpha',u'R')
ctx.rule(u'Hialpha',u'S')
ctx.rule(u'Hialpha',u'T')
ctx.rule(u'Hialpha',u'U')
ctx.rule(u'Hialpha',u'V')
ctx.rule(u'Hialpha',u'W')
ctx.rule(u'Hialpha',u'X')
ctx.rule(u'Hialpha',u'Y')
ctx.rule(u'Hialpha',u'Z')
ctx.rule(u'Alpha',u'{Lowalpha}')
ctx.rule(u'Alpha',u'{Hialpha}')
ctx.rule(u'Digit',u'0')
ctx.rule(u'Digit',u'1')
ctx.rule(u'Digit',u'2')
ctx.rule(u'Digit',u'3')
ctx.rule(u'Digit',u'4')
ctx.rule(u'Digit',u'5')
ctx.rule(u'Digit',u'6')
ctx.rule(u'Digit',u'7')
ctx.rule(u'Digit',u'8')
ctx.rule(u'Digit',u'9')
ctx.rule(u'Safe',u'$')
ctx.rule(u'Safe',u'-')
ctx.rule(u'Safe',u'_')
ctx.rule(u'Safe',u'.')
ctx.rule(u'Safe',u'+')
ctx.rule(u'Extra',u'!')
ctx.rule(u'Extra',u'*')
ctx.rule(u'Extra',u"'")
ctx.rule(u'Extra',u'(')
ctx.rule(u'Extra',u')')
ctx.rule(u'Extra',u',')
ctx.rule(u'National',u'\\{')
ctx.rule(u'National',u'\\}')
ctx.rule(u'National',u'|')
ctx.rule(u'National',u'\\\\')
ctx.rule(u'National',u'^')
ctx.rule(u'National',u'~')
ctx.rule(u'National',u'[')
ctx.rule(u'National',u']')
ctx.rule(u'National',u'`')
ctx.rule(u'Punctuation',u'<')
ctx.rule(u'Punctuation',u'>')
ctx.rule(u'Punctuation',u'#')
ctx.rule(u'Punctuation',u'%')
ctx.rule(u'Punctuation',u'"')
ctx.rule(u'Reserved',u';')
ctx.rule(u'Reserved',u'/')
ctx.rule(u'Reserved',u'?')
ctx.rule(u'Reserved',u':')
ctx.rule(u'Reserved',u'@')
ctx.rule(u'Reserved',u'&')
ctx.rule(u'Reserved',u'=')
ctx.rule(u'Hex',u'{Digit}')
ctx.rule(u'Hex',u'A')
ctx.rule(u'Hex',u'B')
ctx.rule(u'Hex',u'C')
ctx.rule(u'Hex',u'D')
ctx.rule(u'Hex',u'E')
ctx.rule(u'Hex',u'F')
ctx.rule(u'Hex',u'a')
ctx.rule(u'Hex',u'b')
ctx.rule(u'Hex',u'c')
ctx.rule(u'Hex',u'd')
ctx.rule(u'Hex',u'e')
ctx.rule(u'Hex',u'f')
ctx.rule(u'Escape',u'%{Hex}{Hex}')
ctx.rule(u'Unreserved',u'{Alpha}')
ctx.rule(u'Unreserved',u'{Digit}')
ctx.rule(u'Unreserved',u'{Safe}')
ctx.rule(u'Unreserved',u'{Extra}')
ctx.rule(u'Uchar',u'{Unreserved}')
ctx.rule(u'Uchar',u'{Escape}')
ctx.rule(u'Xchar',u'{Unreserved}')
ctx.rule(u'Xchar',u'{Reserved}')
ctx.rule(u'Xchar',u'{Escape}')
ctx.rule(u'Digits',u'{Digit}')
ctx.rule(u'Digits',u'{Digit}{Digits}')
ctx.rule(u'Alpha',u'{NAUGHTYSTRING}')
ctx.rule(u'Digit',u'{NAUGHTYSTRING}')
ctx.rule(u'NAUGHTYSTRING',u'undefined')
ctx.rule(u'NAUGHTYSTRING',u'undef')
ctx.rule(u'NAUGHTYSTRING',u'null')
ctx.rule(u'NAUGHTYSTRING',u'NULL')
ctx.rule(u'NAUGHTYSTRING',u'(null)')
ctx.rule(u'NAUGHTYSTRING',u'nil')
ctx.rule(u'NAUGHTYSTRING',u'NIL')
ctx.rule(u'NAUGHTYSTRING',u'true')
ctx.rule(u'NAUGHTYSTRING',u'false')
ctx.rule(u'NAUGHTYSTRING',u'True')
ctx.rule(u'NAUGHTYSTRING',u'False')
ctx.rule(u'NAUGHTYSTRING',u'TRUE')
ctx.rule(u'NAUGHTYSTRING',u'FALSE')
ctx.rule(u'NAUGHTYSTRING',u'None')
ctx.rule(u'NAUGHTYSTRING',u'hasOwnProperty')
ctx.rule(u'NAUGHTYSTRING',u",./;'[]\\-=")
ctx.rule(u'NAUGHTYSTRING',u'<>?:"{}|_+')
ctx.rule(u'NAUGHTYSTRING',u'!@#$%^&*()`~')
ctx.rule(u'NAUGHTYSTRING',u'\x01\x02\x03\x04\x05\x06\x07\x08\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x7f')
ctx.rule(u'NAUGHTYSTRING',u'\x80\x81\x82\x83\x84\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f')
ctx.rule(u'NAUGHTYSTRING',u'\t\x0b\x0c \x85 \u1680\u2002\u2003\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u202f\u205f\u3000')
ctx.rule(u'NAUGHTYSTRING',u'\xad\u0600\u0601\u0602\u0603\u0604\u0605\u061c\u06dd\u070f\u180e\u200b\u200c\u200d\u200e\u200f\u202a\u202b\u202c\u202d\u202e\u2060\u2061\u2062\u2063\u2064\u2066\u2067\u2068\u2069\u206a\u206b\u206c\u206d\u206e\u206f\ufeff\ufff9\ufffa\ufffb\U000110bd\U0001bca0\U0001bca1\U0001bca2\U0001bca3\U0001d173\U0001d174\U0001d175\U0001d176\U0001d177\U0001d178\U0001d179\U0001d17a\U000e0001\U000e0020\U000e0021\U000e0022\U000e0023\U000e0024\U000e0025\U000e0026\U000e0027\U000e0028\U000e0029\U000e002a\U000e002b\U000e002c\U000e002d\U000e002e\U000e002f\U000e0030\U000e0031\U000e0032\U000e0033\U000e0034\U000e0035\U000e0036\U000e0037\U000e0038\U000e0039\U000e003a\U000e003b\U000e003c\U000e003d\U000e003e\U000e003f\U000e0040\U000e0041\U000e0042\U000e0043\U000e0044\U000e0045\U000e0046\U000e0047\U000e0048\U000e0049\U000e004a\U000e004b\U000e004c\U000e004d\U000e004e\U000e004f\U000e0050\U000e0051\U000e0052\U000e0053\U000e0054\U000e0055\U000e0056\U000e0057\U000e0058\U000e0059\U000e005a\U000e005b\U000e005c\U000e005d\U000e005e\U000e005f\U000e0060\U000e0061\U000e0062\U000e0063\U000e0064\U000e0065\U000e0066\U000e0067\U000e0068\U000e0069\U000e006a\U000e006b\U000e006c\U000e006d\U000e006e\U000e006f\U000e0070\U000e0071\U000e0072\U000e0073\U000e0074\U000e0075\U000e0076\U000e0077\U000e0078\U000e0079\U000e007a\U000e007b\U000e007c\U000e007d\U000e007e\U000e007f')
ctx.rule(u'NAUGHTYSTRING',u'\ufeff')
ctx.rule(u'NAUGHTYSTRING',u'\ufffe')
ctx.rule(u'NAUGHTYSTRING',u'\u03a9\u2248\xe7\u221a\u222b\u02dc\xb5\u2264\u2265\xf7')
ctx.rule(u'NAUGHTYSTRING',u'\xe5\xdf\u2202\u0192\xa9\u02d9\u2206\u02da\xac\u2026\xe6')
ctx.rule(u'NAUGHTYSTRING',u'\u0153\u2211\xb4\xae\u2020\xa5\xa8\u02c6\xf8\u03c0\u201c\u2018')
ctx.rule(u'NAUGHTYSTRING',u'\xa1\u2122\xa3\xa2\u221e\xa7\xb6\u2022\xaa\xba\u2013\u2260')
ctx.rule(u'NAUGHTYSTRING',u'\xb8\u02db\xc7\u25ca\u0131\u02dc\xc2\xaf\u02d8\xbf')
ctx.rule(u'NAUGHTYSTRING',u'\xc5\xcd\xce\xcf\u02dd\xd3\xd4\uf8ff\xd2\xda\xc6\u2603')
ctx.rule(u'NAUGHTYSTRING',u'\u0152\u201e\xb4\u2030\u02c7\xc1\xa8\u02c6\xd8\u220f\u201d\u2019')
ctx.rule(u'NAUGHTYSTRING',u'`\u2044\u20ac\u2039\u203a\ufb01\ufb02\u2021\xb0\xb7\u201a\u2014\xb1')
ctx.rule(u'NAUGHTYSTRING',u'\u215b\u215c\u215d\u215e')
ctx.rule(u'NAUGHTYSTRING',u'\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040a\u040b\u040c\u040d\u040e\u040f\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f')
ctx.rule(u'NAUGHTYSTRING',u'\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669')
ctx.rule(u'NAUGHTYSTRING',u'\u2070\u2074\u2075')
ctx.rule(u'NAUGHTYSTRING',u'\u2080\u2081\u2082')
ctx.rule(u'NAUGHTYSTRING',u'\u2070\u2074\u2075\u2080\u2081\u2082')
ctx.rule(u'NAUGHTYSTRING',u'\u0e14\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47 \u0e14\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47 \u0e14\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47\u0e47\u0e49\u0e49\u0e49\u0e49\u0e49\u0e47\u0e47\u0e47\u0e47')
ctx.rule(u'NAUGHTYSTRING',u'\'"\'')
ctx.rule(u'NAUGHTYSTRING',u'"\'\'\'\'"\'"')
ctx.rule(u'NAUGHTYSTRING',u'"\'"\'"\'\'\'\'"')
ctx.rule(u'NAUGHTYSTRING',u'\u7530\u4e2d\u3055\u3093\u306b\u3042\u3052\u3066\u4e0b\u3055\u3044')
ctx.rule(u'NAUGHTYSTRING',u'\u30d1\u30fc\u30c6\u30a3\u30fc\u3078\u884c\u304b\u306a\u3044\u304b')
ctx.rule(u'NAUGHTYSTRING',u'\u548c\u88fd\u6f22\u8a9e')
ctx.rule(u'NAUGHTYSTRING',u'\u90e8\u843d\u683c')
ctx.rule(u'NAUGHTYSTRING',u'\uc0ac\ud68c\uacfc\ud559\uc6d0 \uc5b4\ud559\uc5f0\uad6c\uc18c')
ctx.rule(u'NAUGHTYSTRING',u'\ucc26\ucc28\ub97c \ud0c0\uace0 \uc628 \ud3b2\uc2dc\ub9e8\uacfc \uc45b\ub2e4\ub9ac \ub620\ubc29\uac01\ud558')
ctx.rule(u'NAUGHTYSTRING',u'\u793e\u6703\u79d1\u5b78\u9662\u8a9e\u5b78\u7814\u7a76\u6240')
ctx.rule(u'NAUGHTYSTRING',u'\uc6b8\ub780\ubc14\ud1a0\ub974')
ctx.rule(u'NAUGHTYSTRING',u'\U0002070e\U00020731\U00020779\U00020c53\U00020c78\U00020c96\U00020ccf')
ctx.rule(u'NAUGHTYSTRING',u'\u023a')
ctx.rule(u'NAUGHTYSTRING',u'\u023e')
ctx.rule(u'NAUGHTYSTRING',u'\u30fd\u0f3c\u0e88\u0644\u035c\u0e88\u0f3d\uff89 \u30fd\u0f3c\u0e88\u0644\u035c\u0e88\u0f3d\uff89 ')
ctx.rule(u'NAUGHTYSTRING',u'(\uff61\u25d5 \u2200 \u25d5\uff61)')
ctx.rule(u'NAUGHTYSTRING',u'\uff40\uff68(\xb4\u2200\uff40\u2229')
ctx.rule(u'NAUGHTYSTRING',u'__\uff9b(,_,*)')
ctx.rule(u'NAUGHTYSTRING',u'\u30fb(\uffe3\u2200\uffe3)\u30fb:*:')
ctx.rule(u'NAUGHTYSTRING',u'\uff9f\uff65\u273f\u30fe\u2572(\uff61\u25d5\u203f\u25d5\uff61)\u2571\u273f\uff65\uff9f')
ctx.rule(u'NAUGHTYSTRING',u',\u3002\u30fb:*:\u30fb\u309c\u2019( \u263b \u03c9 \u263b )\u3002\u30fb:*:\u30fb\u309c\u2019')
ctx.rule(u'NAUGHTYSTRING',u'(\u256f\xb0\u25a1\xb0\uff09\u256f\ufe35 \u253b\u2501\u253b)')
ctx.rule(u'NAUGHTYSTRING',u'(\uff89\u0ca5\u76ca\u0ca5\uff09\uff89\ufeff \u253b\u2501\u253b')
ctx.rule(u'NAUGHTYSTRING',u'\u252c\u2500\u252c\u30ce( \xba _ \xba\u30ce)')
ctx.rule(u'NAUGHTYSTRING',u'( \u0361\xb0 \u035c\u0296 \u0361\xb0)')
ctx.rule(u'NAUGHTYSTRING',u'\U0001f60d')
ctx.rule(u'NAUGHTYSTRING',u'\U0001f469\U0001f3fd')
ctx.rule(u'NAUGHTYSTRING',u'\U0001f47e \U0001f647 \U0001f481 \U0001f645 \U0001f646 \U0001f64b \U0001f64e \U0001f64d')
ctx.rule(u'NAUGHTYSTRING',u'\U0001f435 \U0001f648 \U0001f649 \U0001f64a')
ctx.rule(u'NAUGHTYSTRING',u'\u2764\ufe0f \U0001f494 \U0001f48c \U0001f495 \U0001f49e \U0001f493 \U0001f497 \U0001f496 \U0001f498 \U0001f49d \U0001f49f \U0001f49c \U0001f49b \U0001f49a \U0001f499')
ctx.rule(u'NAUGHTYSTRING',u'\u270b\U0001f3ff \U0001f4aa\U0001f3ff \U0001f450\U0001f3ff \U0001f64c\U0001f3ff \U0001f44f\U0001f3ff \U0001f64f\U0001f3ff')
ctx.rule(u'NAUGHTYSTRING',u'\U0001f6be \U0001f192 \U0001f193 \U0001f195 \U0001f196 \U0001f197 \U0001f199 \U0001f3e7')
ctx.rule(u'NAUGHTYSTRING',u'0\ufe0f\u20e3 1\ufe0f\u20e3 2\ufe0f\u20e3 3\ufe0f\u20e3 4\ufe0f\u20e3 5\ufe0f\u20e3 6\ufe0f\u20e3 7\ufe0f\u20e3 8\ufe0f\u20e3 9\ufe0f\u20e3 \U0001f51f')
ctx.rule(u'NAUGHTYSTRING',u'\U0001f1fa\U0001f1f8\U0001f1f7\U0001f1fa\U0001f1f8 \U0001f1e6\U0001f1eb\U0001f1e6\U0001f1f2\U0001f1f8')
ctx.rule(u'NAUGHTYSTRING',u'\U0001f1fa\U0001f1f8\U0001f1f7\U0001f1fa\U0001f1f8\U0001f1e6\U0001f1eb\U0001f1e6\U0001f1f2')
ctx.rule(u'NAUGHTYSTRING',u'\U0001f1fa\U0001f1f8\U0001f1f7\U0001f1fa\U0001f1f8\U0001f1e6')
ctx.rule(u'NAUGHTYSTRING',u'\uff11\uff12\uff13')
ctx.rule(u'NAUGHTYSTRING',u'\u0661\u0662\u0663')
ctx.rule(u'NAUGHTYSTRING',u'\u062b\u0645 \u0646\u0641\u0633 \u0633\u0642\u0637\u062a \u0648\u0628\u0627\u0644\u062a\u062d\u062f\u064a\u062f\u060c, \u062c\u0632\u064a\u0631\u062a\u064a \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0623\u0646 \u062f\u0646\u0648. \u0625\u0630 \u0647\u0646\u0627\u061f \u0627\u0644\u0633\u062a\u0627\u0631 \u0648\u062a\u0646\u0635\u064a\u0628 \u0643\u0627\u0646. \u0623\u0647\u0651\u0644 \u0627\u064a\u0637\u0627\u0644\u064a\u0627\u060c \u0628\u0631\u064a\u0637\u0627\u0646\u064a\u0627-\u0641\u0631\u0646\u0633\u0627 \u0642\u062f \u0623\u062e\u0630. \u0633\u0644\u064a\u0645\u0627\u0646\u060c \u0625\u062a\u0641\u0627\u0642\u064a\u0629 \u0628\u064a\u0646 \u0645\u0627, \u064a\u0630\u0643\u0631 \u0627\u0644\u062d\u062f\u0648\u062f \u0623\u064a \u0628\u0639\u062f, \u0645\u0639\u0627\u0645\u0644\u0629 \u0628\u0648\u0644\u0646\u062f\u0627\u060c \u0627\u0644\u0625\u0637\u0644\u0627\u0642 \u0639\u0644 \u0625\u064a\u0648.')
ctx.rule(u'NAUGHTYSTRING',u'\u05d1\u05b0\u05bc\u05e8\u05b5\u05d0\u05e9\u05b4\u05c1\u05d9\u05ea, \u05d1\u05b8\u05bc\u05e8\u05b8\u05d0 \u05d0\u05b1\u05dc\u05b9\u05d4\u05b4\u05d9\u05dd, \u05d0\u05b5\u05ea \u05d4\u05b7\u05e9\u05b8\u05bc\u05c1\u05de\u05b7\u05d9\u05b4\u05dd, \u05d5\u05b0\u05d0\u05b5\u05ea \u05d4\u05b8\u05d0\u05b8\u05e8\u05b6\u05e5')
ctx.rule(u'NAUGHTYSTRING',u'\u05d4\u05b8\u05d9\u05b0\u05ea\u05b8\u05d4test\u0627\u0644\u0635\u0641\u062d\u0627\u062a \u0627\u0644\u062a\u0651\u062d\u0648\u0644')
ctx.rule(u'NAUGHTYSTRING',u'\ufdfd')
ctx.rule(u'NAUGHTYSTRING',u'\ufdfa')
ctx.rule(u'NAUGHTYSTRING',u'\u0645\u064f\u0646\u064e\u0627\u0642\u064e\u0634\u064e\u0629\u064f \u0633\u064f\u0628\u064f\u0644\u0650 \u0627\u0650\u0633\u0652\u062a\u0650\u062e\u0652\u062f\u064e\u0627\u0645\u0650 \u0627\u0644\u0644\u064f\u0651\u063a\u064e\u0629\u0650 \u0641\u0650\u064a \u0627\u0644\u0646\u064f\u0651\u0638\u064f\u0645\u0650 \u0627\u0644\u0652\u0642\u064e\u0627\u0626\u0650\u0645\u064e\u0629\u0650 \u0648\u064e\u0641\u0650\u064a\u0645 \u064a\u064e\u062e\u064f\u0635\u064e\u0651 \u0627\u0644\u062a\u064e\u0651\u0637\u0652\u0628\u0650\u064a\u0642\u064e\u0627\u062a\u064f \u0627\u0644\u0652\u062d\u0627\u0633\u064f\u0648\u0628\u0650\u064a\u064e\u0651\u0629\u064f\u060c ')
ctx.rule(u'NAUGHTYSTRING',u'\u200b')
ctx.rule(u'NAUGHTYSTRING',u'\u1680')
ctx.rule(u'NAUGHTYSTRING',u'\u180e')
ctx.rule(u'NAUGHTYSTRING',u'\u3000')
ctx.rule(u'NAUGHTYSTRING',u'\ufeff')
ctx.rule(u'NAUGHTYSTRING',u'\u2423')
ctx.rule(u'NAUGHTYSTRING',u'\u2422')
ctx.rule(u'NAUGHTYSTRING',u'\u2421')
ctx.rule(u'NAUGHTYSTRING',u'\u202a\u202atest\u202a')
ctx.rule(u'NAUGHTYSTRING',u'\u202btest\u202b')
ctx.rule(u'NAUGHTYSTRING',u'\u2029test\u2029')
ctx.rule(u'NAUGHTYSTRING',u'test\u2060test\u202b')
ctx.rule(u'NAUGHTYSTRING',u'\u2066test\u2067')
ctx.rule(u'NAUGHTYSTRING',u'\u1e70\u033a\u033a\u0315o\u035e \u0337i\u0332\u032c\u0347\u032a\u0359n\u031d\u0317\u0355v\u031f\u031c\u0318\u0326\u035fo\u0336\u0319\u0330\u0320k\xe8\u035a\u032e\u033a\u032a\u0339\u0331\u0324 \u0316t\u031d\u0355\u0333\u0323\u033b\u032a\u035eh\u033c\u0353\u0332\u0326\u0333\u0318\u0332e\u0347\u0323\u0330\u0326\u032c\u034e \u0322\u033c\u033b\u0331\u0318h\u035a\u034e\u0359\u031c\u0323\u0332\u0345i\u0326\u0332\u0323\u0330\u0324v\u033b\u034de\u033a\u032d\u0333\u032a\u0330-m\u0322i\u0345n\u0316\u033a\u031e\u0332\u032f\u0330d\u0335\u033c\u031f\u0359\u0329\u033c\u0318\u0333 \u031e\u0325\u0331\u0333\u032dr\u031b\u0317\u0318e\u0359p\u0360r\u033c\u031e\u033b\u032d\u0317e\u033a\u0320\u0323\u035fs\u0318\u0347\u0333\u034d\u031d\u0349e\u0349\u0325\u032f\u031e\u0332\u035a\u032c\u035c\u01f9\u032c\u034e\u034e\u031f\u0316\u0347\u0324t\u034d\u032c\u0324\u0353\u033c\u032d\u0358\u0345i\u032a\u0331n\u0360g\u0334\u0349 \u034f\u0349\u0345c\u032c\u031fh\u0361a\u032b\u033b\u032f\u0358o\u032b\u031f\u0316\u034d\u0319\u031d\u0349s\u0317\u0326\u0332.\u0328\u0339\u0348\u0323')
ctx.rule(u'NAUGHTYSTRING',u'\u0321\u0353\u031e\u0345I\u0317\u0318\u0326\u035dn\u0347\u0347\u0359v\u032e\u032bok\u0332\u032b\u0319\u0348i\u0316\u0359\u032d\u0339\u0320\u031en\u0321\u033b\u032e\u0323\u033ag\u0332\u0348\u0359\u032d\u0359\u032c\u034e \u0330t\u0354\u0326h\u031e\u0332e\u0322\u0324 \u034d\u032c\u0332\u0356f\u0334\u0318\u0355\u0323\xe8\u0356\u1eb9\u0325\u0329l\u0356\u0354\u035ai\u0353\u035a\u0326\u0360n\u0356\u034d\u0317\u0353\u0333\u032eg\u034d \u0328o\u035a\u032a\u0361f\u0318\u0323\u032c \u0316\u0318\u0356\u031f\u0359\u032ec\u0489\u0354\u032b\u0356\u0353\u0347\u0356\u0345h\u0335\u0324\u0323\u035a\u0354\xe1\u0317\u033c\u0355\u0345o\u033c\u0323\u0325s\u0331\u0348\u033a\u0316\u0326\u033b\u0362.\u031b\u0316\u031e\u0320\u032b\u0330')
ctx.rule(u'NAUGHTYSTRING',u'\u0317\u033a\u0356\u0339\u032f\u0353\u1e6e\u0324\u034d\u0325\u0347\u0348h\u0332\u0301e\u034f\u0353\u033c\u0317\u0319\u033c\u0323\u0354 \u0347\u031c\u0331\u0320\u0353\u034d\u0345N\u0355\u0360e\u0317\u0331z\u0318\u031d\u031c\u033a\u0359p\u0324\u033a\u0339\u034d\u032f\u035ae\u0320\u033b\u0320\u035cr\u0328\u0324\u034d\u033a\u0316\u0354\u0316\u0316d\u0320\u031f\u032d\u032c\u031d\u035fi\u0326\u0356\u0329\u0353\u0354\u0324a\u0320\u0317\u032c\u0349\u0319n\u035a\u035c \u033b\u031e\u0330\u035a\u0345h\u0335\u0349i\u0333\u031ev\u0322\u0347\u1e19\u034e\u035f-\u0489\u032d\u0329\u033c\u0354m\u0324\u032d\u032bi\u0355\u0347\u031d\u0326n\u0317\u0359\u1e0d\u031f \u032f\u0332\u0355\u035e\u01eb\u031f\u032f\u0330\u0332\u0359\u033b\u031df \u032a\u0330\u0330\u0317\u0316\u032d\u0318\u0358c\u0326\u034d\u0332\u031e\u034d\u0329\u0319\u1e25\u035aa\u032e\u034e\u031f\u0319\u035c\u01a1\u0329\u0339\u034es\u0324.\u031d\u031d \u0489Z\u0321\u0316\u031c\u0356\u0330\u0323\u0349\u031ca\u0356\u0330\u0359\u032c\u0361l\u0332\u032b\u0333\u034d\u0329g\u0321\u031f\u033c\u0331\u035a\u031e\u032c\u0345o\u0317\u035c.\u031f')
ctx.rule(u'NAUGHTYSTRING',u'\u0326H\u032c\u0324\u0317\u0324\u035de\u035c \u031c\u0325\u031d\u033b\u034d\u031f\u0301w\u0315h\u0316\u032f\u0353o\u031d\u0359\u0316\u034e\u0331\u032e \u0489\u033a\u0319\u031e\u031f\u0348W\u0337\u033c\u032da\u033a\u032a\u034d\u012f\u0348\u0355\u032d\u0359\u032f\u031ct\u0336\u033c\u032es\u0318\u0359\u0356\u0315 \u0320\u032b\u0320B\u033b\u034d\u0359\u0349\u0333\u0345e\u0335h\u0335\u032c\u0347\u032b\u0359i\u0339\u0353\u0333\u0333\u032e\u034e\u032b\u0315n\u035fd\u0334\u032a\u031c\u0316 \u0330\u0349\u0329\u0347\u0359\u0332\u035e\u0345T\u0356\u033c\u0353\u032a\u0362h\u034f\u0353\u032e\u033be\u032c\u031d\u031f\u0345 \u0324\u0339\u031dW\u0359\u031e\u031d\u0354\u0347\u035d\u0345a\u034f\u0353\u0354\u0339\u033c\u0323l\u0334\u0354\u0330\u0324\u031f\u0354\u1e3d\u032b.\u0355')
ctx.rule(u'NAUGHTYSTRING',u'Z\u032e\u031e\u0320\u0359\u0354\u0345\u1e00\u0317\u031e\u0348\u033b\u0317\u1e36\u0359\u034e\u032f\u0339\u031e\u0353G\u033bO\u032d\u0317\u032e')
ctx.rule(u'NAUGHTYSTRING',u"\u02d9\u0250nb\u1d09l\u0250 \u0250u\u0183\u0250\u026f \u01dd\u0279olop \u0287\u01dd \u01dd\u0279oq\u0250l \u0287n \u0287unp\u1d09p\u1d09\u0254u\u1d09 \u0279od\u026f\u01dd\u0287 po\u026fsn\u1d09\u01dd op p\u01dds '\u0287\u1d09l\u01dd \u0183u\u1d09\u0254s\u1d09d\u1d09p\u0250 \u0279n\u0287\u01dd\u0287\u0254\u01ddsuo\u0254 '\u0287\u01dd\u026f\u0250 \u0287\u1d09s \u0279olop \u026fnsd\u1d09 \u026f\u01dd\u0279o\u02e5")
ctx.rule(u'NAUGHTYSTRING',u'00\u02d9\u0196$-')
ctx.rule(u'NAUGHTYSTRING',u'\uff34\uff48\uff45 \uff51\uff55\uff49\uff43\uff4b \uff42\uff52\uff4f\uff57\uff4e \uff46\uff4f\uff58 \uff4a\uff55\uff4d\uff50\uff53 \uff4f\uff56\uff45\uff52 \uff54\uff48\uff45 \uff4c\uff41\uff5a\uff59 \uff44\uff4f\uff47')
ctx.rule(u'NAUGHTYSTRING',u'\U0001d413\U0001d421\U0001d41e \U0001d42a\U0001d42e\U0001d422\U0001d41c\U0001d424 \U0001d41b\U0001d42b\U0001d428\U0001d430\U0001d427 \U0001d41f\U0001d428\U0001d431 \U0001d423\U0001d42e\U0001d426\U0001d429\U0001d42c \U0001d428\U0001d42f\U0001d41e\U0001d42b \U0001d42d\U0001d421\U0001d41e \U0001d425\U0001d41a\U0001d433\U0001d432 \U0001d41d\U0001d428\U0001d420')
ctx.rule(u'NAUGHTYSTRING',u'\U0001d57f\U0001d58d\U0001d58a \U0001d596\U0001d59a\U0001d58e\U0001d588\U0001d590 \U0001d587\U0001d597\U0001d594\U0001d59c\U0001d593 \U0001d58b\U0001d594\U0001d59d \U0001d58f\U0001d59a\U0001d592\U0001d595\U0001d598 \U0001d594\U0001d59b\U0001d58a\U0001d597 \U0001d599\U0001d58d\U0001d58a \U0001d591\U0001d586\U0001d59f\U0001d59e \U0001d589\U0001d594\U0001d58c')
ctx.rule(u'NAUGHTYSTRING',u'\U0001d47b\U0001d489\U0001d486 \U0001d492\U0001d496\U0001d48a\U0001d484\U0001d48c \U0001d483\U0001d493\U0001d490\U0001d498\U0001d48f \U0001d487\U0001d490\U0001d499 \U0001d48b\U0001d496\U0001d48e\U0001d491\U0001d494 \U0001d490\U0001d497\U0001d486\U0001d493 \U0001d495\U0001d489\U0001d486 \U0001d48d\U0001d482\U0001d49b\U0001d49a \U0001d485\U0001d490\U0001d488')
ctx.rule(u'NAUGHTYSTRING',u'\U0001d4e3\U0001d4f1\U0001d4ee \U0001d4fa\U0001d4fe\U0001d4f2\U0001d4ec\U0001d4f4 \U0001d4eb\U0001d4fb\U0001d4f8\U0001d500\U0001d4f7 \U0001d4ef\U0001d4f8\U0001d501 \U0001d4f3\U0001d4fe\U0001d4f6\U0001d4f9\U0001d4fc \U0001d4f8\U0001d4ff\U0001d4ee\U0001d4fb \U0001d4fd\U0001d4f1\U0001d4ee \U0001d4f5\U0001d4ea\U0001d503\U0001d502 \U0001d4ed\U0001d4f8\U0001d4f0')
ctx.rule(u'NAUGHTYSTRING',u'\U0001d54b\U0001d559\U0001d556 \U0001d562\U0001d566\U0001d55a\U0001d554\U0001d55c \U0001d553\U0001d563\U0001d560\U0001d568\U0001d55f \U0001d557\U0001d560\U0001d569 \U0001d55b\U0001d566\U0001d55e\U0001d561\U0001d564 \U0001d560\U0001d567\U0001d556\U0001d563 \U0001d565\U0001d559\U0001d556 \U0001d55d\U0001d552\U0001d56b\U0001d56a \U0001d555\U0001d560\U0001d558')
ctx.rule(u'NAUGHTYSTRING',u'\U0001d683\U0001d691\U0001d68e \U0001d69a\U0001d69e\U0001d692\U0001d68c\U0001d694 \U0001d68b\U0001d69b\U0001d698\U0001d6a0\U0001d697 \U0001d68f\U0001d698\U0001d6a1 \U0001d693\U0001d69e\U0001d696\U0001d699\U0001d69c \U0001d698\U0001d69f\U0001d68e\U0001d69b \U0001d69d\U0001d691\U0001d68e \U0001d695\U0001d68a\U0001d6a3\U0001d6a2 \U0001d68d\U0001d698\U0001d690')
ctx.rule(u'NAUGHTYSTRING',u'\u24af\u24a3\u24a0 \u24ac\u24b0\u24a4\u249e\u24a6 \u249d\u24ad\u24aa\u24b2\u24a9 \u24a1\u24aa\u24b3 \u24a5\u24b0\u24a8\u24ab\u24ae \u24aa\u24b1\u24a0\u24ad \u24af\u24a3\u24a0 \u24a7\u249c\u24b5\u24b4 \u249f\u24aa\u24a2')
ctx.rule(u'NAUGHTYSTRING',u' ')
ctx.rule(u'NAUGHTYSTRING',u'%')
ctx.rule(u'NAUGHTYSTRING',u'_')
ctx.rule(u'NAUGHTYSTRING',u'-')
ctx.rule(u'NAUGHTYSTRING',u'--')
ctx.rule(u'NAUGHTYSTRING',u'--version')
ctx.rule(u'NAUGHTYSTRING',u'--help')
ctx.rule(u'NAUGHTYSTRING',u'$USER')
ctx.rule(u'NAUGHTYSTRING',u'/dev/null; touch /tmp/blns.fail ; echo')
ctx.rule(u'NAUGHTYSTRING',u'`touch /tmp/blns.fail`')
ctx.rule(u'NAUGHTYSTRING',u'$(touch /tmp/blns.fail)')
ctx.rule(u'NAUGHTYSTRING',u'@\\{[system "touch /tmp/blns.fail"]\\}')
ctx.rule(u'NAUGHTYSTRING',u'eval("puts \'hello world\'")')
ctx.rule(u'NAUGHTYSTRING',u'System("ls -al /")')
ctx.rule(u'NAUGHTYSTRING',u'`ls -al /`')
ctx.rule(u'NAUGHTYSTRING',u'Kernel.exec("ls -al /")')
ctx.rule(u'NAUGHTYSTRING',u'Kernel.exit(1)')
ctx.rule(u'NAUGHTYSTRING',u"%x('ls -al /')")
ctx.rule(u'NAUGHTYSTRING',u'$HOME')
ctx.rule(u'NAUGHTYSTRING',u"$ENV\\{'HOME'\\}")
ctx.rule(u'NAUGHTYSTRING',u'%d')
ctx.rule(u'NAUGHTYSTRING',u'%s')
ctx.rule(u'NAUGHTYSTRING',u'\\{0\\}')
ctx.rule(u'NAUGHTYSTRING',u'%*.*s')
ctx.rule(u'NAUGHTYSTRING',u'File:///')
ctx.rule(u'NAUGHTYSTRING',u"<<< %s(un='%s') = %u")
ctx.rule(u'NAUGHTYSTRING',u'+++ATH0')
ctx.rule(u'NAUGHTYSTRING',u'CON')
ctx.rule(u'NAUGHTYSTRING',u'PRN')
ctx.rule(u'NAUGHTYSTRING',u'AUX')
ctx.rule(u'NAUGHTYSTRING',u'CLOCK$')
ctx.rule(u'NAUGHTYSTRING',u'NUL')
ctx.rule(u'NAUGHTYSTRING',u'A:')
ctx.rule(u'NAUGHTYSTRING',u'ZZ:')
ctx.rule(u'NAUGHTYSTRING',u'COM1')
ctx.rule(u'NAUGHTYSTRING',u'LPT1')
ctx.rule(u'NAUGHTYSTRING',u'COM2')
ctx.rule(u'NAUGHTYSTRING',u'DCC SEND STARTKEYLOGGER 0 0 0')
ctx.rule(u'NAUGHTYSTRING',u'http://www.cum.qc.ca/')
ctx.rule(u'NAUGHTYSTRING',u'Roses are \x1b[0;31mred\x1b[0m, violets are \x1b[0;34mblue. Hope you enjoy terminal hue')
ctx.rule(u'NAUGHTYSTRING',u'But now...\x1b[20Cfor my greatest trick...\x1b[8m')
ctx.rule(u'NAUGHTYSTRING',u'The quic\x08\x08\x08\x08\x08\x08k brown fo\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07x... [Beeeep]')
ctx.rule(u'NAUGHTYSTRING',u'Power\u0644\u064f\u0644\u064f\u0635\u0651\u0628\u064f\u0644\u064f\u0644\u0635\u0651\u0628\u064f\u0631\u0631\u064b \u0963 \u0963h \u0963 \u0963\u5197')
ctx.rule(u'NAUGHTYSTRING',u'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ')
