Update NPM packages; Update Deprecated Mongo APIs; Add Release Name for RS5; Update Credits Page

master
BuildFeed Bot 2018-10-06 12:35:03 +01:00
parent c5eeac0ce1
commit b5377069c0
No known key found for this signature in database
GPG Key ID: 3757685ADD91E0A1
16 changed files with 1401 additions and 1260 deletions

View File

@ -94,24 +94,24 @@ namespace MongoAuth
if (indexes.All(i => i["name"] != "_idx_username"))
{
await _memberCollection.Indexes.CreateOneAsync(
await _memberCollection.Indexes.CreateOneAsync(new CreateIndexModel<MongoMember>(
Builders<MongoMember>.IndexKeys.Ascending(b => b.UserName),
new CreateIndexOptions
{
Name = "_idx_username",
Unique = true
});
}));
}
if (indexes.All(i => i["name"] != "_idx_email"))
{
await _memberCollection.Indexes.CreateOneAsync(
await _memberCollection.Indexes.CreateOneAsync(new CreateIndexModel<MongoMember>(
Builders<MongoMember>.IndexKeys.Ascending(b => b.EmailAddress),
new CreateIndexOptions
{
Name = "_idx_email",
Unique = true
});
}));
}
}
@ -161,8 +161,8 @@ namespace MongoAuth
MembershipUser mu = null;
var dupeUsers = _memberCollection.Find(m => m.UserName.ToLower() == username.ToLower()).CountAsync();
var dupeEmails = _memberCollection.Find(m => m.EmailAddress.ToLower() == email.ToLower()).CountAsync();
var dupeUsers = _memberCollection.Find(m => m.UserName.ToLower() == username.ToLower()).CountDocumentsAsync();
var dupeEmails = _memberCollection.Find(m => m.EmailAddress.ToLower() == email.ToLower()).CountDocumentsAsync();
dupeUsers.Wait();
dupeEmails.Wait();
@ -252,7 +252,7 @@ namespace MongoAuth
var users = _memberCollection.Find(new BsonDocument())
.Sort(Builders<MongoMember>.Sort.Ascending(m => m.UserName));
var totalRecordsTask = users.CountAsync();
var totalRecordsTask = users.CountDocumentsAsync();
totalRecordsTask.Wait();
totalRecords = Convert.ToInt32(totalRecordsTask.Result);

View File

@ -48,7 +48,7 @@ namespace BuildFeed.Model
}
public async Task<long> SelectFamilyCount(ProjectFamily family)
=> await _buildCollection.CountAsync(new BsonDocument(nameof(Build.Family), family));
=> await _buildCollection.CountDocumentsAsync(new BsonDocument(nameof(Build.Family), family));
public async Task<List<FamilyOverview>> SelectFamilyOverviews()
{

View File

@ -97,7 +97,7 @@ namespace BuildFeed.Model
return await query.ToListAsync();
}
public async Task<long> SelectGroupCount(BuildGroup group) => await _buildCollection.CountAsync(new BsonDocument
public async Task<long> SelectGroupCount(BuildGroup group) => await _buildCollection.CountDocumentsAsync(new BsonDocument
{
new BsonElement(nameof(Build.MajorVersion), group.Major),
new BsonElement(nameof(Build.MinorVersion), group.Minor),

View File

@ -87,6 +87,6 @@ namespace BuildFeed.Model
}
public async Task<long> SelectLabCount(string lab)
=> await _buildCollection.CountAsync(new BsonDocument(nameof(Build.LabUrl), lab));
=> await _buildCollection.CountDocumentsAsync(new BsonDocument(nameof(Build.LabUrl), lab));
}
}

View File

@ -28,6 +28,6 @@ namespace BuildFeed.Model
}
public async Task<long> SelectSourceCount(TypeOfSource source)
=> await _buildCollection.CountAsync(new BsonDocument(nameof(Build.SourceType), source));
=> await _buildCollection.CountDocumentsAsync(new BsonDocument(nameof(Build.SourceType), source));
}
}

View File

@ -70,7 +70,7 @@ namespace BuildFeed.Model
return await query.ToListAsync();
}
public async Task<long> SelectVersionCount(uint major, uint minor) => await _buildCollection.CountAsync(
public async Task<long> SelectVersionCount(uint major, uint minor) => await _buildCollection.CountDocumentsAsync(
new BsonDocument
{
new BsonElement(nameof(Build.MajorVersion), major),

View File

@ -60,7 +60,7 @@ namespace BuildFeed.Model
}
public async Task<long> SelectYearCount(int year) => await
_buildCollection.CountAsync(Builders<Build>.Filter.And(
_buildCollection.CountDocumentsAsync(Builders<Build>.Filter.And(
Builders<Build>.Filter.Gte(b => b.BuildTime, new DateTime(year, 1, 1, 0, 0, 0, DateTimeKind.Utc)),
Builders<Build>.Filter.Lte(b => b.BuildTime,
new DateTime(year, 12, 31, 23, 59, 59, DateTimeKind.Utc))));

View File

@ -57,7 +57,7 @@ namespace BuildFeed.Model
if (indexes.All(i => i["name"] != "_idx_group"))
{
await
_buildCollection.Indexes.CreateOneAsync(
_buildCollection.Indexes.CreateOneAsync(new CreateIndexModel<Build>(
Builders<Build>.IndexKeys.Combine(Builders<Build>.IndexKeys.Descending(b => b.MajorVersion),
Builders<Build>.IndexKeys.Descending(b => b.MinorVersion),
Builders<Build>.IndexKeys.Descending(b => b.Number),
@ -65,72 +65,77 @@ namespace BuildFeed.Model
new CreateIndexOptions
{
Name = "_idx_group"
});
}));
}
if (indexes.All(i => i["name"] != "_idx_legacy"))
{
await _buildCollection.Indexes.CreateOneAsync(Builders<Build>.IndexKeys.Ascending(b => b.LegacyId),
await _buildCollection.Indexes.CreateOneAsync(new CreateIndexModel<Build>(
Builders<Build>.IndexKeys.Ascending(b => b.LegacyId),
new CreateIndexOptions
{
Name = "_idx_legacy"
});
}));
}
if (indexes.All(i => i["name"] != "_idx_lab"))
{
await _buildCollection.Indexes.CreateOneAsync(Builders<Build>.IndexKeys.Ascending(b => b.Lab),
await _buildCollection.Indexes.CreateOneAsync(new CreateIndexModel<Build>(
Builders<Build>.IndexKeys.Ascending(b => b.Lab),
new CreateIndexOptions
{
Name = "_idx_lab"
});
}));
}
if (indexes.All(i => i["name"] != "_idx_date"))
{
await _buildCollection.Indexes.CreateOneAsync(Builders<Build>.IndexKeys.Descending(b => b.BuildTime),
await _buildCollection.Indexes.CreateOneAsync(new CreateIndexModel<Build>(
Builders<Build>.IndexKeys.Descending(b => b.BuildTime),
new CreateIndexOptions
{
Name = "_idx_date"
});
}));
}
if (indexes.All(i => i["name"] != "_idx_bstr"))
{
await _buildCollection.Indexes.CreateOneAsync(
await _buildCollection.Indexes.CreateOneAsync(new CreateIndexModel<Build>(
Builders<Build>.IndexKeys.Ascending(b => b.FullBuildString),
new CreateIndexOptions
{
Name = "_idx_bstr"
});
}));
}
if (indexes.All(i => i["name"] != "_idx_alt_bstr"))
{
await _buildCollection.Indexes.CreateOneAsync(
await _buildCollection.Indexes.CreateOneAsync(new CreateIndexModel<Build>(
Builders<Build>.IndexKeys.Ascending(b => b.AlternateBuildString),
new CreateIndexOptions
{
Name = "_idx_alt_bstr"
});
}));
}
if (indexes.All(i => i["name"] != "_idx_source"))
{
await _buildCollection.Indexes.CreateOneAsync(Builders<Build>.IndexKeys.Ascending(b => b.SourceType),
await _buildCollection.Indexes.CreateOneAsync(new CreateIndexModel<Build>(
Builders<Build>.IndexKeys.Ascending(b => b.SourceType),
new CreateIndexOptions
{
Name = "_idx_source"
});
}));
}
if (indexes.All(i => i["name"] != "_idx_family"))
{
await _buildCollection.Indexes.CreateOneAsync(Builders<Build>.IndexKeys.Ascending(b => b.Family),
await _buildCollection.Indexes.CreateOneAsync(new CreateIndexModel<Build>(
Builders<Build>.IndexKeys.Ascending(b => b.Family),
new CreateIndexOptions
{
Name = "_idx_family"
});
}));
}
}

View File

@ -55,7 +55,7 @@ namespace BuildFeed.Model
[Display(Name = "Redstone 4", Description = "Windows 10 (April 2018 Update)")]
Redstone4 = 60,
[Display(Name = "Redstone 5")]
[Display(Name = "Redstone 5", Description = "Windows 10 (October 2018 Update)")]
Redstone5 = 70,
[Display(Name = "19H1")]

View File

@ -20,10 +20,7 @@
</a>
</dd>
<dd>
Ahmed (airportsfan)&ensp;
<a target="_blank" rel="nofollow noopener" href="https://twitter.com/airportsfan">
<i class="fa fa-twitter"></i>
</a>
Ahmed (airportsfan)
</dd>
<dd>
Lukas (tfwboredom)&ensp;
@ -48,10 +45,7 @@
<dl class="credits-list">
<dt>Arabic (@CultureInfo.GetCultureInfo("ar").NativeName) Translation</dt>
<dd>
Ahmed (airportsfan)&ensp;
<a target="_blank" rel="nofollow noopener" href="https://twitter.com/airportsfan">
<i class="fa fa-twitter"></i>
</a>
Ahmed (airportsfan)
</dd>
<dt>Bengali (@CultureInfo.GetCultureInfo("bn").NativeName) Translation</dt>
<dd>

View File

@ -109,7 +109,7 @@
</system.net>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
</compilers>
</system.codedom>
<runtime>

View File

@ -33,7 +33,7 @@ gulp.task("sass-compile",
sourceMaps.write("./"),
gulp.dest("./res/css/"));
gulp.src("./res/css/*.scss")
return gulp.src("./res/css/*.scss")
.pipe(pipes);
});
@ -54,6 +54,6 @@ gulp.task("typescript",
gulp.task("watch-sass",
function()
{
gulp.watch("./res/css/**.scss", ["sass-compile"]);
gulp.watch("./res/ts/*.ts", ["typescript"]);
gulp.watch("./res/css/**.scss", gulp.series("sass-compile"));
gulp.watch("./res/ts/*.ts", gulp.series("typescript"));
});

File diff suppressed because it is too large Load Diff

View File

@ -4,17 +4,17 @@
"private": true,
"devDependencies": {
"@types/google.analytics": "0.0.39",
"@types/jquery": "3.3.4",
"@types/jquery": "3.3.11",
"@types/jsrender": "0.0.29",
"gulp": "3.9.1",
"gulp-autoprefixer": "5.0.0",
"gulp-clean-css": "3.9.4",
"gulp": "4.0.0",
"gulp-autoprefixer": "6.0.0",
"gulp-clean-css": "3.10.0",
"gulp-sass": "4.0.1",
"gulp-sourcemaps": "2.6.4",
"gulp-typescript": "4.0.2",
"gulp-uglify-es": "1.0.4",
"multipipe": "2.0.3",
"node-sass": "4.9.2",
"typescript": "2.9.2"
"node-sass": "4.9.3",
"typescript": "3.1.1"
}
}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":3,"sources":["christmas.ts"],"names":["BuildFeed","Christmas","movementSpeed","snowContainer","snow","counter","Snowflake","[object Object]","this","element","moveX","localSpeed","Math","round","random","top","window","innerHeight","remove","left","innerWidth","style","transform","document","createElement","deferAnimate","requestAnimationFrame","animate","i","newSnow","push","appendChild","getElement","flake","bumpElement","splice","indexOf","Setup","className","match","navigator","userAgent","parseInt","body","setInterval","addEventListener"],"mappings":"AAAA,aAEA,IAAOA,WAAP,SAAOA,IAAU,SAAAC,GAEb,MAAMC,EAAgB,EAEtB,IAAIC,EACAC,KACAC,EAAkB,QAEtBC,EAMWC,aAEH,OAAOC,KAAKC,QAGTF,YAAYG,GAEf,IAAIC,EAAaC,KAAKC,OAAQD,KAAKE,SAAW,EAAK,IAAOZ,GAE1D,OADAM,KAAKO,IAAMP,KAAKO,IAAMJ,EAClBH,KAAKO,KAAO,IAAMP,KAAKO,IAAOC,OAAOC,YAAc,IAEnDT,KAAKC,QAAQS,UACN,GAGPR,IAEAC,EAAaC,KAAKC,OAAQD,KAAKE,SAAW,EAAK,IAAOZ,GACtDM,KAAKW,KAAOP,KAAKE,SAAW,GACtBN,KAAKW,KAAOR,EACZH,KAAKW,KAAOR,EAEdH,KAAKW,MAAQ,IAAMX,KAAKW,KAAQH,OAAOI,WAAa,KAEpDZ,KAAKC,QAAQS,UACN,IAIfV,KAAKC,QAAQY,MAAMC,uBAAyBd,KAAKW,WAAWX,KAAKO,UAC1D,GAGXR,cAEIC,KAAKC,QAAUc,SAASC,cAAc,OACtChB,KAAKO,IAAM,EACXP,KAAKW,KAAOP,KAAKC,MAAMD,KAAKE,SAAWE,OAAOI,aAItD,SAAAK,IAEIT,OAAOU,sBAAsBC,GAGjC,SAAAA,IAEI,GAAItB,EAAU,GAAM,EAEhB,IAAK,IAAIuB,EAAI,EAAGA,EAAI,EAAGA,IACvB,CACI,MAAMC,EAAU,IAAIvB,EACpBF,EAAK0B,KAAKD,GACV1B,EAAc4B,YAAYF,EAAQG,cAI1C,IAAK,MAAMC,KAAS7B,EACpB,CACmB6B,EAAMC,aAAY,IAI7B9B,EAAK+B,OAAO/B,EAAKgC,QAAQH,GAAQ,GAIzC5B,IAGYJ,EAAAoC,MAAhB,YAEIlC,EAAgBoB,SAASC,cAAc,QACzBc,UAAY,iBAE1B,MAAMC,EAAQvB,OAAOwB,UAAUC,UAAUF,MAAM,wBACnCA,EAAQG,SAASH,EAAM,IAAM,IAE9B,KAGPpC,EAAcmC,WAAa,2BAG/Bf,SAASoB,KAAKZ,YAAY5B,GAE1Ba,OAAOU,sBAAsBC,GAC7BiB,YAAYnB,EAAc,MAtGjB,CAAAzB,EAAAC,YAAAD,EAAAC,eAAjB,CAAOD,YAAAA,eA0GPgB,OAAO6B,iBAAiB,OAAQ7C,UAAUC,UAAUoC","file":"christmas.js","sourcesContent":["\"use strict\";\r\n\r\nmodule BuildFeed.Christmas\r\n{\r\n const movementSpeed = 5;\r\n\r\n let snowContainer: HTMLDivElement;\r\n let snow: Array<Snowflake> = [];\r\n let counter: number = 0;\r\n\r\n class Snowflake\r\n {\r\n private readonly element: HTMLDivElement;\r\n private top: number;\r\n private left: number;\r\n\r\n public getElement()\r\n {\r\n return this.element;\r\n }\r\n\r\n public bumpElement(moveX: boolean)\r\n {\r\n let localSpeed = Math.round(((Math.random() / 2) + 0.5) * movementSpeed);\r\n this.top = this.top + localSpeed;\r\n if (this.top < -10 || this.top > (window.innerHeight + 10))\r\n {\r\n this.element.remove();\r\n return true;\r\n }\r\n\r\n if (moveX)\r\n {\r\n localSpeed = Math.round(((Math.random() / 2) + 0.5) * movementSpeed);\r\n this.left = Math.random() > 0.5\r\n ? this.left + localSpeed\r\n : this.left - localSpeed;\r\n\r\n if (this.left < -10 || this.left > (window.innerWidth + 10))\r\n {\r\n this.element.remove();\r\n return true;\r\n }\r\n }\r\n\r\n this.element.style.transform = `translate(${this.left}px, ${this.top}px)`;\r\n return false;\r\n }\r\n\r\n constructor()\r\n {\r\n this.element = document.createElement(\"div\");\r\n this.top = 0;\r\n this.left = Math.round(Math.random() * window.innerWidth);\r\n }\r\n }\r\n\r\n function deferAnimate()\r\n {\r\n window.requestAnimationFrame(animate);\r\n }\r\n\r\n function animate()\r\n {\r\n if (counter % 5 === 0)\r\n {\r\n for (let i = 0; i < 2; i++)\r\n {\r\n const newSnow = new Snowflake();\r\n snow.push(newSnow);\r\n snowContainer.appendChild(newSnow.getElement());\r\n }\r\n }\r\n\r\n for (const flake of snow)\r\n {\r\n const result = flake.bumpElement(true);\r\n\r\n if (result)\r\n {\r\n snow.splice(snow.indexOf(flake), 1);\r\n }\r\n }\r\n\r\n counter++;\r\n }\r\n\r\n export function Setup()\r\n {\r\n snowContainer = document.createElement(\"div\");\r\n snowContainer.className = \"snow-container\";\r\n\r\n const match = window.navigator.userAgent.match(/Firefox\\/([0-9]+)\\./);\r\n const ver = match ? parseInt(match[1]) : 0;\r\n\r\n if (ver >= 57)\r\n {\r\n // workaround shitty firefox quantum\r\n snowContainer.className += \" quantum-snow-container\";\r\n }\r\n\r\n document.body.appendChild(snowContainer);\r\n\r\n window.requestAnimationFrame(animate);\r\n setInterval(deferAnimate, 125);\r\n }\r\n}\r\n\r\nwindow.addEventListener(\"load\", BuildFeed.Christmas.Setup);"]}
{"version":3,"sources":["christmas.ts"],"names":["BuildFeed","Christmas","movementSpeed","snowContainer","snow","counter","Snowflake","[object Object]","this","element","moveX","localSpeed","Math","round","random","top","window","innerHeight","remove","left","innerWidth","style","transform","document","createElement","deferAnimate","requestAnimationFrame","animate","i","newSnow","push","appendChild","getElement","flake","bumpElement","splice","indexOf","Setup","className","match","navigator","userAgent","parseInt","body","setInterval","addEventListener"],"mappings":"AAAA,aAEA,IAAOA,WAAP,SAAOA,IAAU,SAAAC,GAEb,MAAMC,EAAgB,EAEtB,IAAIC,EACAC,KACAC,EAAkB,QAEhBC,EAMKC,aAEH,OAAOC,KAAKC,QAGTF,YAAYG,GAEf,IAAIC,EAAaC,KAAKC,OAAQD,KAAKE,SAAW,EAAK,IAAOZ,GAE1D,OADAM,KAAKO,IAAMP,KAAKO,IAAMJ,EAClBH,KAAKO,KAAO,IAAMP,KAAKO,IAAOC,OAAOC,YAAc,IAEnDT,KAAKC,QAAQS,UACN,GAGPR,IAEAC,EAAaC,KAAKC,OAAQD,KAAKE,SAAW,EAAK,IAAOZ,GACtDM,KAAKW,KAAOP,KAAKE,SAAW,GACtBN,KAAKW,KAAOR,EACZH,KAAKW,KAAOR,EAEdH,KAAKW,MAAQ,IAAMX,KAAKW,KAAQH,OAAOI,WAAa,KAEpDZ,KAAKC,QAAQS,UACN,IAIfV,KAAKC,QAAQY,MAAMC,uBAAyBd,KAAKW,WAAWX,KAAKO,UAC1D,GAGXR,cAEIC,KAAKC,QAAUc,SAASC,cAAc,OACtChB,KAAKO,IAAM,EACXP,KAAKW,KAAOP,KAAKC,MAAMD,KAAKE,SAAWE,OAAOI,aAItD,SAASK,IAELT,OAAOU,sBAAsBC,GAGjC,SAASA,IAEL,GAAItB,EAAU,GAAM,EAEhB,IAAK,IAAIuB,EAAI,EAAGA,EAAI,EAAGA,IACvB,CACI,MAAMC,EAAU,IAAIvB,EACpBF,EAAK0B,KAAKD,GACV1B,EAAc4B,YAAYF,EAAQG,cAI1C,IAAK,MAAMC,KAAS7B,EACpB,CACmB6B,EAAMC,aAAY,IAI7B9B,EAAK+B,OAAO/B,EAAKgC,QAAQH,GAAQ,GAIzC5B,IAGYJ,EAAAoC,MAAhB,YAEIlC,EAAgBoB,SAASC,cAAc,QACzBc,UAAY,iBAE1B,MAAMC,EAAQvB,OAAOwB,UAAUC,UAAUF,MAAM,wBACnCA,EAAQG,SAASH,EAAM,IAAM,IAE9B,KAGPpC,EAAcmC,WAAa,2BAG/Bf,SAASoB,KAAKZ,YAAY5B,GAE1Ba,OAAOU,sBAAsBC,GAC7BiB,YAAYnB,EAAc,MAtGjB,CAAAzB,EAAAC,YAAAD,EAAAC,eAAjB,CAAOD,YAAAA,eA0GPgB,OAAO6B,iBAAiB,OAAQ7C,UAAUC,UAAUoC","file":"christmas.js","sourcesContent":["\"use strict\";\r\n\r\nmodule BuildFeed.Christmas\r\n{\r\n const movementSpeed = 5;\r\n\r\n let snowContainer: HTMLDivElement;\r\n let snow: Array<Snowflake> = [];\r\n let counter: number = 0;\r\n\r\n class Snowflake\r\n {\r\n private readonly element: HTMLDivElement;\r\n private top: number;\r\n private left: number;\r\n\r\n public getElement()\r\n {\r\n return this.element;\r\n }\r\n\r\n public bumpElement(moveX: boolean)\r\n {\r\n let localSpeed = Math.round(((Math.random() / 2) + 0.5) * movementSpeed);\r\n this.top = this.top + localSpeed;\r\n if (this.top < -10 || this.top > (window.innerHeight + 10))\r\n {\r\n this.element.remove();\r\n return true;\r\n }\r\n\r\n if (moveX)\r\n {\r\n localSpeed = Math.round(((Math.random() / 2) + 0.5) * movementSpeed);\r\n this.left = Math.random() > 0.5\r\n ? this.left + localSpeed\r\n : this.left - localSpeed;\r\n\r\n if (this.left < -10 || this.left > (window.innerWidth + 10))\r\n {\r\n this.element.remove();\r\n return true;\r\n }\r\n }\r\n\r\n this.element.style.transform = `translate(${this.left}px, ${this.top}px)`;\r\n return false;\r\n }\r\n\r\n constructor()\r\n {\r\n this.element = document.createElement(\"div\");\r\n this.top = 0;\r\n this.left = Math.round(Math.random() * window.innerWidth);\r\n }\r\n }\r\n\r\n function deferAnimate()\r\n {\r\n window.requestAnimationFrame(animate);\r\n }\r\n\r\n function animate()\r\n {\r\n if (counter % 5 === 0)\r\n {\r\n for (let i = 0; i < 2; i++)\r\n {\r\n const newSnow = new Snowflake();\r\n snow.push(newSnow);\r\n snowContainer.appendChild(newSnow.getElement());\r\n }\r\n }\r\n\r\n for (const flake of snow)\r\n {\r\n const result = flake.bumpElement(true);\r\n\r\n if (result)\r\n {\r\n snow.splice(snow.indexOf(flake), 1);\r\n }\r\n }\r\n\r\n counter++;\r\n }\r\n\r\n export function Setup()\r\n {\r\n snowContainer = document.createElement(\"div\");\r\n snowContainer.className = \"snow-container\";\r\n\r\n const match = window.navigator.userAgent.match(/Firefox\\/([0-9]+)\\./);\r\n const ver = match ? parseInt(match[1]) : 0;\r\n\r\n if (ver >= 57)\r\n {\r\n // workaround shitty firefox quantum\r\n snowContainer.className += \" quantum-snow-container\";\r\n }\r\n\r\n document.body.appendChild(snowContainer);\r\n\r\n window.requestAnimationFrame(animate);\r\n setInterval(deferAnimate, 125);\r\n }\r\n}\r\n\r\nwindow.addEventListener(\"load\", BuildFeed.Christmas.Setup);"]}