library Strings {
    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
}
//
//   
//    ______     __   __     ______     __  __     ______     __     __   __    
//   /\  __ \   /\ "-.\ \   /\  ___\   /\ \_\ \   /\  __ \   /\ \   /\ "-.\ \   
//   \ \ \/\ \  \ \ \-.  \  \ \ \____  \ \  __ \  \ \  __ \  \ \ \  \ \ \-.  \  
//    \ \_____\  \ \_\\"\_\  \ \_____\  \ \_\ \_\  \ \_\ \_\  \ \_\  \ \_\\"\_\ 
//     \/_____/   \/_/ \/_/   \/_____/   \/_/\/_/   \/_/\/_/   \/_/   \/_/ \/_/ 
//                                                                              
//    __    __     ______     __   __     __  __     ______     __  __          
//   /\ "-./  \   /\  __ \   /\ "-.\ \   /\ \/ /    /\  ___\   /\ \_\ \         
//   \ \ \-./\ \  \ \ \/\ \  \ \ \-.  \  \ \  _"-.  \ \  __\   \ \____ \        
//    \ \_\ \ \_\  \ \_____\  \ \_\\"\_\  \ \_\ \_\  \ \_____\  \/\_____\       
//     \/_/  \/_/   \/_____/   \/_/ \/_/   \/_/\/_/   \/_____/   \/_____/       
//                                                                              
//   
// 
// OnChainMonkey (OCM) Genesis was the first 100% On-Chain PFP collection in 1 transaction 
// (contract: 0x960b7a6BCD451c9968473f7bbFd9Be826EFd549A)
// 
// created by Metagood
//
// OCM Desserts will be an On-Chain collection that OCM Genesis can eat (burn) to create the
// new Karma collection.
//
// OCM Desserts, being 100% On-Chain, will also live forever, just like OCM Genesis. However,
// the Desserts will need to be burned to create Karma, so the Dessert supply will be 
// decreasing over time.
//
// This is not the OCM Dessert contract, but the official OCM randomizer. This smart contract
// will be the fair and transparent way to generate randomness on chain by using the Chainlink 
// VRF (Verifiable Random Function).
//
// The first call will generate the OCM Dessert distribution.
//
//....................................................................................................
//....................................................................................................
//....................................................................................................
//....................................................................................................
//......................................':ldk0KNWWMMMMWWNK0kdl:'......................................
//..................................:oONMMMMMMMMMMMMMMMMMMMMMMMMNOo;..................................
//..............................'lONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWOl'..............................
//............................cOWMMMMMMMMMMWX0kdolllcllodk0XWMMMMMMMMMMWOc............................
//..........................dXMMMMMMMMWKxl,..................,lxKWMMMMMMMMXd..........................
//........................oNMMMMMMMWOl'..........................'lOWMMMMMMMNo........................
//......................lXMMMMMMW0l..................................l0MMMMMMMXl......................
//....................'0MMMMMMMO;......................................;OMMMMMMMO'....................
//...................,XMMMMMMX:..........................................:XMMMMMMX,...................
//..................;NMMMMMMO..............................................OMMMMMMN;..................
//.................'XMMMMMMx...kKKKKKKKKKKKKKKKKc........'KKKKKKKKKKKKKKk...xMMMMMMX'.................
//..........'coxkOkKMMMMMMx....kXXXXXXXXXXXXXXXXc........'XXXXXXXXXXXXXXk....xMMMMMMKkOkxoc,..........
//.......'dXMMMMMMMMMMMMM0....................................................0MMMMMMMMMMMMMXd'.......
//.....'kWMMMMMMMMMMMMMMW,......,ooc...loc...loo'........'l...col...cooc......;WMMMMMMMMMMMMMMWk......
//....,XMMMMMMWKOKMMMMMMk.......'XMW:..':...dMMO.........,Wd...:'..cWMMO.......kMMMMMMKkKWMMMMMMX'....
//....OMMMMMMO,..oMMMMMMl........'kWWOl;;:oKMNo...........cWKo:;:lOWMM0'.......lMMMMMMd..,OMMMMMMO....
//...'WMMMMMK....xMMMMMM:..........'lkKXNX0xc..............'dXMMMMMW0c.........:MMMMMMx....KMMMMMW'...
//...'WMMMMMX....xMMMMMM:.....................................';:;,............:MMMMMMx....XMMMMMW'...
//....kMMMMMM0:..oMMMMMMo......................................................oMMMMMMo..:0MMMMMMk....
//.....KMMMMMMMNKXMMMMMMO......................................................OMMMMMMXKNMMMMMMMK'....
//......dNMMMMMMMMMMMMMMW:................',:clooddddddoolc:,'................:WMMMMMMMMMMMMMMNd......
//........l0WMMMMMMMMMMMMK...........:dOXWMMMMXokMMMMMMkoXMMMMWXOd:...........KMMMMMMMMMMMMW0l........
//...........;coddd0MMMMMMk.......l0WMMMMMMMMMXokMMMMMMkoXMMMMMMMMMW0l.......OMMMMMM0dddoc;...........
//..................KMMMMMMO....'XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK'....kMMMMMMK..................
//..................,XMMMMMM0'..cMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMc..'0MMMMMMX'..................
//...................'KMMMMMMNo..oNMMMMWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMNo..lNMMMMMMK'...................
//.....................kMMMMMMMKc..ckXWxllllllllllllllllllllllllxWXkc..cKMMMMMMMk.....................
//......................:KMMMMMMMXd,..';ldkOKXNWWMMMMMMWWNXKOkdl;...,dXMMMMMMMK:......................
//........................cXMMMMMMMMKd;..........................;dKMMMMMMMMXc........................
//..........................cKMMMMMMMMMNOd:,................,:dONMMMMMMMMMKc..........................
//............................;xNMMMMMMMMMMMWX0kxddddddxk0XWMMMMMMMMMMMNx;............................
//...............................:xXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXx:...............................
//..................................'cx0NMMMMMMMMMMMMMMMMMMMMMMN0xc'..................................
//.......................................,:ldkO0KXNNNNXXKOkdl:,.......................................
//....................................................................................................
//....................................................................................................
//....................................................................................................
function toString(uint256 value) internal pure returns (string memory) {
    // Inspired by OraclizeAPI's implementation - MIT licence
    // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

    if (value == 0) {
        return "0";
    }
    uint256 temp = value;
    uint256 digits;
    while (temp != 0) {
        digits++;
        temp /= 10;
    }
    bytes memory buffer = new bytes(digits);
    while (value != 0) {
        digits -= 1;
        buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
        value /= 10;
    }
    return string(buffer);
}

/**
 * @dev Converts a `uint256` to its ASCII `string` decimal representation.
 */