Bots Home
|
Create an App
antispam_debug
Author:
gregory_handsome
Description
Source Code
Launch Bot
Current Users
Created by:
Gregory_Handsome
// ANTI SPAM let whiteList = []; //white list for grey users (filled with those who sent 1 message already) let linksBlackList = [ 'sexyboys', 'sexboys', 'hornyboy', 'cumboys', 'c2cboys', 'c2cplay', 'slaveboys', 'daddyboys', 'daddysboys', 'jerkoff', 'prvt', 'hiddencam', 'cumshow', 'assplay', 'prvtshow', 'slutnearby', 'girllove69', 'daddysgirl', 'sexgirls', 'sexmen', 'gayfind']; //keywords for blocking messages let wordsBlackList = []; //keywords for blocking messages let blockedList = []; cb.settings_choices = [{ name: 'blockfirstmessage', type: 'choice', label: 'Block first grey message? (protects from "See my bio" bots)', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes' }, { name: 'sendblocked', type: 'choice', label: 'Send blocked messages to broadcaster?', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes' }, { name: 'enablefornongreys', type: 'choice', label: 'Enable bot for not grey users?', choice1: 'Yes', choice2: 'No', defaultValue: 'No' }, { name: 'linksblacklist', type: 'str', minLength: 1, maxLength: 250, label: "Links blacklist", required: false }, { name: 'wordsblacklist', type: 'str', minLength: 1, maxLength: 250, label: "Words blacklist", defaultValue: 'snapchat snap c2c skype lookatmybio', required: false }]; cb.onEnter(function (user) { let username = user['user']; if (!user['has_tokens'] && !whiteList.includes(username)) { sendWelcomeAntiSpamMessage(username); } }); cb.onMessage(function (msg) { if (antiSpamCheck(msg)) { msg['X-Spam'] = true; return msg; } if (msg['m'].match(/\/getalphabet/i) && (msg['user'] == cb.room_slug || msg['is_mod'] == true)) { sendAlphabet(); msg['X-Spam'] = true; } if (msg['m'].match(/\/getblocked/i) && (msg['user'] == cb.room_slug || msg['is_mod'] == true)) { sendBlockedList(); msg['X-Spam'] = true; } if(msg['m'].split(' ')[0].match(/\/gen/i)) { sendToAll(generateShit(msg['m'].slice(5))); msg['X-Spam'] = true; } return msg; }); function sendFirstMessageHidden(username) { let toSend = "YOUR FIRST MESSAGE WAS HIDDEN FOR ENTIRE ROOM DUE TO ANTI SPAM REASONS (just the first one, don't worry) \n You're free to chat now, " + username; sendToUser(toSend, username, '#ff3636') } function sendBlockNotification(username) { let toSend = "YOUR MESSAGE WAS BLOCKED AS SPAM. If you're sure it's not spam - try paraphrase it using other words and send one more time"; sendToUser(toSend, username, '#ff3636') } function sendWelcomeAntiSpamMessage(username) { let toSend = "Hey there, " + username + ". I have anti-spam protection. Your first message will be hidden for chat. The thing is that bots come here and send only one message then they leave. So don't worry, you can chat free right since you send second message. Welcome :P"; sendToUser(toSend, username); } function sendBlockedMessageToBroadcaster(msg) { let toSend = "BLOCKED::" + msg['user'] + ": " + msg['m']; sendToBroadcaster(toSend); } function sendAlphabet() { let toSend = ''; for (let letter in spamAlphabet) { toSend += letter + ': '; for (let i in spamAlphabet[letter]) { toSend += spamAlphabet[letter][i] + ' '; } toSend += '\n' } sendToBroadcaster(toSend); } function sendBlockedList() { let toSend = ''; for (let message in blockedList) { toSend += blockedList[message] + '\n'; } sendToBroadcaster(toSend); } // Common function sendToBroadcaster(message) { cb.sendNotice(message, cb.room_slug); } function sendToUser(message, username, color) { if (color != undefined) { cb.sendNotice(message, username, '', color, 'bold'); } else { cb.sendNotice(message, username); } } function sendToAll(message, color) { if (color != undefined) { cb.sendNotice(message, '', '', color, 'bold'); } else { cb.sendNotice(message, ''); } } const spamEncodedAlphabet = '{"97":[[55349,56606],945,65345,7424,592,97,7491,9424,479,261,229,8371,940,65313,8704,65,9398,196,570,197,[55349,56320],[55349,56346],[55349,56372],[55349,56398],[55349,56424],[55349,56450],[55349,56476],[55349,56502],[55349,56528],[55349,56554],[55349,56580],[55349,56606],[55349,56632],[55349,56658],[55349,56684],[55349,56710],[55349,56736],[55349,56762],[55349,56788],[55349,56814],[55349,56840],[55349,56866],[55349,56892],[55349,56918],[55349,56944],[55349,56970]],"98":[[55349,56607],65346,665,98,7495,9425,3666,4262,622,4330,66,1074,223,3647,20035,1165,946,65314,9399,7470,8492,[55349,56321],[55349,56347],[55349,56373],[55349,56399],[55349,56425],[55349,56451],[55349,56477],[55349,56503],[55349,56529],[55349,56555],[55349,56581],[55349,56607],[55349,56633],[55349,56659],[55349,56685],[55349,56711],[55349,56737],[55349,56763],[55349,56789],[55349,56815],[55349,56841],[55349,56867],[55349,56893],[55349,56919],[55349,56945],[55349,56971]],"99":[[55349,56608],7580,65347,99,9426,962,162,8373,40,91,231,268,60,8451,262,9400,8493,8450,65315,67,199,[55349,56322],[55349,56348],[55349,56374],[55349,56400],[55349,56426],[55349,56452],[55349,56478],[55349,56504],[55349,56530],[55349,56556],[55349,56582],[55349,56608],[55349,56634],[55349,56660],[55349,56686],[55349,56712],[55349,56738],[55349,56764],[55349,56790],[55349,56816],[55349,56842],[55349,56868],[55349,56894],[55349,56920],[55349,56946],[55349,56972]],"100":[[55349,56609],65348,7429,100,7496,9427,1283,68,8706,208,272,1386,270,65316,273,9401,7472,8517,8518,[55349,56323],[55349,56349],[55349,56375],[55349,56401],[55349,56427],[55349,56453],[55349,56479],[55349,56505],[55349,56531],[55349,56557],[55349,56583],[55349,56609],[55349,56635],[55349,56661],[55349,56687],[55349,56713],[55349,56739],[55349,56765],[55349,56791],[55349,56817],[55349,56843],[55349,56869],[55349,56895],[55349,56921],[55349,56947],[55349,56973]],"101":[[55349,56610],65349,7431,477,101,600,8337,7497,1108,1213,603,275,931,234,69,949,65317,8364,9402,7864,7473,200,400,941,8455,8494,8495,8496,8512,8519,[55349,56324],[55349,56350],[55349,56376],[55349,56402],[55349,56428],[55349,56454],[55349,56480],[55349,56506],[55349,56532],[55349,56558],[55349,56584],[55349,56610],[55349,56636],[55349,56662],[55349,56688],[55349,56714],[55349,56740],[55349,56766],[55349,56792],[55349,56818],[55349,56844],[55349,56870],[55349,56896],[55349,56922],[55349,56948],[55349,56974]],"102":[[55349,56611],65318,65350,42800,102,7584,9429,358,989,70,402,8355,1171,401,9403,8457,8497,[55349,56325],[55349,56351],[55349,56377],[55349,56403],[55349,56429],[55349,56455],[55349,56481],[55349,56507],[55349,56533],[55349,56559],[55349,56585],[55349,56611],[55349,56637],[55349,56663],[55349,56689],[55349,56715],[55349,56741],[55349,56767],[55349,56793],[55349,56819],[55349,56845],[55349,56871],[55349,56897],[55349,56923],[55349,56949],[55349,56975]],"103":[[55349,56612],103,65351,610,7501,9430,608,71,8370,1409,484,286,65319,7475,9404,403,8458,[55349,56326],[55349,56352],[55349,56378],[55349,56404],[55349,56430],[55349,56456],[55349,56482],[55349,56508],[55349,56534],[55349,56560],[55349,56586],[55349,56612],[55349,56638],[55349,56664],[55349,56690],[55349,56716],[55349,56742],[55349,56768],[55349,56794],[55349,56820],[55349,56846],[55349,56872],[55349,56898],[55349,56924],[55349,56950],[55349,56976]],"104":[[55349,56613],65352,668,104,688,9431,1106,1291,905,1085,11367,12435,8461,292,65320,9405,72,7476,502,8459,8460,8462,8463,[55349,56327],[55349,56353],[55349,56379],[55349,56405],[55349,56431],[55349,56457],[55349,56483],[55349,56509],[55349,56535],[55349,56561],[55349,56587],[55349,56613],[55349,56639],[55349,56665],[55349,56691],[55349,56717],[55349,56743],[55349,56769],[55349,56795],[55349,56821],[55349,56847],[55349,56873],[55349,56899],[55349,56925],[55349,56951],[55349,56977]],"105":[[55349,56614],65353,618,305,105,8305,9432,953,616,73,322,20008,7588,407,8225,65321,9406,7477,204,303,943,8489,8520,[55349,56328],[55349,56354],[55349,56380],[55349,56406],[55349,56432],[55349,56458],[55349,56484],[55349,56510],[55349,56536],[55349,56562],[55349,56588],[55349,56614],[55349,56640],[55349,56666],[55349,56692],[55349,56718],[55349,56744],[55349,56770],[55349,56796],[55349,56822],[55349,56848],[55349,56874],[55349,56900],[55349,56926],[55349,56952],[55349,56978]],"106":[[55349,56615],65322,65354,7434,106,690,9433,669,74,1112,308,4273,9407,8464,8465,8521,[55349,56329],[55349,56355],[55349,56381],[55349,56407],[55349,56433],[55349,56459],[55349,56485],[55349,56511],[55349,56537],[55349,56563],[55349,56589],[55349,56615],[55349,56641],[55349,56667],[55349,56693],[55349,56719],[55349,56745],[55349,56771],[55349,56797],[55349,56823],[55349,56849],[55349,56875],[55349,56901],[55349,56927],[55349,56953],[55349,56979]],"107":[1082,65355,7435,670,107,7503,9434,409,1220,75,8365,1180,1183,9408,65323,311,1036,7479,[55349,56330],[55349,56356],[55349,56382],[55349,56408],[55349,56434],[55349,56460],[55349,56486],[55349,56512],[55349,56538],[55349,56564],[55349,56590],[55349,56616],[55349,56642],[55349,56668],[55349,56694],[55349,56720],[55349,56746],[55349,56772],[55349,56798],[55349,56824],[55349,56850],[55349,56876],[55349,56902],[55349,56928],[55349,56954],[55349,56980]],"108":[[55349,56617],65356,621,645,406,8467,11360,12581,65434,65324,321,741,76,8515,7480,9409,42824,315,8452,8466,8522,[55349,56331],[55349,56357],[55349,56383],[55349,56409],[55349,56435],[55349,56461],[55349,56487],[55349,56513],[55349,56539],[55349,56565],[55349,56591],[55349,56617],[55349,56643],[55349,56669],[55349,56695],[55349,56721],[55349,56747],[55349,56773],[55349,56799],[55349,56825],[55349,56851],[55349,56877],[55349,56903],[55349,56929],[55349,56955],[55349,56981]],"109":[[55349,56618],9410,65357,7437,109,7504,9436,3667,625,653,5047,77,1084,8357,1019,7481,11374,8499,[55349,56332],[55349,56358],[55349,56384],[55349,56410],[55349,56436],[55349,56462],[55349,56488],[55349,56514],[55349,56540],[55349,56566],[55349,56592],[55349,56618],[55349,56644],[55349,56670],[55349,56696],[55349,56722],[55349,56748],[55349,56774],[55349,56800],[55349,56826],[55349,56852],[55349,56878],[55349,56904],[55349,56930],[55349,56956],[55349,56982]],"110":[[55349,56619],9411,65358,628,110,8345,8319,9437,627,1404,331,3734,951,241,1394,327,65326,7600,8469,78,886,8470,[55349,56333],[55349,56359],[55349,56385],[55349,56411],[55349,56437],[55349,56463],[55349,56489],[55349,56515],[55349,56541],[55349,56567],[55349,56593],[55349,56619],[55349,56645],[55349,56671],[55349,56697],[55349,56723],[55349,56749],[55349,56775],[55349,56801],[55349,56827],[55349,56853],[55349,56879],[55349,56905],[55349,56931],[55349,56957],[55349,56983]],"111":[[55349,56620],7894,65359,7439,111,8338,7506,963,1413,417,3792,1256,79,65327,186,7484,214,12444,972,9702,937,8500,[55349,56334],[55349,56360],[55349,56386],[55349,56412],[55349,56438],[55349,56464],[55349,56490],[55349,56516],[55349,56542],[55349,56568],[55349,56594],[55349,56620],[55349,56646],[55349,56672],[55349,56698],[55349,56724],[55349,56750],[55349,56776],[55349,56802],[55349,56828],[55349,56854],[55349,56880],[55349,56906],[55349,56932],[55349,56958],[55349,56984]],"112":[[55349,56621],420,65360,7448,112,7510,9439,1511,961,1412,8472,80,8369,9413,65328,8473,7486,8471,[55349,56335],[55349,56361],[55349,56387],[55349,56413],[55349,56439],[55349,56465],[55349,56491],[55349,56517],[55349,56543],[55349,56569],[55349,56595],[55349,56621],[55349,56647],[55349,56673],[55349,56699],[55349,56725],[55349,56751],[55349,56777],[55349,56803],[55349,56829],[55349,56855],[55349,56881],[55349,56907],[55349,56933],[55349,56959],[55349,56985]],"113":[[55349,56622],65361,81,113,9440,1382,586,490,8474,65329,7884,[55349,56336],[55349,56362],[55349,56388],[55349,56414],[55349,56440],[55349,56466],[55349,56492],[55349,56518],[55349,56544],[55349,56570],[55349,56596],[55349,56622],[55349,56648],[55349,56674],[55349,56700],[55349,56726],[55349,56752],[55349,56778],[55349,56804],[55349,56830],[55349,56856],[55349,56882],[55349,56908],[55349,56934],[55349,56960],[55349,56986]],"114":[[55349,56623],344,65362,640,114,691,9441,1075,638,1071,1103,11364,65330,8477,8476,7450,82,9415,341,8475,8479,[55349,56337],[55349,56363],[55349,56389],[55349,56415],[55349,56441],[55349,56467],[55349,56493],[55349,56519],[55349,56545],[55349,56571],[55349,56597],[55349,56623],[55349,56649],[55349,56675],[55349,56701],[55349,56727],[55349,56753],[55349,56779],[55349,56805],[55349,56831],[55349,56857],[55349,56883],[55349,56909],[55349,56935],[55349,56961],[55349,56987]],"115":[[55349,56624],350,65363,42801,115,738,9442,642,1414,423,1109,83,65331,351,348,[55349,56338],[55349,56364],[55349,56390],[55349,56416],[55349,56442],[55349,56468],[55349,56494],[55349,56520],[55349,56546],[55349,56572],[55349,56598],[55349,56624],[55349,56650],[55349,56676],[55349,56702],[55349,56728],[55349,56754],[55349,56780],[55349,56806],[55349,56832],[55349,56858],[55349,56884],[55349,56910],[55349,56936],[55349,56962],[55349,56988]],"116":[[55349,56625],19973,65364,7451,7511,9443,566,428,1090,8224,8366,12562,1383,84,356,355,65332,7488,9417,882,[55349,56339],[55349,56365],[55349,56391],[55349,56417],[55349,56443],[55349,56469],[55349,56495],[55349,56521],[55349,56547],[55349,56573],[55349,56599],[55349,56625],[55349,56651],[55349,56677],[55349,56703],[55349,56729],[55349,56755],[55349,56781],[55349,56807],[55349,56833],[55349,56859],[55349,56885],[55349,56911],[55349,56937],[55349,56963],[55349,56989]],"117":[[55349,56626],65365,7452,117,7512,9444,965,650,371,1062,181,1396,9418,249,471,65333,85,[824,7918],[55349,56340],[55349,56366],[55349,56392],[55349,56418],[55349,56444],[55349,56470],[55349,56496],[55349,56522],[55349,56548],[55349,56574],[55349,56600],[55349,56626],[55349,56652],[55349,56678],[55349,56704],[55349,56730],[55349,56756],[55349,56782],[55349,56808],[55349,56834],[55349,56860],[55349,56886],[55349,56912],[55349,56938],[55349,56964],[55349,56990]],"118":[[55349,56627],65366,7456,118,7515,9445,1783,86,957,8730,1141,65334,1142,9419,8483,[55349,56341],[55349,56367],[55349,56393],[55349,56419],[55349,56445],[55349,56471],[55349,56497],[55349,56523],[55349,56549],[55349,56575],[55349,56601],[55349,56627],[55349,56653],[55349,56679],[55349,56705],[55349,56731],[55349,56757],[55349,56783],[55349,56809],[55349,56835],[55349,56861],[55349,56887],[55349,56913],[55349,56939],[55349,56965],[55349,56991]],"119":[[55349,56628],969,65367,7457,119,695,9446,623,1377,8179,1065,87,65335,974,372,824,7490,9420,[55349,56342],[55349,56368],[55349,56394],[55349,56420],[55349,56446],[55349,56472],[55349,56498],[55349,56524],[55349,56550],[55349,56576],[55349,56602],[55349,56628],[55349,56654],[55349,56680],[55349,56706],[55349,56732],[55349,56758],[55349,56784],[55349,56810],[55349,56836],[55349,56862],[55349,56888],[55349,56914],[55349,56940],[55349,56966],[55349,56992]],"120":[[55349,56629],120,8339,739,9447,1276,1203,88,967,1278,215,9421,65336,4335,8501,[55349,56343],[55349,56369],[55349,56395],[55349,56421],[55349,56447],[55349,56473],[55349,56499],[55349,56525],[55349,56551],[55349,56577],[55349,56603],[55349,56629],[55349,56655],[55349,56681],[55349,56707],[55349,56733],[55349,56759],[55349,56785],[55349,56811],[55349,56837],[55349,56863],[55349,56889],[55349,56915],[55349,56941],[55349,56967],[55349,56993]],"121":[1199,65369,655,654,121,696,9448,4327,5033,89,1091,165,590,12570,1406,9422,1038,65337,1227,435,8509,[55349,56344],[55349,56370],[55349,56396],[55349,56422],[55349,56448],[55349,56474],[55349,56500],[55349,56526],[55349,56552],[55349,56578],[55349,56604],[55349,56630],[55349,56656],[55349,56682],[55349,56708],[55349,56734],[55349,56760],[55349,56786],[55349,56812],[55349,56838],[55349,56864],[55349,56890],[55349,56916],[55349,56942],[55349,56968],[55349,56994]],"122":[382,65370,7458,122,823,656,657,90,11371,381,8484,379,9423,437,65338,576,[55349,56345],[55349,56371],[55349,56397],[55349,56423],[55349,56449],[55349,56475],[55349,56501],[55349,56527],[55349,56553],[55349,56579],[55349,56605],[55349,56631],[55349,56657],[55349,56683],[55349,56709],[55349,56735],[55349,56761],[55349,56787],[55349,56813],[55349,56839],[55349,56865],[55349,56891],[55349,56917],[55349,56943],[55349,56969],[55349,56995]]}'; let spamAlphabet = {}; function decodeAlphabet() { let encodedAlphabet = JSON.parse(spamEncodedAlphabet); spamAlphabet = {}; for (let letter in encodedAlphabet) { spamAlphabet[String.fromCharCode(letter)] = []; for (let j in encodedAlphabet[letter]) { if (encodedAlphabet[letter][j].length != undefined) { spamAlphabet[String.fromCharCode(letter)].push(String.fromCharCode(encodedAlphabet[letter][j][0], encodedAlphabet[letter][j][1])); } else { spamAlphabet[String.fromCharCode(letter)].push(String.fromCharCode(encodedAlphabet[letter][j])); } } } } function antiSpamCheck(msg) { let message = msg['m']; let username = msg['user']; if (msg['has_tokens'] && cb.settings.enablefornongreys == 'No') { return false } if (isSpam(message)) { sendBlockNotification(username); if (cb.settings.sendblocked == 'Yes') { sendBlockedMessageToBroadcaster(msg); } return true } if (!whiteList.includes(username) && (cb.settings.blockfirstmessage == 'Yes') && !msg['has_tokens']) { whiteList.push(username); sendFirstMessageHidden(username); if (cb.settings.sendblocked == 'Yes') { sendBlockedMessageToBroadcaster(msg); } blockedList.push((message)); return true } return false } function isSpam(message) { for (let i in linksBlackList) { if (messageContainsLink(message, linksBlackList[i])) { return true } } for (let i in wordsBlackList) { if (messageContainsWord(message, wordsBlackList[i])) { return true; } } for (let i in filters) { if (filters[i](message)) { return true } } return false; } let filters = [isDickSpam, isBioSpam, isJerkOnMeSpam, isCumSpam]; function isDickSpam(toCheck) { let wordSet = [ ['see', 'watch', 'check', 'look', 'view'], ['my'], ['dick', 'cock', 'kitty', 'pussy']]; return messageContainsWordSet(toCheck, wordSet); } function isBioSpam(toCheck) { let wordSet = [ ['see', 'watch', 'check', 'look', 'join', 'visit', 'view'], ['my'], ['room', 'bio', 'cam', 'profile', 'photos']]; return messageContainsWordSet(toCheck, wordSet); } function isJerkOnMeSpam(toCheck) { let wordSet = [ ['jerk', 'fap', 'join', 'see', 'cum', 'visit', 'view'], ['', 'with', 'on'], ['me']]; return messageContainsWordSet(toCheck, wordSet); } function isCumSpam(toCheck) { let wordSet = [ ['see', 'watch', 'check', 'look', 'join', 'view'], ['me', 'i', ''], ['cum']]; return messageContainsWordSet(toCheck, wordSet); } function messageContainsWordSet(toCheck, wordSet) { let temp; for (let i = 0; i < wordSet.length; i++) { temp = false; for (let j = 0; j < wordSet[i].length; j++) { if (messageContainsWord(toCheck, wordSet[i][j])) { toCheck = toCheck.substr(toCheck.indexOf(wordSet[i][j])+wordSet[i][j].length); j = wordSet[i].length; temp = true } } if (!temp) { return false; } } return true; } function messageContainsWord(message, toSearch) { let normalView = transformMessage(message).replace(/\s+/g, '').toLowerCase(); return ((normalView.match(toSearch) != null) && (normalView.match(toSearch) != undefined)) } function messageContainsLink(message, toSearch) { let normalView = transformMessage(message).replace(/\s+/g, '').toLowerCase(); return ((normalView.match(toSearch + '\.[a-zA-z]{1,10}') != null) && (normalView.match(toSearch + '\.[a-zA-z]{1,10}') != undefined)) //check for 'snapchat' or 'snap' } function transformMessage(message) { message = subTransform(message); return message } function subTransform(message) { let transformed = []; let k = 0; while (k < message.length) { if (message[k].charCodeAt(0) != 55349) { transformed.push(message[k]); k++ } else { transformed.push(String.fromCharCode(message[k].charCodeAt(0), message[k + 1].charCodeAt(0))); k += 2 } } let length = transformed.length; for (let i in transformed) { for (let letter in spamAlphabet) { for (let j in spamAlphabet[letter]) { if (transformed[i] == spamAlphabet[letter][j]) { transformed[i] = letter; } } } } let out = ''; for (let i = 0; i < length; i++) { out += transformed[i]; } return out; } //debug function generateShit(source) { let output = ''; for (let i in source) { if (spamAlphabet[source[i]] != undefined) { output += spamAlphabet[source[i]][getRandomInt(spamAlphabet[source[i]].length - 1)]; } else { output += source[i]; } } return output } function testTransform(counts) { let errors = []; for (let i = 0; i < counts; i++) { let source = linksBlackList[getRandomInt(linksBlackList.length - 1)]; let shit = generateShit(source); let output = transformMessage(shit); if (output != source) { errors.push([source, shit, output]); } } console.log(errors); } function getRandomInt(max) { return Math.floor(Math.random() * Math.floor(max)); } function init() { if (cb.settings['linksblacklist'] != undefined) { let newBlackList = cb.settings['linksblacklist'].split(' '); for (let i in newBlackList) { if (newBlackList[i].match('\.[a-zA-Z0-9]')) { linksBlackList.push(newBlackList[i]); } } } if (cb.settings['wordsblacklist'] != undefined) { let newBlackList = cb.settings['wordsblacklist'].split(' '); for (let i in newBlackList) { if (newBlackList[i].match('\.[a-zA-Z0-9]')) { wordsBlackList.push(newBlackList[i]); } } } decodeAlphabet(); } init();
© Copyright Chaturbate 2011- 2024. All Rights Reserved.