@dynamic-data/twitch-mockups
Version:
Twitch Mockup Data Generators
1,750 lines (1,709 loc) • 176 kB
JavaScript
import {
toIsoString,
getRandomInt,
getNewDate,
getSleepDate,
} from "@dynamic-data/utils";
import MOCK from "@dynamic-data/twitch-data";
const VideosModel = {
id: () => {
let id = getRandomInt(0,999999999)
return id.toString()
},
stream_id: () => {
switch(getRandomInt(1,2)){
case 1:
return null
case 2:
let id = getRandomInt(0,999999999)
return id.toString()
}
},
user_id: () => {
let id = getRandomInt(0,999999999)
return id.toString()
},
user_login: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
user_name: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
title: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz "
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
description: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz !?.,|#"
let length = getRandomInt(20,50)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
created_at: () => {
let finalDate = new Date(0);
let maxMonthDate = new Date(0);
finalDate.setFullYear(getRandomInt(2020,2050));
finalDate.setMonth(getRandomInt(0,11));
finalDate.setDate(1)
maxMonthDate = finalDate
maxMonthDate.setMonth(maxMonthDate.getMonth() + 1);
maxMonthDate.setDate(0)
finalDate.setDate(getRandomInt(1,maxMonthDate.getDate()));
finalDate.setHours(getRandomInt(0,23),getRandomInt(0,59),getRandomInt(0,59),getRandomInt(0,999))
return finalDate.toISOString();
},
published_at: (created_at) => {
let createdDate = new Date(created_at)
let publishedDate = new Date(createdDate.getTime()+getRandomInt(1,432000))
return publishedDate.toISOString()
},
url: (id) => {
return "https://www.twitch.tv/videos/" + id
},
thumbnail_url: () => {
return "https://static-cdn.jtvnw.net/cf_vods/d2nvs31859zcd8/twitchdev/335921245/ce0f3a7f-57a3-4152-bc06-0c6610189fb3/thumb/index-0000000000-%{width}x%{height}.jpg"
},
viewable: () => {
let types = ["public","private"]
return types[getRandomInt(0, types.length-1)]
},
view_count: () => {
return getRandomInt(0,9999999999)
},
language: () => {
let languages = ["en", "id", "ca", "da", "de", "es", "fr", "it", "hu", "nl", "no","pl", "pt", "ro", "sk", "fi", "sv", "tl", "vi", "tr", "cs", "el", "bg", "ru", "uk", "ar", "ms", "hi", "th", "zh", "ja", "zh-hk", "ko", "asl", "other"]
return languages[getRandomInt(0, languages.length-1)]
},
type: () => {
let types = ["upload", "archive", "highlight"]
return types[getRandomInt(0,types.length-1)]
},
duration: () => {
let time = getRandomInt(0,36000)
let string = ""
if (time / 3600 > 1){
string += Math.floor(time / 3600) + "h"
}
if ((time % 3600)/60 > 1){
string += Math.floor((time % 3600)/60) + "m"
}
if ((time % 3600)%60 > 1){
string += Math.floor((time % 3600)%60) + "s"
}
return string
},
muted_segments: (duration) => {
let array = []
let finalReturn =[]
let numOfSegments = getRandomInt(0,6)-1
let durationInSeconds = 0;
let durationLeftover = duration
if (durationLeftover.includes("h")){
durationInSeconds += (parseInt(duration.split("h")[0]) * 60 * 60)
durationLeftover = durationLeftover.split("h")[1]
}
if (durationLeftover.includes("m")){
durationInSeconds += (parseInt(duration.split("m")[0]) * 60)
durationLeftover = durationLeftover.split("m")[1]
}
if (durationLeftover.includes("s")){
durationInSeconds += parseInt(duration.split("s")[0])
durationLeftover = durationLeftover.split("s")[1]
}
for (let i = 0; i<numOfSegments;){
var random = getRandomInt(0,durationInSeconds)-1
if (!array.includes(random)){
array.push(random)
i++
}
}
array.sort(function(a, b){return a - b})
for (let i = 0; i<array.length;i++){
let durationSeg = 0
if (i===array.length-1){
if (array[i]+durationSeg+300>durationInSeconds){
durationSeg = getRandomInt(0,durationInSeconds-array[i])
} else {
durationSeg = getRandomInt(0,300)
}
} else {
durationSeg = getRandomInt(0,300)
if (array[i] + durationSeg > array[i+1]) {
durationSeg = getRandomInt(0,array[i+1] - array[i])
}
}
finalReturn.push({
duration: durationSeg,
offset: array[i]
})
}
return finalReturn
},
}
const UserSubscriptionModel = {
broadcaster_id: () => {
let id = getRandomInt(0,999999999)
return id.toString()
},
broadcaster_name: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
broadcaster_login: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
user_login: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
is_gift: () => {
switch(getRandomInt(1,2)){
case 1:
return true
case 2:
return false
}
},
tier: () => {
return (getRandomInt(0,3)*1000).toString()
},
gifter_login: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
gifter_name: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
}
const UsersFollowsModel = {
from_id: () => {
let id = getRandomInt(0,999999999)
return id.toString()
},
from_login: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
from_name: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
to_id: () => {
let id = getRandomInt(0,999999999)
return id.toString()
},
to_name: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
to_login: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
followed_at: () => {
let finalDate = new Date(0);
let maxMonthDate = new Date(0);
finalDate.setFullYear(getRandomInt(2020,2050));
finalDate.setMonth(getRandomInt(0,12)-1);
finalDate.setDate(1)
maxMonthDate = finalDate
maxMonthDate.setMonth(maxMonthDate.getMonth() + 1);
maxMonthDate.setDate(0)
finalDate.setDate(getRandomInt(1,maxMonthDate.getDate()));
finalDate.setHours(getRandomInt(0,24)-1,getRandomInt(0,60)-1,getRandomInt(0,60)-1,getRandomInt(0,1000)-1)
return finalDate.toISOString();
},
}
const UsersModel = {
id: ()=>{
let id = getRandomInt(0,999999999)
return id.toString()
},
login: ()=>{
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
display_name: ()=>{
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
type: ()=>{
let types = ["staff", "admin", "global_mod", ""]
return types[getRandomInt(0,types.length-1)]
},
broadcaster_type: ()=>{
let types = ["partner", "affiliate", ""]
return types[getRandomInt(0,types.length-1)]
},
description: ()=>{
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
profile_image_url: ()=>{
return "https://static-cdn.jtvnw.net/jtv_user_pictures/8a6381c7-d0c0-4576-b179-38bd5ce1d6af-profile_image-300x300.png"
},
offline_image_url: ()=>{
return "https://static-cdn.jtvnw.net/jtv_user_pictures/3f13ab61-ec78-4fe6-8481-8682cb3b0ac2-channel_offline_image-1920x1080.png"
},
view_count: ()=>{
return getRandomInt(0,99999999)
},
email: ()=>{
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let alphabet = "abcdefghijklmnopqrstuvwxyz"
let length1 = getRandomInt(5,12)
let length2 = getRandomInt(5,12)
let endings = [".com", ".co.uk"]
for (var i = 0; i<length1; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
string+="@"
for (var i = 0; i<length2; i++){
string += alphabet.charAt(Math.floor(Math.random() *
alphabet.length));
}
string+=endings[getRandomInt(0,endings.length-1)]
return string
},
created_at: ()=>{
let finalDate = new Date(0);
let maxMonthDate = new Date(0);
finalDate.setFullYear(getRandomInt(2020,2050));
finalDate.setMonth(getRandomInt(0,12)-1);
finalDate.setDate(1)
maxMonthDate = finalDate
maxMonthDate.setMonth(maxMonthDate.getMonth() + 1);
maxMonthDate.setDate(0)
finalDate.setDate(getRandomInt(1,maxMonthDate.getDate()));
finalDate.setHours(getRandomInt(0,24)-1,getRandomInt(0,60)-1,getRandomInt(0,60)-1,getRandomInt(0,1000)-1)
return finalDate.toISOString();
},
}
const ExtensionModel = {
id: ()=>{
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
for (var i = 0; i<30; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
version: ()=>{
return (getRandomInt(0,12)-1).toString() + "." + (getRandomInt(0,12)-1).toString() + "." + (getRandomInt(0,12)-1).toString()
},
name: ()=>{
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
can_activate: ()=>{
switch(getRandomInt(1,2)){
case 1:
return true
case 2:
return false
}
},
type: ()=>{
let types = ["panel", "overlay", "mobile", "component"]
let amount = getRandomInt(0,types.length)
let final = []
for (var i = 0; i<amount;){
let random = getRandomInt(0,types.length-1)
if (!final.includes(types[random])){
final.push(types[random])
i++
}
}
return final
},
}
const UserBlockListModel = {
user_id: () => {
let id = getRandomInt(0,999999999)
return id.toString()
},
user_login: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
display_name: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
}
const UserActiveExtensionsModel = {
active: () => {
switch(getRandomInt(1,2)){
case 1:
return true
case 2:
return false
}
},
id: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
for (var i = 0; i<30; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
version: () => {
return (getRandomInt(0,12)-1).toString() + "." + (getRandomInt(0,12)-1).toString() + "." + (getRandomInt(0,12)-1).toString()
},
name: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
}
}
const TopGamesModel = {
id: () => {
let id = getRandomInt(0,999999999)
return id.toString()
},
name: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
box_art_url: () => {
return "https://static-cdn.jtvnw.net/ttv-boxart/PLAYERUNKNOWN%27S%20BATTLEGROUNDS-{width}x{height}.jpg"
},
}
const TeamsModel = {
user_id: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
user_name: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
user_login: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
background_image_url: () => {
return "https://static-cdn.jtvnw.net/jtv_user_pictures/team-livecoders-team_logo_image-bf1d9a87ca81432687de60e24ad9593d-600x600.png"
},
banner: () => {
return "https://static-cdn.jtvnw.net/jtv_user_pictures/team-livecoders-team_logo_image-bf1d9a87ca81432687de60e24ad9593d-600x600.png"
},
created_at: () => {
let finalDate = new Date(0);
let maxMonthDate = new Date(0);
finalDate.setFullYear(getRandomInt(2020,2050));
finalDate.setMonth(getRandomInt(0,12)-1);
finalDate.setDate(1)
maxMonthDate = finalDate
maxMonthDate.setMonth(maxMonthDate.getMonth() + 1);
maxMonthDate.setDate(0)
finalDate.setDate(getRandomInt(1,maxMonthDate.getDate()));
finalDate.setHours(getRandomInt(0,24)-1,getRandomInt(0,60)-1,getRandomInt(0,60)-1,getRandomInt(0,1000)-1)
return finalDate.toISOString();
},
updated_at: (created_at) => {
let createdAt = new Date (created_at)
createdAt.setTime(createdAt.getTime() + getRandomInt(0,630720000))
return createdAt.toISOString()
},
info: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
thumbnail_url: () => {
return "https://static-cdn.jtvnw.net/jtv_user_pictures/team-livecoders-team_logo_image-bf1d9a87ca81432687de60e24ad9593d-600x600.png"
},
team_name: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
team_display_name: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
id: () => {
let id = getRandomInt(0,999999999)
return id.toString()
},
}
const StreamsMarkersModel = {
user_id : () => {
let id = getRandomInt(0,999999999)
return id.toString()
},
user_name : () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
user_login : () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
video_id : () => {
let id = getRandomInt(0,999999999)
return id.toString()
},
id : () => {
let id = getRandomInt(0,999999999)
return id.toString()
},
created_at : () => {
let finalDate = new Date(0);
let maxMonthDate = new Date(0);
finalDate.setFullYear(getRandomInt(2020,2050));
finalDate.setMonth(getRandomInt(0,12)-1);
finalDate.setDate(1)
maxMonthDate = finalDate
maxMonthDate.setMonth(maxMonthDate.getMonth() + 1);
maxMonthDate.setDate(0)
finalDate.setDate(getRandomInt(1,maxMonthDate.getDate()));
finalDate.setHours(getRandomInt(0,24)-1,getRandomInt(0,60)-1,getRandomInt(0,60)-1,getRandomInt(0,1000)-1)
return finalDate.toISOString();
},
description : () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
position_seconds : () => {
return getRandomInt(0,32400)
},
URL : (video_id, position_seconds) => {
let stringTime = ""
stringTime += Math.floor(position_seconds/3600)+"h"
stringTime += Math.floor((position_seconds-(Math.floor(position_seconds/3600)*3600))/60)+"m"
stringTime += Math.floor(position_seconds%60)+"s"
return "https://twitch.tv/videos/"+video_id+"?t=" + stringTime
},
}
const StreamsModel = {
id: ()=>{
return getRandomInt(0,99999999999).toString()
},
user_id: ()=>{
return getRandomInt(0,99999999999).toString()
},
user_login: ()=>{
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
user_name: ()=>{
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
game_id: ()=>{
return getRandomInt(0,99999999999).toString()
},
game_name: ()=>{
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
type: ()=>{
switch (getRandomInt(0,10)){
case 1:
return ""
default:
return "live"
}
},
title: ()=>{
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
viewer_count: ()=>{
return getRandomInt(0,9999999)
},
started_at: ()=>{
let finalDate = new Date(0);
let maxMonthDate = new Date(0);
finalDate.setFullYear(getRandomInt(2020,2050));
finalDate.setMonth(getRandomInt(0,11));
finalDate.setDate(1)
maxMonthDate = finalDate
maxMonthDate.setMonth(maxMonthDate.getMonth() + 1);
maxMonthDate.setDate(0)
finalDate.setDate(getRandomInt(1,maxMonthDate.getDate()));
finalDate.setHours(getRandomInt(0,23),getRandomInt(0,59),getRandomInt(0,59),getRandomInt(0,999))
return finalDate.toISOString();
},
language: ()=>{
let languages = ["en", "id", "ca", "da", "de", "es", "fr", "it", "hu", "nl", "no","pl", "pt", "ro", "sk", "fi", "sv", "tl", "vi", "tr", "cs", "el", "bg", "ru", "uk", "ar", "ms", "hi", "th", "zh", "ja", "zh-hk", "ko", "asl", "other"]
return languages[getRandomInt(0, languages.length-1)]
},
thumbnail_url: ()=>{
return "https://static-cdn.jtvnw.net/previews-ttv/live_user_amar-{width}x{height}.jpg"
},
tag_ids: ()=>{
let array = []
let numOfTags = getRandomInt(0,5)-1
for (var i=0; i<numOfTags;i++){
let string = ""
let characters = "0123456789abcdef"
for (var i = 0; i<32; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
switch (i){
case 7:
case 11:
case 15:
case 19:
string+="-"
}
}
array.push(string)
}
},
is_mature: ()=>{
switch (getRandomInt(0,2)){
case 1:
return true;
case 2:
return false;
}
},
}
const StreamKeyModel = {
stream_key: () => {
let string = "live_"
string += getRandomInt(9999999,99999999)
string += "_"
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
for (var i = 0; i<16; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
}
}
const SoundtrackPlaylistModel = {
title: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
id: () => {
let string = ""
let characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for (var i = 0; i<10; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
image_url: () => {
return "https://m.media-amazon.com/images/I/517kGzeaRhL.jpg"
},
description: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
}
const SoundtrackArtistModel = {
id: () => {
let string = ""
let characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for (var i = 0; i<10; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
name: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
creator_channel_id: () => {
switch(getRandomInt(1,2)){
case 1:
return getRandomInt(0,999999999).toString()
case 2:
return ""
}
},
}
const SoundtrackAlbumModel = {
id: () => {
let string = ""
let characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for (var i = 0; i<10; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
name: (title) => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
if (title.includes("[Explicit]")){
string += " [Explicit]"
}
return string
},
image_url: () => {
return "https://m.media-amazon.com/images/I/316SDaD-XQL.jpg"
},
}
const SoundtrackTrackModel = {
id: () => {
let string = ""
let characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for (var i = 0; i<10; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
isrc: () => {
let string = ""
let characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for (var i = 0; i<10; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
duration: () => {
return getRandomInt(30,600)
},
title: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
switch(getRandomInt(1,2)){
case 1:
string += " [Explicit]"
}
return string
},
}
const SoundtrackTrackSourceModel = {
id: () => {
let string = ""
let characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for (var i = 0; i<10; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
content_type: () => {
let types = ["PLAYLIST", "STATION"]
return types[getRandomInt(0,types.length-1)]
},
title: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
image_url: () => {
return "https://m.media-amazon.com/images/I/419WuvMXzEL.jpg"
},
soundtrack_url: () => {
return "https://soundtrack.twitch.tv/playlist?playlistID=B08HCW84SF"
},
spotify_url: () => {
return "https://open.spotify.com/playlist/1LOP14236oTUscowY3NvYN"
},
}
const ReleasedExtensionsModel = {
author_name : () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
bits_enabled : () => {
switch(getRandomInt(1,2)){
case 1:
return true
case 2:
return false
}
},
can_install : () => {
switch(getRandomInt(1,2)){
case 1:
return true
case 2:
return false
}
},
configuration_location : () => {
let locations = ["hosted"]
return locations[getRandomInt(0,locations.length-1)]
},
description : () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
eula_tos_url : () => {
return ""
},
has_chat_support : () => {
switch(getRandomInt(1,2)){
case 1:
return true
case 2:
return false
}
},
icon_url : () => {
return "https://extensions-discovery-images.twitch.tv/pgn0bjv51epi7eaekt53tovjnc82qo/0.0.8/logob6c995d8-8b45-48cc-a748-b256e92ac1cd"
},
icon_urls : () => {
return {
"24x24": "https://extensions-discovery-images.twitch.tv/pgn0bjv51epi7eaekt53tovjnc82qo/0.0.8/logob6c995d8-8b45-48cc-a748-b256e92ac1cd",
"100x100": "https://extensions-discovery-images.twitch.tv/pgn0bjv51epi7eaekt53tovjnc82qo/0.0.8/logob6c995d8-8b45-48cc-a748-b256e92ac1cd",
"300x200": "https://extensions-discovery-images.twitch.tv/pgn0bjv51epi7eaekt53tovjnc82qo/0.0.8/logob6c995d8-8b45-48cc-a748-b256e92ac1cd",
}
},
id : () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
name : () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
privacy_policy_url : () => {
return ""
},
request_identity_link : () => {
switch(getRandomInt(1,2)){
case 1:
return true
case 2:
return false
}
},
screenshot_urls : () => {
let array =[]
let numOfUrls = getRandomInt(0,5)-1
for (var i = 0; i< numOfUrls; i++){
array.push("https://extensions-discovery-images.twitch.tv/pgn0bjv51epi7eaekt53tovjnc82qo/0.0.8/screenshotbdec475d-3d2f-4378-b334-941dfddc897a")
}
return array
},
state : () => {
let types = ["InTest", "InReview", "Rejected", "Approved", "Released", "Deprecated", "PendingAction", "AssetsUploaded", "Deleted"]
return types[getRandomInt(0,types.length-1)]
},
subscriptions_support_level : () => {
let levels = ["optional"]
return levels[getRandomInt(0, levels.length-1)]
},
summary : () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
support_email : () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz123456789"
let alphabet = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,20)
let domain = getRandomInt(5,10)
let endings = [".com", ".co.uk"]
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
string+="@"
for (var i = 0; i<domain; i++){
string += alphabet.charAt(Math.floor(Math.random() *
alphabet.length));
}
string+=endings[getRandomInt(0,endings.length-1)]
return string
},
version : () => {
return (getRandomInt(0,12)-1).toString() + "." + (getRandomInt(0,12)-1).toString() + "." + (getRandomInt(0,12)-1).toString()
},
viewer_summary : () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
views : () => {
return {}
},
allowlisted_config_urls : () => {
return []
},
allowlisted_panel_urls : () => {
return []
},
}
const PredictionsModel = {
id: () => {
let string = ""
let characters = "0123456789abcdef"
for (var i = 0; i<32; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
switch (i){
case 7:
case 11:
case 15:
case 19:
string+="-"
}
}
return string
},
broadcaster_id: () => {
return getRandomInt(0,99999999).toString()
},
broadcaster_name: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
broadcaster_login: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
title: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,45)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
winning_outcome_id: (status) => {
switch(status){
case "RESOLVED":
let string = ""
let characters = "0123456789abcdef"
for (var i = 0; i<32; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
switch (i){
case 7:
case 11:
case 15:
case 19:
string+="-"
}
}
return string
default:
return null
}
},
prediction_window: () => {
return getRandomInt(0,99999)
},
status: () => {
let status = ["RESOLVED","ACTIVE","CANCELED","LOCKED"]
return status[getRandomInt(0,status.length-1)]
},
created_at: () => {
let finalDate = new Date(0);
let maxMonthDate = new Date(0);
finalDate.setFullYear(getRandomInt(2020,2050));
finalDate.setMonth(getRandomInt(0,11));
finalDate.setDate(1)
maxMonthDate = finalDate
maxMonthDate.setMonth(maxMonthDate.getMonth() + 1);
maxMonthDate.setDate(0)
finalDate.setDate(getRandomInt(1,maxMonthDate.getDate()));
finalDate.setHours(getRandomInt(0,23),getRandomInt(0,59),getRandomInt(0,59),getRandomInt(0,999))
return finalDate.toISOString();
},
ended_at: (status, created_at) => {
switch(status){
case "ACTIVE":
return null
default:
let lockedAt = new Date(created_at)
lockedAt.setTime(lockedAt.getTime() + getRandomInt(0,3600))
return lockedAt.toISOString()
}
},
locked_at: (status, created_at) => {
switch(status){
case "LOCKED":
let lockedAt = new Date(created_at)
lockedAt.setTime(lockedAt.getTime() + getRandomInt(0,3600))
return lockedAt.toISOString()
default:
return null
}
},
}
const PredictionsOutcomeModel = {
id: () => {
let string = ""
let characters = "0123456789abcdef"
for (var i = 0; i<32; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
switch (i){
case 7:
case 11:
case 15:
case 19:
string+="-"
}
}
return string
},
title: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
users: () => {
return getRandomInt(0, 99999)
},
channel_points: () => {
return getRandomInt(0,999999999)
},
color: (number, i) => {
switch (number) {
case 2:
switch (i) {
case 0:
return "BLUE"
case 1:
return "PINK"
}
default:
return "BLUE"
}
},
}
const TopPredictorModel = {
id: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
name: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
login: () => {
let string = ""
let characters = "0123456789abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
channel_points_used: (used) => {
return used
},
channel_points_won: (status, won) => {
switch(status){
case "RESOLVED":
return won
default:
return null
}
}
}
const PollModel = {
id: () => {
let string = ""
let characters = "0123456789abcdef"
for (var i = 0; i<32; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
switch (i){
case 7:
case 11:
case 15:
case 19:
string+="-"
}
}
return string
},
broadcaster_id: () => {
return getRandomInt(0,99999999).toString()
},
broadcaster_name: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
broadcaster_login: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
title: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
bits_voting_enabled: () => {
switch (getRandomInt(0,2)){
case 1:
return true
case 2:
return false
}
},
bits_per_vote: (bits_enabled) => {
switch (bits_enabled){
case false:
return 0
case true:
return getRandomInt(0,9999999)
}
},
channel_points_voting_enabled: () => {
switch (getRandomInt(0,2)){
case 1:
return true
case 2:
return false
}
},
channel_points_per_vote: (points_enabled) => {
switch (points_enabled){
case false:
return 0
case true:
return getRandomInt(0,9999999)
}
},
status: () => {
let statuses = ["ACTIVE","COMPLETED","TERMINATED","ARCHIVED","MODERATED","INVALID"]
return statuses[getRandomInt(0, statuses.length-1)]
},
duration: () => {
return getRandomInt(0,99999999)
},
started_at: () => {
let finalDate = new Date(0);
let maxMonthDate = new Date(0);
finalDate.setFullYear(getRandomInt(2020,2050));
finalDate.setMonth(getRandomInt(0,11));
finalDate.setDate(1)
maxMonthDate = finalDate
maxMonthDate.setMonth(maxMonthDate.getMonth() + 1);
maxMonthDate.setDate(0)
finalDate.setDate(getRandomInt(1,maxMonthDate.getDate()));
finalDate.setHours(getRandomInt(0,23),getRandomInt(0,59),getRandomInt(0,59),getRandomInt(0,999))
return finalDate.toISOString();
},
}
const PollChoiceModel = {
id: () => {
let string = ""
let characters = "0123456789abcdef"
for (var i = 0; i<32; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
switch (i){
case 7:
case 11:
case 15:
case 19:
string+="-"
}
}
return string
},
title: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
votes: (channel_points_votes, bits_votes) => {
return channel_points_votes + bits_votes + getRandomInt(0,99999)
},
channel_points_votes: (channel_points_voting_enabled) => {
switch (channel_points_voting_enabled){
case true:
return getRandomInt(0,100)
case false:
return 0
}
},
bits_votes: (bits_voting_enabled) => {
switch (bits_voting_enabled){
case true:
return getRandomInt(0,100)
case false:
return 0
}
},
}
const ModeratorsModel = {
user_id: () => {
return getRandomInt(0,99999999).toString()
},
user_login: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
user_name: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
}
const HypeTrainEventsModel = {
id: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
let length = 27
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
event_type: () => {
let types = ["progression"]
let string = "hypetrain."
return string + types[getRandomInt(0,types.length-1)]
},
event_timestamp: (started_at) => {
let event_timestamp = new Date(started_at)
event_timestamp.setTime(event_timestamp.getTime()+getRandomInt(0,9999))
return event_timestamp.toISOString()
},
version: ()=>{
return (getRandomInt(0,12)-1).toString() + "." + (getRandomInt(0,12)-1).toString() + "." + (getRandomInt(0,12)-1).toString()
},
}
const HypeTrainEventDataModel = {
broadcaster_id: () => {
return getRandomInt(0, 999999999).toString()
},
cooldown_end_time: (expires_at) => {
let cooldown_end_time = new Date(expires_at)
cooldown_end_time.setTime(cooldown_end_time.getTime()+getRandomInt(0,9999))
return cooldown_end_time.toISOString()
},
expires_at: (started_at) => {
let expires_at = new Date(started_at)
expires_at.setTime(expires_at.getTime()+getRandomInt(0,9999))
return expires_at.toISOString()
},
goal: () => {
return getRandomInt(0,999999)
},
id: () => {
let string = ""
let characters = "0123456789abcdef"
for (var i = 0; i<32; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
switch (i){
case 7:
case 11:
case 15:
case 19:
string+="-"
}
}
return string
},
level: () => {
return getRandomInt(0,5)
},
started_at: () => {
let finalDate = new Date(0);
let maxMonthDate = new Date(0);
finalDate.setFullYear(getRandomInt(2020,2050));
finalDate.setMonth(getRandomInt(0,11));
finalDate.setDate(1)
maxMonthDate = finalDate
maxMonthDate.setMonth(maxMonthDate.getMonth() + 1);
maxMonthDate.setDate(0)
finalDate.setDate(getRandomInt(1,maxMonthDate.getDate()));
finalDate.setHours(getRandomInt(0,23),getRandomInt(0,59),getRandomInt(0,59),getRandomInt(0,999))
return finalDate.toISOString();
},
total: () => {
return getRandomInt(0,999999)
},
}
const HypeTrainEventContributionModel = {
total: (type) => {
switch(type){
case "BITS":
return getRandomInt(0,99999)
case "SUBS":
let subTotal = [500,1000,2500]
switch (getRandomInt(0,3)){
case 1:
return subTotal[getRandomInt(0,subTotal.length-1)]
case 2:
let num1 = subTotal[getRandomInt(0,subTotal.length-1)]
let num2 = num1
do {
num2 = subTotal[getRandomInt(0,subTotal.length-1)]
} while (num2 === num1)
return num1 + num2
case 3:
return 4000
}
}
},
type: () => {
let types = ["BITS", "SUBS"]
return types[getRandomInt(0,types.length-1)]
},
user: () => {
return getRandomInt(0,999999999).toString()
},
}
const GlobalEmotesModel = {
id: () => {
return getRandomInt(0,999999).toString()
},
name: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
format: () => {
let formats = ["static", "animated"]
switch(getRandomInt(1,2)){
case 1:
return [formats[getRandomInt(0,formats.length-1)]]
case 2:
return formats
}
},
images: (scales, id) => {
let obj = {}
if (scales.includes("1.0")){
obj["url_1x"]="https://static-cdn.jtvnw.net/emoticons/v2/"+id+"/static/light/1.0"
}
if (scales.includes("2.0")){
obj["url_2x"]="https://static-cdn.jtvnw.net/emoticons/v2/"+id+"/static/light/2.0"
}
if (scales.includes("3.0")){
obj["url_4x"]="https://static-cdn.jtvnw.net/emoticons/v2/"+id+"/static/light/3.0"
}
return obj
},
scale: () => {
let scales = ["1.0", "2.0", "3.0"]
let array = []
switch(getRandomInt(1,3)){
case 1:
return [scales[getRandomInt(0,scales.length-1)]]
case 2:
array.push(scales[getRandomInt(0,scales.length-1)])
let newScale;
do {
newScale = scales[getRandomInt(0,scales.length-1)]
} while (array.includes(newScale))
array.push(newScale)
return array
case 3:
return scales
}
},
theme_mode: () => {
let themes = ["light", "dark"]
switch(getRandomInt(1,2)){
case 1:
return [themes[getRandomInt(0,themes.length-1)]]
case 2:
return themes
}
},
}
const GlobalChatBadgesModel = {
set_id: () => {
const sets = ["vip"]
return sets[getRandomInt(0,sets.length-1)]
},
id: () => {
return getRandomInt(0,9999999999).toString()
},
image_url_1x: () => {
return "https://static-cdn.jtvnw.net/badges/v1/b817aba4-fad8-49e2-b88a-7cc744dfa6ec/1"
},
image_url_2x: () => {
return "https://static-cdn.jtvnw.net/badges/v1/b817aba4-fad8-49e2-b88a-7cc744dfa6ec/2"
},
image_url_4x: () => {
return "https://static-cdn.jtvnw.net/badges/v1/b817aba4-fad8-49e2-b88a-7cc744dfa6ec/3"
},
}
const GamesModel = {
box_art_url: (name) => {
return "https://static-cdn.jtvnw.net/ttv-boxart/"+name+"-52x72.jpg"
},
id: () => {
return getRandomInt(0,9999999999).toString()
},
name: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(10,32)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
}
const AnalyticsModel = {
game_id: () => {
return getRandomInt(0,9999999999).toString()
},
extension_id: () => {
let string = ""
let characters = "abcdefghijklmnopqrstuvwxyz"
let length = getRandomInt(5,10)
for (var i = 0; i<length; i++){
string += characters.charAt(Math.floor(Math.random() *
characters.length));
}
return string
},
URL: () => {
return "https://twitch-piper-reports.s3-us-west-2.amazonaws.com/games/9821/overview/1526428800000.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAJQ4MLJCNPIYDOZ4Q%2F20180517%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20180517T231129Z&X-Amz-Expires=60&X-Amz-Security-Token=FQoDYXdzEK7%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDD0JCM06UswayN4iVyK3AzIiwI0Qf4KRs2yk9nCiocQOwmMWa7FPJnJEd%2FIxljnmZy%2BphQEEWN3%2Bt8k06wZysfPHvW71zcrIeclv11kNtXaYojC%2FHVKJWO8EnicIQE73kokr16fkf1Q4eglQBuu56jJQoTsEn2UkgZff9XHx69LyFvLYf33ue10CjeJE1bY65%2B6LtcPKciJK%2FNRS1TyUsz%2FiQjyxMEUpAKm39HxNtNKFM5xehjAoWC1KfJc52XVQGFO%2Fm2EQiJj6RoifNkiIQKb4m7nGr86zvIQKDQcxcpVbiGNEcC8UugZgCnuspSPjuJLARb%2BNT%2FjLKopd2%2FUKDlIY%2BAoyEk%2B%2FGIWL5TgvjjmT5uaJ5AcnTm4b7DlV%2FkmDsYHFQez0Mu4%2BwoujZEqR0K%2BtDSyAvva2nUUGabZuDeaaiQD4JfrokXC5GWtninHQCAoPiC4q%2FMYkHS82wxPjJp0l4cStwzEDQ5LJ4cehKm4tCoY1m1whWIJsNuyfLtIUH2rBTuF9D5DFmsmpXiKc4LE9saQgSlLwNBEGASqAbRuy7Tc2ZlcIp1lBllioxhoYL3XcjaXOX3qluWGMwgXdV2Odq0L03MkoxuL31wU%3D&X-