]> Slayer Assistant Repositories - slayer.unlishema.org/.git/commitdiff
Adjusted CSP to fix iframe issue I hope.
authorunlishema <unlishema@jtryba.com>
Sat, 23 Nov 2024 09:54:44 +0000 (04:54 -0500)
committerunlishema <unlishema@jtryba.com>
Sat, 23 Nov 2024 09:54:44 +0000 (04:54 -0500)
dist/.htaccess
dist/main.js
dist/main.js.map
src/.htaccess
src/modules/data/assignnments.ts
src/modules/data/creatures.ts
src/modules/data/masters.ts
src/modules/data/reapers.ts

index d2b8bf5767be53cce2eef2cb6bb282702a5d4f00..85193d9ba48e5c64cc55b74c734ae0d0c2033fc5 100644 (file)
@@ -25,6 +25,9 @@ ErrorDocument 504 /pages/error.html?code=504
     Header set Referrer-Policy "strict-origin-when-cross-origin"
     Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; frame-ancestors http://unlishema.local https://unlishema.org https://*.unlishema.org"
     Header set Permissions-Policy "geolocation=(), microphone=(), camera=()"
+    
+    # Set the Host header to ensure requests target slayer.unlishema.org
+    Header set Host "slayer.unlishema.org"
 </IfModule>
 
 # Prevent Directory Listing
index 95ddab65f483802e6822f1e7f0b819eb7e3e9143..a38a27a1e7e7b9c469a083f815a8d0f64fb4e037 100644 (file)
@@ -708,7 +708,7 @@ function fetchAssignments() {
                         return [2 /*return*/, cachedData]; // Return cached data if still valid
                     }
                     urlBuild = "./data/assignments.json?q=".concat(encodeURIComponent(index)).concat(list ? "&list" : '', "&cache_bust=").concat(Date.now());
-                    return [4 /*yield*/, fetchData("https://slayer.unlishema.org" + urlBuild)];
+                    return [4 /*yield*/, fetchData(urlBuild)];
                 case 1:
                     data = _a.sent();
                     if (index === "all") {
@@ -849,7 +849,7 @@ function fetchCreatures() {
                         return [2 /*return*/, cachedCreaturesData]; // Return cached data if still valid
                     }
                     urlBuild = "./data/creatures.json?q=".concat(encodeURIComponent(name), "&cache_bust=").concat(Date.now());
-                    return [4 /*yield*/, fetchData("https://slayer.unlishema.org" + urlBuild)];
+                    return [4 /*yield*/, fetchData(urlBuild)];
                 case 1:
                     data = _a.sent();
                     if (name === "all") {
@@ -973,7 +973,7 @@ function fetchMasters() {
                         return [2 /*return*/, cachedMastersData]; // Return cached data if still valid
                     }
                     urlBuild = "./data/masters.json?q=".concat(encodeURIComponent(name), "&cache_bust=").concat(Date.now());
-                    return [4 /*yield*/, fetchData("https://slayer.unlishema.org" + urlBuild)];
+                    return [4 /*yield*/, fetchData(urlBuild)];
                 case 1:
                     data = _a.sent();
                     if (name === "all") {
@@ -1096,7 +1096,7 @@ function fetchReapers() {
                         return [2 /*return*/, cachedReapersData]; // Return cached data if still valid
                     }
                     urlBuild = "./data/reapers.json?q=".concat(encodeURIComponent(index)).concat(list ? "&list" : '', "&cache_bust=").concat(Date.now());
-                    return [4 /*yield*/, fetchData("https://slayer.unlishema.org" + urlBuild)];
+                    return [4 /*yield*/, fetchData(urlBuild)];
                 case 1:
                     data = _a.sent();
                     if (index === "all") {
index f6f1cc4efebf5392027faa357e41f25b1ccbba54..3a743a45683e42ed25d0edf3ba9d59f57e639612 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"main.js","mappings":"AAAA;AACA;AACA,2EAA2E,MAAM,2BAA2B,aAAa,qDAAqD,MAAM,4BAA4B,aAAa,qDAAqD,MAAM,qCAAqC,aAAa;AAC1U;AACA;AACA;AACA,uFAAuF,MAAM,2BAA2B,aAAa,qDAAqD,MAAM,4BAA4B,aAAa,qDAAqD,MAAM,qCAAqC,aAAa;AACtV;AACA;AACA,CAAC;AACD,O;;;;;;;;;ACVA,eAAe,6FAAgC;;;;;;;;;;ACA/C,eAAe,6FAAgC;;;;;;;;;;ACA/C,eAAe,6FAAgC;;;;;;;;;;ACA/C,eAAe,6FAAgC;;;;;;;;;;ACA/C,eAAe,6FAAgC;;;;;;;;;;ACA/C,eAAe,6FAAgC;;;;;;;;;;ACA/C,eAAe,6FAAgC;;;;;;;;;;ACA/C,eAAe,6FAAgC;;;;;;;;;;;;;;;;ACA/C,iBAAiB,SAAI,IAAI,SAAI;AAC7B,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,6IAA6I,cAAc;AAC3J,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,wCAAwC,oBAAoB;AAC5D;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;AACA,kDAAkD,gBAAgB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,gBAAgB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,gBAAgB;AAC7F;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,iGAAiG;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC0B;;;;;;;;;;;;;;;;;;;;;;;ACtN3B,iBAAiB,SAAI,IAAI,SAAI;AAC7B,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,6IAA6I,cAAc;AAC3J,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wC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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC,sBAAsB;AAChB;AACP;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,0DAA4B;AAC7E;AACA;AACA,6CAA6C,0DAA4B;AACzE;AACA;AACA;AACA;AACA,4BAA4B,6CAAe,cAAc,uCAAuC;AAChG;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,0DAA4B;AAC7E;AACA;AACA;AACA;AACA,4BAA4B,6CAAe,cAAc,+BAA+B;AACxF;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,sDAAwB;AACzE;AACA;AACA;AACA;AACA,4BAA4B,6CAAe,cAAc,+BAA+B;AACxF;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,mDAAqB;AAClE;AACA;AACA;AACA;AACA,4BAA4B,6CAAe,cAAc,iCAAiC;AAC1F;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ,iDAAmB,kFAAkF;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iDAAmB;AAC3B,QAAQ,oDAAsB;AAC9B;AACA;AACA,CAAC,kBAAkB;AACZ;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uDAAoB;AACrE;AACA;AACA,6CAA6C,4DAAwB;AACrE;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,gDAAkB,KAAK;AAC5F;AACA;AACA,oBAAoB,oDAAsB;AAC1C;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA,iBAAiB;AACjB;AACA;AA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AAe;AACzJ,wBAAwB,iDAAmB,wEAAwE,OAAO,2DAA6B,MAAM;AAC7J,wBAAwB,iDAAmB,iEAAiE,OAAO,wDAA0B,MAAM;AACnJ,wBAAwB,iDAAmB,gEAAgE,OAAO,uDAAyB,MAAM;AACjJ;AACA;AACA,wCAAwC,iDAAmB;AAC3D,4BAA4B,iDAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iDAAmB;AACzD;AACA,oIAAoI,kBAAkB;AACtJ;AACA;AACA,sCAAsC,iDAAmB;AACzD;AACA,gFAAgF,+EAA+E;AAC/J;AACA;AACA,0CAA0C,iDAAmB;AAC7D;AACA,gFAAgF,OAAO,gDAAkB,sBAAsB;AAC/H;AACA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,0BAA0B,iDAAmB;AAC7C,4BAA4B,iDAAmB;AAC/C,+BAA+B,iDAAmB;AAClD,YAAY,iDAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB;AAChB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iDAAmB;AAC1D,6CAA6C,iDAAmB;AAChE,6CAA6C,iDAAmB;AAChE;AACA;AACA;AACA,4BAA4B,iDAAmB;AAC/C;AACA;AACA,4BAA4B,iDAAmB;AAC/C;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC,wBAAwB;;;;;;;;;;;;;;;;;;;;;;AC1uBmB;AACJ;AACJ;AACpC;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,IAAI,yCAAW;AACf;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,QAAQ,iDAAmB;AAC3B,QAAQ,oDAAsB;AAC9B,QAAQ,yCAAW;AACnB;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA,mBAAmB,gDAAkB;AACrC,mBAAmB,iDAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gDAAkB;AACrC,uBAAuB,iDAAmB;AAC1C,sBAAsB,iDAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gDAAkB;AACrC,qBAAqB,iDAAmB;AACxC;AACA;AACA;AACA;AACA,CAAC,oBAAoB;;;;;;;;;;;;;;;;;;;;;ACnEuB;AACJ;AACxC;AACO;AACP,QAAQ,iDAAmB;AAC3B;AACA,eAAe,gDAAkB;AACjC,IAAI,iDAAmB;AACvB;AACA;AACO;AACP,QAAQ,iDAAmB;AAC3B;AACA,eAAe,gDAAkB;AACjC,IAAI,iDAAmB;AACvB;AACA;AACO;AACP;AACA,QAAQ,iDAAmB;AAC3B;AACA,eAAe,gDAAkB;AACjC,6BAA6B,iDAAmB;AAChD;AACA;AACA;AACA;AACA;AACO;AACP;AACA,QAAQ,iDAAmB;AAC3B;AACA,eAAe,gDAAkB;AACjC,gCAAgC,iDAAmB;AACnD;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACrCA;AACO;AACP;AACA,yCAAyC;AACzC;AACA,yCAAyC;AACzC,0CAA0C,EAAE;AAC5C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,oCAAoC,oBAAoB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,aAAa;AACb;AACA;AACO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA,wCAAwC;AACxC;AACA;AACO;AACP;AACA;AACA,4CAA4C;AAC5C;AACA;AACO;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AClFA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,6IAA6I,cAAc;AAC3J,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AAC2C;AACR;AACO;AACP;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,+DAA+D,+BAA+B;AAC9F;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yCAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yCAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yCAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mIAAmI,kBAAkB;AACrJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mDAAU;AAClC,wBAAwB,mDAAU;AAClC,wBAAwB,mDAAU;AAClC,wBAAwB,mDAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,4BAA4B,iDAAmB;AAC/C;AACA,6CAA6C,iDAAQ,UAAU,8DAA8D,IAAI,8DAA8D;AAC/L;AACA;AACA;AACA;AACA;AACA,6CAA6C,iDAAQ,UAAU,8DAA8D;AAC7H;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wCAAU;AAC1B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACiC;AAC3B;AACP;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yCAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mDAAU;AAClB,QAAQ,mDAAU;AAClB,QAAQ,mDAAU;AAClB,QAAQ,mDAAU;AAClB;AACA,QAAQ,yCAAW;AACnB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yCAAW;AACnB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yCAAW;AACnB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA;AACA;AACA,CAAC,wBAAwB;AAClB;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA,oBAAoB,wCAAU;AAC9B;AACA;AACA;AACA;AACA,oBAAoB,wCAAU;AAC9B;AACA;AACA;AACA,oBAAoB,6CAAe;AACnC;AACA;AACA;AACA,oBAAoB,+CAAiB;AACrC;AACA;AACA;AACA,yCAAyC,kDAAoB;AAC7D;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC,wBAAwB,wCAAU;AAClC,wBAAwB,wCAAU;AAClC,wBAAwB,wCAAU;AAClC,wBAAwB,wCAAU;AAClC;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA;AACA,yCAAyC,iDAAmB;AAC5D;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC,wBAAwB,wCAAU;AAClC,wBAAwB,wCAAU;AAClC;AACA,4BAA4B,wCAAU,0BAA0B,eAAe;AAC/E;AACA;AACA,4BAA4B,wCAAU,yBAAyB,eAAe;AAC9E;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC,8BAA8B,iDAAmB;AACjD;AACA,4BAA4B,wCAAU;AACtC;AACA;AACA,8BAA8B,iDAAmB;AACjD;AACA,4BAA4B,wCAAU;AACtC;AACA;AACA;AACA,4BAA4B,wCAAU;AACtC;AACA,4BAA4B,wCAAU;AACtC;AACA,4BAA4B,wCAAU;AACtC,kEAAkE,gBAAgB;AAClF;AACA,gCAAgC,wCAAU;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,0CAAY;AAChC;AACA;AACA,oBAAoB,wCAAU;AAC9B;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3gBA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,6IAA6I,cAAc;AAC3J,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AAC8B;AACsB;AACM;AACN;AACb;AACI;AACR;AACnC;AACO,qBAAqB,6DAAe;AACpC,uBAAuB,mEAAkB;AACzC,wBAAwB,6DAAe;AACvC;AACP;AACA,4BAA4B,oCAAoC,6BAA6B;AAC7F;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA,eAAe,mDAAuB;AACtC;AACA;AACA;AACA,YAAY,yCAAW;AACvB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,iDAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAA8B;AAClD;AACA;AACA;AACA;AACA,oBAAoB,wDAA0B;AAC9C;AACA,oBAAoB,iDAAmB;AACvC,oBAAoB,4DAA8B;AAClD,+CAA+C,iDAAmB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iDAAmB,UAAU,sDAAsD;AAC5H;AACA;AACA;AACA;AACA;AACA,yCAAyC,iDAAmB,UAAU,sDAAsD,IAAI,sDAAsD;AACtL;AACA;AACA;AACA,6CAA6C,iDAAmB,UAAU,sDAAsD;AAChI;AACA;AACA;AACA;AACA,oBAAoB,4DAA8B;AAClD,+CAA+C,iDAAmB;AAClE;AACA;AACA;AACA;AACA;AACA,yBAAyB,iDAAmB;AAC5C;AACA;AACA;AACA;AACA,oBAAoB,wDAA0B;AAC9C,iDAAiD,0DAA4B;AAC7E,yCAAyC,iDAAmB,UAAU,kDAAkD;AACxH;AACA;AACA;AACA;AACA,kDAAkD,0DAA4B;AAC9E,yCAAyC,iDAAmB,UAAU,kDAAkD;AACxH;AACA;AACA;AACA;AACA,oBAAoB,4DAA8B;AAClD,+CAA+C,iDAAmB;AAClE;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAA8B;AAClD;AACA;AACA;AACA;AACA,oBAAoB,4DAA8B;AAClD;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iDAAmB;AAC5D;AACA;AACA;AACA;AACA,oBAAoB,mDAAqB;AACzC,iEAAiE,iDAAmB;AACpF;AACA,oBAAoB,oDAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sDAAwB;AAChD;AACA;AACA;AACA,wBAAwB,iDAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA,oBAAoB,oDAAsB;AAC1C,oBAAoB,wCAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC,qCAAqC,sCAAsC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iDAAmB,UAAU,+BAA+B,IAAI,+BAA+B;AACxI;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iDAAmB,UAAU,+BAA+B;AACrG;AACA;AACA;AACA,8CAA8C,iDAAmB,UAAU,+BAA+B;AAC1G;AACA;AACA;AACA;AACA,oBAAoB,4DAA8B;AAClD,yBAAyB,iDAAmB;AAC5C,+CAA+C,iDAAmB;AAClE;AACA;AACA;AACA,oBAAoB,oDAAsB;AAC1C;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1PA,gEAAgE,kDAAkD,6BAA6B;;AAE/I;;;;;;;;;;;ACFA,yEAAyE,2DAA2D,6BAA6B;;AAEjK;;;;;;;;;;;ACFA,+DAA+D,iDAAiD,6BAA6B;;AAE7I;;;;;;;;;;ACFA;AACA,IAAI,IAAyD;AAC7D,2EAA2E,MAAM,OAAO,mBAAO,CAAC,oBAAO,KAAK,aAAa,qDAAqD,MAAM,OAAO,mBAAO,CAAC,sBAAQ,KAAK,aAAa,qDAAqD,MAAM,OAAO,mBAAO,CAAC,wCAAiB,KAAK,aAAa;AAC1U,MAAM,EAK4E;AAClF,CAAC;AACD,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,gDAAgD,aAAa;;;AAG7D,OAAO;;AAEP;AACA;AACA;AACA;AACA;;;AAGA,gDAAgD,aAAa;;;AAG7D,OAAO;;AAEP;AACA;AACA;AACA;AACA,kDAAkD,+BAAmB;;;AAGrE;AACA;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,aAAa;AAC7D;AACA,2BAA2B,+BAAmB;AAC9C,iCAAiC,+BAAmB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,IAAI;AACJ;AACA,iEAAiE,+BAAmB,oBAAoB,+BAAmB;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yBAAyB;AAClD,6BAA6B,0BAA0B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA;AACA;AACA,kDAAkD,gCAAmB;;;AAGrE;AACA;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,aAAa;AAC7D;AACA,iBAAiB,gCAAmB;AACpC,4BAA4B,gCAAmB;AAC/C,iCAAiC,gCAAmB;AACpD,WAAW,gCAAmB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,SAAS;AACT;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,qBAAqB;AACrB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC,wBAAwB,kBAAkB;AAC1C;AACA;AACA,iCAAiC,YAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B,gCAAgC,SAAS;AACzC,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC,yBAAyB,qBAAqB;AAC9C,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C,yBAAyB,sBAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,YAAY,WAAW;AACjF;AACA;AACA;AACA,qDAAqD,iBAAiB,WAAW;AACjF,yCAAyC,iDAAiD;AAC1F,0CAA0C,mCAAmC;AAC7E,sCAAsC,+BAA+B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA;AACA;AACA,0CAA0C,gCAAmB;;;AAG7D,gDAAgD,aAAa;AAC7D;AACA,gBAAgB,gCAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA;AACA;AACA,kDAAkD,gCAAmB;;;AAGrE;AACA;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,gDAAgD,aAAa;AAC7D;AACA,gCAAmB;AACnB,mCAAmC,gCAAmB;AACtD,kCAAkC,gCAAmB;AACrD,aAAa,gCAAmB;AAChC,0CAA0C,qCAAqC,2CAA2C;AAC1H,6BAA6B,gCAAmB;AAChD,+CAA+C,qCAAqC,4CAA4C;AAChI,oCAAoC,gCAAmB;AACvD,aAAa,gCAAmB;AAChC,aAAa,gCAAmB;AAChC,oBAAoB,gCAAmB;AACvC,mDAAmD,qCAAqC,uCAAuC;AAC/H,kDAAkD,qCAAqC,sCAAsC;AAC7H,mDAAmD,qCAAqC,uCAAuC;AAC/H,mDAAmD,qCAAqC,uCAAuC;AAC/H,kDAAkD,qCAAqC,sCAAsC;;;AAG7H,OAAO;;AAEP;AACA;AACA;AACA;AACA,0CAA0C,gCAAmB;;;AAG7D;AACA;AACA,gDAAgD,aAAa;AAC7D;AACA,gBAAgB,gCAAmB;AACnC,sBAAsB,gCAAmB;AACzC;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gCAAmB,kDAAkD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gCAAmB,oDAAoD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gCAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,sCAAsC;AACrG;AACA;AACA;AACA,wDAAwD,OAAO,qDAAqD;AACpH;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,0BAA0B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA;AACA;AACA,kDAAkD,gCAAmB;;;AAGrE;AACA;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,aAAa;AAC7D;AACA,gBAAgB,gCAAmB;AACnC,iCAAiC,gCAAmB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4BAA4B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,0BAA0B;AACpC,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kCAAkC,OAAO;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,mBAAmB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,aAAa;AACpD;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,8BAA8B,kBAAkB;AAChD;AACA;AACA,gDAAgD,aAAa;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA;AACA;AACA,kDAAkD,gCAAmB;;;AAGrE;AACA,6CAA6C;AAC7C;AACA,gDAAgD,aAAa;AAC7D;AACA,+BAA+B,gCAAmB;AAClD,iBAAiB,gCAAmB;AACpC,+BAA+B,gCAAmB;AAClD,gCAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B,wBAAwB,OAAO;AAC/B;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,aAAa;AAClC,yBAAyB,aAAa;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mHAAmH,WAAW,2BAA2B;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA,4GAA4G,yCAAyC;AACrJ;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,yCAAyC;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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CpC,qBAAqB,gCAAmB;AACxC,WAAW,gCAAmB;AAC9B,WAAW,gCAAmB;AAC9B,CAAC;AACD,eAAe,gCAAmB;AAClC,gBAAgB,gCAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,QAAQ,0BAA0B;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA,8BAA8B,SAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mDAAmD;AAC3E;AACA;AACA;AACA,wBAAwB,kDAAkD;AAC1E;AACA;AACA;AACA,wBAAwB,kDAAkD;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;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AAiW,EAAE,qSAAqS,EAAE,qPAAqP,EAAE,qOAAqO,EAAE,8PAA8P,EAAE,6MAA6M,EAAE,0UAA0U,EAAE,qPAAqP,EAAE,oNAAoN,EAAE,qOAAqO,EAAE,6BAA6B,uGAAuG,EAAE,6JAA6J,EAAE,6BAA6B,uGAAuG,EAAE,4GAA4G,iEAAiE;;AAEvuoB,OAAO;;AAEP,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,mBAAmB,gCAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,gCAAmB;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0BAAmB,GAAG,gCAAmB;AACvD;AACA,iBAAiB,0BAAmB;AACpC,UAAU;AACV;AACA,CAAC;;;;;;;;;;AC7eD;AACA,IAAI,IAAyD;AAC7D,2BAA2B,mBAAO,CAAC,0DAAW;AAC9C,MAAM,EAKiC;AACvC,CAAC;AACD,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAA0C,8BAAmB;;;AAG7D,gDAAgD,aAAa;AAC7D;AACA,eAAe,8BAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB,YAAY;AACjC,yBAAyB,YAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2CAA2C;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa,YAAY;AAC1C;AACA;AACA;AACA;AACA;AACA,sCAAsC,kBAAkB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0BAA0B;AACvD,iCAAiC,yBAAyB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0BAA0B;AACvD,iCAAiC,yBAAyB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6CAA6C;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oCAAoC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,wBAAwB;AAChE;AACA,oBAAoB,mDAAmD;AACvE,iCAAiC,SAAS;AAC1C,6BAA6B;AAC7B;AACA,6BAA6B,YAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yBAAyB;AAC/C;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2FAA2F;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC,gCAAgC,0BAA0B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gGAAgG;AAC1H;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA,iBAAiB,iFAAiF;AAClG;AACA;;AAEA;;AAEA,OAAO;;AAEP,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,mBAAmB,gCAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,gCAAmB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0BAAmB,GAAG,gCAAmB;AACvD;AACA,iBAAiB,0BAAmB;AACpC,UAAU;AACV;AACA,CAAC;;;;;;UCrsBD;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;;;;;;;;;;;;;;AClBA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,6IAA6I,cAAc;AAC3J,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AACmD;AACJ;AACJ;AACA;AACrB;AACI;AAC1B;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2DAAqB;AAC1D;AACA;AACA;AACA;AACA,qCAAqC,yDAAmB;AACxD;AACA;AACA;AACA;AACA;AACA,oBAAoB,qDAAe;AACnC,iBAAiB,EAAE,yDAAmB;AACtC;AACA;AACA;AACA,gBAAgB,kDAAY;AAC5B;AACA;AACA;AACA,KAAK;AACL,CAAC,IAAI;AACL;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA,qCAAqC,yDAAmB;AACxD;AACA;AACA;AACA;AACA;AACA,gBAAgB,kDAAY;AAC5B;AACA;AACA;AACA,KAAK;AACL,CAAC,IAAI","sources":["webpack://SlayerAssistant/webpack/universalModuleDefinition","webpack://SlayerAssistant/./images/data/reaper_collapsed_OSL.data.png","webpack://SlayerAssistant/./images/data/reaper_collapsed_RS3.data.png","webpack://SlayerAssistant/./images/data/reaper_expanded_OSL.data.png","webpack://SlayerAssistant/./images/data/reaper_expanded_RS3.data.png","webpack://SlayerAssistant/./images/data/slayer_collapsed_OSL.data.png","webpack://SlayerAssistant/./images/data/slayer_collapsed_RS3.data.png","webpack://SlayerAssistant/./images/data/slayer_expanded_OSL.data.png","webpack://SlayerAssistant/./images/data/slayer_expanded_RS3.data.png","webpack://SlayerAssistant/./modules/SearchAlgorithm.ts","webpack://SlayerAssistant/./modules/SlayerDialogReader.ts","webpack://SlayerAssistant/./modules/UICounterReader.ts","webpack://SlayerAssistant/./modules/data/assignnments.ts","webpack://SlayerAssistant/./modules/data/creatures.ts","webpack://SlayerAssistant/./modules/data/masters.ts","webpack://SlayerAssistant/./modules/data/reapers.ts","webpack://SlayerAssistant/./modules/data/variants.ts","webpack://SlayerAssistant/./modules/dochandler.ts","webpack://SlayerAssistant/./modules/dochandler/animate.ts","webpack://SlayerAssistant/./modules/dochandler/change.ts","webpack://SlayerAssistant/./modules/dochandler/hide.ts","webpack://SlayerAssistant/./modules/dochandler/hover.ts","webpack://SlayerAssistant/./modules/dochandler/main.ts","webpack://SlayerAssistant/./modules/dochandler/open.ts","webpack://SlayerAssistant/./modules/dochandler/show.ts","webpack://SlayerAssistant/./modules/extrafuncs.ts","webpack://SlayerAssistant/./modules/logger.ts","webpack://SlayerAssistant/./modules/settings.ts","webpack://SlayerAssistant/./modules/slayer.ts","webpack://SlayerAssistant/external umd \"canvas\"","webpack://SlayerAssistant/external umd \"electron/common\"","webpack://SlayerAssistant/external umd \"sharp\"","webpack://SlayerAssistant/../node_modules/alt1/dist/base/index.js","webpack://SlayerAssistant/../node_modules/alt1/dist/dialog/index.js","webpack://SlayerAssistant/../node_modules/alt1/dist/ocr/index.js","webpack://SlayerAssistant/webpack/bootstrap","webpack://SlayerAssistant/webpack/runtime/compat get default export","webpack://SlayerAssistant/webpack/runtime/define property getters","webpack://SlayerAssistant/webpack/runtime/global","webpack://SlayerAssistant/webpack/runtime/hasOwnProperty shorthand","webpack://SlayerAssistant/webpack/runtime/make namespace object","webpack://SlayerAssistant/webpack/runtime/publicPath","webpack://SlayerAssistant/./index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"sharp\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"canvas\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"electron/common\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"sharp\", \"canvas\", \"electron/common\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SlayerAssistant\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"sharp\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"canvas\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"electron/common\"); } catch(e) {} }()));\n\telse\n\t\troot[\"SlayerAssistant\"] = factory(root[\"sharp\"], root[\"canvas\"], root[\"electron/common\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE_sharp__, __WEBPACK_EXTERNAL_MODULE_canvas__, __WEBPACK_EXTERNAL_MODULE_electron_common__) => {\nreturn ","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAADcAAAAZCAYAAACVfbYAAAAVXG5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKKrnKwAAAGFbm9QRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqiMNDQAADRhub1BFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\")","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAADcAAAAZCAYAAACVfbYAAAAXKm5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQRroAAAGFbm9QRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqiMNDQAADRhub1BFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\")","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAAK8AAABLCAYAAAAGR9fhAAAa4G5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ePXqQAAAYVub1BFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqIw0NAAANGG5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\")","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAAK8AAABLCAYAAAAGR9fhAAAe825vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz2Q1aAAABhW5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKojDQ0AAA0Ybm9QRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\")","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAADcAAAAZCAYAAACVfbYAAAAXWm5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALW4o8EAAAGFbm9QRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqiMNDQAADRhub1BFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\")","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAADcAAAAZCAYAAACVfbYAAAAYyG5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgO3bMAAAGFbm9QRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqiMNDQAADRhub1BFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\")","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAAK8AAABLCAYAAAAGR9fhAAAafG5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAejEs8AAABhW5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKojDQ0AAA0Ybm9QRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD51ntaAAAABm5vUEUAAAAAAADsa7vYAAAACW5vUEUAAAAAAAAAAAChinLVAAAAB25vUEUAAAAAAAAAWube0AAACUVJREFUeNrtnX2MHHUZxz87O/t2u7dzu/fe7im0tKUIpWptKoggGilSEpqYGDDGEkn8oyFBMREMakDA/9SICUUMwSjEBEM0CEJEYsAKbZVCX0/oQWnveu3dbXdn9n12Z8c/tjO3x93VXgt7s+X5JJe7m5vfPL995tnZZ57fM9/zfW/rzTaniHdGATByBVJDKYxsBiNXAKBWr1Kr2kRjMQAqlQJmuYziDxEOBUl2J9GNPABaPEaxWKJcKlEs5hjoH3CP+dZ/D7q/xzuj/3d7K+fwYdoSv56ZrXiXxvETaXL5IorPR6VSoVIxOfTOEboGV/DwQz/nJ/fdT/GdV/A9+KOt9o6du0gkeqibZfRCHr8/gGVV0aIxlGCYTGaKM+VMxzr7zbe9lXNoha2F7vtR9GulUiWdyTM6niYYibLsYx8n3BFn7/49rFu/gQd/8TDP//H3vPnmbsZ2vYDqvKMMQ3dfdDyuTQdyuTKvsbkC3jmGXshDIT/v2Hhcm/PFONtbOYdW2BK/zm+rq6ubvGEwfHSMZPcSnvj1d7ho6QrCvX3s2Pser722iy9s3MT2vz/Prlf/iX34JfadqOP7/h3ftIeHDwJw5MiYe8BIuJFClMqF6XeGabo/h4JBKqZJKBicNRlN09B1fdbf59t/vu2tnEOrbIlfZ9sqlSsUSjUuvHgdv7v3RibKPdR9MZRIBzYqjzz6GDV/mFjEz4mRPTzz0r/54jXrUbV4bMZHze4DYz7OmTEWn7Hz0Nb569d4Z8x+6J7NHE9HGJ0cZ6JocuFggnAgxDc2X8sfnv4rXek9rL3kYqz0EizVj1oslojHtcbHgZ73iIOEjxqbN17Nzpdf5/EX95PPZnnqvq2M+33ccf82hvft5dabrkJZfh2/eWE7fXWFvW8eRCmXSmQyU43cRNfFi8KiMDjYx4Ejk9xy45e5at0nONbRw+33Psq+3f9hw5rl7Ng7QjwS44pVAfIBjctXX4BSLObcJLw5FxGEVjIxeRIjZ4IxxvjoYTpUlZMTxxqJyug4xyay9HV38eRzw6wfhDUXJlEH+gcYG5/A7w/MmXALQit491gaX61AsDLJSLrGoQMHuO1rm3h7NM3QkiTXfel6tm37Jd09MdShy9jzxh4Up3g8V21QEFrF/v0HODqRY8eh4wQVuHrtGlJ9Ma6/cgUJxeSuu+8iaNv87Ie302Wb7N+9DyU1lBLPCYtONKzS39XB+ESOw4ffY8sP7ien5/nbn//Czldf4btbNtIzMMjTzzyH3xrnq5uXoxrZjHsApyYnCK2mJ9HJu0ePceklF3Hw7SO8fmCY1/e/hY2PTdes5aFfPc3aqzZw5WWDdA5dwMdGtk+nDYlEj3hQWDTCoQCDPXGGDx1BDYbQkr1UahZ6rsBTz21n2acv56bPpjiRi/L4Y3/i7idGUJ1qg2HoM1ZBBKGV+Hw+IuEQqf4kpYpJtWpxwWA3iuKjVKnywj/+xbMvvkxnrANNi7Ju7QrUlatWMzY+gWVVpVQmLHIAQyDgJxCIYNs20FjsjcdsklqMdDbN8mVLCah+1q//zMycV0plgpeuxM0/h4IqndEI4VAAgJyeaeS8fn9jg1x5BS/jxKffH8DIFVCS3Um391KuvIKXCQWDbhNZsjuJ4vTzyiKF0A64PcVGHkXcIbQritPPKwjtgt8fQIvHUJr7eTVNE88InsWJz3hco1gsTffzAtLPK3gaJz4zmSnKpdJ0P29zKUIQWk3NsqhZ1mn3aY7PYjGH4mgKOKUIQVgsVL//tH9vjs+B/oGZixSC4NXAff8Nm5ErNPp5pcYrtBOWVSU1lEIxshm0aEN6R/p5BS/jxKcWjWFkT/U2KMGw9PMKbUEi0YMSDDfShnhn1C2VST+v4GWc+Mxkpoh3RqefpKibZfGO4HmcOHVv2OCUeJogeBwnTt0bNqf8IAhex4lTI5tBdeq8Trns27fcYIuLBC+y84033N5zI1dATQ2leHtkxN3hkSefFS8JnuSTlywFpuu8qlPn1Qt5p47mEzcJXiQSjtrQVOdVgyHyp1SrpVQmeBknPvPlCmowJPq8QvugaZq7mDajn1f0eQWvo+s6dbM8u59X9HkFr1MxTbfOO6OfVx59F7yO8+g7NPXzOuUHQfA6TpzOWB4WhHZixvIwSD+v4G2a49Pt5wXR5xXaAydOjVxhutog+ryC1ymVCxiGPl1tWLlqtZsIS6lM8DIV03Rv2FauWj0z55VSmeBlmuPTzXlFn1dolysviD6v0KZXXtHnFdoW0ecVzgtEn1doO0SfV2g7RJ9XaFtEn1doW0SfV2hbRJ9XOC9u2ESfV2hLRJ9XaDtEn1doa0SfV2hLRJ9XaGtEn1doW0SfV2hbTqvPe8WnVtqwsP+LtVAU3xzH9tcb361Go1vdtlrqFGdO52rXqtfJGgUyWZ2f3nYxd247yGBfEi0WoW7bZ+3XD2p+p6P5P1B68fznCsYMfd5ZdV7V7/9QJz7/WVcWPXDndewZYts2pbLJ8Umde7YMsaavxNc/l+L4ZJZSpYpt24s6vzOhHc6/Z+u8rQ7cD5Jq1WIqk2PDpVE2XV7FzE6xaVWAZb0h0tkcNasun/vncP5n1Xm9oM9bty33q13fPHXbJl8sU62WeODWXqySTr1mUs6kuXPjUoqFIqWySd22PfvmXpQr7gLO//v1ed1+3kSip2X9vM2T9FLAntNcbBuzVuPH37qI3kQEtbOXcM8Swolu+pMdbL1hBdWqBWcRvB/I/Dx6dV3Ia3L0eZ1+XtXp59WiMXRdpzMa/0imB+c6H5/PRzQS4oHfjnL3wxWsphTB71eIdYToSXTi8/nOC38thr8dfV69kKcnqaFCY8ktk5kiEo6y8fprOZk+SbliUrcqBMNh+nr7cR7U1OIxisUS5VKJYjHHQP8ARq5AaiiFkc3gLHoku5MLHlOrV+nr7Rf7Yn9O+6+8/Cp6Ie+2Mvi23PwVG6C/v5dCPk++UAJwl4yb62tzdZ85252bPiUYdseezRhnYmJf7L9/zJLBAaKxGCdOTDZy9K6uDrLZIsPDB+ctCltWdcYkmg04dTe9kHcn01zSWOiY+Zwm9sX+0dGj7rG6ujpQa1Wbnbt2ATM71SumSSgYnPW9kXvkMSs1skZmxhinlOHcFZ7NGLEv9k9nv/Eo0Ltce83n+R+bCm28wSXdjwAAAABJRU5ErkJggg==\")","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAAK8AAABLCAYAAAAGR9fhAAAehm5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYX5ysAAAGFbm9QRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqiMNDQAADRhub1BFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPnWe1oAAAAGbm9QRQAAAAAAAOxru9gAAAAJbm9QRQAAAAAAAAAAAKGKctUAAAAHbm9QRQAAAAAAAABa5t7QAAAQyklEQVR42u1da4wlx1X+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\")","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar SearchData = /** @class */ (function () {\n    function SearchData() {\n        this.reaper = false;\n        this.task = 'Dragons';\n        this.probability = 0;\n    }\n    return SearchData;\n}());\nexport { SearchData };\nvar SearchAlgorithm = /** @class */ (function () {\n    function SearchAlgorithm() {\n        this.assignmentsCache = {};\n        this.reapersCache = {};\n        this.data = new SearchData();\n    }\n    SearchAlgorithm.prototype.lookup = function (lookup_1) {\n        return __awaiter(this, arguments, void 0, function (lookup, skipReaper) {\n            var probabilities, reapers, assignments;\n            if (skipReaper === void 0) { skipReaper = false; }\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        probabilities = {};\n                        this.data = new SearchData();\n                        if (!!skipReaper) return [3 /*break*/, 2];\n                        return [4 /*yield*/, this.fetchData(\"reapers\")];\n                    case 1:\n                        reapers = _a.sent();\n                        this.calculateProbabilities(reapers, lookup, probabilities, true);\n                        _a.label = 2;\n                    case 2: return [4 /*yield*/, this.fetchData(\"assignments\")];\n                    case 3:\n                        assignments = _a.sent();\n                        this.calculateProbabilities(assignments, lookup, probabilities, false);\n                        // Find the best match\n                        return [2 /*return*/, this.findBestMatch(probabilities)];\n                }\n            });\n        });\n    };\n    SearchAlgorithm.prototype.fetchData = function (type) {\n        return __awaiter(this, void 0, void 0, function () {\n            var cacheKey, data, response;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        cacheKey = type === \"reapers\" ? \"reapersList\" : \"assignmentsList\";\n                        if (!(cacheKey in this[\"\".concat(type, \"Cache\")])) return [3 /*break*/, 1];\n                        data = this[\"\".concat(type, \"Cache\")][cacheKey];\n                        return [3 /*break*/, 4];\n                    case 1: return [4 /*yield*/, fetch(\"./data/\".concat(type, \".json\"))];\n                    case 2:\n                        response = _a.sent();\n                        return [4 /*yield*/, response.json()];\n                    case 3:\n                        data = _a.sent();\n                        this[\"\".concat(type, \"Cache\")][cacheKey] = data;\n                        _a.label = 4;\n                    case 4: return [2 /*return*/, data];\n                }\n            });\n        });\n    };\n    SearchAlgorithm.prototype.calculateProbabilities = function (data, lookup, probabilities, isReaper) {\n        for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n            var a = data_1[_i];\n            var indexScore = this.calculateIndexScore(a[\"index\"], lookup);\n            probabilities[a[\"index\"]] = {\n                reaper: isReaper,\n                index: indexScore,\n                alias: {},\n                creatures: {}\n            };\n            for (var _a = 0, _b = a[\"alias\"]; _a < _b.length; _a++) {\n                var b = _b[_a];\n                probabilities[a[\"index\"]].alias[b] = this.calculateIndexScore(b, lookup);\n            }\n            for (var _c = 0, _d = a[\"creatures\"]; _c < _d.length; _c++) {\n                var b = _d[_c];\n                probabilities[a[\"index\"]].creatures[b] = this.calculateIndexScore(b, lookup);\n            }\n        }\n    };\n    // Calculate index score based on matching logic\n    SearchAlgorithm.prototype.calculateIndexScore = function (index, lookup) {\n        var score = 0;\n        // Normalize input for comparison\n        var normalizedIndex = index.toLowerCase();\n        var normalizedLookup = lookup.toLowerCase();\n        // Exact matches\n        if (normalizedIndex === normalizedLookup) {\n            score += 100; // Highest score for exact matches\n        }\n        else if (normalizedIndex === normalizedLookup + 's') {\n            score += 90; // High score for plural matches\n        }\n        else if (normalizedLookup === normalizedIndex.slice(0, -1) && normalizedIndex.endsWith('s')) {\n            score += 80; // High score for singular form matches\n        }\n        else {\n            // Calculate the edit distance\n            var editDist = this.editDistance(normalizedIndex, normalizedLookup);\n            // Close matches within 3 characters\n            if (editDist <= 3) {\n                score += 40; // Boost for close matches\n            }\n            // Starts with lookup\n            if (normalizedIndex.startsWith(normalizedLookup)) {\n                score += 30; // Boost for prefix matches\n            }\n        }\n        return score;\n    };\n    SearchAlgorithm.prototype.findBestMatch = function (probabilities) {\n        for (var key in probabilities) {\n            if (probabilities[key].index > this.data.probability) {\n                this.data.task = key;\n                this.data.reaper = probabilities[key].reaper;\n                this.data.probability = probabilities[key].index;\n            }\n            this.checkAliasMatches(probabilities, key);\n            this.checkCreatureMatches(probabilities, key);\n        }\n        return this.data;\n    };\n    SearchAlgorithm.prototype.checkAliasMatches = function (probabilities, key) {\n        if (probabilities[key].alias) {\n            for (var _i = 0, _a = Object.keys(probabilities[key].alias); _i < _a.length; _i++) {\n                var aliasKey = _a[_i];\n                if (probabilities[key].alias[aliasKey] > this.data.probability) {\n                    this.data.task = key;\n                    this.data.reaper = probabilities[key].reaper;\n                    this.data.probability = probabilities[key].alias[aliasKey];\n                }\n            }\n        }\n    };\n    SearchAlgorithm.prototype.checkCreatureMatches = function (probabilities, key) {\n        if (probabilities[key].creatures) {\n            for (var _i = 0, _a = Object.keys(probabilities[key].creatures); _i < _a.length; _i++) {\n                var creatureKey = _a[_i];\n                var creatureScore = probabilities[key].creatures[creatureKey];\n                // Increase the visibility of creatures but keep them as a lower priority\n                if (this.data.probability < 10) { // Allow creatures to show up if current probability is low\n                    this.data.task = key;\n                    this.data.reaper = probabilities[key].reaper;\n                    this.data.probability = Math.max(this.data.probability, creatureScore + 20); // Add a base boost for creatures\n                }\n            }\n        }\n    };\n    SearchAlgorithm.prototype.editDistance = function (s1, s2) {\n        s1 = s1.toLowerCase();\n        s2 = s2.toLowerCase();\n        var costs = [];\n        for (var i = 0; i <= s1.length; i++) {\n            var lastValue = i;\n            for (var j = 0; j <= s2.length; j++) {\n                if (i === 0) {\n                    costs[j] = j;\n                }\n                else if (j > 0) {\n                    var newValue = costs[j - 1];\n                    if (s1.charAt(i - 1) !== s2.charAt(j - 1)) {\n                        newValue = Math.min(Math.min(newValue, lastValue), costs[j]) + 1;\n                    }\n                    costs[j - 1] = lastValue;\n                    lastValue = newValue;\n                }\n            }\n            if (i > 0) {\n                costs[s2.length] = lastValue;\n            }\n        }\n        return costs[s2.length];\n    };\n    return SearchAlgorithm;\n}());\nexport { SearchAlgorithm };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as a1lib from \"alt1\";\nimport DialogReader from 'alt1/dialog';\nimport * as extrafuncs from './extrafuncs';\nimport * as settings from \"./settings\";\nvar SlayerData = /** @class */ (function () {\n    function SlayerData() {\n        this.selectYourOwn = false;\n        this.ticket = false;\n        this.reaper = false;\n        this.count = [];\n        this.task = [];\n    }\n    return SlayerData;\n}());\nexport { SlayerData };\nvar SlayerDialogReader = /** @class */ (function () {\n    function SlayerDialogReader() {\n    }\n    SlayerDialogReader.prototype.read = function () {\n        return __awaiter(this, arguments, void 0, function (buffer) {\n            var pos, _a, r, g, b, box, msg, countText, e, countText, e, i, msg, countText;\n            if (buffer === void 0) { buffer = null; }\n            return __generator(this, function (_b) {\n                if (!buffer) {\n                    buffer = a1lib.captureHoldFullRs();\n                }\n                if (!this.dialogReader) {\n                    this.dialogReader = new DialogReader();\n                }\n                this.data = new SlayerData();\n                pos = this.dialogReader.find(buffer);\n                if (!pos)\n                    return [2 /*return*/, null];\n                // Overlay a rectangle around the matched area on screen if we're running in alt1 and setting is enabled\n                if (window.alt1 && alt1.permissionOverlay && settings.controller.ui.overlay) {\n                    _a = extrafuncs.hexToRgb(settings.controller.ui.overlayColor), r = _a[0], g = _a[1], b = _a[2];\n                    alt1.overLayRect(a1lib.mixColor(r, g, b), pos.x, pos.y, pos.width, pos.height, settings.controller.ui.overlayTimer, 3);\n                }\n                box = this.dialogReader.read(buffer);\n                if (!box)\n                    return [2 /*return*/, null];\n                if (box.text && (!box.opts || box.opts.length !== 2)) {\n                    msg = box.text.toString();\n                    // Parsing logic for various types of dialogs\n                    if (msg.toLowerCase().includes(\"select your own task\")) {\n                        this.data.selectYourOwn = true;\n                    }\n                    if (msg.toLowerCase().includes(\"require you to collect\")) {\n                        this.data.reaper = true;\n                        countText = msg.substring(msg.indexOf(\"collect \") + 8, msg.indexOf(\" souls\"));\n                        this.data.count[0] = parseInt(countText);\n                        this.data.task[0] = msg.substring(msg.indexOf(\"battle: \") + 8, msg.indexOf(\". Can\"));\n                    }\n                    if (msg.toLowerCase().includes(\"new task is to kill\")) {\n                        e = msg.substring(msg.indexOf(\"kill \") + 5, msg.length - 1);\n                        countText = e.substring(0, e.includes(\",\") ? e.indexOf(\",\") : e.indexOf(\" \"));\n                        this.data.count[0] = parseInt(countText);\n                        this.data.task[0] = e.substring((e.includes(\",\") ? e.indexOf(\",\") : e.indexOf(\" \")) + 1);\n                    }\n                    if (msg.toLowerCase().includes(\"still need to kill\")) {\n                        e = msg.substring(msg.indexOf(\"kill \") + 5);\n                        this.data.count[0] = parseInt(e.substring(0, e.indexOf(\" \")));\n                        this.data.task[0] = e.substring(e.indexOf(\" \") + 1, e.includes(\".\") ? e.indexOf(\".\") : e.length - 1);\n                    }\n                    if (msg.toLowerCase().includes(\"still hunting\")) {\n                        this.data.task[0] = msg.substring(msg.indexOf(\"hunting \") + 8, msg.indexOf(\";\"));\n                    }\n                }\n                if (box.opts && box.opts.length === 2 && (box.title && box.title.toLowerCase().includes(\"change your assigned slayer task\"))) {\n                    this.data.ticket = true;\n                    for (i = 0; i < box.opts.length; i++) {\n                        msg = box.opts[i].text;\n                        countText = msg.substring(0, msg.indexOf(' '));\n                        this.data.count[i] = parseInt(countText);\n                        this.data.task[i] = msg.substring(msg.indexOf(' ') + 1, msg.includes('(') ? msg.indexOf('(') - 1 : msg.length);\n                    }\n                }\n                return [2 /*return*/, this.data];\n            });\n        });\n    };\n    return SlayerDialogReader;\n}());\nexport { SlayerDialogReader };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as a1lib from \"alt1\";\nimport * as OCR from \"alt1/ocr\";\nimport * as extrafuncs from './extrafuncs';\nimport * as settings from \"./settings\";\nvar imgs = a1lib.webpackImages({\n    slayer_expanded_RS3: require(\"../images/data/slayer_expanded_RS3.data.png\"),\n    slayer_expanded_OSL: require(\"../images/data/slayer_expanded_OSL.data.png\"),\n    reaper_expanded_RS3: require(\"../images/data/reaper_expanded_RS3.data.png\"),\n    reaper_expanded_OSL: require(\"../images/data/reaper_expanded_OSL.data.png\"),\n    slayer_collapsed_RS3: require(\"../images/data/slayer_collapsed_RS3.data.png\"),\n    slayer_collapsed_OSL: require(\"../images/data/slayer_collapsed_OSL.data.png\"),\n    reaper_collapsed_RS3: require(\"../images/data/reaper_collapsed_RS3.data.png\"),\n    reaper_collapsed_OSL: require(\"../images/data/reaper_collapsed_OSL.data.png\"),\n});\nvar UICounterData = /** @class */ (function () {\n    function UICounterData() {\n    }\n    return UICounterData;\n}());\nexport { UICounterData };\nvar UICounterReader = /** @class */ (function () {\n    function UICounterReader() {\n        this.countFont = null;\n        this.taskFont = null;\n        this.data = null;\n    }\n    UICounterReader.prototype.read = function (buffer) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _a, _b, width, height, _i, _c, match, _d, r, g, b, countText;\n            return __generator(this, function (_e) {\n                switch (_e.label) {\n                    case 0:\n                        if (!buffer)\n                            buffer = a1lib.captureHoldFullRs();\n                        if (!!this.countFont) return [3 /*break*/, 2];\n                        _a = this;\n                        return [4 /*yield*/, fetch(require(\"../fonts/aa_10px_mono.fontmeta.json\")).then(function (r) { return r.json(); })];\n                    case 1:\n                        _a.countFont = _e.sent();\n                        _e.label = 2;\n                    case 2:\n                        if (!!this.taskFont) return [3 /*break*/, 4];\n                        _b = this;\n                        return [4 /*yield*/, fetch(require(\"../fonts/aa_8px_mono.fontmeta.json\")).then(function (r) { return r.json(); })];\n                    case 3:\n                        _b.taskFont = _e.sent();\n                        _e.label = 4;\n                    case 4:\n                        // Reset data for next search\n                        this.pos = [];\n                        this.data = null;\n                        // Look for all UI Elements until we find one, then the rest will get skipped\n                        this.findUIElement(buffer, imgs.slayer_collapsed_OSL, { reaper: false, collapsed: true, OS: true });\n                        this.findUIElement(buffer, imgs.slayer_expanded_OSL, { reaper: false, collapsed: false, OS: true });\n                        this.findUIElement(buffer, imgs.slayer_collapsed_RS3, { reaper: false, collapsed: true, OS: false });\n                        this.findUIElement(buffer, imgs.slayer_expanded_RS3, { reaper: false, collapsed: false, OS: false });\n                        this.findUIElement(buffer, imgs.reaper_collapsed_OSL, { reaper: true, collapsed: true, OS: true });\n                        this.findUIElement(buffer, imgs.reaper_expanded_OSL, { reaper: true, collapsed: false, OS: true });\n                        this.findUIElement(buffer, imgs.reaper_collapsed_RS3, { reaper: true, collapsed: true, OS: false });\n                        this.findUIElement(buffer, imgs.reaper_expanded_RS3, { reaper: true, collapsed: false, OS: false });\n                        // If we don't find any data or we found too many matches then return\n                        if (!this.data && this.pos.length == 0)\n                            return [2 /*return*/, null];\n                        width = this.data.collapsed ? imgs.slayer_collapsed_OSL.width : imgs.slayer_expanded_OSL.width;\n                        height = this.data.collapsed ? imgs.slayer_collapsed_OSL.height : imgs.slayer_expanded_OSL.height;\n                        // Loop the results and return the data we find\n                        for (_i = 0, _c = this.pos; _i < _c.length; _i++) {\n                            match = _c[_i];\n                            // Overlay a rectangle around the matched area on screen if we're running in alt1 and setting is enabled\n                            if (window.alt1 && alt1.permissionOverlay && settings.controller.ui.overlay) {\n                                _d = extrafuncs.hexToRgb(settings.controller.ui.overlayColor), r = _d[0], g = _d[1], b = _d[2];\n                                alt1.overLayRect(a1lib.mixColor(r, g, b), match.x, match.y, width, height, settings.controller.ui.overlayTimer, 3);\n                            }\n                            // Get the pixel data for the matched area\n                            this.data.img = buffer.toData(match.x, match.y, width, height);\n                            countText = OCR.findReadLine(this.data.img, this.countFont, this.data.OS ? [[255, 152, 31]] : [[255, 203, 5]], this.data.collapsed ? 10 : 72, 15, 30, 3);\n                            this.data.count = parseInt(countText.text);\n                            if (!this.data.collapsed)\n                                this.data.task = OCR.findReadLine(this.data.img, this.taskFont, this.data.OS ? [[255, 152, 31]] : [[255, 203, 5]], 9, 28, 156, 3).text;\n                        }\n                        return [2 /*return*/, (!this.pos || this.pos.length == 0) ? null : this.data];\n                }\n            });\n        });\n    };\n    UICounterReader.prototype.findUIElement = function (buffer, img, mode) {\n        if (!this.data && this.pos.length == 0)\n            this.pos = buffer.findSubimage(img);\n        if (!this.data && this.pos.length > 0)\n            this.data = { reaper: mode.reaper, collapsed: mode.collapsed, OS: mode.OS, img: null, count: -1, task: null };\n    };\n    return UICounterReader;\n}());\nexport { UICounterReader };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as logger from \"../logger\";\nvar cachedData = null;\nvar CACHE_EXPIRATION_MS = 10 * 60 * 1000; // 10 minutes\nvar cacheTimestamp = Date.now();\n// Helper function to fetch data from URL\nfunction fetchData(url) {\n    return __awaiter(this, void 0, void 0, function () {\n        var response, error_1;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    _a.trys.push([0, 3, , 4]);\n                    return [4 /*yield*/, fetch(url)];\n                case 1:\n                    response = _a.sent();\n                    if (!response.ok)\n                        throw new Error(\"HTTP error! status: \".concat(response.status));\n                    return [4 /*yield*/, response.json()];\n                case 2: return [2 /*return*/, _a.sent()];\n                case 3:\n                    error_1 = _a.sent();\n                    logger.error(\"Error fetching data:\", error_1);\n                    return [2 /*return*/, null]; // Return null on error\n                case 4: return [2 /*return*/];\n            }\n        });\n    });\n}\n// Fetch and cache the assignments data\nfunction fetchAssignments() {\n    return __awaiter(this, arguments, void 0, function (index, list) {\n        var urlBuild, data;\n        if (index === void 0) { index = \"all\"; }\n        if (list === void 0) { list = false; }\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    logger.log(\"Fetch Assignment: \".concat(index));\n                    // Check if we need to fetch new data for \"all\"\n                    if (!list && (index === \"all\" && cachedData && (Date.now() - cacheTimestamp) <= CACHE_EXPIRATION_MS)) {\n                        return [2 /*return*/, cachedData]; // Return cached data if still valid\n                    }\n                    urlBuild = \"./data/assignments.json?q=\".concat(encodeURIComponent(index)).concat(list ? \"&list\" : '', \"&cache_bust=\").concat(Date.now());\n                    return [4 /*yield*/, fetchData(\"https://slayer.unlishema.org\" + urlBuild)];\n                case 1:\n                    data = _a.sent();\n                    if (index === \"all\") {\n                        cachedData = data; // Cache data if fetching all\n                        cacheTimestamp = Date.now(); // Update timestamp\n                    }\n                    return [2 /*return*/, data]; // Return the fetched data\n            }\n        });\n    });\n}\n// Fetch a single assignment based on the index or alias\nexport function get(assignment) {\n    return __awaiter(this, void 0, void 0, function () {\n        var data, lowerCasedAssignment;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, fetchAssignments()];\n                case 1:\n                    data = _a.sent();\n                    lowerCasedAssignment = assignment.toLowerCase();\n                    return [2 /*return*/, (data === null || data === void 0 ? void 0 : data.find(function (a) {\n                            return a[\"index\"].toLowerCase() === lowerCasedAssignment ||\n                                a[\"alias\"].some(function (alias) { return alias.toLowerCase() === lowerCasedAssignment; });\n                        })) || null]; // Return the found assignment or null\n            }\n        });\n    });\n}\n// Get an array of the index\nexport function getIndexList() {\n    return __awaiter(this, void 0, void 0, function () {\n        var data;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, fetchAssignments(\"all\")];\n                case 1:\n                    data = _a.sent();\n                    return [2 /*return*/, data.map(function (a) { return a[\"index\"]; })]; // Return the list of indices\n            }\n        });\n    });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport { decodeHtml } from '../extrafuncs';\nimport * as logger from \"../logger\";\nvar cachedCreaturesData = null;\nvar CACHE_EXPIRATION_MS = 10 * 60 * 1000; // 10 minutes\nvar creaturesCacheTimestamp = Date.now(); // Initial timestamp\n// Fetch creatures data\nfunction fetchData(url) {\n    return __awaiter(this, void 0, void 0, function () {\n        var response, error_1;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    _a.trys.push([0, 3, , 4]);\n                    return [4 /*yield*/, fetch(url)];\n                case 1:\n                    response = _a.sent();\n                    if (!response.ok)\n                        throw new Error(\"HTTP error! status: \".concat(response.status));\n                    return [4 /*yield*/, response.json()];\n                case 2: return [2 /*return*/, _a.sent()];\n                case 3:\n                    error_1 = _a.sent();\n                    logger.error(\"Error fetching data:\", error_1);\n                    return [2 /*return*/, null]; // Return null on error\n                case 4: return [2 /*return*/];\n            }\n        });\n    });\n}\n// Fetch and cache the creatures data\nexport function fetchCreatures() {\n    return __awaiter(this, arguments, void 0, function (name) {\n        var urlBuild, data;\n        if (name === void 0) { name = \"all\"; }\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    logger.log(\"Fetch Creature: \".concat(name));\n                    // If fetching \"all\", check cache expiration\n                    if (name === \"all\" && cachedCreaturesData && (Date.now() - creaturesCacheTimestamp <= CACHE_EXPIRATION_MS)) {\n                        return [2 /*return*/, cachedCreaturesData]; // Return cached data if still valid\n                    }\n                    urlBuild = \"./data/creatures.json?q=\".concat(encodeURIComponent(name), \"&cache_bust=\").concat(Date.now());\n                    return [4 /*yield*/, fetchData(\"https://slayer.unlishema.org\" + urlBuild)];\n                case 1:\n                    data = _a.sent();\n                    if (name === \"all\") {\n                        cachedCreaturesData = data; // Cache data if fetching all\n                        creaturesCacheTimestamp = Date.now(); // Update timestamp\n                    }\n                    return [2 /*return*/, data]; // Return the fetched data\n            }\n        });\n    });\n}\n// Fetch a single creature based on the name\nexport function get(creature) {\n    return __awaiter(this, void 0, void 0, function () {\n        var data, lowerCasedCreature;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, fetchCreatures(creature)];\n                case 1:\n                    data = _a.sent();\n                    lowerCasedCreature = creature.toLowerCase();\n                    return [2 /*return*/, (data === null || data === void 0 ? void 0 : data.find(function (a) { return decodeHtml(a[\"name\"].toLowerCase()) === lowerCasedCreature; })) || null]; // Use find for compactness\n            }\n        });\n    });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport { decodeHtml } from '../extrafuncs';\nimport * as logger from \"../logger\";\nvar cachedMastersData = null;\nvar CACHE_EXPIRATION_MS = 10 * 60 * 1000; // 10 minutes\nvar mastersCacheTimestamp = Date.now(); // Initial timestamp\n// Fetch masters data\nfunction fetchData(url) {\n    return __awaiter(this, void 0, void 0, function () {\n        var response, error_1;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    _a.trys.push([0, 3, , 4]);\n                    return [4 /*yield*/, fetch(url)];\n                case 1:\n                    response = _a.sent();\n                    if (!response.ok)\n                        throw new Error(\"HTTP error! status: \".concat(response.status));\n                    return [4 /*yield*/, response.json()];\n                case 2: return [2 /*return*/, _a.sent()];\n                case 3:\n                    error_1 = _a.sent();\n                    logger.error(\"Error fetching data:\", error_1);\n                    return [2 /*return*/, null]; // Return null on error\n                case 4: return [2 /*return*/];\n            }\n        });\n    });\n}\n// Fetch and cache the masters data\nexport function fetchMasters() {\n    return __awaiter(this, arguments, void 0, function (name) {\n        var urlBuild, data;\n        if (name === void 0) { name = \"all\"; }\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    logger.log(\"Fetch Master: \".concat(name));\n                    // If fetching \"all\", check cache expiration\n                    if (name === \"all\" && cachedMastersData && (Date.now() - mastersCacheTimestamp <= CACHE_EXPIRATION_MS)) {\n                        return [2 /*return*/, cachedMastersData]; // Return cached data if still valid\n                    }\n                    urlBuild = \"./data/masters.json?q=\".concat(encodeURIComponent(name), \"&cache_bust=\").concat(Date.now());\n                    return [4 /*yield*/, fetchData(\"https://slayer.unlishema.org\" + urlBuild)];\n                case 1:\n                    data = _a.sent();\n                    if (name === \"all\") {\n                        cachedMastersData = data; // Cache data if fetching all\n                        mastersCacheTimestamp = Date.now(); // Update timestamp\n                    }\n                    return [2 /*return*/, data]; // Return the fetched data\n            }\n        });\n    });\n}\n// Fetch a single master based on the name\nexport function get(master) {\n    return __awaiter(this, void 0, void 0, function () {\n        var data, lowerCasedMaster;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, fetchMasters(master)];\n                case 1:\n                    data = _a.sent();\n                    lowerCasedMaster = master.toLowerCase();\n                    return [2 /*return*/, (data === null || data === void 0 ? void 0 : data.find(function (a) { return decodeHtml(a[\"name\"].toLowerCase()) === lowerCasedMaster; })) || null]; // Use find for compactness\n            }\n        });\n    });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as logger from \"../logger\";\nvar cachedReapersData = null;\nvar CACHE_EXPIRATION_MS = 10 * 60 * 1000; // 10 minutes\nvar reapersCacheTimestamp = Date.now();\n// Helper function to fetch data from URL\nfunction fetchData(url) {\n    return __awaiter(this, void 0, void 0, function () {\n        var response, error_1;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    _a.trys.push([0, 3, , 4]);\n                    return [4 /*yield*/, fetch(url)];\n                case 1:\n                    response = _a.sent();\n                    if (!response.ok)\n                        throw new Error(\"HTTP error! status: \".concat(response.status));\n                    return [4 /*yield*/, response.json()];\n                case 2: return [2 /*return*/, _a.sent()];\n                case 3:\n                    error_1 = _a.sent();\n                    logger.error(\"Error fetching data:\", error_1);\n                    return [2 /*return*/, null]; // Return null on error\n                case 4: return [2 /*return*/];\n            }\n        });\n    });\n}\n// Fetch and cache the reapers data\nfunction fetchReapers() {\n    return __awaiter(this, arguments, void 0, function (index, list) {\n        var urlBuild, data;\n        if (index === void 0) { index = \"all\"; }\n        if (list === void 0) { list = false; }\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    logger.log(\"Fetch Assignment: \".concat(index));\n                    // Check if we need to fetch new data for \"all\"\n                    if (!list && (index === \"all\" && cachedReapersData && (Date.now() - reapersCacheTimestamp) <= CACHE_EXPIRATION_MS)) {\n                        return [2 /*return*/, cachedReapersData]; // Return cached data if still valid\n                    }\n                    urlBuild = \"./data/reapers.json?q=\".concat(encodeURIComponent(index)).concat(list ? \"&list\" : '', \"&cache_bust=\").concat(Date.now());\n                    return [4 /*yield*/, fetchData(\"https://slayer.unlishema.org\" + urlBuild)];\n                case 1:\n                    data = _a.sent();\n                    if (index === \"all\") {\n                        cachedReapersData = data; // Cache data if fetching all\n                        reapersCacheTimestamp = Date.now(); // Update timestamp\n                    }\n                    return [2 /*return*/, data]; // Return the fetched data\n            }\n        });\n    });\n}\n// Fetch a single reaper based on the index or alias\nexport function get(reaper) {\n    return __awaiter(this, void 0, void 0, function () {\n        var data, lowerCasedReaper, specificReaper;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, fetchReapers(reaper)];\n                case 1:\n                    data = _a.sent();\n                    lowerCasedReaper = reaper.toLowerCase();\n                    specificReaper = data.find(function (a) { return a[\"index\"].toLowerCase() === lowerCasedReaper; });\n                    return [2 /*return*/, specificReaper || null]; // Return the specific reaper or null\n            }\n        });\n    });\n}\n// Get an array of the index as HTML option elements\nexport function getIndexList() {\n    return __awaiter(this, void 0, void 0, function () {\n        var data;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, fetchReapers()];\n                case 1:\n                    data = _a.sent();\n                    return [2 /*return*/, data.map(function (a) { return a[\"index\"]; })]; // Return the list of indices\n            }\n        });\n    });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport { decodeHtml } from '../extrafuncs';\nimport * as logger from \"../logger\";\nimport * as creatures from './creatures';\n// Fetch a single variant based on the creature name and variant name\nexport function get(creature, variant) {\n    return __awaiter(this, void 0, void 0, function () {\n        var data, lowerCasedCreature, lowerCasedVariant, _i, data_1, a, _a, _b, b;\n        return __generator(this, function (_c) {\n            switch (_c.label) {\n                case 0: return [4 /*yield*/, creatures.fetchCreatures(creature)];\n                case 1:\n                    data = _c.sent();\n                    lowerCasedCreature = decodeHtml(creature.toLowerCase());\n                    lowerCasedVariant = variant.toLowerCase();\n                    for (_i = 0, data_1 = data; _i < data_1.length; _i++) {\n                        a = data_1[_i];\n                        if (decodeHtml(a[\"name\"].toLowerCase()) === lowerCasedCreature) {\n                            for (_a = 0, _b = a[\"variants\"]; _a < _b.length; _a++) {\n                                b = _b[_a];\n                                logger.log(\"Variant Compare: \".concat(b[\"name\"], \" | \").concat(lowerCasedVariant));\n                                if (b[\"name\"].toLowerCase() === lowerCasedVariant) {\n                                    return [2 /*return*/, b];\n                                }\n                            }\n                        }\n                    }\n                    return [2 /*return*/, null];\n            }\n        });\n    });\n}\n","// Import required modules\nimport * as main from './dochandler/main';\n// Export required modules\nexport * as animate from './dochandler/animate';\nexport * as change from './dochandler/change';\nexport * as hide from './dochandler/hide';\nexport * as hover from './dochandler/hover';\nexport * as main from './dochandler/main';\nexport * as show from './dochandler/show';\nexport * as open from './dochandler/open';\n// Function to get the side element based on the index\nexport function getSide(i) {\n    var base = main.get.elid(\"base\");\n    var side = main.get.elc(i === 0 ? \"left\" : \"right\", base);\n    if (!side)\n        side = main.get.elc(\"single\", base);\n    return side;\n}\n","// Import required modules\nimport * as dochandler from '../dochandler';\n// Function to show the loading bar\nexport function loading() {\n    var loadingBar = dochandler.main.get.elid(\"loading-bar\");\n    if (loadingBar) {\n        loadingBar.style.visibility = \"visible\";\n    }\n}\n// Function to hide the loading bar\nexport function loadingStop() {\n    var loadingBar = dochandler.main.get.elid(\"loading-bar\");\n    if (loadingBar) {\n        loadingBar.style.visibility = \"hidden\";\n    }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n// Import all modules as namespaces\nimport * as settings from '../settings';\nimport * as dochandler from '../dochandler';\nimport * as extrafuncs from '../extrafuncs';\nimport * as masters from '../data/masters';\nimport * as reapers from '../data/reapers';\nimport * as assignments from '../data/assignnments';\nimport * as creatures from '../data/creatures';\nimport * as variants from '../data/variants';\nimport * as logger from \"../logger\";\n// Update the Creature variant shown\nexport function variant(i_1) {\n    return __awaiter(this, arguments, void 0, function (i, creature, variant) {\n        var side, data, imageContainer, imageElement, newSize, kills, slayerExp;\n        if (creature === void 0) { creature = null; }\n        if (variant === void 0) { variant = null; }\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    // Start loading animation\n                    dochandler.animate.loading();\n                    side = dochandler.getSide(i);\n                    // Return early if UI is limited or data is not available\n                    if ((settings.controller.ui.limited || dochandler.main.limitedLoaded) && (!creature || !variant)) {\n                        dochandler.animate.loadingStop();\n                        return [2 /*return*/];\n                    }\n                    // Fetch creature and variant from UI elements if not provided\n                    if (!creature) {\n                        creature = dochandler.main.get.elc(\"creatures\", side).value;\n                    }\n                    if (!variant) {\n                        variant = dochandler.main.get.elc(\"variants\", side).value;\n                    }\n                    logger.log(\"Change variant to: \".concat(creature, \"#\").concat(variant));\n                    return [4 /*yield*/, variants.get(creature, variant)];\n                case 1:\n                    data = _a.sent();\n                    if (data) {\n                        // Update UI if not limited\n                        if (!settings.controller.ui.limited && !dochandler.main.limitedLoaded) {\n                            imageContainer = dochandler.main.get.elc(\"image-container\", side);\n                            imageContainer.innerHTML = data[\"image\"].replace(\"#\", \"%23\");\n                            imageElement = imageContainer.firstElementChild;\n                            newSize = extrafuncs.calculateAspectRatioFit(parseInt(imageElement.getAttribute(\"width\")), parseInt(imageElement.getAttribute(\"height\")), imageContainer.offsetWidth, imageContainer.offsetHeight);\n                            imageElement.style.maxWidth = \"\".concat(newSize.width, \"px\");\n                            imageElement.style.maxHeight = \"\".concat(newSize.height, \"px\");\n                            // Update stats\n                            updateStats(side, data);\n                        }\n                        kills = parseInt(dochandler.main.get.elc(\"kills\", side).innerHTML, 10);\n                        slayerExp = parseFloat(data[\"slayer-exp\"]);\n                        if (!isNaN(slayerExp) && !isNaN(kills))\n                            dochandler.main.get.elc(\"total-slayer-exp\", side).innerHTML = extrafuncs.numberWithCommas((slayerExp * kills).toFixed(2));\n                        else\n                            dochandler.main.get.elc(\"total-slayer-exp\", side).innerHTML = \"N/A\";\n                    }\n                    // Stop loading animation\n                    dochandler.animate.loadingStop();\n                    return [2 /*return*/];\n            }\n        });\n    });\n}\n// Helper function to update stats\nfunction updateStats(side, data) {\n    dochandler.main.get.elc(\"level\", side).innerHTML = data[\"level\"];\n    dochandler.main.get.elc(\"slayer-level\", side).innerHTML = data[\"slayer-level\"];\n    dochandler.main.get.elc(\"lifepoints\", side).innerHTML = data[\"lifepoints\"];\n    dochandler.main.get.elc(\"defence\", side).innerHTML = data[\"defence\"];\n    dochandler.main.get.elc(\"max-melee\", side).innerHTML = data[\"max-melee\"];\n    dochandler.main.get.elc(\"max-ranged\", side).innerHTML = data[\"max-ranged\"];\n    dochandler.main.get.elc(\"max-magic\", side).innerHTML = data[\"max-magic\"];\n    dochandler.main.get.elc(\"max-necromancy\", side).innerHTML = data[\"max-necromancy\"];\n    dochandler.main.get.elc(\"max-spec\", side).innerHTML = data[\"max-spec\"];\n    // Update weakness and susceptibility\n    var weaknessElem = dochandler.main.get.elc(\"weaknessBox\", side);\n    weaknessElem.innerHTML = \"<p id=\\\"weakness-text\\\">Weakness</p>\" + data[\"weakness\"].join(\"\");\n    var susceptibleElem = dochandler.main.get.elc(\"susceptibleBox\", side);\n    susceptibleElem.innerHTML = \"<p id=\\\"susceptible-text\\\">Susceptible</p>\" + data[\"susceptible\"].join(\"\");\n    // Update experience values\n    var experience = parseFloat(data[\"experience\"]);\n    if (!isNaN(experience))\n        dochandler.main.get.elc(\"combat-exp\", side).innerHTML = extrafuncs.numberWithCommas(experience.toFixed(2));\n    else\n        dochandler.main.get.elc(\"combat-exp\", side).innerHTML = \"N/A\"; // Or any default value for invalid experience\n    // Handle lifepoints-exp\n    var lifepointsExp = parseFloat(data[\"lifepoint-exp\"]);\n    if (!isNaN(lifepointsExp))\n        dochandler.main.get.elc(\"lifepoints-exp\", side).innerHTML = extrafuncs.numberWithCommas(lifepointsExp.toFixed(2));\n    else\n        dochandler.main.get.elc(\"lifepoints-exp\", side).innerHTML = \"N/A\"; // Or any default value for invalid lifepoints-exp\n    // Handle slayer-exp\n    var slayerExp = parseFloat(data[\"slayer-exp\"]);\n    if (!isNaN(slayerExp))\n        dochandler.main.get.elc(\"slayer-exp\", side).innerHTML = extrafuncs.numberWithCommas(slayerExp.toFixed(2));\n    else\n        dochandler.main.get.elc(\"slayer-exp\", side).innerHTML = \"N/A\"; // Or any default value for invalid slayer-exp\n}\n// Update the Creature shown\nexport function creature(i_1) {\n    return __awaiter(this, arguments, void 0, function (i, creature, variant) {\n        var side, data, variantsElem_1;\n        if (creature === void 0) { creature = null; }\n        if (variant === void 0) { variant = null; }\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    // Start loading animation\n                    dochandler.animate.loading();\n                    side = dochandler.getSide(i);\n                    // Return early if UI is limited and no creature is provided\n                    if ((settings.controller.ui.limited || dochandler.main.limitedLoaded) && !creature) {\n                        dochandler.animate.loadingStop();\n                        return [2 /*return*/];\n                    }\n                    // Fetch creature from UI elements if not provided\n                    if (!creature) {\n                        creature = dochandler.main.get.elc(\"creatures\", side).value;\n                    }\n                    logger.log(\"Change Creature to: \".concat(creature).concat(variant ? \"#\".concat(variant) : ''));\n                    return [4 /*yield*/, creatures.get(creature)];\n                case 1:\n                    data = _a.sent();\n                    if (data) {\n                        // Update variants if available\n                        if (data[\"variants\"] && !settings.controller.ui.limited && !dochandler.main.limitedLoaded) {\n                            variantsElem_1 = dochandler.main.get.elc(\"variants\", side);\n                            variantsElem_1.innerHTML = \"\";\n                            data[\"variants\"].forEach(function (a) {\n                                if (!settings.controller.hiddenCreatures.templeTrekking || (settings.controller.hiddenCreatures.templeTrekking && !a[\"name\"].startsWith(\"Temple Trekking\")))\n                                    variantsElem_1.innerHTML += \"<option value=\\\"\".concat(a[\"name\"], \"\\\"\").concat(variant && extrafuncs.decodeHtml(a[\"name\"]) === extrafuncs.decodeHtml(variant) ? \" selected\" : \"\", \">\").concat(a[\"name\"], \"</option>\");\n                            });\n                            if (!variant) {\n                                variant = data[\"variants\"][0][\"name\"];\n                            }\n                        }\n                        // Update the variant to reflect changes\n                        dochandler.change.variant(i, creature, variant);\n                    }\n                    // Stop loading animation\n                    dochandler.animate.loadingStop();\n                    return [2 /*return*/];\n            }\n        });\n    });\n}\n// Update the reaper assignment data\nexport function reaper(task, count) {\n    return __awaiter(this, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            // Ensure correct task loading conditions\n            if (dochandler.main.singleLoaded || dochandler.main.doubleLoaded) {\n                logger.error(\"Cannot load normal task as a reaper task!\");\n                return [2 /*return*/];\n            }\n            if (!dochandler.main.reaperLoaded) {\n                logger.error(\"Cannot load reaper task without reaper being displayed!\");\n                return [2 /*return*/];\n            }\n            // Show loading animation and get side + nameElement and if not return\n            dochandler.animate.loading();\n            // Update and load task\n            if (updateTask(2, task, count))\n                return [2 /*return*/];\n            loadTask(2, task, count);\n            // Stop loading animation\n            dochandler.animate.loadingStop();\n            return [2 /*return*/];\n        });\n    });\n}\n// Update the entire Assignment data\nexport function assignment(i, task, count) {\n    return __awaiter(this, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            // Ensure correct task loading conditions\n            if (i === 0 && (!dochandler.main.singleLoaded && !dochandler.main.doubleLoaded)) {\n                logger.error(\"Cannot load normal task if normal task isn't displayed!\");\n                return [2 /*return*/];\n            }\n            if (i === 1 && !dochandler.main.doubleLoaded) {\n                logger.error(\"Cannot load double slayer task if only 1 is displayed!\");\n                return [2 /*return*/];\n            }\n            if (i === 2) {\n                logger.error(\"Cannot load reaper task as a normal task!\");\n                return [2 /*return*/];\n            }\n            // Show loading animation and get side + nameElement and if not return\n            dochandler.animate.loading();\n            // Update and load task\n            if (updateTask(i, task, count))\n                return [2 /*return*/];\n            loadTask(i, task, count);\n            // Stop loading animation\n            dochandler.animate.loadingStop();\n            return [2 /*return*/];\n        });\n    });\n}\nfunction updateTask(i, task, count) {\n    var type = \"(\".concat(i === 0 ? \"Default\" : (i === 2 ? \"Reaper\" : \"1 Slayer Token\"), \")\");\n    var side = dochandler.getSide(i);\n    if (!side)\n        return;\n    var nameElement = dochandler.main.get.elc(\"name\", side);\n    if (!nameElement)\n        return;\n    // Check if the current task is the same as the new one\n    if ((task == null && nameElement.innerHTML !== \"???\") || nameElement.innerHTML === task) {\n        logger.log(\"Update task: [\".concat(count, \"] \").concat(task, \" \").concat(type));\n        dochandler.main.get.elc(\"kills\", side).innerHTML = extrafuncs.numberWithCommas(count);\n        // Get individual exp for task and update based on new count\n        var slayer_exp = dochandler.main.get.elc(\"slayer-exp\", side);\n        if (slayer_exp && slayer_exp.innerHTML !== \"\") {\n            var xp = parseInt(slayer_exp.innerHTML);\n            if (!isNaN(xp))\n                dochandler.main.get.elc(\"total-slayer-exp\", side).innerHTML = extrafuncs.numberWithCommas((xp * count).toFixed(2));\n            else\n                dochandler.main.get.elc(\"total-slayer-exp\", side).innerHTML = \"N/A\";\n        }\n        // TODO Update status here\n        dochandler.animate.loadingStop();\n        return true;\n    }\n    if (task == null)\n        return true; // Just incase we are trying to update a task that hasn't loaded lets return and try again\n    return false;\n}\nfunction loadTask(i, task, count) {\n    return __awaiter(this, void 0, void 0, function () {\n        var type, side, data, _a, creature_1, variant_1, cvdata, slayxp, j, img, masterData, kills, _loop_1, j, j, j, j, j, _i, _b, a, name_1, defaultCreature, defaultCreature, _c, creature_2, variant_2;\n        var _d, _e;\n        return __generator(this, function (_f) {\n            switch (_f.label) {\n                case 0:\n                    type = \"(\".concat(i === 0 ? \"Default\" : (i === 2 ? \"Reaper\" : \"1 Slayer Token\"), \")\");\n                    side = dochandler.getSide(i);\n                    if (!side)\n                        return [2 /*return*/];\n                    return [4 /*yield*/, (i === 2 ? reapers : assignments).get(task)];\n                case 1:\n                    data = _f.sent();\n                    if (!data) {\n                        dochandler.animate.loadingStop();\n                        return [2 /*return*/];\n                    }\n                    logger.log(\"Load task: [\".concat(count, \"] \").concat(task, \" \").concat(type));\n                    dochandler.main.get.elc(\"type\", side).innerHTML = type;\n                    if (i === 2)\n                        dochandler.main.get.elc(\"type\", side).id = \"type-reaper\";\n                    // Update UI elements with the new data\n                    dochandler.main.get.elc(\"info\", side).title = data[\"index\"];\n                    dochandler.main.get.elc(\"name\", side).innerHTML = data[\"index\"];\n                    dochandler.main.get.elc(\"kills\", side).innerHTML = extrafuncs.numberWithCommas(count);\n                    if (!dochandler.main.limitedLoaded) return [3 /*break*/, 3];\n                    _a = data[\"default-creature\"].split(\"#\"), creature_1 = _a[0], variant_1 = _a[1];\n                    return [4 /*yield*/, variants.get(creature_1, variant_1)];\n                case 2:\n                    cvdata = _f.sent();\n                    slayxp = parseFloat(cvdata[\"slayer-exp\"]);\n                    if (!isNaN(slayxp))\n                        dochandler.main.get.elc(\"total-slayer-exp\", side).innerHTML = extrafuncs.numberWithCommas((slayxp * count).toFixed(2));\n                    else\n                        dochandler.main.get.elc(\"total-slayer-exp\", side).innerHTML = \"N/A\";\n                    _f.label = 3;\n                case 3:\n                    if (!(!settings.controller.ui.limited && !dochandler.main.limitedLoaded)) return [3 /*break*/, 8];\n                    // Update masters data\n                    dochandler.main.get.elc(\"masters\", side).innerHTML = \"<div class=\\\"nistext masterTitle\\\">Assignment Range</div>\";\n                    j = 0;\n                    _f.label = 4;\n                case 4:\n                    if (!(j < data[\"masters\"].length)) return [3 /*break*/, 7];\n                    img = \"<img id=\\\"masterImage\".concat(j, \"\\\" alt=\\\"\").concat(data[\"masters\"][j], \"\\\" src=\\\"./images/masters/\").concat(data[\"masters\"][j], \".png\\\" title=\\\"\").concat(data[\"masters\"][j], \"\\\"></img>\");\n                    return [4 /*yield*/, masters.get(data[\"masters\"][j])];\n                case 5:\n                    masterData = _f.sent();\n                    kills = masterData[\"task-counts\"][data[\"index\"]];\n                    dochandler.main.get.elc(\"masters\", side).innerHTML += \"<div class=\\\"nistext masterInfo\".concat(j, \"\\\">\").concat(img, \" Kills: \").concat(kills, \"</div>\");\n                    _f.label = 6;\n                case 6:\n                    j++;\n                    return [3 /*break*/, 4];\n                case 7:\n                    _loop_1 = function (j) {\n                        dochandler.main.get.elc(\"masterInfo\".concat(j), side).addEventListener('click', function () { return dochandler.open.wiki.master(i, j); });\n                    };\n                    for (j = 0; j < data[\"masters\"].length; j++) {\n                        _loop_1(j);\n                    }\n                    // Update equipment data\n                    if (data[\"equipment\"]) {\n                        for (j = 0; j < 3; j++) {\n                            dochandler.main.get.elc(\"equipInfo\".concat(j + 1), side).innerHTML = j === 0 ? \"None\" : \"\";\n                        }\n                        for (j = 0; j < data[\"equipment\"].length; j++) {\n                            dochandler.main.get.elc(\"equipInfo\".concat(j + 1), side).innerHTML = data[\"equipment\"][j] || \"<span style=\\\"color: red;\\\" title=\\\"There is no information in the database.\\\">Database Empty</span>\";\n                        }\n                        dochandler.main.get.elc(\"equipMore\", side).style.visibility = data[\"equipment\"].length < 3 ? \"hidden\" : \"visible\";\n                    }\n                    else {\n                        dochandler.main.get.elc(\"equipMore\", side).style.visibility = \"hidden\";\n                        dochandler.main.get.elc(\"equipInfo1\", side).innerHTML = \"<span style=\\\"color: red;\\\" title=\\\"There is no information in the database.\\\">Database Missing</span>\";\n                    }\n                    // Update locations data\n                    if (data[\"locations\"]) {\n                        for (j = 0; j < 3; j++) {\n                            dochandler.main.get.elc(\"locationInfo\".concat(j + 1), side).innerHTML = j === 0 ? \"None\" : \"\";\n                        }\n                        for (j = 0; j < data[\"locations\"].length; j++) {\n                            dochandler.main.get.elc(\"locationInfo\".concat(j + 1), side).innerHTML = data[\"locations\"][j] || \"<span style=\\\"color: red;\\\" title=\\\"There is no information in the database.\\\">Database Empty</span>\";\n                        }\n                        dochandler.main.get.elc(\"locationMore\", side).style.visibility = data[\"locations\"].length < 3 ? \"hidden\" : \"visible\";\n                    }\n                    else {\n                        dochandler.main.get.elc(\"locationMore\", side).style.visibility = \"hidden\";\n                        dochandler.main.get.elc(\"locationInfo1\", side).innerHTML = \"<span style=\\\"color: red;\\\" title=\\\"There is no information in the database.\\\">Database Missing</span>\";\n                    }\n                    // Update creatures data\n                    if (data[\"creatures\"]) {\n                        dochandler.main.get.elc(\"creatures\", side).innerHTML = \"\";\n                        for (_i = 0, _b = data[\"creatures\"]; _i < _b.length; _i++) {\n                            a = _b[_i];\n                            name_1 = extrafuncs.decodeHtml(a);\n                            if (settings.controller.hiddenCreatures.dragonkin && name_1.endsWith(\"(Dragonkin Laboratory)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.godWars && name_1.endsWith(\"(God Wars Dungeon)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.ghorrock && name_1.endsWith(\"(Ghorrock)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.heartGielinor && name_1.endsWith(\"(Heart of Gielinor)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.newVarrock && name_1.endsWith(\"(New Varrock)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.shadowReef && (name_1.endsWith(\"(The Shadow Reef)\") || name_1.startsWith(\"Summoned\")))\n                                continue;\n                            if (settings.controller.hiddenCreatures.strongholdSecurity && name_1.endsWith(\"(Stronghold of Security)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.templeTrekking && name_1.endsWith(\"(Temple Trekking)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.unchartedIsles && name_1.endsWith(\"(Uncharted Isles)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.elite && name_1.endsWith(\"(elite)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.monster && name_1.endsWith(\"(monster)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.summoned && name_1.endsWith(\"(summoned)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.default && !extrafuncs.listContains(data[\"hidden-creatures\"], a)) {\n                                defaultCreature = ((_d = data[\"default-creature\"]) === null || _d === void 0 ? void 0 : _d.split(\"#\")[0]) || \"\";\n                                dochandler.main.get.elc(\"creatures\", side).innerHTML += \"<option value=\\\"\".concat(a, \"\\\" \").concat(extrafuncs.decodeHtml(a) === extrafuncs.decodeHtml(defaultCreature) ? \"selected\" : \"\", \">\").concat(a, \"</option>\");\n                            }\n                            else {\n                                defaultCreature = ((_e = data[\"default-creature\"]) === null || _e === void 0 ? void 0 : _e.split(\"#\")[0]) || \"\";\n                                dochandler.main.get.elc(\"creatures\", side).innerHTML += \"<option value=\\\"\".concat(a, \"\\\" \").concat(extrafuncs.decodeHtml(a) === extrafuncs.decodeHtml(defaultCreature) ? \"selected\" : \"\", \">\").concat(a, \"</option>\");\n                            }\n                        }\n                    }\n                    // Set default creature and variant\n                    if (data[\"default-creature\"]) {\n                        _c = data[\"default-creature\"].split(\"#\"), creature_2 = _c[0], variant_2 = _c[1];\n                        dochandler.change.creature(i, creature_2, variant_2);\n                    }\n                    else {\n                        dochandler.change.creature(i);\n                    }\n                    _f.label = 8;\n                case 8:\n                    // Stop loading animation\n                    dochandler.animate.loadingStop();\n                    return [2 /*return*/];\n            }\n        });\n    });\n}\n","import * as dochandler from \"../dochandler\";\nimport * as settings from \"../settings\";\nexport function assignmentWikiPreview(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    dochandler.main.get.elc(\"preview-task-wiki\", side).style.visibility = \"hidden\";\n}\nexport function creatureWikiPreview(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    dochandler.main.get.elc(\"preview-creature-wiki\", side).style.visibility = \"hidden\";\n}\nexport function moreEquip(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    dochandler.main.get.elc(\"equipHidden\", side).style.visibility = \"hidden\";\n}\nexport function moreLocations(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    dochandler.main.get.elc(\"locationHidden\", side).style.visibility = \"hidden\";\n}\n","import * as dochandler from \"../dochandler\";\nimport * as settings from \"../settings\";\nexport function assignmentWiki(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    var showTimer;\n    var hideTimer = null;\n    showTimer = setTimeout(function () { return dochandler.show.assignmentWikiPreview(i); }, 500);\n    dochandler.main.get.elc(\"task-wiki\", side).onmouseleave = function () {\n        hideTimer = setTimeout(function () { return dochandler.hide.assignmentWikiPreview(i); }, 200);\n        clearTimeout(showTimer);\n    };\n    dochandler.main.get.elc(\"preview-task-wiki\", side).onmouseenter = function () {\n        if (hideTimer !== null)\n            clearTimeout(hideTimer);\n    };\n}\nexport function creatureWiki(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    var showTimer;\n    var hideTimer = null;\n    showTimer = setTimeout(function () { return dochandler.show.creatureWikiPreview(i); }, 500);\n    dochandler.main.get.elc(\"creature-wiki\", side).onmouseleave = function () {\n        hideTimer = setTimeout(function () { return dochandler.hide.creatureWikiPreview(i); }, 200);\n        clearTimeout(showTimer);\n    };\n    dochandler.main.get.elc(\"preview-creature-wiki\", side).onmouseenter = function () {\n        if (hideTimer !== null)\n            clearTimeout(hideTimer);\n    };\n}\nexport function moreEquip(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    var showTimer = setTimeout(function () { return dochandler.show.moreEquip(i); }, 500);\n    dochandler.main.get.elc(\"equipMore\", side).onmouseleave = function () {\n        clearTimeout(showTimer);\n    };\n}\nexport function moreLocations(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    var showTimer = setTimeout(function () { return dochandler.show.moreLocations(i); }, 500);\n    dochandler.main.get.elc(\"locationMore\", side).onmouseleave = function () {\n        clearTimeout(showTimer);\n    };\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as dochandler from '../dochandler';\nimport * as reapers from '../data/reapers';\nimport * as assignments from '../data/assignnments';\nimport * as settings from '../settings';\nimport * as slayer from '../slayer';\nimport * as logger from \"../logger\";\n// Define variables\nexport var doubleLoaded = false;\nexport var singleLoaded = false;\nexport var reaperLoaded = false;\nexport var suggestedLoaded = false;\nexport var limitedLoaded = false;\nexport var get;\n(function (get) {\n    function elc(id, base) {\n        return base.getElementsByClassName(id)[0];\n    }\n    get.elc = elc;\n    function elid(id) {\n        return document.getElementById(id);\n    }\n    get.elid = elid;\n    function searchInput() {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/, document.querySelector(\"input[name='search-input']\").value];\n            });\n        });\n    }\n    get.searchInput = searchInput;\n})(get || (get = {}));\nexport var reset;\n(function (reset) {\n    function single() {\n        return __awaiter(this, void 0, void 0, function () {\n            var baseElement;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!singleLoaded)\n                            return [2 /*return*/];\n                        return [4 /*yield*/, get.elid(\"base\")];\n                    case 1:\n                        baseElement = _a.sent();\n                        baseElement.innerHTML = \"\";\n                        singleLoaded = false;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    reset.single = single;\n    function double() {\n        return __awaiter(this, void 0, void 0, function () {\n            var baseElement;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!doubleLoaded)\n                            return [2 /*return*/];\n                        return [4 /*yield*/, get.elid(\"base\")];\n                    case 1:\n                        baseElement = _a.sent();\n                        baseElement.innerHTML = \"\";\n                        doubleLoaded = false;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    reset.double = double;\n    function reaper() {\n        return __awaiter(this, void 0, void 0, function () {\n            var baseElement;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!reaperLoaded)\n                            return [2 /*return*/];\n                        return [4 /*yield*/, get.elid(\"base\")];\n                    case 1:\n                        baseElement = _a.sent();\n                        baseElement.innerHTML = \"\";\n                        reaperLoaded = false;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    reset.reaper = reaper;\n    function suggested() {\n        return __awaiter(this, void 0, void 0, function () {\n            var baseElement;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!suggestedLoaded)\n                            return [2 /*return*/];\n                        return [4 /*yield*/, get.elid(\"base\")];\n                    case 1:\n                        baseElement = _a.sent();\n                        baseElement.innerHTML = \"\";\n                        suggestedLoaded = false;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    reset.suggested = suggested;\n    function searchBox() {\n        return __awaiter(this, void 0, void 0, function () {\n            var searchInfo;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, get.elid(\"search-input\")];\n                    case 1:\n                        searchInfo = _a.sent();\n                        searchInfo.value = \"\";\n                        toggle.searchText();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    reset.searchBox = searchBox;\n})(reset || (reset = {}));\nexport var set;\n(function (set) {\n    // Set to use a double document\n    function double(task0_1, task1_1) {\n        return __awaiter(this, arguments, void 0, function (task0, task1, bypass) {\n            if (bypass === void 0) { bypass = false; }\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if ((task0 == null || task1 == null) && !doubleLoaded)\n                            return [2 /*return*/];\n                        logger.log(\"Load Double: [\".concat(task0.count, \"] \").concat(task0.name, \" | [\").concat(task1.count, \"] \").concat(task1.name));\n                        // Reset all others\n                        return [4 /*yield*/, reset.single()];\n                    case 1:\n                        // Reset all others\n                        _a.sent();\n                        return [4 /*yield*/, reset.reaper()];\n                    case 2:\n                        _a.sent();\n                        return [4 /*yield*/, reset.suggested()];\n                    case 3:\n                        _a.sent();\n                        if (!!doubleLoaded) return [3 /*break*/, 5];\n                        return [4 /*yield*/, setup.doubleAssignment()];\n                    case 4:\n                        _a.sent();\n                        _a.label = 5;\n                    case 5: return [4 /*yield*/, dochandler.change.assignment(0, task0.name, task0.count)];\n                    case 6:\n                        _a.sent();\n                        return [4 /*yield*/, dochandler.change.assignment(1, task1.name, task1.count)];\n                    case 7:\n                        _a.sent();\n                        // Log history if not bypassed\n                        if (!bypass && task0.name && task1.name) {\n                            settings.change.addHistory({ type: 'double', tasks: [task0, task1] });\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    set.double = double;\n    // Set to use a single document\n    function single(task_1) {\n        return __awaiter(this, arguments, void 0, function (task, bypass) {\n            if (bypass === void 0) { bypass = false; }\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (task == null && !singleLoaded)\n                            return [2 /*return*/];\n                        logger.log(\"Load Single: [\".concat(task.count, \"] \").concat(task.name));\n                        // Reset all others\n                        return [4 /*yield*/, reset.double()];\n                    case 1:\n                        // Reset all others\n                        _a.sent();\n                        return [4 /*yield*/, reset.reaper()];\n                    case 2:\n                        _a.sent();\n                        return [4 /*yield*/, reset.suggested()];\n                    case 3:\n                        _a.sent();\n                        if (!!singleLoaded) return [3 /*break*/, 5];\n                        return [4 /*yield*/, setup.singleAssignment(0)];\n                    case 4:\n                        _a.sent();\n                        _a.label = 5;\n                    case 5: return [4 /*yield*/, dochandler.change.assignment(0, task.name, task.count)];\n                    case 6:\n                        _a.sent();\n                        // Log history if not bypassed\n                        if (!bypass && task.name) {\n                            settings.change.addHistory({ type: 'single', tasks: [task] });\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    set.single = single;\n    // Set to use reaper tasks doc\n    function reaper(task_1) {\n        return __awaiter(this, arguments, void 0, function (task, bypass) {\n            if (bypass === void 0) { bypass = false; }\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (task == null && !reaperLoaded)\n                            return [2 /*return*/];\n                        logger.log(\"Load Reaper: [\".concat(task.count, \"] \").concat(task.name));\n                        // Reset all others\n                        return [4 /*yield*/, reset.single()];\n                    case 1:\n                        // Reset all others\n                        _a.sent();\n                        return [4 /*yield*/, reset.double()];\n                    case 2:\n                        _a.sent();\n                        return [4 /*yield*/, reset.suggested()];\n                    case 3:\n                        _a.sent();\n                        if (!!reaperLoaded) return [3 /*break*/, 5];\n                        return [4 /*yield*/, setup.reaperAssignment()];\n                    case 4:\n                        _a.sent();\n                        _a.label = 5;\n                    case 5: return [4 /*yield*/, dochandler.change.reaper(task.name, task.count)];\n                    case 6:\n                        _a.sent();\n                        // Log history if not bypassed\n                        if (!bypass && task.name) {\n                            settings.change.addHistory({ type: 'reaper', tasks: [task] });\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    set.reaper = reaper;\n    // Set to use suggested tasks doc\n    function suggested() {\n        return __awaiter(this, arguments, void 0, function (bypass) {\n            if (bypass === void 0) { bypass = false; }\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (suggestedLoaded)\n                            return [2 /*return*/];\n                        logger.log(\"Load Suggested!\");\n                        // Reset all others\n                        return [4 /*yield*/, reset.single()];\n                    case 1:\n                        // Reset all others\n                        _a.sent();\n                        return [4 /*yield*/, reset.double()];\n                    case 2:\n                        _a.sent();\n                        return [4 /*yield*/, reset.reaper()];\n                    case 3:\n                        _a.sent();\n                        return [4 /*yield*/, dochandler.main.setup.suggested()];\n                    case 4:\n                        _a.sent();\n                        // Log history if not bypassed\n                        if (!bypass) {\n                            settings.change.addHistory({ type: 'suggestion', tasks: null });\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    set.suggested = suggested;\n    // Set search button\n    function searchButtonText(s) {\n        dochandler.main.get.elid(\"search-button\").innerHTML = \"\".concat(s, \"<span style=\\\"visibility: hidden;\\\">. . .</span>\");\n    }\n    set.searchButtonText = searchButtonText;\n    // Set the search input\n    function searchInput(s) {\n        if (s == null)\n            return;\n        dochandler.main.get.elid(\"search-input\").value = s;\n        dochandler.main.toggle.searchText();\n    }\n    set.searchInput = searchInput;\n})(set || (set = {}));\nexport var setup;\n(function (setup) {\n    var suggestions = [];\n    function getSuggestions() {\n        return __awaiter(this, void 0, void 0, function () {\n            var reapersIndexList, assignmentsIndexList;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, reapers.getIndexList()];\n                    case 1:\n                        reapersIndexList = _a.sent();\n                        return [4 /*yield*/, assignments.getIndexList()];\n                    case 2:\n                        assignmentsIndexList = _a.sent();\n                        return [2 /*return*/, reapersIndexList.concat(assignmentsIndexList)];\n                }\n            });\n        });\n    }\n    setup.getSuggestions = getSuggestions;\n    // Function to filter options based on input\n    function filterOptions() {\n        return __awaiter(this, void 0, void 0, function () {\n            var searchSuggestions, query, filteredOptions;\n            return __generator(this, function (_a) {\n                searchSuggestions = document.querySelector(\"#search-suggestions\");\n                query = document.querySelector(\"#search-input\").value.toLowerCase();\n                if (query.includes(\"|\"))\n                    query = query.substring(query.indexOf(\"|\") + 1).trim();\n                searchSuggestions.innerHTML = \"\"; // Clear previous suggestions\n                // Check if `suggestions` has been populated\n                if (suggestions.length === 0) {\n                    console.warn(\"Suggestions are not yet loaded.\");\n                    return [2 /*return*/];\n                }\n                filteredOptions = suggestions.filter(function (option) {\n                    return option.toLowerCase().includes(query);\n                });\n                // Populate the select dropdown with matching options\n                filteredOptions.forEach(function (option) {\n                    var optionElement = document.createElement(\"option\");\n                    optionElement.value = option;\n                    optionElement.textContent = option;\n                    searchSuggestions.appendChild(optionElement);\n                });\n                // Show or hide the dropdown based on the presence of matching options\n                searchSuggestions.style.display = filteredOptions.length > 0 ? \"block\" : \"none\";\n                // Adjust size of dropdown based on the length of options available\n                searchSuggestions.size = filteredOptions.length > 1 && filteredOptions.length !== 0 ? filteredOptions.length : 2;\n                return [2 /*return*/];\n            });\n        });\n    }\n    function setupSearchListeners() {\n        return __awaiter(this, void 0, void 0, function () {\n            var searchInput, searchButton, searchSuggestions;\n            return __generator(this, function (_a) {\n                searchInput = document.querySelector(\"#search-input\");\n                searchButton = document.querySelector(\"#search-button\");\n                searchSuggestions = document.querySelector(\"#search-suggestions\");\n                // Setup search button listener\n                searchButton.addEventListener('click', function () { slayer.searchTasks(); });\n                // Show suggestions based on input value\n                searchInput.addEventListener(\"input\", function () {\n                    dochandler.main.toggle.searchText();\n                    filterOptions();\n                });\n                // Hide suggestions on blur\n                searchInput.addEventListener(\"blur\", function (e) {\n                    if (e.relatedTarget !== searchSuggestions) {\n                        searchSuggestions.style.display = \"none\";\n                    }\n                });\n                // Show suggestions on click and focus\n                searchInput.addEventListener(\"click\", filterOptions);\n                searchInput.addEventListener(\"focus\", filterOptions);\n                // Enable keyboard navigation\n                searchInput.addEventListener(\"keydown\", function (e) {\n                    // Force click on enter\n                    if (e.key === \"Enter\") {\n                        searchSuggestions.style.display = \"none\";\n                        searchButton.click();\n                    }\n                    // Force blur on esc\n                    if (e.key === \"Escape\") {\n                        searchInput.blur();\n                    }\n                    // Focus on select when arrow key down\n                    if (e.key === \"ArrowDown\") {\n                        searchSuggestions.focus();\n                        searchSuggestions.selectedIndex = 0;\n                    }\n                    // Tab key fills input with the first suggestion\n                    if (e.key === \"Tab\") {\n                        if (searchInput.value.length == 0)\n                            return;\n                        e.preventDefault(); // Prevent default tab behavior\n                        if (searchSuggestions.options.length > 0) {\n                            if (searchInput.value.includes(\"|\"))\n                                searchInput.value = searchInput.value.substring(0, searchInput.value.indexOf(\"|\") + 1) + \" \" + searchSuggestions.options[0].value;\n                            else\n                                searchInput.value = searchSuggestions.options[0].value;\n                            searchSuggestions.style.display = \"none\"; // Optionally, hide the suggestions dropdown\n                        }\n                    }\n                });\n                // Update input value when an option is selected + click button\n                searchSuggestions.addEventListener(\"click\", function () {\n                    if (searchSuggestions.style.display === \"none\")\n                        return;\n                    if (searchInput.value.includes(\"|\"))\n                        searchInput.value = searchInput.value.substring(0, searchInput.value.indexOf(\"|\") + 1) + \" \" + searchSuggestions.value;\n                    else\n                        searchInput.value = searchSuggestions.value;\n                    searchSuggestions.style.display = \"none\"; // Hide the dropdown\n                    searchButton.click();\n                });\n                searchSuggestions.addEventListener(\"keydown\", function (e) {\n                    if (searchSuggestions.style.display === \"none\")\n                        return;\n                    // Set the input value to the selected option\n                    if (e.key === \"Enter\") {\n                        searchInput.value = searchSuggestions.options[searchSuggestions.selectedIndex].value;\n                        searchSuggestions.style.display = \"none\";\n                        searchButton.click();\n                    }\n                    // Go back to input when going up on the first item\n                    if (e.key === \"ArrowUp\" && searchSuggestions.selectedIndex === 0) {\n                        searchInput.focus();\n                    }\n                });\n                // Remove suggestions when not focussing on them\n                searchSuggestions.addEventListener(\"blur\", function (e) {\n                    if (e.relatedTarget !== searchInput) {\n                        searchSuggestions.style.display = \"none\";\n                    }\n                });\n                return [2 /*return*/];\n            });\n        });\n    }\n    // Setup the main document\n    function documentMain() {\n        return __awaiter(this, void 0, void 0, function () {\n            var nisElement, _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        nisElement = dochandler.main.get.elid(\"nis\");\n                        _a = nisElement;\n                        return [4 /*yield*/, fetch(\"./pages/doc/body.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                    case 1:\n                        _a.innerHTML = _b.sent();\n                        return [4 /*yield*/, getSuggestions()];\n                    case 2:\n                        suggestions = _b.sent();\n                        // Setup event listeners\n                        dochandler.main.get.elid(\"infobutton\").addEventListener('click', dochandler.open.aboutInfo);\n                        dochandler.main.get.elid(\"menubutton\").addEventListener('click', dochandler.open.settingsPage);\n                        dochandler.main.get.elid(\"donatebutton\").addEventListener('click', dochandler.open.donate);\n                        dochandler.main.get.elid(\"backbutton\").addEventListener('click', settings.change.goPreviousHistory);\n                        dochandler.main.get.elid(\"forwardbutton\").addEventListener('click', settings.change.goNextHistory);\n                        // Setup Search Listeners\n                        setupSearchListeners();\n                        // Setup warning link listener\n                        dochandler.main.get.elid(\"warning-link\").addEventListener('click', function (e) {\n                            dochandler.main.get.elid(\"warning-ui\").style.visibility = \"hidden\";\n                        });\n                        // Setup warnings based on the status\n                        if (window.alt1) {\n                            if (!alt1.permissionInstalled)\n                                dochandler.main.get.elid(\"warning-msg\").innerHTML = \"You should click <a href=\\\"https://slayer.unlishema.org\\\">Add App</a> at top right\";\n                            else if (!alt1.permissionOverlay || !alt1.permissionGameState || !alt1.permissionPixel)\n                                dochandler.main.get.elid(\"warning-msg\").innerHTML = \"This app is missing permissions\";\n                            else if (!alt1.rsLinked)\n                                dochandler.main.get.elid(\"warning-msg\").innerHTML = \"RuneScape not detected, <a onclick=\\\"window.open('https://discord.gg/G3SbcS8');\\\">troubleshoot</a>\";\n                            else\n                                dochandler.main.get.elid(\"warning-ui\").style.visibility = \"hidden\";\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    setup.documentMain = documentMain;\n    // Setup the base for double assignment\n    function doubleAssignment() {\n        return __awaiter(this, void 0, void 0, function () {\n            var baseElement, _a, _loop_1, i;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        limitedLoaded = true;\n                        baseElement = dochandler.main.get.elid(\"base\");\n                        _a = baseElement;\n                        return [4 /*yield*/, fetch(\"./pages/doc/dual.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                    case 1:\n                        _a.innerHTML = _b.sent();\n                        _loop_1 = function (i) {\n                            var side, _c, extraInfo, _d;\n                            return __generator(this, function (_e) {\n                                switch (_e.label) {\n                                    case 0:\n                                        side = dochandler.getSide(i);\n                                        _c = side;\n                                        return [4 /*yield*/, fetch(\"./pages/doc/example.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                                    case 1:\n                                        _c.innerHTML = _e.sent();\n                                        // Setup event listeners\n                                        dochandler.main.get.elc(\"task-wiki\", side).addEventListener('click', function () { return dochandler.open.wiki.assignment(i); });\n                                        dochandler.main.get.elc(\"task-wiki\", side).addEventListener('keydown', function (e) {\n                                            if (e.key === \"Enter\")\n                                                dochandler.main.get.elc(\"task-wiki\", side).click();\n                                        });\n                                        dochandler.main.get.elc(\"task-wiki\", side).addEventListener('mouseover', function () { return dochandler.hover.assignmentWiki(i); });\n                                        if (!!settings.controller.ui.limited) return [3 /*break*/, 3];\n                                        extraInfo = dochandler.main.get.elc(\"extra-info\", side);\n                                        _d = extraInfo;\n                                        return [4 /*yield*/, fetch(\"./pages/doc/example-extra.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                                    case 2:\n                                        _d.innerHTML = _e.sent();\n                                        limitedLoaded = false;\n                                        dochandler.main.get.elc(\"preview-task-wiki\", side).addEventListener('mouseleave', function () { return dochandler.hide.assignmentWikiPreview(i); });\n                                        dochandler.main.get.elc(\"preview-creature-wiki\", side).addEventListener('mouseleave', function () { return dochandler.hide.creatureWikiPreview(i); });\n                                        dochandler.main.get.elc(\"equipMore\", side).addEventListener('mouseenter', function () { return dochandler.hover.moreEquip(i); });\n                                        dochandler.main.get.elc(\"equipHidden\", side).addEventListener('mouseleave', function () { return dochandler.hide.moreEquip(i); });\n                                        dochandler.main.get.elc(\"locationMore\", side).addEventListener('mouseenter', function () { return dochandler.hover.moreLocations(i); });\n                                        dochandler.main.get.elc(\"locationHidden\", side).addEventListener('mouseleave', function () { return dochandler.hide.moreLocations(i); });\n                                        dochandler.main.get.elc(\"creature-wiki\", side).addEventListener('click', function () { return dochandler.open.wiki.creature(i); });\n                                        dochandler.main.get.elc(\"creature-wiki\", side).addEventListener('keydown', function (e) {\n                                            if (e.key === \"Enter\")\n                                                dochandler.main.get.elc(\"creature-wiki\", side).click();\n                                        });\n                                        dochandler.main.get.elc(\"creature-wiki\", side).addEventListener('mouseover', function () { return dochandler.hover.creatureWiki(i); });\n                                        dochandler.main.get.elc(\"creatures\", side).addEventListener('change', function () { return dochandler.change.creature(i); });\n                                        dochandler.main.get.elc(\"variants\", side).addEventListener('change', function () { return dochandler.change.variant(i); });\n                                        _e.label = 3;\n                                    case 3: return [2 /*return*/];\n                                }\n                            });\n                        };\n                        i = 0;\n                        _b.label = 2;\n                    case 2:\n                        if (!(i < 2)) return [3 /*break*/, 5];\n                        return [5 /*yield**/, _loop_1(i)];\n                    case 3:\n                        _b.sent();\n                        _b.label = 4;\n                    case 4:\n                        i++;\n                        return [3 /*break*/, 2];\n                    case 5:\n                        // Adjust the doc for limited and full\n                        adjustForSettings();\n                        doubleLoaded = true;\n                        singleLoaded = false;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    setup.doubleAssignment = doubleAssignment;\n    // Setup the base for single assignment\n    function singleAssignment(i) {\n        return __awaiter(this, void 0, void 0, function () {\n            var baseElement, _a, side, _b, extraInfo, _c, statusElement;\n            return __generator(this, function (_d) {\n                switch (_d.label) {\n                    case 0:\n                        limitedLoaded = true;\n                        baseElement = dochandler.main.get.elid(\"base\");\n                        _a = baseElement;\n                        return [4 /*yield*/, fetch(\"./pages/doc/single.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                    case 1:\n                        _a.innerHTML = _d.sent();\n                        side = dochandler.getSide(i);\n                        _b = side;\n                        return [4 /*yield*/, fetch(\"./pages/doc/example.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                    case 2:\n                        _b.innerHTML = _d.sent();\n                        // Setup event listeners\n                        dochandler.main.get.elc(\"task-wiki\", side).addEventListener('click', function () { return dochandler.open.wiki.assignment(i); });\n                        dochandler.main.get.elc(\"task-wiki\", side).addEventListener('mouseover', function () { return dochandler.hover.assignmentWiki(i); });\n                        if (!!settings.controller.ui.limited) return [3 /*break*/, 4];\n                        extraInfo = dochandler.main.get.elc(\"extra-info\", side);\n                        _c = extraInfo;\n                        return [4 /*yield*/, fetch(\"./pages/doc/example-extra.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                    case 3:\n                        _c.innerHTML = _d.sent();\n                        limitedLoaded = false;\n                        dochandler.main.get.elc(\"preview-task-wiki\", side).addEventListener('mouseleave', function () { return dochandler.hide.assignmentWikiPreview(i); });\n                        dochandler.main.get.elc(\"preview-creature-wiki\", side).addEventListener('mouseleave', function () { return dochandler.hide.creatureWikiPreview(i); });\n                        dochandler.main.get.elc(\"equipMore\", side).addEventListener('mouseenter', function () { return dochandler.hover.moreEquip(i); });\n                        dochandler.main.get.elc(\"equipHidden\", side).addEventListener('mouseleave', function () { return dochandler.hide.moreEquip(i); });\n                        dochandler.main.get.elc(\"locationMore\", side).addEventListener('mouseenter', function () { return dochandler.hover.moreLocations(i); });\n                        dochandler.main.get.elc(\"locationHidden\", side).addEventListener('mouseleave', function () { return dochandler.hide.moreLocations(i); });\n                        dochandler.main.get.elc(\"creature-wiki\", side).addEventListener('click', function () { return dochandler.open.wiki.creature(i); });\n                        dochandler.main.get.elc(\"creature-wiki\", side).addEventListener('mouseover', function () { return dochandler.hover.creatureWiki(i); });\n                        dochandler.main.get.elc(\"creatures\", side).addEventListener('change', function () { return dochandler.change.creature(i); });\n                        dochandler.main.get.elc(\"variants\", side).addEventListener('change', function () { return dochandler.change.variant(i); });\n                        _d.label = 4;\n                    case 4:\n                        statusElement = dochandler.main.get.elc(\"status\", side);\n                        if (settings.controller.ui.status) {\n                            statusElement.style.visibility = \"visible\";\n                        }\n                        else {\n                            statusElement.style.visibility = \"hidden\";\n                        }\n                        // Adjust the doc for limited and full\n                        adjustForSettings();\n                        singleLoaded = true;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    setup.singleAssignment = singleAssignment;\n    // Setup the base for reaper assignment\n    function reaperAssignment() {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, singleAssignment(2)];\n                    case 1:\n                        _a.sent();\n                        reaperLoaded = true;\n                        singleLoaded = false;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    setup.reaperAssignment = reaperAssignment;\n    // Setup the base for suggested\n    function suggested() {\n        return __awaiter(this, void 0, void 0, function () {\n            var baseElement, _a, suggestType, _loop_2, i;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        baseElement = dochandler.main.get.elid(\"base\");\n                        _a = baseElement;\n                        return [4 /*yield*/, fetch(\"./pages/doc/suggested.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                    case 1:\n                        _a.innerHTML = _b.sent();\n                        suggestType = dochandler.main.get.elid(\"type-suggest\");\n                        if (suggestType) {\n                            suggestType.addEventListener('click', function () { return window.open(\"https://runescape.wiki/w/Slayer_training/High-levelled\"); });\n                        }\n                        _loop_2 = function (i) {\n                            var element = dochandler.main.get.elid(\"suggestion-\".concat(i));\n                            if (element) {\n                                element.addEventListener('click', function () { return slayer.searchTasks(element.innerHTML); });\n                            }\n                        };\n                        for (i = 1; i <= 12; i++) {\n                            _loop_2(i);\n                        }\n                        suggestedLoaded = true;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    setup.suggested = suggested;\n    // If limited, set the size of the base\n    function adjustForSettings() {\n        var baseElement = dochandler.main.get.elid(\"base\");\n        var divideElement = dochandler.main.get.elid(\"divide\");\n        var copyrightElement = dochandler.main.get.elid(\"copyright\");\n        if (settings.controller.ui.limited) {\n            baseElement.classList.remove(\"base-full\");\n            if (divideElement) {\n                divideElement.classList.remove(\"divide-full\");\n            }\n            copyrightElement.classList.remove(\"copyright-full\");\n        }\n        else {\n            baseElement.classList.add(\"base-full\");\n            if (divideElement) {\n                divideElement.classList.add(\"divide-full\");\n            }\n            copyrightElement.classList.add(\"copyright-full\");\n        }\n    }\n})(setup || (setup = {}));\nexport var toggle;\n(function (toggle) {\n    // Toggle if we are capturing screen or searching text\n    function searchText() {\n        return __awaiter(this, void 0, void 0, function () {\n            var searchResult, autoCaptureEnabled, searchInput;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        searchResult = slayer.searchResult;\n                        autoCaptureEnabled = settings.controller.autoCapture.enabled;\n                        return [4 /*yield*/, dochandler.main.get.searchInput()];\n                    case 1:\n                        searchInput = _a.sent();\n                        if ((searchResult && searchInput === \"\") || (!autoCaptureEnabled && searchInput === \"\")) {\n                            dochandler.main.set.searchButtonText(\"Capture\");\n                        }\n                        else {\n                            dochandler.main.set.searchButtonText(\"Search\");\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    toggle.searchText = searchText;\n})(toggle || (toggle = {}));\n","import * as dochandler from '../dochandler';\nimport * as settings from '../settings';\nimport * as logger from \"../logger\";\n// Open the Donate Page (https://www.paypal.com/donate/?hosted_button_id=LRFC6766YMVTQ)\nexport function donate() {\n    window.open(\"https://www.paypal.com/donate/?hosted_button_id=LRFC6766YMVTQ\");\n}\n// Open the about info page\nexport function aboutInfo() {\n    var width = 680;\n    var height = 550;\n    var left = window.screenX + (window.innerWidth / 2) - (width / 2);\n    var top = window.screenY + (window.innerHeight / 2) - (height / 2);\n    window.open(\"./pages/about.html?cache_bust=\".concat(Date.now()), null, \"width=\".concat(width, \",height=\").concat(height, \",left=\").concat(left, \",top=\").concat(top));\n}\n// Open the settings page\nexport function settingsPage() {\n    var width = 650;\n    var height = 600;\n    var left = window.screenX + (window.innerWidth / 2) - (width / 2);\n    var top = window.screenY + (window.innerHeight / 2) - (height / 2);\n    var settingsWindow = window.open(\"./pages/settings.html?cache_bust=\".concat(Date.now()), \"_blank\", \"width=\".concat(width, \",height=\").concat(height, \",left=\").concat(left, \",top=\").concat(top));\n    logger.warn(\"Settings Opened!\");\n    settingsWindow === null || settingsWindow === void 0 ? void 0 : settingsWindow.window.console.warn(\"Settings Loaded!\");\n    settingsWindow === null || settingsWindow === void 0 ? void 0 : settingsWindow.addEventListener('keyup', function (e) {\n        if ((e.which || e.keyCode) === 116) {\n            // Prevent F5 key press from refreshing the page\n            e.preventDefault();\n        }\n    });\n    settingsWindow === null || settingsWindow === void 0 ? void 0 : settingsWindow.addEventListener('beforeunload', function () {\n        // Load the new settings and apply them\n        settings.controller.load();\n        dochandler.main.toggle.searchText();\n        logger.warn(\"Settings Closed!\");\n        settingsWindow === null || settingsWindow === void 0 ? void 0 : settingsWindow.window.console.warn(\"Settings Saved!\");\n    });\n}\nexport var wiki;\n(function (wiki) {\n    // Opens the wiki page for a specific task\n    function assignment(i) {\n        var side = dochandler.getSide(i);\n        var task = dochandler.main.get.elc(\"name\", side).innerHTML;\n        if (task)\n            window.open(\"https://runescape.wiki/\".concat(task, \"_(Slayer_assignment)\"), \"_blank\");\n    }\n    wiki.assignment = assignment;\n    // Opens the wiki page for a specific creature\n    function creature(i) {\n        var side = dochandler.getSide(i);\n        var creature = dochandler.main.get.elc(\"creatures\", side).value;\n        var variant = dochandler.main.get.elc(\"variants\", side).value;\n        if (creature && variant)\n            window.open(\"https://runescape.wiki/\".concat(creature, \"#\").concat(variant), \"_blank\");\n        else if (creature)\n            window.open(\"https://runescape.wiki/\".concat(creature), \"_blank\");\n    }\n    wiki.creature = creature;\n    // Opens the wiki page for a specific master\n    function master(i, j) {\n        var side = dochandler.getSide(i);\n        var master = dochandler.main.get.elc(\"masterImage\" + j, side).alt;\n        if (master)\n            window.open(\"https://runescape.wiki/\".concat(master), \"_blank\");\n    }\n    wiki.master = master;\n})(wiki || (wiki = {}));\n","import * as dochandler from '../dochandler';\nimport * as settings from '../settings';\n// Show the specific Creature's preview wiki page\nexport function assignmentWikiPreview(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    dochandler.main.get.elc(\"preview-task-wiki\", side).style.visibility = \"visible\";\n}\n// Show the specific Creature's preview wiki page\nexport function creatureWikiPreview(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    dochandler.main.get.elc(\"preview-creature-wiki\", side).style.visibility = \"visible\";\n}\n// Show more Equipment for task\nexport function moreEquip(i) {\n    var _a;\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    var equipHiddenElement = dochandler.main.get.elc(\"equipHidden\", side);\n    if ((_a = equipHiddenElement.innerHTML) === null || _a === void 0 ? void 0 : _a.trimEnd()) {\n        equipHiddenElement.style.visibility = \"visible\";\n    }\n}\n// Show more Locations for task\nexport function moreLocations(i) {\n    var _a;\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    var locationHiddenElement = dochandler.main.get.elc(\"locationHidden\", side);\n    if ((_a = locationHiddenElement.innerHTML) === null || _a === void 0 ? void 0 : _a.trimEnd()) {\n        locationHiddenElement.style.visibility = \"visible\";\n    }\n}\n","// Add commas into a number if its big enough\nexport function numberWithCommas(n) {\n    if (n == null)\n        return \"<span style=\\\"color: red;\\\">Empty</span>\";\n    if (n === -666)\n        return \"<span style=\\\"color: red;\\\">Error</span>\";\n    return n.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n// Convert hex color to RGB color\nexport function hexToRgb(hex) {\n    hex = hex.replace('#', '');\n    var r = parseInt(hex.substring(0, 2), 16);\n    var g = parseInt(hex.substring(2, 4), 16);\n    var b = parseInt(hex.substring(4, 6), 16);\n    return [r, g, b];\n}\n// Check if the list contains what you want to find\nexport function listContains(list, find) {\n    for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {\n        var l = list_1[_i];\n        if (decodeHtml(l).toLowerCase() === decodeHtml(find).toLowerCase())\n            return true;\n    }\n    return false;\n}\n// Get new width and height for image based on aspect ratio\nexport function calculateAspectRatioFit(srcWidth, srcHeight, maxWidth, maxHeight) {\n    var ratio = Math.min(maxWidth / srcWidth, maxHeight / srcHeight);\n    return { width: srcWidth * ratio, height: srcHeight * ratio };\n}\n// Decode the HTML chars that have been encoded during database downloading\nexport function decodeHtml(html) {\n    var txt = document.createElement(\"textarea\");\n    txt.innerHTML = html;\n    return txt.value;\n}\n","// Private queues and settings\nvar debugQueue = [];\nvar verboseQueue = [];\nvar queueLimit = 50;\nvar debugEnabled = false;\nvar verboseEnabled = false;\n// Set the queue limit for debug and verbose\nexport function setLimit(limit) {\n    queueLimit = limit;\n}\n// Enable or disable debug logging\nexport function setDebug(enabled) {\n    debugEnabled = enabled;\n    if (enabled)\n        debug(\"Debug logging enabled\"); // Force Flush the Queue\n}\n// Enable or disable verbose logging\nexport function setVerbose(enabled) {\n    verboseEnabled = enabled;\n    if (enabled)\n        verbose(\"Verbose logging enabled\"); // Force Flush the Queue\n}\n// Public: Log to the normal queue and flush the queue\nexport function log() {\n    var messages = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        messages[_i] = arguments[_i];\n    }\n    console.log.apply(console, messages);\n}\n// Public: Log to the warn queue and flush the queue\nexport function warn() {\n    var messages = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        messages[_i] = arguments[_i];\n    }\n    console.warn.apply(console, messages);\n}\n// Public: Log to the error queue and flush the queue\nexport function error() {\n    var messages = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        messages[_i] = arguments[_i];\n    }\n    console.error.apply(console, messages);\n}\n// Public: Log to the debug queue only if debug is enabled and flush the queue\nexport function debug() {\n    var messages = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        messages[_i] = arguments[_i];\n    }\n    debugQueue.push(messages.join(' '));\n    trimQueue(debugQueue);\n    if (debugEnabled)\n        flushQueue(debugQueue, \"Debug\");\n}\n// Public: Log to the verbose queue only if verbose is enabled and flush the queue\nexport function verbose() {\n    var messages = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        messages[_i] = arguments[_i];\n    }\n    verboseQueue.push(messages.join(' '));\n    trimQueue(verboseQueue);\n    if (verboseEnabled)\n        flushQueue(verboseQueue, \"Verbose\");\n}\n// Private: Trim the queue if it exceeds the limit (FIFO: remove first entry)\nfunction trimQueue(queue) {\n    if (queue.length > queueLimit)\n        queue.shift();\n}\n// Private: Flush and output the entire queue, emptying it afterward\nfunction flushQueue(queue, label) {\n    while (queue.length > 0) {\n        var message = queue.shift();\n        if (label === \"Debug\")\n            console.log(\"[\".concat(label, \"] \").concat(message));\n        if (label === \"Verbose\")\n            console.warn(\"[\".concat(label, \"] \").concat(message));\n    }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as dochandler from \"./dochandler\";\nimport * as slayer from \"./slayer\";\nimport * as main from \"./dochandler/main\";\nimport * as logger from \"./logger\";\n// Controls all the settings data\nvar SettingsDataController = /** @class */ (function () {\n    function SettingsDataController() {\n        this.loaded = false;\n        this.version = 1;\n        this.searchAlgorithim = \"default\";\n        this.autoCapture = {\n            enabled: true,\n            counter: true,\n            search: true,\n            loopTimer: 500,\n            counterTimer: 500,\n            searchTimer: 10000,\n            dialogTimer: 5000,\n        };\n        this.ui = {\n            style: \"default\",\n            limited: false,\n            status: false,\n            overlay: false,\n            overlayColor: \"#ff8c00\",\n            overlayTimer: 500,\n            historyRetentionCount: 10,\n            hideAlt1Warn: false,\n        };\n        this.hiddenCreatures = {\n            default: true,\n            dragonkin: true,\n            godWars: true,\n            ghorrock: true,\n            heartGielinor: true,\n            newVarrock: true,\n            shadowReef: true,\n            strongholdSecurity: true,\n            templeTrekking: true,\n            unchartedIsles: true,\n            elite: true,\n            monster: false,\n            summoned: true\n        };\n        this.default = {\n            taskName0: \"waterfiends\",\n            taskName1: \"black demons\",\n            taskCount0: 777,\n            taskCount1: 666\n        };\n    }\n    SettingsDataController.prototype.createTestInstance = function () {\n        // Store this app's instance locally so we always keep the same settings\n        var currentInstance = 0;\n        // On app load add the instance\n        document.addEventListener(\"DOMContentLoaded\", function () {\n            var instanceSet = JSON.parse(localStorage.getItem(\"instance-set\") || \"[]\");\n            currentInstance = (instanceSet[instanceSet.length - 1] || 0) + 1;\n            instanceSet.push(currentInstance);\n            localStorage.setItem(\"instance-set\", JSON.stringify(instanceSet));\n            var setting1 = localStorage.getItem(\"\".concat(currentInstance, \"-setting1\"));\n            var setting2 = localStorage.getItem(\"\".concat(currentInstance, \"-setting2\"));\n        });\n        // On app close remove the instance\n        document.addEventListener(\"beforeunload\", function () {\n            var instanceSet = JSON.parse(localStorage.getItem(\"instance-set\") || \"[]\");\n            var updatedSet = instanceSet.filter(function (i) { return i !== currentInstance; });\n            updatedSet.length ? localStorage.setItem(\"instance-set\", JSON.stringify(updatedSet)) : localStorage.removeItem(\"instance-set\");\n        });\n    };\n    SettingsDataController.prototype.load = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var tempSearchBoolFlip, res, legacyStyles, links, absoluteLegacyStyles_1;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        // If versioning system exists the load it up so we can use it\n                        if (localStorage.getItem('version') != null)\n                            this.version = this.decodeVersion(localStorage.getItem('version'));\n                        // We only want to update the versioning system on the first load\n                        if (!this.loaded) {\n                            // If Versioning system is missing or outdated then update it\n                            if (this.version < this.decodeVersion(\"0.0.6\")) {\n                                logger.warn(\"[Versioning] Versioning System is missing, setting up versioning system.\");\n                                // Remove pre-versioning system default tasks\n                                localStorage.removeItem('recent_task_0');\n                                localStorage.removeItem('recent_task_count_0');\n                                localStorage.removeItem('recent_task_1');\n                                localStorage.removeItem('recent_task_count_1');\n                                // Save the new versioning system since it wasn't setup or way outdated\n                                this.save();\n                            }\n                            // If the versioning system is updating to 0.0.22 then we need to flip the auto-capture-search value due to updated code\n                            if (this.version < this.decodeVersion(\"0.0.22\")) {\n                                logger.warn(\"[Versioning] Versioning System 0.0.22 flipped the auto-capture-search boolean, updating now!\");\n                                if (localStorage.getItem('auto-capture-search') !== null) {\n                                    tempSearchBoolFlip = localStorage.getItem(\"auto-capture-search\") === \"false\";\n                                    localStorage.setItem(\"auto-capture-search\", \"\".concat(tempSearchBoolFlip));\n                                }\n                                // Remove mistake on creating the ui-counter and ui-counterTimer instead of ui-overlay etc...\n                                if (localStorage.getItem('ui-counter') !== null)\n                                    localStorage.removeItem(\"ui-counter\");\n                                if (localStorage.getItem('ui-counter-timer') !== null)\n                                    localStorage.removeItem(\"ui-counter-timer\");\n                                // No need to save as we are just updating outdated settings here\n                            }\n                            // If we are updating to 0.0.25 then we need to make sure the new settings are setup\n                            if (this.version < this.decodeVersion(\"0.0.25\")) {\n                                logger.warn(\"[Versioning] Versioning System 0.0.25 new settings added, updating now!\");\n                                // Add these new UI settings as we have implemented them now\n                                if (localStorage.getItem('ui-style') == null)\n                                    localStorage.setItem(\"ui-style\", controller.ui.style);\n                                if (localStorage.getItem('ui-overlay-color') == null)\n                                    localStorage.setItem(\"ui-overlay-color\", \"\".concat(controller.ui.overlayColor));\n                                if (localStorage.getItem('ui-overlay-timer') == null)\n                                    localStorage.setItem(\"ui-overlay-timer\", \"\".concat(controller.ui.overlayTimer));\n                                if (localStorage.getItem('ui-history-retention-count') == null)\n                                    localStorage.setItem(\"ui-history-retention-count\", \"\".concat(controller.ui.historyRetentionCount));\n                                // Add the new hidden creatures settings\n                                if (localStorage.getItem('hidden-creatures-default') == null)\n                                    localStorage.setItem(\"hidden-creatures-default\", \"\".concat(controller.hiddenCreatures.default));\n                                if (localStorage.getItem('hidden-creatures-dragonkin') == null)\n                                    localStorage.setItem(\"hidden-creatures-dragonkin\", \"\".concat(controller.hiddenCreatures.dragonkin));\n                                if (localStorage.getItem('hidden-creatures-godWars') == null)\n                                    localStorage.setItem(\"hidden-creatures-godWars\", \"\".concat(controller.hiddenCreatures.godWars));\n                                if (localStorage.getItem('hidden-creatures-ghorrock') == null)\n                                    localStorage.setItem(\"hidden-creatures-ghorrock\", \"\".concat(controller.hiddenCreatures.ghorrock));\n                                if (localStorage.getItem('hidden-creatures-heartGielinor') == null)\n                                    localStorage.setItem(\"hidden-creatures-heartGielinor\", \"\".concat(controller.hiddenCreatures.heartGielinor));\n                                if (localStorage.getItem('hidden-creatures-newVarrock') == null)\n                                    localStorage.setItem(\"hidden-creatures-newVarrock\", \"\".concat(controller.hiddenCreatures.newVarrock));\n                                if (localStorage.getItem('hidden-creatures-shadowReef') == null)\n                                    localStorage.setItem(\"hidden-creatures-shadowReef\", \"\".concat(controller.hiddenCreatures.shadowReef));\n                                if (localStorage.getItem('hidden-creatures-strongholdSecurity') == null)\n                                    localStorage.setItem(\"hidden-creatures-strongholdSecurity\", \"\".concat(controller.hiddenCreatures.strongholdSecurity));\n                                if (localStorage.getItem('hidden-creatures-templeTrekking') == null)\n                                    localStorage.setItem(\"hidden-creatures-templeTrekking\", \"\".concat(controller.hiddenCreatures.templeTrekking));\n                                if (localStorage.getItem('hidden-creatures-unchartedIsles') == null)\n                                    localStorage.setItem(\"hidden-creatures-unchartedIsles\", \"\".concat(controller.hiddenCreatures.unchartedIsles));\n                                if (localStorage.getItem('hidden-creatures-elite') == null)\n                                    localStorage.setItem(\"hidden-creatures-elite\", \"\".concat(controller.hiddenCreatures.elite));\n                                if (localStorage.getItem('hidden-creatures-monster') == null)\n                                    localStorage.setItem(\"hidden-creatures-monster\", \"\".concat(controller.hiddenCreatures.monster));\n                                if (localStorage.getItem('hidden-creatures-summoned') == null)\n                                    localStorage.setItem(\"hidden-creatures-summoned\", \"\".concat(controller.hiddenCreatures.summoned));\n                            }\n                        }\n                        // Capture Settings\n                        controller.autoCapture.enabled = localStorage.getItem(\"auto-capture-enabled\") === \"true\";\n                        controller.autoCapture.counter = localStorage.getItem(\"auto-capture-counter\") === \"true\";\n                        controller.autoCapture.search = localStorage.getItem(\"auto-capture-search\") === \"true\";\n                        controller.autoCapture.loopTimer = parseInt(localStorage.getItem(\"auto-capture-timer-loop\"));\n                        controller.autoCapture.dialogTimer = parseInt(localStorage.getItem(\"auto-capture-timer-dialog\"));\n                        controller.autoCapture.counterTimer = parseInt(localStorage.getItem(\"auto-capture-timer-counter\"));\n                        controller.autoCapture.searchTimer = parseInt(localStorage.getItem(\"auto-capture-timer-search\"));\n                        // UI Settings\n                        if (alt1.skinName === \"default\" && localStorage.getItem('ui-style') !== \"default\")\n                            localStorage.setItem(\"ui-style\", \"default\");\n                        if (alt1.skinName === \"legacy\" && localStorage.getItem('ui-style') !== \"legacy\")\n                            localStorage.setItem(\"ui-style\", \"legacy\");\n                        controller.ui.style = localStorage.getItem(\"ui-style\");\n                        controller.ui.hideAlt1Warn = localStorage.getItem(\"ui-hideAlt1Warn\") === \"true\";\n                        controller.ui.limited = localStorage.getItem(\"ui-limited\") === \"true\";\n                        controller.ui.status = localStorage.getItem(\"ui-status\") === \"true\";\n                        controller.ui.overlay = localStorage.getItem(\"ui-overlay\") === \"true\";\n                        controller.ui.overlayColor = localStorage.getItem(\"ui-overlay-color\");\n                        controller.ui.overlayTimer = parseInt(localStorage.getItem(\"ui-overlay-timer\"));\n                        controller.ui.historyRetentionCount = parseInt(localStorage.getItem(\"ui-history-retention-count\"));\n                        // Hidden Creatures\n                        controller.hiddenCreatures.default = localStorage.getItem('hidden-creatures-default') === \"true\";\n                        controller.hiddenCreatures.dragonkin = localStorage.getItem('hidden-creatures-dragonkin') === \"true\";\n                        controller.hiddenCreatures.godWars = localStorage.getItem('hidden-creatures-godWars') === \"true\";\n                        controller.hiddenCreatures.ghorrock = localStorage.getItem('hidden-creatures-ghorrock') === \"true\";\n                        controller.hiddenCreatures.heartGielinor = localStorage.getItem('hidden-creatures-heartGielinor') === \"true\";\n                        controller.hiddenCreatures.newVarrock = localStorage.getItem('hidden-creatures-newVarrock') === \"true\";\n                        controller.hiddenCreatures.shadowReef = localStorage.getItem('hidden-creatures-shadowReef') === \"true\";\n                        controller.hiddenCreatures.strongholdSecurity = localStorage.getItem('hidden-creatures-strongholdSecurity') === \"true\";\n                        controller.hiddenCreatures.templeTrekking = localStorage.getItem('hidden-creatures-templeTrekking') === \"true\";\n                        controller.hiddenCreatures.unchartedIsles = localStorage.getItem('hidden-creatures-unchartedIsles') === \"true\";\n                        controller.hiddenCreatures.elite = localStorage.getItem('hidden-creatures-elite') === \"true\";\n                        controller.hiddenCreatures.monster = localStorage.getItem('hidden-creatures-monster') === \"true\";\n                        controller.hiddenCreatures.summoned = localStorage.getItem('hidden-creatures-summoned') === \"true\";\n                        return [4 /*yield*/, fetch(\"./pages/data/version.json?cache_bust=\".concat(Date.now())).then(function (r) { return r.json(); })];\n                    case 1:\n                        res = _a.sent();\n                        if (!this.loaded && this.version < this.decodeVersion(res['version'])) {\n                            this.version = this.decodeVersion(res['version']);\n                            this.save();\n                            window.location.href = \"\".concat(window.location.pathname, \"?cache_bust=\").concat(Date.now());\n                        }\n                        // TODO Load history here then reset the UI and load them\n                        main.reset.single();\n                        main.reset.double();\n                        main.reset.reaper();\n                        main.reset.suggested();\n                        legacyStyles = [\n                            \"./styles/legacy/index.css\",\n                            \"./styles/legacy/single.css\",\n                            \"./styles/legacy/double.css\",\n                        ];\n                        // Add each legacy CSS file to the <head>\n                        if (controller.ui.style === \"legacy\") {\n                            legacyStyles.forEach(function (stylePath) {\n                                var linkElement = document.createElement('link');\n                                linkElement.rel = 'stylesheet';\n                                linkElement.href = stylePath;\n                                document.head.appendChild(linkElement);\n                            });\n                        }\n                        // Remove each legacy CSS file from the <head>\n                        if (controller.ui.style === \"default\") {\n                            links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n                            absoluteLegacyStyles_1 = legacyStyles.map(function (stylePath) {\n                                return new URL(stylePath, document.baseURI).href;\n                            });\n                            links.forEach(function (link) {\n                                var linkHref = link.href;\n                                if (absoluteLegacyStyles_1.includes(linkHref))\n                                    link.parentNode.removeChild(link);\n                            });\n                        }\n                        // If we are hiding the warnings then lets apply that here\n                        if (controller.ui.hideAlt1Warn)\n                            dochandler.main.get.elid(\"warning-ui\").style.visibility = \"hidden\";\n                        if (!(this.default.taskName0 != null && this.default.taskName1 != null)) return [3 /*break*/, 3];\n                        return [4 /*yield*/, main.set.double({ name: this.default.taskName0, count: this.default.taskCount0 }, { name: this.default.taskName1, count: this.default.taskCount1 })];\n                    case 2:\n                        _a.sent();\n                        return [3 /*break*/, 5];\n                    case 3:\n                        if (!(this.default.taskName0 != null && this.default.taskName1 == null)) return [3 /*break*/, 5];\n                        return [4 /*yield*/, main.set.single({ name: this.default.taskName0, count: this.default.taskCount0 })];\n                    case 4:\n                        _a.sent();\n                        _a.label = 5;\n                    case 5:\n                        // Settings Loaded\n                        logger.log(\"Settings Loaded\");\n                        this.loaded = true;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    SettingsDataController.prototype.save = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                // Versioning System\n                if (this.version > this.decodeVersion(\"0.0.1\"))\n                    localStorage.setItem('version', this.encodeVersion(this.version));\n                // Capture Settings\n                localStorage.setItem(\"auto-capture-enabled\", \"\".concat(controller.autoCapture.enabled));\n                localStorage.setItem(\"auto-capture-counter\", \"\".concat(controller.autoCapture.counter));\n                localStorage.setItem(\"auto-capture-search\", \"\".concat(controller.autoCapture.search));\n                localStorage.setItem(\"auto-capture-timer-loop\", \"\".concat(controller.autoCapture.loopTimer));\n                localStorage.setItem(\"auto-capture-timer-dialog\", \"\".concat(controller.autoCapture.dialogTimer));\n                localStorage.setItem(\"auto-capture-timer-counter\", \"\".concat(controller.autoCapture.counterTimer));\n                localStorage.setItem(\"auto-capture-timer-search\", \"\".concat(controller.autoCapture.searchTimer));\n                // UI Settings\n                localStorage.setItem(\"ui-style\", \"\".concat(controller.ui.style));\n                localStorage.setItem(\"ui-hideAlt1Warn\", \"\".concat(controller.ui.hideAlt1Warn));\n                localStorage.setItem(\"ui-limited\", \"\".concat(controller.ui.limited));\n                localStorage.setItem(\"ui-status\", \"\".concat(controller.ui.status));\n                localStorage.setItem(\"ui-overlay\", \"\".concat(controller.ui.overlay));\n                localStorage.setItem(\"ui-overlay-color\", \"\".concat(controller.ui.overlayColor));\n                localStorage.setItem(\"ui-overlay-timer\", \"\".concat(controller.ui.overlayTimer));\n                localStorage.setItem(\"ui-history-retention-count\", \"\".concat(controller.ui.historyRetentionCount));\n                // Hidden Creatures\n                localStorage.setItem(\"hidden-creatures-default\", \"\".concat(controller.hiddenCreatures.default));\n                localStorage.setItem(\"hidden-creatures-dragonkin\", \"\".concat(controller.hiddenCreatures.dragonkin));\n                localStorage.setItem(\"hidden-creatures-godWars\", \"\".concat(controller.hiddenCreatures.godWars));\n                localStorage.setItem(\"hidden-creatures-ghorrock\", \"\".concat(controller.hiddenCreatures.ghorrock));\n                localStorage.setItem(\"hidden-creatures-heartGielinor\", \"\".concat(controller.hiddenCreatures.heartGielinor));\n                localStorage.setItem(\"hidden-creatures-newVarrock\", \"\".concat(controller.hiddenCreatures.newVarrock));\n                localStorage.setItem(\"hidden-creatures-shadowReef\", \"\".concat(controller.hiddenCreatures.shadowReef));\n                localStorage.setItem(\"hidden-creatures-strongholdSecurity\", \"\".concat(controller.hiddenCreatures.strongholdSecurity));\n                localStorage.setItem(\"hidden-creatures-templeTrekking\", \"\".concat(controller.hiddenCreatures.templeTrekking));\n                localStorage.setItem(\"hidden-creatures-unchartedIsles\", \"\".concat(controller.hiddenCreatures.unchartedIsles));\n                localStorage.setItem(\"hidden-creatures-elite\", \"\".concat(controller.hiddenCreatures.elite));\n                localStorage.setItem(\"hidden-creatures-monster\", \"\".concat(controller.hiddenCreatures.monster));\n                localStorage.setItem(\"hidden-creatures-summoned\", \"\".concat(controller.hiddenCreatures.summoned));\n                logger.log(\"Settings Saved\");\n                return [2 /*return*/];\n            });\n        });\n    };\n    SettingsDataController.prototype.decodeVersion = function (version) {\n        var versionSplit = version.split(\".\");\n        var versionUpper = versionSplit.length > 2 ? parseInt(versionSplit[0]) : 0;\n        var versionLower = parseInt(versionSplit.length > 2 ? versionSplit[1] : versionSplit[0]);\n        var versionPatch = parseInt(versionSplit.length > 2 ? versionSplit[2] : versionSplit[1]);\n        return ((versionUpper * 256 * 256) + (versionLower * 256) + versionPatch);\n    };\n    SettingsDataController.prototype.encodeVersion = function (version) {\n        var versionUpper = version > 256 * 256 ? version / (256 * 256) : 0;\n        var versionLower = version > 256 ? (version - (versionUpper * 256 * 256)) / 256 : 0;\n        var versionPatch = (version - (versionUpper * 256 * 256) - (versionLower * 256));\n        return versionUpper + \".\" + versionLower + \".\" + versionPatch;\n    };\n    return SettingsDataController;\n}());\nexport { SettingsDataController };\nexport var controller = new SettingsDataController();\n// Change history functions\nexport var change;\n(function (change) {\n    change.history = [];\n    change.index = 0;\n    function addHistory(history) {\n        if (!history)\n            return;\n        if ((history.type === \"single\" || history.type === \"reaper\") && !history.tasks && change.history.length > 0 &&\n            history.tasks[0].name === change.history[change.index].tasks[0].name)\n            return;\n        if (history.type === \"double\" && !history.tasks && change.history.length > 0 &&\n            history.tasks[0].name === change.history[change.index].tasks[0].name &&\n            history.tasks[1].name === change.history[change.index].tasks[1].name)\n            return;\n        if (history.type === \"suggestion\" && change.history.length > 0 && history.type === change.history[change.index].type)\n            return;\n        if (change.index + 1 != change.history.length)\n            change.history = change.history.slice(0, change.index + 1);\n        logger.warn(\"Added History:\", history);\n        change.history.push(history);\n        change.index = change.history.length - 1;\n        pruneHistory();\n        controller.save();\n    }\n    change.addHistory = addHistory;\n    function pruneHistory() {\n        if (change.history.length > controller.ui.historyRetentionCount) {\n            change.history = change.history.slice(1);\n            change.index = change.index - 1;\n        }\n    }\n    function refreshCurrent() {\n        if (change.index < 0 || change.index >= change.history.length)\n            return;\n        main.reset.single();\n        main.reset.double();\n        main.reset.reaper();\n        main.reset.suggested();\n        var currentChange = change.history[change.index];\n        logger.warn(\"Current History:\", currentChange);\n        if (currentChange.type === 'double')\n            main.set.double(currentChange.tasks[0], currentChange.tasks[1], true);\n        if (currentChange.type === 'single')\n            main.set.single(currentChange.tasks[0], true);\n        if (currentChange.type === 'reaper')\n            main.set.reaper(currentChange.tasks[0], true);\n        if (currentChange.type === 'suggestion')\n            main.set.suggested(true);\n        controller.save();\n    }\n    change.refreshCurrent = refreshCurrent;\n    function goPreviousHistory() {\n        if (change.index - 1 < 0)\n            return;\n        var previousChange = change.history[--change.index];\n        logger.warn(\"Previous History:\", previousChange);\n        if (previousChange.type === 'double')\n            main.set.double(previousChange.tasks[0], previousChange.tasks[1], true);\n        if (previousChange.type === 'single')\n            main.set.single(previousChange.tasks[0], true);\n        if (previousChange.type === 'reaper')\n            main.set.reaper(previousChange.tasks[0], true);\n        if (previousChange.type === 'suggestion')\n            main.set.suggested(true);\n        controller.save();\n    }\n    change.goPreviousHistory = goPreviousHistory;\n    function goNextHistory() {\n        if (change.index + 1 >= change.history.length)\n            return;\n        var nextChange = change.history[++change.index];\n        logger.warn(\"Next History:\", nextChange);\n        if (nextChange.type === 'double')\n            main.set.double(nextChange.tasks[0], nextChange.tasks[1], true);\n        if (nextChange.type === 'single')\n            main.set.single(nextChange.tasks[0], true);\n        if (nextChange.type === 'reaper')\n            main.set.reaper(nextChange.tasks[0], true);\n        if (nextChange.type === 'suggestion')\n            main.set.suggested(true);\n        controller.save();\n    }\n    change.goNextHistory = goNextHistory;\n})(change || (change = {}));\nexport function executeDevTools(value) {\n    return __awaiter(this, void 0, void 0, function () {\n        var counterData, slayerData, a, a, pos, box, _i, _a, _b, index, option, e_1;\n        return __generator(this, function (_c) {\n            switch (_c.label) {\n                case 0:\n                    if (value === \"devTools\") {\n                        logger.log(\" ~~~ Dev Tools ~ Information Opened ~~~ \");\n                        alt1.openBrowser(\"https://runeapps.org/forums/viewtopic.php?id=101\");\n                        return [2 /*return*/];\n                    }\n                    logger.log(\" ~~~ Dev Tools ~ Started ~~~ \");\n                    _c.label = 1;\n                case 1:\n                    _c.trys.push([1, 10, , 11]);\n                    if (!(value === \"size\")) return [3 /*break*/, 2];\n                    logger.log(\"Current Size: \".concat(document.body.clientWidth, \", \").concat(document.body.clientHeight));\n                    return [3 /*break*/, 9];\n                case 2:\n                    if (!(value === \"debug\")) return [3 /*break*/, 3];\n                    logger.setDebug(true);\n                    return [3 /*break*/, 9];\n                case 3:\n                    if (!(value === \"verbose\")) return [3 /*break*/, 4];\n                    logger.setVerbose(true);\n                    return [3 /*break*/, 9];\n                case 4:\n                    if (!(value === \"counterReader\")) return [3 /*break*/, 6];\n                    return [4 /*yield*/, slayer.counterReader.read()];\n                case 5:\n                    counterData = _c.sent();\n                    if (counterData) {\n                        logger.log(\"The Counter UI Collapsed [\".concat(counterData.collapsed, \"]\"));\n                        logger.log(\"The Counter UI Old School [\".concat(counterData.OS, \"]\"));\n                        logger.log(\"The Counter UI Reaper [\".concat(counterData.reaper, \"]\"));\n                        logger.log(\"The Counter UI Count [\".concat(counterData.count, \"]\"));\n                        logger.log(\"The Counter UI Task [\".concat(counterData.task, \"]\"));\n                    }\n                    else {\n                        logger.log(\" ~~~ Dev Tools ~ Error: Cannot read counter data! ~~~ \");\n                    }\n                    return [3 /*break*/, 9];\n                case 6:\n                    if (!(value === \"slayerReader\")) return [3 /*break*/, 8];\n                    return [4 /*yield*/, slayer.slayerReader.read()];\n                case 7:\n                    slayerData = _c.sent();\n                    if (slayerData) {\n                        logger.log(\"The Slayer Reader Select Your Own [\".concat(slayerData.selectYourOwn, \"]\"));\n                        logger.log(\"The Slayer Reader Reaper [\".concat(slayerData.reaper, \"]\"));\n                        logger.log(\"The Slayer Reader Ticket [\".concat(slayerData.ticket, \"]\"));\n                        for (a in slayerData.count) {\n                            logger.log(\"The Slayer Reader Count{\".concat(a, \"} [\").concat(slayerData.count[a], \"]\"));\n                        }\n                        for (a in slayerData.task) {\n                            logger.log(\"The Slayer Reader Task{\".concat(a, \"} [\").concat(slayerData.task[a], \"]\"));\n                        }\n                    }\n                    else {\n                        logger.log(\" ~~~ Dev Tools ~ Error: Cannot read slayer data! ~~~ \");\n                    }\n                    return [3 /*break*/, 9];\n                case 8:\n                    if (value === \"dialogReader\") {\n                        logger.log(\"Searching for Dialog...\");\n                        pos = slayer.slayerReader.dialogReader.find();\n                        if (!pos) {\n                            logger.log(\" ~~~ Dev Tools ~ Error: Cannot find the Dialog! ~~~ \");\n                            return [2 /*return*/];\n                        }\n                        box = slayer.slayerReader.dialogReader.read();\n                        if (!box) {\n                            logger.log(\" ~~~ Dev Tools ~ Error: Cannot read the Dialog! ~~~ \");\n                            return [2 /*return*/];\n                        }\n                        if (box.title)\n                            logger.log(\"The Dialog Box Title [\".concat(box.title, \"]\"));\n                        if (box.text)\n                            logger.log(\"The Dialog Box Text [\".concat(box.text, \"]\"));\n                        if (box.opts) {\n                            logger.log(\"The Dialog Box Options (\".concat(box.opts.length, \") [\").concat(box.opts, \"]\"));\n                            for (_i = 0, _a = box.opts.entries(); _i < _a.length; _i++) {\n                                _b = _a[_i], index = _b[0], option = _b[1];\n                                logger.log(\"\\t\".concat(index + 1, \". \").concat(option.text));\n                            }\n                        }\n                    }\n                    _c.label = 9;\n                case 9: return [3 /*break*/, 11];\n                case 10:\n                    e_1 = _c.sent();\n                    logger.error(\"~~~ Dev Tools ~ Error: Issue Capturing Screen! ~~~ \");\n                    return [3 /*break*/, 11];\n                case 11:\n                    logger.log(\" ~~~ Dev Tools ~ Finished ~~~ \");\n                    return [2 /*return*/];\n            }\n        });\n    });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as a1lib from \"alt1\";\nimport { SearchAlgorithm } from './SearchAlgorithm';\nimport { SlayerDialogReader } from './SlayerDialogReader';\nimport { UICounterReader } from './UICounterReader';\nimport * as settings from './settings';\nimport * as docHandler from './dochandler';\nimport * as logger from \"./logger\";\n// Setup the readers and search algo\nexport var searchAlgo = new SearchAlgorithm();\nexport var slayerReader = new SlayerDialogReader();\nexport var counterReader = new UICounterReader();\nexport var searchResult = false;\n// Get a timer and setup vars\nvar timer = function (ms) { return new Promise(function (res) { return setTimeout(res, ms); }); };\nvar loopRunning = false;\n// Check if we can capture the screen\nexport function canCaptureRunescape() {\n    return window.alt1 && alt1.rsLinked && alt1.permissionPixel;\n}\n// Capture the screen\nexport function captureRunescape() {\n    if (!canCaptureRunescape())\n        return null;\n    try {\n        return a1lib.captureHoldFullRs();\n    }\n    catch (ex) {\n        if (ex.message === \"capturehold failed\")\n            logger.warn(\"Capturing screen failed! Is runescape open?\");\n    }\n    return null;\n}\n// Find a task on the current screen\nexport function findTask(buffer) {\n    return __awaiter(this, void 0, void 0, function () {\n        var slayerData, counterData;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    if (!settings.controller.autoCapture.enabled || loopRunning || searchResult)\n                        return [2 /*return*/];\n                    if (!buffer)\n                        buffer = captureRunescape();\n                    if (!buffer)\n                        return [2 /*return*/];\n                    loopRunning = true;\n                    docHandler.animate.loadingStop();\n                    return [4 /*yield*/, slayerReader.read(buffer)];\n                case 1:\n                    slayerData = _a.sent();\n                    if (!(slayerData && slayerData[0])) return [3 /*break*/, 11];\n                    docHandler.animate.loading();\n                    if (!slayerData.selectYourOwn) return [3 /*break*/, 3];\n                    docHandler.main.set.suggested();\n                    docHandler.animate.loadingStop();\n                    return [4 /*yield*/, timer(settings.controller.autoCapture.dialogTimer)];\n                case 2:\n                    _a.sent();\n                    loopRunning = false;\n                    return [2 /*return*/];\n                case 3:\n                    if (!(slayerData.reaper && !slayerData.ticket)) return [3 /*break*/, 5];\n                    return [4 /*yield*/, docHandler.main.set.reaper({ name: slayerData[0].task, count: slayerData[0].count })];\n                case 4:\n                    _a.sent();\n                    return [3 /*break*/, 9];\n                case 5:\n                    if (!slayerData.ticket) return [3 /*break*/, 7];\n                    return [4 /*yield*/, docHandler.main.set.double({ name: slayerData[0].task, count: slayerData[0].count }, { name: slayerData[1].task, count: slayerData[1].count })];\n                case 6:\n                    _a.sent();\n                    return [3 /*break*/, 9];\n                case 7: return [4 /*yield*/, docHandler.main.set.single({ name: slayerData[0].task, count: slayerData[0].count })];\n                case 8:\n                    _a.sent();\n                    _a.label = 9;\n                case 9:\n                    docHandler.animate.loadingStop();\n                    return [4 /*yield*/, timer(settings.controller.autoCapture.dialogTimer)];\n                case 10:\n                    _a.sent();\n                    loopRunning = false;\n                    return [3 /*break*/, 21];\n                case 11:\n                    if (!settings.controller.autoCapture.counter) return [3 /*break*/, 20];\n                    return [4 /*yield*/, counterReader.read(buffer)];\n                case 12:\n                    counterData = _a.sent();\n                    if (!counterData) return [3 /*break*/, 18];\n                    docHandler.animate.loading();\n                    if (!(counterData.reaper && (docHandler.main.reaperLoaded || counterData.task != null))) return [3 /*break*/, 14];\n                    return [4 /*yield*/, docHandler.main.set.reaper({ name: counterData.task, count: counterData.count })];\n                case 13:\n                    _a.sent();\n                    return [3 /*break*/, 16];\n                case 14:\n                    if (!(!counterData.reaper && (docHandler.main.singleLoaded || counterData.task != null))) return [3 /*break*/, 16];\n                    return [4 /*yield*/, docHandler.main.set.single({ name: counterData.task, count: counterData.count })];\n                case 15:\n                    _a.sent();\n                    _a.label = 16;\n                case 16:\n                    docHandler.animate.loadingStop();\n                    return [4 /*yield*/, timer(settings.controller.autoCapture.counterTimer)];\n                case 17:\n                    _a.sent();\n                    loopRunning = false;\n                    return [3 /*break*/, 19];\n                case 18:\n                    docHandler.animate.loadingStop();\n                    loopRunning = false;\n                    _a.label = 19;\n                case 19: return [3 /*break*/, 21];\n                case 20:\n                    docHandler.animate.loadingStop();\n                    loopRunning = false;\n                    _a.label = 21;\n                case 21: return [2 /*return*/];\n            }\n        });\n    });\n}\n// Search for tasks\nexport function searchTasks(value) {\n    return __awaiter(this, void 0, void 0, function () {\n        var tool, lookup, tasks, _i, lookup_1, term, normalizedTerm, data;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    if (!!value) return [3 /*break*/, 2];\n                    return [4 /*yield*/, docHandler.main.get.searchInput()];\n                case 1:\n                    value = _a.sent();\n                    _a.label = 2;\n                case 2:\n                    docHandler.main.reset.searchBox();\n                    if (!(value.length == 0 && (searchResult || !settings.controller.autoCapture.enabled))) return [3 /*break*/, 4];\n                    searchResult = false;\n                    docHandler.main.toggle.searchText();\n                    return [4 /*yield*/, findTask()];\n                case 3:\n                    _a.sent();\n                    return [2 /*return*/];\n                case 4:\n                    if (value.startsWith(\"devTools \")) {\n                        tool = value.includes(\" \") ? value.substring(value.indexOf(\" \") + 1) : value;\n                        settings.executeDevTools(tool);\n                        return [2 /*return*/];\n                    }\n                    else if (value.toLowerCase().includes(\"suggest\")) {\n                        docHandler.main.set.suggested();\n                        return [2 /*return*/];\n                    }\n                    _a.label = 5;\n                case 5:\n                    searchResult = true;\n                    docHandler.main.toggle.searchText();\n                    logger.log(\"Searching for: \" + value);\n                    lookup = value.includes(\"|\") ?\n                        [value.substring(0, value.indexOf(\"|\")), value.substring(value.indexOf(\"|\") + 1)] :\n                        [value];\n                    tasks = [];\n                    _i = 0, lookup_1 = lookup;\n                    _a.label = 6;\n                case 6:\n                    if (!(_i < lookup_1.length)) return [3 /*break*/, 9];\n                    term = lookup_1[_i];\n                    normalizedTerm = term;\n                    // Remove all whitespaces at start and end of search term just incase\n                    while (normalizedTerm.startsWith(\" \"))\n                        normalizedTerm = normalizedTerm.substring(1);\n                    while (normalizedTerm.endsWith(\" \"))\n                        normalizedTerm = normalizedTerm.substring(0, normalizedTerm.length - 2);\n                    return [4 /*yield*/, searchAlgo.lookup(normalizedTerm, lookup.length > 1)];\n                case 7:\n                    data = _a.sent();\n                    if (data) {\n                        logger.log(\"Search for (Reaper/Slayer Assignment, Alias, or Creature): \" + data.task);\n                        tasks.push({ name: data.task, reaper: data.reaper });\n                    }\n                    _a.label = 8;\n                case 8:\n                    _i++;\n                    return [3 /*break*/, 6];\n                case 9:\n                    if (!(tasks.length > 1)) return [3 /*break*/, 11];\n                    return [4 /*yield*/, docHandler.main.set.double({ name: tasks[0].name, count: 1 }, { name: tasks[1].name, count: 1 })];\n                case 10:\n                    _a.sent();\n                    return [3 /*break*/, 15];\n                case 11:\n                    if (!(tasks.length == 1)) return [3 /*break*/, 15];\n                    if (!tasks[0].reaper) return [3 /*break*/, 13];\n                    return [4 /*yield*/, docHandler.main.set.reaper({ name: tasks[0].name, count: 1 })];\n                case 12:\n                    _a.sent();\n                    return [3 /*break*/, 15];\n                case 13: return [4 /*yield*/, docHandler.main.set.single({ name: tasks[0].name, count: 1 })];\n                case 14:\n                    _a.sent();\n                    _a.label = 15;\n                case 15:\n                    docHandler.animate.loadingStop();\n                    if (!settings.controller.autoCapture.search) return [3 /*break*/, 17];\n                    return [4 /*yield*/, timer(settings.controller.autoCapture.searchTimer)];\n                case 16:\n                    _a.sent();\n                    searchResult = false;\n                    docHandler.main.toggle.searchText();\n                    _a.label = 17;\n                case 17: return [2 /*return*/];\n            }\n        });\n    });\n}\n","if(typeof __WEBPACK_EXTERNAL_MODULE_canvas__ === 'undefined') { var e = new Error(\"Cannot find module 'canvas'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_canvas__;","if(typeof __WEBPACK_EXTERNAL_MODULE_electron_common__ === 'undefined') { var e = new Error(\"Cannot find module 'electron/common'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_electron_common__;","if(typeof __WEBPACK_EXTERNAL_MODULE_sharp__ === 'undefined') { var e = new Error(\"Cannot find module 'sharp'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_sharp__;","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"sharp\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"canvas\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"electron/common\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"sharp\", \"canvas\", \"electron/common\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"base\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"sharp\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"canvas\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"electron/common\"); } catch(e) {} }()));\n\telse\n\t\troot[\"A1lib\"] = factory(root[\"sharp\"], root[\"canvas\"], root[\"electron/common\"]);\n})(globalThis, (__WEBPACK_EXTERNAL_MODULE_sharp__, __WEBPACK_EXTERNAL_MODULE_canvas__, __WEBPACK_EXTERNAL_MODULE_electron_common__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./src/base/alt1api.ts\":\n/*!*****************************!*\\\n  !*** ./src/base/alt1api.ts ***!\n  \\*****************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n\n\n/***/ }),\n\n/***/ \"./src/base/declarations.ts\":\n/*!**********************************!*\\\n  !*** ./src/base/declarations.ts ***!\n  \\**********************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n\n\n/***/ }),\n\n/***/ \"./src/base/imagedata-extensions.ts\":\n/*!******************************************!*\\\n  !*** ./src/base/imagedata-extensions.ts ***!\n  \\******************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ImageData = void 0;\nconst a1lib = __importStar(__webpack_require__(/*! ./index */ \"./src/base/index.ts\"));\nconst nodeimports = __importStar(__webpack_require__(/*! ./nodepolyfill */ \"./src/base/nodepolyfill.ts\"));\n// //TODO revamp this madness a bit?\n// (function () {\n// \tvar globalvar = (typeof self != \"undefined\" ? self : (typeof (global as any) != \"undefined\" ? (global as any) : null)) as any;\n// \t//use the node-canvas version when on node\n// \tif (typeof globalvar.ImageData == \"undefined\") {\n// \t\tlet nodecnv = requireNodeCanvas();\n// \t\tglobalvar.ImageData = nodecnv.ImageData;\n// \t}\n// \tvar fill = typeof globalvar.ImageData == \"undefined\";\n// \t//should never be reach anymore\n// \tvar constr = function (this: any) {\n// \t\tvar i = 0;\n// \t\tvar data = (arguments[i] instanceof Uint8ClampedArray ? arguments[i++] : null);\n// \t\tvar width = arguments[i++];\n// \t\tvar height = arguments[i++];\n// \t\tif (fill) {\n// \t\t\tif (!data) { data = new Uint8ClampedArray(width * height * 4); }\n// \t\t\tthis.width = width;\n// \t\t\tthis.height = height;\n// \t\t\tthis.data = data;\n// \t\t}\n// \t\telse if (oldconstr) {\n// \t\t\treturn (data ? new oldconstr(data, width, height) : new oldconstr(width, height));\n// \t\t} else {\n// \t\t\tvar canvas = document.createElement('canvas');\n// \t\t\tcanvas.width = width;\n// \t\t\tcanvas.height = height;\n// \t\t\tvar ctx = canvas.getContext(\"2d\")!;\n// \t\t\tvar imageData = ctx.createImageData(width, height);\n// \t\t\tif (data) { imageData.data.set(data); }\n// \t\t\treturn imageData;\n// \t\t}\n// \t}\n// \tvar oldconstr = globalvar.ImageData;\n// \tif (typeof document != \"undefined\") {\n// \t\ttry {\n// \t\t\tnew oldconstr(1, 1);\n// \t\t} catch (e) {\n// \t\t\t//direct constructor call not allowed in ie\n// \t\t\toldconstr = null;\n// \t\t}\n// \t}\n// \tif (!fill) { constr.prototype = globalvar.ImageData.prototype; }\n// \tglobalvar.ImageData = constr;\n// \tImageData = constr as any;\n// })();\n(function () {\n    var globalvar = (typeof self != \"undefined\" ? self : (typeof __webpack_require__.g != \"undefined\" ? __webpack_require__.g : null));\n    var filltype = typeof globalvar.ImageData == \"undefined\" || typeof globalvar.document == \"undefined\";\n    var fillconstr = filltype;\n    if (!filltype) {\n        var oldconstr = globalvar.ImageData;\n        try {\n            let data = new Uint8ClampedArray(4);\n            data[0] = 1;\n            let a = new globalvar.ImageData(data, 1, 1);\n            fillconstr = a.data[0] != 1;\n        }\n        catch (e) {\n            fillconstr = true;\n        }\n    }\n    if (fillconstr) {\n        var constr = function ImageDataShim() {\n            var i = 0;\n            var data = (arguments[i] instanceof Uint8ClampedArray ? arguments[i++] : null);\n            var width = arguments[i++];\n            var height = arguments[i++];\n            if (filltype) {\n                if (!data) {\n                    data = new Uint8ClampedArray(width * height * 4);\n                }\n                this.width = width;\n                this.height = height;\n                this.data = data;\n            }\n            else if (fillconstr) {\n                //WARNING This branch of code does not use the same pixel data backing store\n                //(problem with wasm, however all wasm browser have a native constructor (unless asm.js is used))\n                var canvas = document.createElement('canvas');\n                canvas.width = width;\n                canvas.height = height;\n                var ctx = canvas.getContext(\"2d\");\n                var imageData = ctx.createImageData(width, height);\n                if (data) {\n                    imageData.data.set(data);\n                }\n                return imageData;\n            }\n            // else {\n            // \t//oh no...\n            // \t//we need this monstrocity in order to call the native constructor with variable number of args\n            // \t//when es5 transpile is enable (that strips the spread operator)\n            // \treturn new (Function.prototype.bind.apply(oldconstr, [null,...arguments]));\n            // }\n        };\n        if (!filltype) {\n            constr.prototype = globalvar.ImageData.prototype;\n        }\n        globalvar.ImageData = constr;\n        exports.ImageData = constr;\n    }\n    else {\n        exports.ImageData = globalvar.ImageData;\n    }\n})();\n//Recast into a drawable imagedata class on all platforms, into a normal browser ImageData on browsers or a node-canvas imagedata on nodejs\nexports.ImageData.prototype.toDrawableData = function () {\n    if (typeof document == \"undefined\") {\n        return nodeimports.imageDataToDrawable(this);\n    }\n    else {\n        return this;\n    }\n};\nexports.ImageData.prototype.putImageData = function (buf, cx, cy) {\n    for (var dx = 0; dx < buf.width; dx++) {\n        for (var dy = 0; dy < buf.height; dy++) {\n            var i1 = (dx + cx) * 4 + (dy + cy) * 4 * this.width;\n            var i2 = dx * 4 + dy * 4 * buf.width;\n            this.data[i1] = buf.data[i2];\n            this.data[i1 + 1] = buf.data[i2 + 1];\n            this.data[i1 + 2] = buf.data[i2 + 2];\n            this.data[i1 + 3] = buf.data[i2 + 3];\n        }\n    }\n};\nexports.ImageData.prototype.pixelOffset = function (x, y) {\n    return x * 4 + y * this.width * 4;\n};\n//creates a hash of a portion of the buffer used to check for changes\nexports.ImageData.prototype.getPixelHash = function (rect) {\n    if (!rect) {\n        rect = new a1lib.Rect(0, 0, this.width, this.height);\n    }\n    var hash = 0;\n    for (var x = rect.x; x < rect.x + rect.width; x++) {\n        for (var y = rect.y; y < rect.y + rect.height; y++) {\n            var i = x * 4 + y * 4 * this.width;\n            hash = (((hash << 5) - hash) + this.data[i]) | 0;\n            hash = (((hash << 5) - hash) + this.data[i + 1]) | 0;\n            hash = (((hash << 5) - hash) + this.data[i + 2]) | 0;\n            hash = (((hash << 5) - hash) + this.data[i + 3]) | 0;\n        }\n    }\n    return hash;\n};\nexports.ImageData.prototype.clone = function (rect) {\n    return this.toImage(rect).getContext(\"2d\").getImageData(0, 0, rect.width, rect.height);\n};\nexports.ImageData.prototype.show = function (x = 5, y = 5, zoom = 1) {\n    if (typeof document == \"undefined\") {\n        console.error(\"need a document to show an imagedata object\");\n        return;\n    }\n    var imgs = document.getElementsByClassName(\"debugimage\");\n    while (imgs.length > exports.ImageData.prototype.show.maxImages) {\n        imgs[0].remove();\n    }\n    var el = this.toImage();\n    el.classList.add(\"debugimage\");\n    el.style.position = \"absolute\";\n    el.style.zIndex = \"1000\";\n    el.style.left = x / zoom + \"px\";\n    el.style.top = y / zoom + \"px\";\n    el.style.background = \"purple\";\n    el.style.cursor = \"pointer\";\n    el.style.imageRendering = \"pixelated\";\n    el.style.outline = \"1px solid #0f0\";\n    el.style.width = (this.width == 1 ? 100 : this.width) * zoom + \"px\";\n    el.style.height = (this.height == 1 ? 100 : this.height) * zoom + \"px\";\n    el.onclick = function () { el.remove(); };\n    document.body.appendChild(el);\n    return el;\n};\nexports.ImageData.prototype.show.maxImages = 10;\nexports.ImageData.prototype.toImage = function (rect) {\n    if (!rect) {\n        rect = new a1lib.Rect(0, 0, this.width, this.height);\n    }\n    if (typeof document != \"undefined\") {\n        var el = document.createElement(\"canvas\");\n        el.width = rect.width;\n        el.height = rect.height;\n    }\n    else {\n        el = nodeimports.createCanvas(rect.width, rect.height);\n    }\n    var ctx = el.getContext(\"2d\");\n    ctx.putImageData(this.toDrawableData(), -rect.x, -rect.y);\n    return el;\n};\nexports.ImageData.prototype.getPixel = function (x, y) {\n    var i = x * 4 + y * 4 * this.width;\n    return [this.data[i], this.data[i + 1], this.data[i + 2], this.data[i + 3]];\n};\nexports.ImageData.prototype.getPixelValueSum = function (x, y) {\n    var i = x * 4 + y * 4 * this.width;\n    return this.data[i] + this.data[i + 1] + this.data[i + 2];\n};\nexports.ImageData.prototype.getPixelInt = function (x, y) {\n    var i = x * 4 + y * 4 * this.width;\n    return (this.data[i + 3] << 24) + (this.data[i + 0] << 16) + (this.data[i + 1] << 8) + (this.data[i + 2] << 0);\n};\nexports.ImageData.prototype.getColorDifference = function (x, y, r, g, b, a = 255) {\n    var i = x * 4 + y * 4 * this.width;\n    return Math.abs(this.data[i] - r) + Math.abs(this.data[i + 1] - g) + Math.abs(this.data[i + 2] - b) * a / 255;\n};\nexports.ImageData.prototype.setPixel = function (x, y, ...color) {\n    var r, g, b, a;\n    var [r, g, b, a] = (Array.isArray(color[0]) ? color[0] : color);\n    var i = x * 4 + y * 4 * this.width;\n    this.data[i] = r;\n    this.data[i + 1] = g;\n    this.data[i + 2] = b;\n    this.data[i + 3] = a == undefined ? 255 : a;\n};\nexports.ImageData.prototype.setPixelInt = function (x, y, color) {\n    var i = x * 4 + y * 4 * this.width;\n    this.data[i] = (color >> 24) & 0xff;\n    this.data[i + 1] = (color >> 16) & 0xff;\n    this.data[i + 2] = (color >> 8) & 0xff;\n    this.data[i + 3] = (color >> 0) & 0xff;\n};\nexports.ImageData.prototype.toFileBytes = function (format, quality) {\n    if (typeof HTMLCanvasElement != \"undefined\") {\n        return new Promise(d => this.toImage().toBlob(b => {\n            var r = new FileReader();\n            r.readAsArrayBuffer(b);\n            r.onload = () => d(new Uint8Array(r.result));\n        }, format, quality));\n    }\n    else {\n        return nodeimports.imageDataToFileBytes(this, format, quality);\n    }\n};\nexports.ImageData.prototype.toPngBase64 = function () {\n    if (typeof HTMLCanvasElement != \"undefined\") {\n        var str = this.toImage().toDataURL(\"image/png\");\n        return str.slice(str.indexOf(\",\") + 1);\n    }\n    else {\n        throw new Error(\"synchronous image conversion not supported in nodejs, try using ImageData.prototype.toFileBytes\");\n    }\n};\nexports.ImageData.prototype.pixelCompare = function (buf, x = 0, y = 0, max) {\n    return a1lib.ImageDetect.simpleCompare(this, buf, x, y, max);\n};\nexports.ImageData.prototype.copyTo = function (target, sourcex, sourcey, width, height, targetx, targety) {\n    //convince v8 that these are 31bit uints\n    const targetwidth = target.width | 0;\n    const thiswidth = this.width | 0;\n    const copywidth = width | 0;\n    const fastwidth = Math.floor(width / 4) * 4;\n    const thisdata = new Int32Array(this.data.buffer, this.data.byteOffset, this.data.byteLength / 4);\n    const targetdata = new Int32Array(target.data.buffer, target.data.byteOffset, target.data.byteLength / 4);\n    for (let cy = 0; cy < height; cy++) {\n        let cx = 0;\n        let it = (cx + targetx) + (cy + targety) * targetwidth;\n        let is = (cx + sourcex) + (cy + sourcey) * thiswidth;\n        //copy 4 pixels per iter (xmm)\n        for (; cx < fastwidth; cx += 4) {\n            targetdata[it] = thisdata[is];\n            targetdata[it + 1] = thisdata[is + 1];\n            targetdata[it + 2] = thisdata[is + 2];\n            targetdata[it + 3] = thisdata[is + 3];\n            it += 4;\n            is += 4;\n        }\n        //copy remainder per pixel\n        for (; cx < copywidth; cx++) {\n            targetdata[it] = thisdata[is];\n            it += 1;\n            is += 1;\n        }\n    }\n};\nif (typeof HTMLImageElement != \"undefined\") {\n    HTMLImageElement.prototype.toBuffer = function (x = 0, y = 0, w = this.width, h = this.height) {\n        var cnv = document.createElement(\"canvas\");\n        cnv.width = w;\n        cnv.height = h;\n        var ctx = cnv.getContext(\"2d\");\n        ctx.drawImage(this, -x, -y);\n        return ctx.getImageData(0, 0, w, h);\n    };\n    HTMLImageElement.prototype.toCanvas = function (x = 0, y = 0, w = this.width, h = this.height) {\n        var cnv = document.createElement(\"canvas\");\n        cnv.width = w;\n        cnv.height = h;\n        var ctx = cnv.getContext(\"2d\");\n        ctx.drawImage(this, -x, -y);\n        return cnv;\n    };\n}\n\n\n/***/ }),\n\n/***/ \"./src/base/imagedetect.ts\":\n/*!*********************************!*\\\n  !*** ./src/base/imagedetect.ts ***!\n  \\*********************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ImageDataSet = exports.webpackImages = exports.asyncMap = exports.coldif = exports.simpleCompareRMSE = exports.simpleCompare = exports.findSubbuffer = exports.findSubimage = exports.clearPngColorspace = exports.isPngBuffer = exports.imageDataFromFileBuffer = exports.imageDataFromBase64 = exports.imageDataFromUrl = void 0;\nconst imgref_1 = __webpack_require__(/*! ./imgref */ \"./src/base/imgref.ts\");\nconst wapper = __importStar(__webpack_require__(/*! ./wrapper */ \"./src/base/wrapper.ts\"));\nconst nodeimports = __importStar(__webpack_require__(/*! ./nodepolyfill */ \"./src/base/nodepolyfill.ts\"));\nconst _1 = __webpack_require__(/*! . */ \"./src/base/index.ts\");\n/**\n* Downloads an image and returns the ImageData\n* Make sure the png image does not have a sRGB chunk or the resulting pixels will differ for different users!!!\n* @param url http(s) or data url to the image\n*/\nasync function imageDataFromUrl(url) {\n    if (typeof Image != \"undefined\") {\n        var img = new Image();\n        img.crossOrigin = \"crossorigin\";\n        return await new Promise((done, fail) => {\n            img.onload = function () { done(img.toBuffer()); };\n            img.onerror = fail;\n            img.src = url;\n        });\n    }\n    else {\n        var hdr = \"data:image/png;base64,\";\n        if (url.startsWith(hdr)) {\n            return imageDataFromBase64(url.slice(hdr.length));\n        }\n        throw new Error(\"loading remote images in nodejs has been disabled, load the raw bytes and use imageDataFromNodeBuffer instead\");\n    }\n}\nexports.imageDataFromUrl = imageDataFromUrl;\n/**\n* Loads an ImageData object from a base64 encoded png image\n* Make sure the png image does not have a sRGB chunk or the resulting pixels will differ for different users!!!\n* @param data a base64 encoded png image\n*/\nasync function imageDataFromBase64(data) {\n    if (typeof Image != \"undefined\") {\n        return imageDataFromUrl(\"data:image/png;base64,\" + data);\n    }\n    else {\n        return nodeimports.imageDataFromBase64(data);\n    }\n}\nexports.imageDataFromBase64 = imageDataFromBase64;\n/**\n * Loads an ImageData object directly from a png encoded file buffer\n * This method ensures that png color space headers are taken care off\n * @param data The bytes of a png file\n */\nasync function imageDataFromFileBuffer(data) {\n    clearPngColorspace(data);\n    if (typeof Image != \"undefined\") {\n        let blob = new Blob([data], { type: \"image/png\" });\n        let url = URL.createObjectURL(blob);\n        let r = await imageDataFromUrl(url);\n        URL.revokeObjectURL(url);\n        return r;\n    }\n    else {\n        return nodeimports.imageDataFromBuffer(data);\n    }\n}\nexports.imageDataFromFileBuffer = imageDataFromFileBuffer;\n/**\n* Checks if a given byte array is a png file (by checking for ?PNG as first 4 bytes)\n* @param bytes Raw bytes of the png file\n*/\nfunction isPngBuffer(bytes) {\n    return bytes[0] == 137 && bytes[1] == 80 && bytes[2] == 78 && bytes[3] == 71;\n}\nexports.isPngBuffer = isPngBuffer;\n/**\n* Resets the colorspace data in the png file.\n* This makes sure the browser renders the exact colors in the file instead of filtering it in order to obtain the best real life representation of\n* what it looked like on the authors screen. (this feature is often broken and not supported)\n* For example a round trip printscreen -> open in browser results in different colors than the original\n* @param data Raw bytes of the png file\n*/\nfunction clearPngColorspace(data) {\n    if (!isPngBuffer(data)) {\n        throw new Error(\"non-png image received\");\n    }\n    var i = 8;\n    while (i < data.length) {\n        var length = data[i++] * 0x1000000 + data[i++] * 0x10000 + data[i++] * 0x100 + data[i++];\n        var ancillary = !!((data[i] >> 5) & 1);\n        var chunkname = String.fromCharCode(data[i], data[i + 1], data[i + 2], data[i + 3]);\n        var chunkid = chunkname.toLowerCase();\n        if (chunkid != \"trns\" && ancillary) {\n            data[i + 0] = \"n\".charCodeAt(0);\n            data[i + 1] = \"o\".charCodeAt(0);\n            data[i + 2] = \"P\".charCodeAt(0);\n            data[i + 3] = \"E\".charCodeAt(0);\n            //calculate new chunk checksum\n            //http://www.libpng.org/pub/png/spec/1.2/PNG-CRCAppendix.html\n            var end = i + 4 + length;\n            var crc = 0xffffffff;\n            //should be fast enough like this\n            var bitcrc = function (bit) {\n                for (var k = 0; k < 8; k++) {\n                    if (bit & 1) {\n                        bit = 0xedb88320 ^ (bit >>> 1);\n                    }\n                    else {\n                        bit = bit >>> 1;\n                    }\n                }\n                return bit;\n            };\n            for (var a = i; a < end; a++) {\n                if (a >= i + 4) {\n                    data[a] = 0;\n                }\n                var bit = data[a];\n                crc = bitcrc((crc ^ bit) & 0xff) ^ (crc >>> 8);\n            }\n            crc = crc ^ 0xffffffff;\n            //new chunk checksum\n            data[i + 4 + length + 0] = (crc >> 24) & 0xff;\n            data[i + 4 + length + 1] = (crc >> 16) & 0xff;\n            data[i + 4 + length + 2] = (crc >> 8) & 0xff;\n            data[i + 4 + length + 3] = (crc >> 0) & 0xff;\n        }\n        if (chunkname == \"IEND\") {\n            break;\n        }\n        i += 4; //type\n        i += length; //data\n        i += 4; //crc\n    }\n}\nexports.clearPngColorspace = clearPngColorspace;\n/**\n* finds the given needle ImageBuffer in the given haystack ImgRef this function uses the best optimized available\n* code depending on the type of the haystack. It will use fast c# searching if the haystack is an ImgRefBind, js searching\n* is used otherwise.\n* the checklist argument is no longer used and should ignored or null/undefined\n* The optional sx,sy,sw,sh arguments indicate a bounding rectangle in which to search the needle. The rectangle should be bigger than the needle\n* @returns An array of points where the needle is found. The array is empty if none are found\n*/\nfunction findSubimage(haystackImgref, needleBuffer, sx = 0, sy = 0, sw = haystackImgref.width, sh = haystackImgref.height) {\n    if (!haystackImgref) {\n        throw new TypeError();\n    }\n    if (!needleBuffer) {\n        throw new TypeError();\n    }\n    var max = 30;\n    //check if we can do this in alt1\n    if (haystackImgref instanceof imgref_1.ImgRefBind && wapper.hasAlt1 && alt1.bindFindSubImg) {\n        var needlestr = wapper.encodeImageString(needleBuffer);\n        var r = alt1.bindFindSubImg(haystackImgref.handle, needlestr, needleBuffer.width, sx, sy, sw, sh);\n        if (!r) {\n            throw new wapper.Alt1Error();\n        }\n        return JSON.parse(r);\n    }\n    return findSubbuffer(haystackImgref.read(), needleBuffer, sx, sy, sw, sh);\n}\nexports.findSubimage = findSubimage;\n/**\n* Uses js to find the given needle ImageBuffer in the given haystack ImageBuffer. It is better to use the alt1.bind- functions in\n* combination with a1nxt.findsubimg.\n* the optional sx,sy,sw,sh arguments indicate a bounding rectangle in which to search.\n* @returns An array of points where the needle is found. The array is empty if none are found\n*/\nfunction findSubbuffer(haystack, needle, sx = 0, sy = 0, sw = haystack.width, sh = haystack.height) {\n    var r = [];\n    var maxdif = 30;\n    var maxresults = 50;\n    var needlestride = needle.width * 4;\n    var heystackstride = haystack.width * 4;\n    //built list of non trans pixel to check\n    var checkList = [];\n    for (var y = 0; y < needle.height; y++) {\n        for (var x = 0; x < needle.width; x++) {\n            var i = x * 4 + y * needlestride;\n            if (needle.data[i + 3] == 255) {\n                checkList.push({ x: x, y: y });\n            }\n            if (checkList.length == 10) {\n                break;\n            }\n        }\n        if (checkList.length == 10) {\n            break;\n        }\n    }\n    var cw = (sx + sw) - needle.width;\n    var ch = (sy + sh) - needle.height;\n    var checklength = checkList.length;\n    for (var y = sy; y <= ch; y++) {\n        outer: for (var x = sx; x <= cw; x++) {\n            for (var a = 0; a < checklength; a++) {\n                var i1 = (x + checkList[a].x) * 4 + (y + checkList[a].y) * heystackstride;\n                var i2 = checkList[a].x * 4 + checkList[a].y * needlestride;\n                var d = 0;\n                d = d + Math.abs(haystack.data[i1 + 0] - needle.data[i2 + 0]) | 0;\n                d = d + Math.abs(haystack.data[i1 + 1] - needle.data[i2 + 1]) | 0;\n                d = d + Math.abs(haystack.data[i1 + 2] - needle.data[i2 + 2]) | 0;\n                d *= 255 / needle.data[i2 + 3];\n                if (d > maxdif) {\n                    continue outer;\n                }\n            }\n            if (simpleCompare(haystack, needle, x, y, maxdif) != Infinity) {\n                r.push({ x, y });\n                if (r.length > maxresults) {\n                    return r;\n                }\n            }\n        }\n    }\n    return r;\n}\nexports.findSubbuffer = findSubbuffer;\n/**\n* Compares two images and returns the average color difference per pixel between them\n* @param max The max color difference at any point in the image before short circuiting the function and returning Infinity. set to -1 to always continue.\n* @returns The average color difference per pixel or Infinity if the difference is more than max at any point in the image\n*/\nfunction simpleCompare(bigbuf, checkbuf, x, y, max = 30) {\n    if (x < 0 || y < 0) {\n        throw new RangeError();\n    }\n    if (x + checkbuf.width > bigbuf.width || y + checkbuf.height > bigbuf.height) {\n        throw new RangeError();\n    }\n    if (max == -1) {\n        max = 255 * 4;\n    }\n    var dif = 0;\n    for (var step = 8; step >= 1; step /= 2) {\n        for (var cx = 0; cx < checkbuf.width; cx += step) {\n            for (var cy = 0; cy < checkbuf.height; cy += step) {\n                var i1 = (x + cx) * 4 + (y + cy) * bigbuf.width * 4;\n                var i2 = cx * 4 + cy * checkbuf.width * 4;\n                var d = 0;\n                d = d + Math.abs(bigbuf.data[i1 + 0] - checkbuf.data[i2 + 0]) | 0;\n                d = d + Math.abs(bigbuf.data[i1 + 1] - checkbuf.data[i2 + 1]) | 0;\n                d = d + Math.abs(bigbuf.data[i1 + 2] - checkbuf.data[i2 + 2]) | 0;\n                d *= checkbuf.data[i2 + 3] / 255;\n                if (step == 1) {\n                    dif += d;\n                }\n                if (d > max) {\n                    return Infinity;\n                }\n            }\n        }\n    }\n    return dif / checkbuf.width / checkbuf.height;\n}\nexports.simpleCompare = simpleCompare;\n/**\n* Calculates the root mean square error between the two buffers at the given coordinate, this method can be used in situations with significant blur or\n* transparency, it does not bail early on non-matching images like simpleCompare does so it can be expected to be much slower when called often.\n* @returns The root mean square error beteen the images, high single pixel errors are penalized more than consisten low errors. return of 0 means perfect match.\n*/\nfunction simpleCompareRMSE(bigbuf, checkbuf, x, y) {\n    if (x < 0 || y < 0) {\n        throw new RangeError();\n    }\n    if (x + checkbuf.width > bigbuf.width || y + checkbuf.height > bigbuf.height) {\n        throw new RangeError();\n    }\n    var dif = 0;\n    var numpix = 0;\n    for (var cx = 0; cx < checkbuf.width; cx++) {\n        for (var cy = 0; cy < checkbuf.height; cy++) {\n            var i1 = (x + cx) * 4 + (y + cy) * bigbuf.width * 4;\n            var i2 = cx * 4 + cy * checkbuf.width * 4;\n            var d = 0;\n            d = d + Math.abs(bigbuf.data[i1 + 0] - checkbuf.data[i2 + 0]) | 0;\n            d = d + Math.abs(bigbuf.data[i1 + 1] - checkbuf.data[i2 + 1]) | 0;\n            d = d + Math.abs(bigbuf.data[i1 + 2] - checkbuf.data[i2 + 2]) | 0;\n            var weight = checkbuf.data[i2 + 3] / 255;\n            numpix += weight;\n            dif += d * d * weight;\n        }\n    }\n    return Math.sqrt(dif / numpix);\n}\nexports.simpleCompareRMSE = simpleCompareRMSE;\n/**\n* Returns the difference between two colors (scaled to the alpha of the second color)\n*/\nfunction coldif(r1, g1, b1, r2, g2, b2, a2) {\n    return (Math.abs(r1 - r2) + Math.abs(g1 - g2) + Math.abs(b1 - b2)) * a2 / 255; //only applies alpha for 2nd buffer!\n}\nexports.coldif = coldif;\n/**\n * Turns map of promises into a map that contains the resolved values after loading.\n * @param input\n */\nfunction asyncMap(input) {\n    var raw = {};\n    var promises = [];\n    for (var a in input) {\n        if (input.hasOwnProperty(a)) {\n            raw[a] = null;\n            promises.push(input[a].then(function (a, i) { raw[a] = i; r[a] = i; }.bind(null, a)));\n        }\n    }\n    var r = {};\n    var promise = Promise.all(promises).then(() => { r.loaded = true; return r; });\n    Object.defineProperty(r, \"loaded\", { enumerable: false, value: false, writable: true });\n    Object.defineProperty(r, \"promise\", { enumerable: false, value: promise });\n    Object.defineProperty(r, \"raw\", { enumerable: false, value: raw });\n    return Object.assign(r, raw);\n}\nexports.asyncMap = asyncMap;\n/**\n* Same as asyncMap, but casts the properties to ImageData in typescript\n*/\nfunction webpackImages(input) {\n    return asyncMap(input);\n}\nexports.webpackImages = webpackImages;\nclass ImageDataSet {\n    constructor() {\n        this.buffers = [];\n    }\n    matchBest(img, x, y, max) {\n        let best = null;\n        let bestscore = max;\n        for (let a = 0; a < this.buffers.length; a++) {\n            let score = img.pixelCompare(this.buffers[a], x, y, bestscore);\n            if (isFinite(score) && (bestscore == undefined || score < bestscore)) {\n                bestscore = score;\n                best = a;\n            }\n        }\n        if (best == null) {\n            return null;\n        }\n        return { index: best, score: bestscore };\n    }\n    static fromFilmStrip(baseimg, width) {\n        if ((baseimg.width % width) != 0) {\n            throw new Error(\"slice size does not fit in base img\");\n        }\n        let r = new ImageDataSet();\n        for (let x = 0; x < baseimg.width; x += width) {\n            r.buffers.push(baseimg.clone(new _1.Rect(x, 0, width, baseimg.height)));\n        }\n        return r;\n    }\n    static fromFilmStripUneven(baseimg, widths) {\n        let r = new ImageDataSet();\n        let x = 0;\n        for (let w of widths) {\n            r.buffers.push(baseimg.clone(new _1.Rect(x, 0, w, baseimg.height)));\n            x += w;\n            if (x > baseimg.width) {\n                throw new Error(\"sampling filmstrip outside bounds\");\n            }\n        }\n        if (x != baseimg.width) {\n            throw new Error(\"unconsumed pixels left in film strip imagedata\");\n        }\n        return r;\n    }\n    static fromAtlas(baseimg, slices) {\n        let r = new ImageDataSet();\n        for (let slice of slices) {\n            r.buffers.push(baseimg.clone(slice));\n        }\n        return r;\n    }\n}\nexports.ImageDataSet = ImageDataSet;\n\n\n/***/ }),\n\n/***/ \"./src/base/imgref.ts\":\n/*!****************************!*\\\n  !*** ./src/base/imgref.ts ***!\n  \\****************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ImgRefData = exports.ImgRefBind = exports.ImgRefCtx = exports.ImgRef = void 0;\nconst index_1 = __webpack_require__(/*! ./index */ \"./src/base/index.ts\");\n/**\n * Represents an image that might be in different types of memory\n * This is mostly used to represent images still in Alt1 memory that have\n * not been transfered to js yet. Various a1lib api's use this type and\n * choose the most efficient approach based on the memory type\n */\nclass ImgRef {\n    constructor(x, y, w, h) {\n        this.t = \"none\";\n        this.x = x;\n        this.y = y;\n        this.width = w;\n        this.height = h;\n    }\n    read(x = 0, y = 0, w = this.width, h = this.height) {\n        throw new Error(\"This imgref (\" + this.t + \") does not support toData\");\n    }\n    findSubimage(needle, sx = 0, sy = 0, w = this.width, h = this.height) {\n        return index_1.ImageDetect.findSubimage(this, needle, sx, sy, w, h);\n    }\n    toData(x = this.x, y = this.y, w = this.width, h = this.height) {\n        return this.read(x - this.x, y - this.y, w, h);\n    }\n    ;\n    containsArea(rect) {\n        return this.x <= rect.x && this.y <= rect.y && this.x + this.width >= rect.x + rect.width && this.y + this.height >= rect.y + rect.height;\n    }\n}\nexports.ImgRef = ImgRef;\n/**\n * Represents an image in js render memory (canvas/image tag)\n */\nclass ImgRefCtx extends ImgRef {\n    constructor(img, x = 0, y = 0) {\n        if (img instanceof CanvasRenderingContext2D) {\n            super(x, y, img.canvas.width, img.canvas.height);\n            this.ctx = img;\n        }\n        else {\n            super(x, y, img.width, img.height);\n            var cnv = (img instanceof HTMLCanvasElement ? img : img.toCanvas());\n            this.ctx = cnv.getContext(\"2d\");\n        }\n        this.t = \"ctx\";\n    }\n    read(x = 0, y = 0, w = this.width, h = this.height) {\n        return this.ctx.getImageData(x, y, w, h);\n    }\n}\nexports.ImgRefCtx = ImgRefCtx;\n/**\n * Represents in image in Alt1 memory, This type of image can be searched for subimages\n * very efficiently and transfering the full image to js can be avoided this way\n */\nclass ImgRefBind extends ImgRef {\n    constructor(handle, x = 0, y = 0, w = 0, h = 0) {\n        super(x, y, w, h);\n        this.handle = handle;\n        this.t = \"bind\";\n    }\n    read(x = 0, y = 0, w = this.width, h = this.height) {\n        return (0, index_1.transferImageData)(this.handle, x, y, w, h);\n    }\n}\nexports.ImgRefBind = ImgRefBind;\n/**\n * Represents an image in js memory\n */\nclass ImgRefData extends ImgRef {\n    constructor(buf, x = 0, y = 0) {\n        super(x, y, buf.width, buf.height);\n        this.buf = buf;\n        this.t = \"data\";\n    }\n    read(x = 0, y = 0, w = this.width, h = this.height) {\n        if (x == 0 && y == 0 && w == this.width && h == this.height) {\n            return this.buf;\n        }\n        var r = new ImageData(w, h);\n        for (var b = y; b < y + h; b++) {\n            for (var a = x; a < x + w; a++) {\n                var i1 = (a - x) * 4 + (b - y) * w * 4;\n                var i2 = a * 4 + b * 4 * this.buf.width;\n                r.data[i1] = this.buf.data[i2];\n                r.data[i1 + 1] = this.buf.data[i2 + 1];\n                r.data[i1 + 2] = this.buf.data[i2 + 2];\n                r.data[i1 + 3] = this.buf.data[i2 + 3];\n            }\n        }\n        return r;\n    }\n}\nexports.ImgRefData = ImgRefData;\n\n\n/***/ }),\n\n/***/ \"./src/base/index.ts\":\n/*!***************************!*\\\n  !*** ./src/base/index.ts ***!\n  \\***************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ImageDataSet = exports.findSubbuffer = exports.simpleCompare = exports.findSubimage = exports.webpackImages = exports.NodePolyfill = exports.ImageData = exports.Rect = exports.PasteInput = exports.ImageDetect = void 0;\n__webpack_require__(/*! ./declarations */ \"./src/base/declarations.ts\");\nexports.ImageDetect = __importStar(__webpack_require__(/*! ./imagedetect */ \"./src/base/imagedetect.ts\"));\nexports.PasteInput = __importStar(__webpack_require__(/*! ./pasteinput */ \"./src/base/pasteinput.ts\"));\nvar rect_1 = __webpack_require__(/*! ./rect */ \"./src/base/rect.ts\");\nObject.defineProperty(exports, \"Rect\", ({ enumerable: true, get: function () { return __importDefault(rect_1).default; } }));\nvar imagedata_extensions_1 = __webpack_require__(/*! ./imagedata-extensions */ \"./src/base/imagedata-extensions.ts\");\nObject.defineProperty(exports, \"ImageData\", ({ enumerable: true, get: function () { return imagedata_extensions_1.ImageData; } }));\nexports.NodePolyfill = __importStar(__webpack_require__(/*! ./nodepolyfill */ \"./src/base/nodepolyfill.ts\"));\n__exportStar(__webpack_require__(/*! ./imgref */ \"./src/base/imgref.ts\"), exports);\n__exportStar(__webpack_require__(/*! ./wrapper */ \"./src/base/wrapper.ts\"), exports);\nvar imagedetect_1 = __webpack_require__(/*! ./imagedetect */ \"./src/base/imagedetect.ts\");\nObject.defineProperty(exports, \"webpackImages\", ({ enumerable: true, get: function () { return imagedetect_1.webpackImages; } }));\nObject.defineProperty(exports, \"findSubimage\", ({ enumerable: true, get: function () { return imagedetect_1.findSubimage; } }));\nObject.defineProperty(exports, \"simpleCompare\", ({ enumerable: true, get: function () { return imagedetect_1.simpleCompare; } }));\nObject.defineProperty(exports, \"findSubbuffer\", ({ enumerable: true, get: function () { return imagedetect_1.findSubbuffer; } }));\nObject.defineProperty(exports, \"ImageDataSet\", ({ enumerable: true, get: function () { return imagedetect_1.ImageDataSet; } }));\n\n\n/***/ }),\n\n/***/ \"./src/base/nodepolyfill.ts\":\n/*!**********************************!*\\\n  !*** ./src/base/nodepolyfill.ts ***!\n  \\**********************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\n//nodejs and electron polyfills for web api's\n//commented out type info as that breaks webpack with optional dependencies\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.imageDataFromBuffer = exports.imageDataFromBase64 = exports.imageDataToFileBytes = exports.createCanvas = exports.imageDataToDrawable = exports.requireElectronCommon = exports.requireNodeCanvas = exports.requireSharp = exports.polyfillRequire = void 0;\nconst index_1 = __webpack_require__(/*! ./index */ \"./src/base/index.ts\");\nconst imagedetect_1 = __webpack_require__(/*! ./imagedetect */ \"./src/base/imagedetect.ts\");\nvar requirefunction = null;\n/**\n * Call this function to let the libs require extra dependencies on nodejs in order\n * to polyfill some browser api's (mostly image compression/decompression)\n * `NodePolifill.polyfillRequire(require);` should solve most cases\n */\nfunction polyfillRequire(requirefn) {\n    requirefunction = requirefn;\n}\nexports.polyfillRequire = polyfillRequire;\nfunction requireSharp() {\n    try {\n        if (requirefunction) {\n            return requirefunction(\"sharp\");\n        }\n        else {\n            return __webpack_require__(/* webpackIgnore: true */ /*! sharp */ \"sharp\"); // as typeof import(\"sharp\");\n        }\n    }\n    catch (e) { }\n    return null;\n}\nexports.requireSharp = requireSharp;\nfunction requireNodeCanvas() {\n    //attempt to require sharp first, after loading canvas the module sharp fails to load\n    requireSharp();\n    try {\n        if (requirefunction) {\n            return requirefunction(\"canvas\");\n        }\n        else {\n            return __webpack_require__(/* webpackIgnore: true */ /*! canvas */ \"canvas\"); // as typeof import(\"sharp\");\n        }\n    }\n    catch (e) { }\n    return null;\n}\nexports.requireNodeCanvas = requireNodeCanvas;\nfunction requireElectronCommon() {\n    try {\n        if (requirefunction) {\n            return requirefunction(\"electron/common\");\n        }\n        else {\n            return __webpack_require__(/* webpackIgnore: true */ /*! electron/common */ \"electron/common\");\n        }\n    }\n    catch (e) { }\n    return null;\n}\nexports.requireElectronCommon = requireElectronCommon;\nfunction imageDataToDrawable(buf) {\n    let nodecnv = requireNodeCanvas();\n    if (!nodecnv) {\n        throw new Error(\"couldn't find built-in canvas or the module 'canvas'\");\n    }\n    return new nodecnv.ImageData(buf.data, buf.width, buf.height);\n}\nexports.imageDataToDrawable = imageDataToDrawable;\nfunction createCanvas(w, h) {\n    let nodecnv = requireNodeCanvas();\n    if (!nodecnv) {\n        throw new Error(\"couldn't find built-in canvas or the module 'canvas'\");\n    }\n    return nodecnv.createCanvas(w, h);\n}\nexports.createCanvas = createCanvas;\nfunction flipBGRAtoRGBA(data) {\n    for (let i = 0; i < data.length; i += 4) {\n        let tmp = data[i + 2];\n        data[i + 2] = data[i + 0];\n        data[i + 0] = tmp;\n    }\n}\nasync function imageDataToFileBytes(buf, format, quality) {\n    //use the electron API if we're in electron\n    var electronCommon;\n    var sharp;\n    if (electronCommon = requireElectronCommon()) {\n        let nativeImage = electronCommon.nativeImage;\n        //need to copy the buffer in order to flip it without destroying the original\n        let bufcpy = Buffer.from(buf.data.slice(buf.data.byteOffset, buf.data.byteLength));\n        flipBGRAtoRGBA(bufcpy);\n        let nativeimg = nativeImage.createFromBitmap(bufcpy, { width: buf.width, height: buf.height });\n        return nativeimg.toPNG();\n    }\n    else if (sharp = requireSharp()) {\n        let img = sharp(Buffer.from(buf.data.buffer), { raw: { width: buf.width, height: buf.height, channels: 4 } });\n        if (format == \"image/png\") {\n            img.png();\n        }\n        else if (format == \"image/webp\") {\n            var opts = { quality: 80 };\n            if (typeof quality == \"number\") {\n                opts.quality = quality * 100;\n            }\n            img.webp(opts);\n        }\n        else {\n            throw new Error(\"unknown image format: \" + format);\n        }\n        return await img.toBuffer({ resolveWithObject: false }).buffer;\n    }\n    throw new Error(\"coulnd't find build-in image compression methods or the module 'electron/common' or 'sharp'\");\n}\nexports.imageDataToFileBytes = imageDataToFileBytes;\nfunction imageDataFromBase64(base64) {\n    return imageDataFromBuffer(Buffer.from(base64, \"base64\"));\n}\nexports.imageDataFromBase64 = imageDataFromBase64;\nasync function imageDataFromBuffer(buffer) {\n    (0, imagedetect_1.clearPngColorspace)(buffer);\n    //use the electron API if we're in electron\n    var electronCommon;\n    var nodecnv;\n    if (electronCommon = requireElectronCommon()) {\n        let nativeImage = electronCommon.nativeImage;\n        let img = nativeImage.createFromBuffer(buffer);\n        let pixels = img.toBitmap();\n        let size = img.getSize();\n        let pixbuf = new Uint8ClampedArray(pixels.buffer, pixels.byteOffset, pixels.byteLength);\n        flipBGRAtoRGBA(pixbuf);\n        return new index_1.ImageData(pixbuf, size.width, size.height);\n    }\n    else if (nodecnv = requireNodeCanvas()) {\n        return new Promise((done, err) => {\n            let img = new nodecnv.Image();\n            img.onerror = err;\n            img.onload = () => {\n                var cnv = nodecnv.createCanvas(img.naturalWidth, img.naturalHeight);\n                var ctx = cnv.getContext(\"2d\");\n                ctx.drawImage(img, 0, 0);\n                var data = ctx.getImageData(0, 0, img.naturalWidth, img.naturalHeight);\n                //use our own class\n                done(new index_1.ImageData(data.data, data.width, data.height));\n            };\n            img.src = Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n        });\n    }\n    throw new Error(\"couldn't find built-in canvas, module 'electron/common' or the module 'canvas'\");\n}\nexports.imageDataFromBuffer = imageDataFromBuffer;\n\n\n/***/ }),\n\n/***/ \"./src/base/pasteinput.ts\":\n/*!********************************!*\\\n  !*** ./src/base/pasteinput.ts ***!\n  \\********************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.fileDialog = exports.start = exports.startDragNDrop = exports.triggerPaste = exports.unlisten = exports.listen = exports.lastref = void 0;\nconst index_1 = __webpack_require__(/*! ./index */ \"./src/base/index.ts\");\nconst ImageDetect = __importStar(__webpack_require__(/*! ./imagedetect */ \"./src/base/imagedetect.ts\"));\nvar listeners = [];\nvar started = false;\nvar dndStarted = false;\nvar pasting = false;\nexports.lastref = null;\nfunction listen(func, errorfunc, dragndrop) {\n    listeners.push({ cb: func, error: errorfunc });\n    if (!started) {\n        start();\n    }\n    if (dragndrop && !dndStarted) {\n        startDragNDrop();\n    }\n}\nexports.listen = listen;\nfunction unlisten(func) {\n    let i = listeners.findIndex(c => c.cb == func);\n    if (i != -1) {\n        listeners.splice(i, 1);\n    }\n}\nexports.unlisten = unlisten;\n/**\n * currently used in multiple document situations (iframe), might be removed in the future\n */\nfunction triggerPaste(img) {\n    exports.lastref = img;\n    for (var a in listeners) {\n        listeners[a].cb(exports.lastref);\n    }\n}\nexports.triggerPaste = triggerPaste;\nfunction pasted(img) {\n    pasting = false;\n    let cnv = img instanceof HTMLCanvasElement ? img : img.toCanvas();\n    triggerPaste(new index_1.ImgRefCtx(cnv));\n}\nfunction error(error, mes) {\n    var _a, _b;\n    pasting = false;\n    for (var a in listeners) {\n        (_b = (_a = listeners[a]).error) === null || _b === void 0 ? void 0 : _b.call(_a, mes, error);\n    }\n}\nfunction startDragNDrop() {\n    var getitem = function (items) {\n        var foundimage = \"\";\n        for (var a = 0; a < items.length; a++) {\n            var item = items[a];\n            var m = item.type.match(/^image\\/(\\w+)$/);\n            if (m) {\n                if (m[1] == \"png\") {\n                    return item;\n                }\n                else {\n                    foundimage = m[1];\n                }\n            }\n        }\n        if (foundimage) {\n            error(\"notpng\", \"The image you uploaded is not a .png image. Other image type have compression noise and can't be used for image detection.\");\n        }\n        return null;\n    };\n    window.addEventListener(\"dragover\", function (e) {\n        e.preventDefault();\n    });\n    window.addEventListener(\"drop\", function (e) {\n        if (!e.dataTransfer) {\n            return;\n        }\n        var item = getitem(e.dataTransfer.items);\n        e.preventDefault();\n        if (!item) {\n            return;\n        }\n        fromFile(item.getAsFile());\n    });\n}\nexports.startDragNDrop = startDragNDrop;\nfunction start() {\n    if (started) {\n        return;\n    }\n    started = true;\n    //determine if we have a clipboard api\n    //try{a=new Event(\"clipboard\"); a=\"clipboardData\" in a;}\n    //catch(e){a=false;}\n    var ischrome = !!navigator.userAgent.match(/Chrome/) && !navigator.userAgent.match(/Edge/);\n    //old method breaks after chrome 41, revert to good old user agent sniffing\n    //nvm, internet explorer (edge) decided that it wants to be chrome, however fails at delivering\n    //turns out this one is interesting, edge is a hybrid between the paste api's\n    var apipasted = function (e) {\n        if (!e.clipboardData) {\n            return;\n        }\n        for (var a = 0; a < e.clipboardData.items.length; a++) { //loop all data types\n            if (e.clipboardData.items[a].type.indexOf(\"image\") != -1) {\n                var file = e.clipboardData.items[a].getAsFile();\n                if (file) {\n                    var img = new Image();\n                    img.src = (window.URL || window.webkitURL).createObjectURL(file);\n                    if (img.width > 0) {\n                        pasted(img);\n                    }\n                    else {\n                        img.onload = function () { pasted(img); };\n                    }\n                }\n            }\n        }\n    };\n    if (ischrome) {\n        document.addEventListener(\"paste\", apipasted);\n    }\n    else {\n        var catcher = document.createElement(\"div\");\n        catcher.setAttribute(\"contenteditable\", \"\");\n        catcher.className = \"forcehidden\"; //retarded ie safety/bug, cant apply styles using js//TODO i don't even know what's going on\n        catcher.onpaste = function (e) {\n            if (e.clipboardData && e.clipboardData.items) {\n                apipasted(e);\n                return;\n            }\n            setTimeout(function () {\n                var b = catcher.children[0];\n                if (!b || b.tagName != \"IMG\") {\n                    return;\n                }\n                var img = new Image();\n                img.src = b.src;\n                var a = img.src.match(/^data:([\\w\\/]+);/);\n                if (img.width > 0) {\n                    pasted(img);\n                }\n                else {\n                    img.onload = function () { pasted(img); };\n                }\n                catcher.innerHTML = \"\";\n            }, 1);\n        };\n        document.body.appendChild(catcher);\n    }\n    //detect if ctrl-v is pressed and focus catcher if needed\n    document.addEventListener(\"keydown\", function (e) {\n        if (e.target.tagName == \"INPUT\") {\n            return;\n        }\n        if (e.keyCode != \"V\".charCodeAt(0) || !e.ctrlKey) {\n            return;\n        }\n        pasting = true;\n        setTimeout(function () {\n            if (pasting) {\n                error(\"noimg\", \"You pressed Ctrl+V, but no image was pasted by your browser, make sure your clipboard contains an image, and not a link to an image.\");\n            }\n        }, 1000);\n        if (catcher) {\n            catcher.focus();\n        }\n    });\n}\nexports.start = start;\nfunction fileDialog() {\n    var fileinput = document.createElement(\"input\");\n    fileinput.type = \"file\";\n    fileinput.accept = \"image/png\";\n    fileinput.onchange = function () { if (fileinput.files && fileinput.files[0]) {\n        fromFile(fileinput.files[0]);\n    } };\n    fileinput.click();\n    return fileinput;\n}\nexports.fileDialog = fileDialog;\nfunction fromFile(file) {\n    if (!file) {\n        return;\n    }\n    var reader = new FileReader();\n    reader.onload = function () {\n        var bytearray = new Uint8Array(reader.result);\n        if (ImageDetect.isPngBuffer(bytearray)) {\n            ImageDetect.clearPngColorspace(bytearray);\n        }\n        var blob = new Blob([bytearray], { type: \"image/png\" });\n        var img = new Image();\n        img.onerror = () => error(\"invalidfile\", \"The file you uploaded could not be opened as an image.\");\n        var bloburl = URL.createObjectURL(blob);\n        img.src = bloburl;\n        if (img.width > 0) {\n            pasted(img);\n            URL.revokeObjectURL(bloburl);\n        }\n        else {\n            img.onload = function () { pasted(img); URL.revokeObjectURL(bloburl); };\n        }\n    };\n    reader.readAsArrayBuffer(file);\n}\n\n\n/***/ }),\n\n/***/ \"./src/base/rect.ts\":\n/*!**************************!*\\\n  !*** ./src/base/rect.ts ***!\n  \\**************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\n//util class for rectangle maths\n//TODO shit this sucks can we remove it again?\n//more of a shorthand to get {x,y,width,height} than a class\n//kinda starting to like it again\n//TODO remove rant\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n;\n/**\n * Simple rectangle class with some util functions\n */\nclass Rect {\n    constructor(x, y, w, h) {\n        this.x = x;\n        this.y = y;\n        this.width = w;\n        this.height = h;\n    }\n    static fromArgs(...args) {\n        if (typeof args[0] == \"object\") {\n            return new Rect(args[0].x, args[0].y, args[0].width, args[0].height);\n        }\n        else if (typeof args[0] == \"number\" && args.length >= 4) {\n            return new Rect(args[0], args[1], args[2], args[3]);\n        }\n        else {\n            throw new Error(\"invalid rect args\");\n        }\n    }\n    /**\n     * Resizes this Rect to include the full size of a given second rectangle\n     */\n    union(r2) {\n        var x = Math.min(this.x, r2.x);\n        var y = Math.min(this.y, r2.y);\n        this.width = Math.max(this.x + this.width, r2.x + r2.width) - x;\n        this.height = Math.max(this.y + this.height, r2.y + r2.height) - y;\n        this.x = x;\n        this.y = y;\n        return this;\n    }\n    /**\n     * Resizes this Rect to include a given point\n     */\n    includePoint(x, y) {\n        this.union(new Rect(x, y, 0, 0));\n    }\n    /**\n     * Grows the rectangle with the given dimensions\n     */\n    inflate(w, h) {\n        this.x -= w;\n        this.y -= h;\n        this.width += 2 * w;\n        this.height += 2 * h;\n    }\n    /**\n     * Resizes this Rect to the area that overlaps a given Rect\n     * width and height will be set to 0 if the intersection does not exist\n     */\n    intersect(r2) {\n        if (this.x < r2.x) {\n            this.width -= r2.x - this.x;\n            this.x = r2.x;\n        }\n        if (this.y < r2.y) {\n            this.height -= r2.y - this.y;\n            this.y = r2.y;\n        }\n        this.width = Math.min(this.x + this.width, r2.x + r2.width) - this.x;\n        this.height = Math.min(this.y + this.height, r2.y + r2.height) - this.y;\n        if (this.width <= 0 || this.height <= 0) {\n            this.width = 0;\n            this.height = 0;\n        }\n    }\n    /**\n     * Returns wether this Rect has at least one pixel overlap with a given Rect\n     */\n    overlaps(r2) {\n        return this.x < r2.x + r2.width && this.x + this.width > r2.x && this.y < r2.y + r2.height && this.y + this.height > r2.y;\n    }\n    /**\n     * Returns wether a given Rect fits completely inside this Rect\n     * @param r2\n     */\n    contains(r2) {\n        return this.x <= r2.x && this.x + this.width >= r2.x + r2.width && this.y <= r2.y && this.y + this.height >= r2.y + r2.height;\n    }\n    /**\n     * Returns wether a given point lies inside this Rect\n     */\n    containsPoint(x, y) {\n        return this.x <= x && this.x + this.width > x && this.y <= y && this.y + this.height > y;\n    }\n}\nexports[\"default\"] = Rect;\n\n\n/***/ }),\n\n/***/ \"./src/base/wrapper.ts\":\n/*!*****************************!*\\\n  !*** ./src/base/wrapper.ts ***!\n  \\*****************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.captureStream = exports.captureMultiAsync = exports.captureAsync = exports.ImageStreamReader = exports.once = exports.removeListener = exports.on = exports.addResizeElement = exports.getMousePosition = exports.hasAlt1Version = exports.resetEnvironment = exports.identifyApp = exports.unmixColor = exports.mixColor = exports.encodeImageString = exports.decodeImageString = exports.transferImageData = exports.captureHoldFullRs = exports.captureHoldScreen = exports.captureHold = exports.capture = exports.getdisplaybounds = exports.requireAlt1 = exports.openbrowser = exports.skinName = exports.hasAlt1 = exports.newestversion = exports.Alt1Error = exports.NoAlt1Error = void 0;\nconst rect_1 = __importDefault(__webpack_require__(/*! ./rect */ \"./src/base/rect.ts\"));\nconst imgref_1 = __webpack_require__(/*! ./imgref */ \"./src/base/imgref.ts\");\nconst imagedata_extensions_1 = __webpack_require__(/*! ./imagedata-extensions */ \"./src/base/imagedata-extensions.ts\");\n__webpack_require__(/*! ./alt1api */ \"./src/base/alt1api.ts\");\n/**\n * Thrown when a method is called that can not be used outside of Alt1\n */\nclass NoAlt1Error extends Error {\n    constructor() {\n        super();\n        this.message = \"This method can not be ran outside of Alt1\";\n    }\n}\nexports.NoAlt1Error = NoAlt1Error;\n;\n/**\n * Thrown when the Alt1 API returns an invalid result\n * Errors of a different type are throw when internal Alt1 errors occur\n */\nclass Alt1Error extends Error {\n}\nexports.Alt1Error = Alt1Error;\n/**\n * The latest Alt1 version\n */\nexports.newestversion = \"1.5.5\";\n/**\n * Whether the Alt1 API is available\n */\nexports.hasAlt1 = (typeof alt1 != \"undefined\");\n/**\n * The name of the Alt1 interface skin. (Always \"default\" if running in a browser)\n */\nexports.skinName = exports.hasAlt1 ? alt1.skinName : \"default\";\n/**\n * Max number of bytes that can be sent by alt1 in one function\n * Not completely sure why this number is different than window.alt1.maxtranfer\n */\nvar maxtransfer = 4000000;\n/**\n * Open a link in the default browser\n * @deprecated use window.open instead\n */\nfunction openbrowser(url) {\n    if (exports.hasAlt1) {\n        alt1.openBrowser(url);\n    }\n    else {\n        window.open(url, '_blank');\n    }\n}\nexports.openbrowser = openbrowser;\n/**\n * Throw if Alt1 API is not available\n */\nfunction requireAlt1() {\n    if (!exports.hasAlt1) {\n        throw new NoAlt1Error();\n    }\n}\nexports.requireAlt1 = requireAlt1;\n/**\n * Returns an object with a rectangle that spans all screens\n */\nfunction getdisplaybounds() {\n    if (!exports.hasAlt1) {\n        return false;\n    }\n    return new rect_1.default(alt1.screenX, alt1.screenY, alt1.screenWidth, alt1.screenHeight);\n}\nexports.getdisplaybounds = getdisplaybounds;\n/**\n * gets an imagebuffer with pixel data about the requested region\n */\nfunction capture(...args) {\n    //TODO change null return on error into throw instead (x3)\n    if (!exports.hasAlt1) {\n        throw new NoAlt1Error();\n    }\n    var rect = rect_1.default.fromArgs(...args);\n    if (alt1.capture) {\n        return new imagedata_extensions_1.ImageData(alt1.capture(rect.x, rect.y, rect.width, rect.height), rect.width, rect.height);\n    }\n    var buf = new imagedata_extensions_1.ImageData(rect.width, rect.height);\n    if (rect.width * rect.height * 4 <= maxtransfer) {\n        var data = alt1.getRegion(rect.x, rect.y, rect.width, rect.height);\n        if (!data) {\n            return null;\n        }\n        decodeImageString(data, buf, 0, 0, rect.width, rect.height);\n    }\n    else {\n        //split up the request to to exceed the single transfer limit (for now)\n        var x1 = rect.x;\n        var ref = alt1.bindRegion(rect.x, rect.y, rect.width, rect.height);\n        if (ref <= 0) {\n            return null;\n        }\n        while (x1 < rect.x + rect.width) {\n            var x2 = Math.min(rect.x + rect.width, Math.floor(x1 + (maxtransfer / 4 / rect.height)));\n            var data = alt1.bindGetRegion(ref, x1, rect.y, x2 - x1, rect.height);\n            if (!data) {\n                return null;\n            }\n            decodeImageString(data, buf, x1 - rect.x, 0, x2 - x1, rect.height);\n            x1 = x2;\n        }\n    }\n    return buf;\n}\nexports.capture = capture;\n/**\n * Makes alt1 bind an area of the rs client in memory without sending it to the js client\n * returns an imgref object which can be used to get pixel data using the imgreftobuf function\n * currently only one bind can exist per app and the ref in (v) will always be 1\n */\nfunction captureHold(x, y, w, h) {\n    x = Math.round(x);\n    y = Math.round(y);\n    w = Math.round(w);\n    h = Math.round(h);\n    requireAlt1();\n    var r = alt1.bindRegion(x, y, w, h);\n    if (r <= 0) {\n        throw new Alt1Error(\"capturehold failed\");\n    }\n    return new imgref_1.ImgRefBind(r, x, y, w, h);\n}\nexports.captureHold = captureHold;\n/**\n * Same as captureHoldRegion, but captures the screen instead of the rs client. it also uses screen coordinates instead and can capture outside of the rs client\n */\nfunction captureHoldScreen(x, y, w, h) {\n    x = Math.round(x);\n    y = Math.round(y);\n    w = Math.round(w);\n    h = Math.round(h);\n    requireAlt1();\n    var r = alt1.bindScreenRegion(x, y, w, h);\n    if (r <= 0) {\n        return false;\n    }\n    return new imgref_1.ImgRefBind(r, x, y, w, h);\n}\nexports.captureHoldScreen = captureHoldScreen;\n/**\n * bind the full rs window if the rs window can be detected by alt1, otherwise return the full screen\n */\nfunction captureHoldFullRs() {\n    return captureHold(0, 0, alt1.rsWidth, alt1.rsHeight);\n}\nexports.captureHoldFullRs = captureHoldFullRs;\n/**\n * returns a subregion from a bound image\n * used internally in imgreftobuf if imgref is a bound image\n * @deprecated This should be handled internall by the imgrefbind.toData method\n */\nfunction transferImageData(handle, x, y, w, h) {\n    x = Math.round(x);\n    y = Math.round(y);\n    w = Math.round(w);\n    h = Math.round(h);\n    requireAlt1();\n    if (alt1.bindGetRegionBuffer) {\n        return new imagedata_extensions_1.ImageData(alt1.bindGetRegionBuffer(handle, x, y, w, h), w, h);\n    }\n    var r = new imagedata_extensions_1.ImageData(w, h);\n    var x1 = x;\n    while (true) { //split up the request to to exceed the single transfer limit (for now)\n        var x2 = Math.min(x + w, Math.floor(x1 + (maxtransfer / 4 / h)));\n        var a = alt1.bindGetRegion(handle, x1, y, x2 - x1, h);\n        if (!a) {\n            throw new Alt1Error();\n        }\n        decodeImageString(a, r, x1 - x, 0, x2 - x1, h);\n        x1 = x2;\n        if (x1 == x + w) {\n            break;\n        }\n        ;\n    }\n    return r;\n}\nexports.transferImageData = transferImageData;\n/**\n * decodes a returned string from alt1 to an imagebuffer\n */\nfunction decodeImageString(imagestring, target, x, y, w, h) {\n    var bin = atob(imagestring);\n    var bytes = target.data;\n    w |= 0;\n    h |= 0;\n    var offset = 4 * x + 4 * y * target.width;\n    var target_width = target.width | 0;\n    for (var a = 0; a < w; a++) {\n        for (var b = 0; b < h; b++) {\n            var i1 = (offset + (a * 4 | 0) + (b * target_width * 4 | 0)) | 0;\n            var i2 = ((a * 4 | 0) + (b * 4 * w | 0)) | 0;\n            bytes[i1 + 0 | 0] = bin.charCodeAt(i2 + 2 | 0); //fix weird red/blue swap in c#\n            bytes[i1 + 1 | 0] = bin.charCodeAt(i2 + 1 | 0);\n            bytes[i1 + 2 | 0] = bin.charCodeAt(i2 + 0 | 0);\n            bytes[i1 + 3 | 0] = bin.charCodeAt(i2 + 3 | 0);\n        }\n    }\n    return target;\n}\nexports.decodeImageString = decodeImageString;\n/**\n * encodes an imagebuffer to a string\n */\nfunction encodeImageString(buf, sx = 0, sy = 0, sw = buf.width, sh = buf.height) {\n    var raw = \"\";\n    for (var y = sy; y < sy + sh; y++) {\n        for (var x = sx; x < sx + sw; x++) {\n            var i = 4 * x + 4 * buf.width * y | 0;\n            raw += String.fromCharCode(buf.data[i + 2 | 0]);\n            raw += String.fromCharCode(buf.data[i + 1 | 0]);\n            raw += String.fromCharCode(buf.data[i + 0 | 0]);\n            raw += String.fromCharCode(buf.data[i + 3 | 0]);\n        }\n    }\n    return btoa(raw);\n}\nexports.encodeImageString = encodeImageString;\n/**\n * mixes the given color into a single int. This format is used by alt1\n */\nfunction mixColor(r, g, b, a = 255) {\n    return (b << 0) + (g << 8) + (r << 16) + (a << 24);\n}\nexports.mixColor = mixColor;\nfunction unmixColor(col) {\n    var r = (col >> 16) & 0xff;\n    var g = (col >> 8) & 0xff;\n    var b = (col >> 0) & 0xff;\n    return [r, g, b];\n}\nexports.unmixColor = unmixColor;\nfunction identifyApp(url) {\n    if (exports.hasAlt1) {\n        alt1.identifyAppUrl(url);\n    }\n}\nexports.identifyApp = identifyApp;\nfunction resetEnvironment() {\n    exports.hasAlt1 = (typeof alt1 != \"undefined\");\n    exports.skinName = exports.hasAlt1 ? alt1.skinName : \"default\";\n}\nexports.resetEnvironment = resetEnvironment;\nfunction convertAlt1Version(str) {\n    var a = str.match(/^(\\d+)\\.(\\d+)\\.(\\d+)$/);\n    if (!a) {\n        throw new RangeError(\"Invalid version string\");\n    }\n    return (+a[1]) * 1000 * 1000 + (+a[2]) * 1000 + (+a[3]) * 1;\n}\nvar cachedVersionInt = -1;\n/**\n * checks if alt1 is running and at least the given version. versionstr should be a string with the version eg: 1.3.2\n * @param versionstr\n */\nfunction hasAlt1Version(versionstr) {\n    if (!exports.hasAlt1) {\n        return false;\n    }\n    if (cachedVersionInt == -1) {\n        cachedVersionInt = alt1.versionint;\n    }\n    return cachedVersionInt >= convertAlt1Version(versionstr);\n}\nexports.hasAlt1Version = hasAlt1Version;\n/**\n * Gets the current cursor position in the game, returns null if the rs window is not active (alt1.rsActive)\n */\nfunction getMousePosition() {\n    var pos = alt1.mousePosition;\n    if (pos == -1) {\n        return null;\n    }\n    return { x: pos >>> 16, y: pos & 0xFFFF };\n}\nexports.getMousePosition = getMousePosition;\n/**\n * Registers a given HTML element as a frame border, when this element is dragged by the user the Alt1 frame will resize accordingly\n * Use the direction arguements to make a given direction stick to the mouse. eg. Only set left to true to make the element behave as the left border\n * Or set all to true to move the whole window. Not all combinations are permitted\n */\nfunction addResizeElement(el, left, top, right, bot) {\n    if (!exports.hasAlt1 || !alt1.userResize) {\n        return;\n    }\n    el.addEventListener(\"mousedown\", function (e) {\n        alt1.userResize(left, top, right, bot);\n        e.preventDefault();\n    });\n}\nexports.addResizeElement = addResizeElement;\n/**\n * Add an event listener\n */\nfunction on(type, listener) {\n    if (!exports.hasAlt1) {\n        return;\n    }\n    if (!alt1.events) {\n        alt1.events = {};\n    }\n    if (!alt1.events[type]) {\n        alt1.events[type] = [];\n    }\n    alt1.events[type].push(listener);\n}\nexports.on = on;\n/**\n * Removes an event listener\n */\nfunction removeListener(type, listener) {\n    var elist = exports.hasAlt1 && alt1.events && alt1.events[type];\n    if (!elist) {\n        return;\n    }\n    var i = elist.indexOf(listener);\n    if (i == -1) {\n        return;\n    }\n    elist.splice(i, 1);\n}\nexports.removeListener = removeListener;\n/**\n * Listens for the event to fire once and then stops listening\n * @param event\n * @param cb\n */\nfunction once(type, listener) {\n    var fn = (e) => {\n        removeListener(type, fn);\n        listener(e);\n    };\n    on(type, fn);\n}\nexports.once = once;\n;\n/**\n * Used to read a set of images from a binary stream returned by the Alt1 API\n */\nclass ImageStreamReader {\n    constructor(reader, ...args) {\n        this.framebuffer = null;\n        this.pos = 0;\n        this.reading = false;\n        this.closed = false;\n        //paused state\n        this.pausedindex = -1;\n        this.pausedbuffer = null;\n        this.streamreader = reader;\n        if (args[0] instanceof imagedata_extensions_1.ImageData) {\n            this.setFrameBuffer(args[0]);\n        }\n        else if (typeof args[0] == \"number\") {\n            this.setFrameBuffer(new imagedata_extensions_1.ImageData(args[0], args[1]));\n        }\n    }\n    /**\n     *\n     */\n    setFrameBuffer(buffer) {\n        if (this.reading) {\n            throw new Error(\"can't change framebuffer while reading\");\n        }\n        this.framebuffer = buffer;\n    }\n    /**\n     * Closes the underlying stream and ends reading\n     */\n    close() {\n        this.streamreader.cancel();\n    }\n    /**\n     * Reads a single image from the stream\n     */\n    async nextImage() {\n        if (this.reading) {\n            throw new Error(\"already reading from this stream\");\n        }\n        if (!this.framebuffer) {\n            throw new Error(\"framebuffer not set\");\n        }\n        this.reading = true;\n        var synctime = -Date.now();\n        var starttime = Date.now();\n        var r = false;\n        while (!r) {\n            if (this.pausedindex != -1 && this.pausedbuffer) {\n                r = this.readChunk(this.pausedindex, this.framebuffer.data, this.pausedbuffer);\n            }\n            else {\n                synctime += Date.now();\n                var res = await this.streamreader.read();\n                synctime -= Date.now();\n                if (res.done) {\n                    throw new Error(\"Stream closed while reading\");\n                }\n                var data = res.value;\n                r = this.readChunk(0, this.framebuffer.data, data);\n            }\n        }\n        synctime += Date.now();\n        //console.log(\"Decoded async image, \" + this.framebuffer.width + \"x\" + this.framebuffer.height + \" time: \" + (Date.now() - starttime) + \"ms (\" + synctime + \"ms main thread)\");\n        this.reading = false;\n        return this.framebuffer;\n    }\n    readChunk(i, framedata, buffer) {\n        //very hot code, explicit int32 casting with |0 speeds it up by ~ x2\n        i = i | 0;\n        var framesize = framedata.length | 0;\n        var pos = this.pos;\n        var datalen = buffer.length | 0;\n        //var data32 = new Float64Array(buffer.buffer);\n        //var framedata32 = new Float64Array(framedata.buffer);\n        //fix possible buffer misalignment\n        //align to 16 for extra loop unrolling\n        while (i < datalen) {\n            //slow loop, fix alignment and other issues\n            while (i < datalen && pos < framesize && (pos % 16 != 0 || !((i + 16 | 0) <= datalen && (pos + 16 | 0) <= framesize))) {\n                var rel = pos;\n                if (pos % 4 == 0) {\n                    rel = rel + 2 | 0;\n                }\n                if (pos % 4 == 2) {\n                    rel = rel - 2 | 0;\n                }\n                framedata[rel | 0] = buffer[i | 0];\n                i = i + 1 | 0;\n                pos = pos + 1 | 0;\n            }\n            //fast unrolled loop for large chunks i wish js had some sort of memcpy\n            if (pos % 16 == 0) {\n                while ((i + 16 | 0) <= datalen && (pos + 16 | 0) <= framesize) {\n                    framedata[pos + 0 | 0] = buffer[i + 2 | 0];\n                    framedata[pos + 1 | 0] = buffer[i + 1 | 0];\n                    framedata[pos + 2 | 0] = buffer[i + 0 | 0];\n                    framedata[pos + 3 | 0] = buffer[i + 3 | 0];\n                    framedata[pos + 4 | 0] = buffer[i + 6 | 0];\n                    framedata[pos + 5 | 0] = buffer[i + 5 | 0];\n                    framedata[pos + 6 | 0] = buffer[i + 4 | 0];\n                    framedata[pos + 7 | 0] = buffer[i + 7 | 0];\n                    framedata[pos + 8 | 0] = buffer[i + 10 | 0];\n                    framedata[pos + 9 | 0] = buffer[i + 9 | 0];\n                    framedata[pos + 10 | 0] = buffer[i + 8 | 0];\n                    framedata[pos + 11 | 0] = buffer[i + 11 | 0];\n                    framedata[pos + 12 | 0] = buffer[i + 14 | 0];\n                    framedata[pos + 13 | 0] = buffer[i + 13 | 0];\n                    framedata[pos + 14 | 0] = buffer[i + 12 | 0];\n                    framedata[pos + 15 | 0] = buffer[i + 15 | 0];\n                    //could speed it up another x2 but wouldn't be able to swap r/b swap and possible alignment issues\n                    //framedata32[pos / 8 + 0 | 0] = data32[i / 8 + 0 | 0];\n                    //framedata32[pos / 8 + 1 | 0] = data32[i / 8 + 1 | 0];\n                    //framedata32[pos / 4 + 2 | 0] = data32[i / 4 + 2 | 0];\n                    //framedata32[pos / 4 + 3 | 0] = data32[i / 4 + 3 | 0];\n                    pos = pos + 16 | 0;\n                    i = i + 16 | 0;\n                }\n            }\n            if (pos >= framesize) {\n                this.pausedbuffer = null;\n                this.pausedindex = -1;\n                this.pos = 0;\n                if (i != buffer.length - 1) {\n                    this.pausedbuffer = buffer;\n                    this.pausedindex = i;\n                }\n                return true;\n            }\n        }\n        this.pos = pos;\n        this.pausedbuffer = null;\n        this.pausedindex = -1;\n        return false;\n    }\n}\nexports.ImageStreamReader = ImageStreamReader;\n/**\n * Asynchronously captures a section of the game screen\n */\nasync function captureAsync(...args) {\n    requireAlt1();\n    var rect = rect_1.default.fromArgs(...args);\n    if (alt1.captureAsync) {\n        let img = await alt1.captureAsync(rect.x, rect.y, rect.width, rect.height);\n        return new imagedata_extensions_1.ImageData(img, rect.width, rect.height);\n    }\n    if (!hasAlt1Version(\"1.4.6\")) {\n        return capture(rect.x, rect.y, rect.width, rect.height);\n    }\n    var url = \"https://alt1api/pixel/getregion/\" + encodeURIComponent(JSON.stringify(Object.assign(Object.assign({}, rect), { format: \"raw\", quality: 1 })));\n    var res = await fetch(url);\n    var imgreader = new ImageStreamReader(res.body.getReader(), rect.width, rect.height);\n    return imgreader.nextImage();\n}\nexports.captureAsync = captureAsync;\n/**\n * Asynchronously captures multple area's. This method captures the images in the same render frame if possible\n * @param areas\n */\nasync function captureMultiAsync(areas) {\n    requireAlt1();\n    var r = {};\n    if (alt1.captureMultiAsync) {\n        let bufs = await alt1.captureMultiAsync(areas);\n        for (let a in areas) {\n            if (!bufs[a]) {\n                r[a] = null;\n            }\n            r[a] = new imagedata_extensions_1.ImageData(bufs[a], areas[a].width, areas[a].height);\n        }\n        return r;\n    }\n    var capts = [];\n    var captids = [];\n    for (var id in areas) {\n        if (areas[id]) {\n            capts.push(areas[id]);\n            captids.push(id);\n        }\n        else {\n            r[id] = null;\n        }\n    }\n    if (capts.length == 0) {\n        return r;\n    }\n    if (!hasAlt1Version(\"1.5.1\")) {\n        var proms = [];\n        for (var a = 0; a < capts.length; a++) {\n            proms.push(captureAsync(capts[a]));\n        }\n        var results = await Promise.all(proms);\n        for (var a = 0; a < capts.length; a++) {\n            r[captids[a]] = results[a];\n        }\n    }\n    else {\n        var res = await fetch(\"https://alt1api/pixel/getregionmulti/\" + encodeURIComponent(JSON.stringify({ areas: capts, format: \"raw\", quality: 1 })));\n        var imgreader = new ImageStreamReader(res.body.getReader());\n        for (var a = 0; a < capts.length; a++) {\n            var capt = capts[a];\n            imgreader.setFrameBuffer(new imagedata_extensions_1.ImageData(capt.width, capt.height));\n            r[captids[a]] = await imgreader.nextImage();\n        }\n    }\n    return r;\n}\nexports.captureMultiAsync = captureMultiAsync;\n/**\n * Starts capturing a realtime stream of the game. Make sure you keep reading the stream and close it when you're done or Alt1 WILL crash\n * @param framecb Called whenever a new frame is decoded\n * @param errorcb Called whenever an error occurs, the error is rethrown if not defined\n * @param fps Maximum fps of the stream\n */\nfunction captureStream(x, y, width, height, fps, framecb, errorcb) {\n    requireAlt1();\n    if (!hasAlt1Version(\"1.4.6\")) {\n        throw new Alt1Error(\"This function is not supported in this version of Alt1\");\n    }\n    var url = \"https://alt1api/pixel/streamregion/\" + encodeURIComponent(JSON.stringify({ x, y, width, height, fps, format: \"raw\" }));\n    var res = fetch(url).then(async (res) => {\n        var reader = new ImageStreamReader(res.body.getReader(), width, height);\n        try {\n            while (!reader.closed && !state.closed) {\n                var img = await reader.nextImage();\n                if (!state.closed) {\n                    framecb(img);\n                    state.framenr++;\n                }\n            }\n        }\n        catch (e) {\n            if (!state.closed) {\n                reader.close();\n                if (errorcb) {\n                    errorcb(e);\n                }\n                else {\n                    throw e;\n                }\n            }\n        }\n        if (!reader.closed && state.closed) {\n            reader.close();\n        }\n    });\n    var state = {\n        x, y, width, height,\n        framenr: 0,\n        close: () => { state.closed = true; },\n        closed: false,\n    };\n    return state;\n}\nexports.captureStream = captureStream;\n\n\n/***/ }),\n\n/***/ \"canvas\":\n/*!*************************!*\\\n  !*** external \"canvas\" ***!\n  \\*************************/\n/***/ ((module) => {\n\nif(typeof __WEBPACK_EXTERNAL_MODULE_canvas__ === 'undefined') { var e = new Error(\"Cannot find module 'canvas'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_canvas__;\n\n/***/ }),\n\n/***/ \"electron/common\":\n/*!**********************************!*\\\n  !*** external \"electron/common\" ***!\n  \\**********************************/\n/***/ ((module) => {\n\nif(typeof __WEBPACK_EXTERNAL_MODULE_electron_common__ === 'undefined') { var e = new Error(\"Cannot find module 'electron/common'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_electron_common__;\n\n/***/ }),\n\n/***/ \"sharp\":\n/*!************************!*\\\n  !*** external \"sharp\" ***!\n  \\************************/\n/***/ ((module) => {\n\nif(typeof __WEBPACK_EXTERNAL_MODULE_sharp__ === 'undefined') { var e = new Error(\"Cannot find module 'sharp'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_sharp__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/global */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.g = (function() {\n/******/ \t\t\tif (typeof globalThis === 'object') return globalThis;\n/******/ \t\t\ttry {\n/******/ \t\t\t\treturn this || new Function('return this')();\n/******/ \t\t\t} catch (e) {\n/******/ \t\t\t\tif (typeof window === 'object') return window;\n/******/ \t\t\t}\n/******/ \t\t})();\n/******/ \t})();\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(\"./src/base/index.ts\");\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"alt1/base\"), require(\"alt1/ocr\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"alt1/base\", \"alt1/ocr\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dialog\"] = factory(require(\"alt1/base\"), require(\"alt1/ocr\"));\n\telse\n\t\troot[\"Dialog\"] = factory(root[\"A1lib\"], root[\"OCR\"]);\n})(globalThis, (__WEBPACK_EXTERNAL_MODULE_alt1_base__, __WEBPACK_EXTERNAL_MODULE_alt1_ocr__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./src/dialog/imgs/boxtl.data.png\":\n/*!****************************************!*\\\n  !*** ./src/dialog/imgs/boxtl.data.png ***!\n  \\****************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAx0lEQVQ4T5VRywrCMBBMaytYyMFHDw16CNWDBg8WoWAFpTf//4ecsGENMQ0UhmVmO5PdNEKZru0GVCLEL/cnS/MYwU3/Jo+AFiKbgevrE7bSmArksgk6DumVsrIKOmJ/G8JWGrMvjUBkbgLBhFzufBkB7uBPQKDcKJYR4C39ALhUuqj15J7/KwHIVIfztjWoZXOkmYuVtB4OQAM4GAFUh+UabmelZ0GANXdh+mW83eyoUz/ykeQm0G4g/j+wnC9NNQAl+VNR6y/yyxm6AFlANgAAAABJRU5ErkJggg==\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/boxtl_leg.data.png\":\n/*!********************************************!*\\\n  !*** ./src/dialog/imgs/boxtl_leg.data.png ***!\n  \\********************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAW5vUEUAYtdMlAAAAARub1BFAAAAAEEgjiIAAAAJbm9QRQAAAAAAAAAAAKGKctUAAAE0SURBVDhPjZFNTsMwEIVtJ45D05YmLVKBJRISsOIILNiw5QosOXpIKcpPHduFl0wINAHEJ+tpPB6/Gcv8+emRHZIX1TQ6QuBLbs37QNnVxQlj/P+L31yuH+7vZrNptt2QhxSy0vXe6SAMlYrQqshzyiPmt9fny2WslMqyrQr4+vQsTV8m0eTtdRNN582IjGmtob4nrNsLiqBJcjxfxKhGXBblIk6cNVL68AKwQDUCUVuHCsJZR8egrCpkdq0SSEIbb89vhoOZ53vNSYv0JeVpHni16fYCYYztsz10hzDWQEXQulI7Aq266BD0hHYdqC+BVl30CXlDUUZv+Bp9DIrIG4pBxE7XdPAb/bTkK0IVjN/6I1QmVquE9mMGo2KLJdI06xIjBOff72CLn/rr0YOfwVZr/QEeBH9rQlJ0YgAAAABJRU5ErkJggg==\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/boxtr.data.png\":\n/*!****************************************!*\\\n  !*** ./src/dialog/imgs/boxtr.data.png ***!\n  \\****************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA3UlEQVQ4T6WTwQrCMBBEk9oKigEVFSweLOLF6sFehOYgePP/P2jNrE1ZcJFUD68J2cwkO23NofF0vD0IY1k3VLfveXVu+jWMALVYxzowxtjw+A2YGVtM1WIKl/szjEohlb8NuAWtkMru6sMYJplbkR0vKF9XH5s0kBs0fYgxyJRAM7clV1YMGxB9R4pxAG6J04tlOdwAIm63uzVnoIkk2unRAF+kKpJEg9HEcdAwQA59iJpIEg2kEEa4QbIBNkMYM0Arg0NEC1KM14i/WBVJuPcutHy+YQMw259CiJ5egv+YzBEq3jQAAAAASUVORK5CYII=\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/boxtr_leg.data.png\":\n/*!********************************************!*\\\n  !*** ./src/dialog/imgs/boxtr_leg.data.png ***!\n  \\********************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAW5vUEUAYtdMlAAAAARub1BFAAAAAEEgjiIAAAAJbm9QRQAAAAAAAAAAAKGKctUAAAFgSURBVDhPnZO9TsMwFIWPHZuUpo2g6hswsbMzsbEgMfAKiIUnYOWNWBh4F1CFhFKKojatmx/jY+E2RRWK+KSrm9ycHF//iceHO7tal5hM3tGLDyAkIIVAY+0maxUBjYApDYSwOOgdulqMxXwOAbjKPzk9GUPc315bLTWWZo2mNs69hzhOvIAjKC3A72Q4HOAj+9zUnp5fIG6uzm2WTdFP+si/ZkgGqRcTY4zPKpKo6sbnfjJAsZj79+l0BsmfSbEocHQ8Ql2V0Fq5LmIfNKaYz8x5nvsckEHIKJZLX1z95AC/kTRNN1rpullXNdyab9FKI3JBQvu1EwVCjVBLdgwCwSRQumm1aRsJ6/b5Ly4vzvYKInc23l4n+zv4DTtoj0pUpHzuZMD5hoUMBMNOBmx3Hyt3+DoZhJ3g+Wib8e507oBRltXOto7Ho24GvJVcNHbACGTuXnQy4MhcNGbGdhrAN5b0ly21yuFfAAAAAElFTkSuQmCC\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/chatimg.data.png\":\n/*!******************************************!*\\\n  !*** ./src/dialog/imgs/chatimg.data.png ***!\n  \\******************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAAUAAAAOCAIAAABoykFxAAAAwUlEQVQYV2OYPGlSV1dXcnJyRmqSqbUdQ3VNNRB5uTkJCwuLKqgxtLS0ACVVFGQ4eQUFpRUZgBxHWytOHl4oX0tLS1lZGaiYkZOXW1CUQVXXGChkbGwsJSUFFGI4YM+fqycmpahqoG8AVMVwxJipUptPUFIOqEtEkJdBT4JPSVYSqBgoCTSSQUVLG8QCms/DCzI/OjrK0syEgYERaDiI7+3lHRwcDNQC5bu6ukKEgLp4RKUZsjPSgEJAfrC/t7GhHgChFSifluVS6gAAAABJRU5ErkJggg==\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/chatimg_leg.data.png\":\n/*!**********************************************!*\\\n  !*** ./src/dialog/imgs/chatimg_leg.data.png ***!\n  \\**********************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAAgAAAAOCAIAAACdNMrBAAAAAW5vUEUAYtdMlAAAAARub1BFAAAAAEEgjiIAAAAJbm9QRQAAAAAAAAAAAKGKctUAAAEOSURBVChTVY+7SgNBFIZnZ3aTWdCYddVcRBIVREEC2gcsFnwMO9/JxsrGzkbQB1AkleArWJjLXhRhJnNbf9ltcviL/3z/nDMzXjI+Hx0PDoadh6dJI6DGOUKIT6kPenZ6eHv/fDTo7vbbRSF5GCCjoDd3j/v9rThel0sLKoWG2DzN97rxdrwhlFHaCqGNdRAF7e1EUhlrHIQl1sAbGjb/N1aFXgqptYEoD3nx/Yu+QvURXI6+tqtFPcpru1os3my5oBX6tgaEaOtcWbKmTywJGF+rMlA8Cgm9vkry+ed0luXLxo9Q+I12JcSGvc7F+ORt8oE5a32pvEositqeI5fJ6OX1/Ws2TbNFUWR5nv4B2LeYEU2WizoAAAAASUVORK5CYII=\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/chatimgactive.data.png\":\n/*!************************************************!*\\\n  !*** ./src/dialog/imgs/chatimgactive.data.png ***!\n  \\************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAAUAAAAOCAIAAABoykFxAAAApklEQVQYV2Po6upqaWmJjo4CIk1dQ4ZiMLCzNGVgYGQRkGCorqmOjggTEeQF8hm4BRmCg4ONDfVAHAhfWVlZWFgYygciKUVVSVkFoCgnD1jLHkOGZHlWbkFRoBCIf0CdIV+GgZGTF6pLnoNBkJcLqhiIBCXloCwgAprv7eWtraGG4FtZWXq5OQG1QPnGxsaurq5AIRCfhYshKTYKqASoy83RRkVBBgAFhh2w1olrrAAAAABJRU5ErkJggg==\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/chatimgactive_leg.data.png\":\n/*!****************************************************!*\\\n  !*** ./src/dialog/imgs/chatimgactive_leg.data.png ***!\n  \\****************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAAgAAAAOCAIAAACdNMrBAAAAAW5vUEUAYtdMlAAAAARub1BFAAAAAEEgjiIAAAAJbm9QRQAAAAAAAAAAAKGKctUAAAEESURBVChTPY4xTgMxEEXtmfFmE1hpRSQECqIIVRBCEanpuABnyImo09FzASokjgAVVUQBURpCSMiKHdt8ZwVf1mj8/veM7dXlxbBfnvTad4/vmSMNwRgjRAJ6fno4uX3IssA5k5KV5BHozeQedK9s5bm0dwmVmfh1OisLAa3rEJV8DCFE7wOBFjsO1AbGBAg0jerkDNTQSL6hyRDrfIjN5f8RRPpjmCw6NEhgjakdKknWJGCnhFj8yKDSfK7IQla2/p+46LBRaTkiNlETwvoYDY2vBx/V6m2x2u5IpxH3j4+Gg4Pnl1mluvSi335TBRwuu/vO+NFZ72m6+FxvlnW99v5L9ReDbXkhpJVqYwAAAABJRU5ErkJggg==\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/chatimghover.data.png\":\n/*!***********************************************!*\\\n  !*** ./src/dialog/imgs/chatimghover.data.png ***!\n  \\***********************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAAUAAAAOCAIAAABoykFxAAAAz0lEQVQYV2M4dfLEjp07W1pamhrrnL38GFavXr10yeKk2ChhYWEpFW2GLVu2dLQ1a2uocfIKiipoMABVRoaFcPLwcguKiiqoMVhZWRob6kmKCgGFBMSkGUztnU2t7VxdXZWVlYFCDP9DhSfbyaloaQMVSklJMfz3YF1sJSylqKqlpQW0gsFOQVhLTRnC4RGVZjAyBymDma/BUF1T7e3lzcDACJQUlFZkSE5OLsjNAmoByoP4YZGR2RlpQCGgLpD+Sb2d0dFR2dnZQC8Y6WkBAPN1NR2AAHfmAAAAAElFTkSuQmCC\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/chatimghover_leg.data.png\":\n/*!***************************************************!*\\\n  !*** ./src/dialog/imgs/chatimghover_leg.data.png ***!\n  \\***************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAAgAAAAOCAIAAACdNMrBAAAAAW5vUEUAYtdMlAAAAARub1BFAAAAAEEgjiIAAAAJbm9QRQAAAAAAAAAAAKGKctUAAAEjSURBVChTVc89SwNBEIDh2727fChqFosQLExMY4gIsbOIBLT0B9joX9RKTCOksLESSa1Y5TSa+8rdze7s7jl4lfAUw7sMy7CL8cnx4f5Bt3338FzzubbWcRyPc4/q6Kg/nT7eXA72erurz2xHNCBXnOrt/ex01G2JjSwq6nUeh5Ci67ISR30x7DVXqQVAkmegC+BUOx3xFhilNEmTQgIS3qh79JtWOksKkudQ4TXPWyxCpXWSAQGpK3wZrmmDJqn+4VSryRgkIFXF3doUvldyVtJlf8c5gFbbkh5qa822mz5FUBYRpTJaG359dRYE3/OPKEpgncu0MBJtCMztdtqT8eDl9V0xP0cXFe05BktXiBazzvlkOHuaB8vVVxj/xOkySn4BoaPZbEW+44oAAAAASUVORK5CYII=\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/continueimg.data.png\":\n/*!**********************************************!*\\\n  !*** ./src/dialog/imgs/continueimg.data.png ***!\n  \\**********************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAEoAAAANCAIAAACB72/yAAABTklEQVRIS72PMUsDQRCFB2Jjk85KsPEPmMYmgig2gWAlKWwCIiIihIC1WIpiJZY2SpqgpLCQNDZRAjZWHqmvsVEQ1Ebl8J0D4zIXD5HdgY/lzey7fffoeVD9fFxikpfaP/jLhxLhojy+kPdRjZKokhIvBieqIC+6WcVpkfjdiz5u55P7BR6CgqDu2dbeaQdnGpoxeAcpaT0buBsD/XQ1pwwhoPde2YDX/oxbTxpir5x+sasXt8vZhm/9knL6hR5OJm0YHI2D9c1GdeWH7sG0svmF4uMJA7jbbnPW7YaR98rsC7xMHGBAttvd/pjyeIeQYcD1TtGtB42N8oSAettFBnkgR+SPEIxaytVlc5Qb4oQG7q37FSOjMiibQjwMcZIBnY0RcNiYYqFuA0GtOl0s0/laYSj4D6XdjSBLCLENdQru7W9OeUpGhsd8YGvV6Qu6U2ehlR3eegAAAABJRU5ErkJggg==\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/continueimg_leg.data.png\":\n/*!**************************************************!*\\\n  !*** ./src/dialog/imgs/continueimg_leg.data.png ***!\n  \\**************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAEoAAAANCAIAAACB72/yAAAAAW5vUEUAYtdMlAAAAARub1BFAAAAAEEgjiIAAAAJbm9QRQAAAAAAAAAAAKGKctUAAASPSURBVEhLrVZLaFxVGD7nPubeO5NMZpIQTYfaNn2RREsrbQXbuOnKR4WCiKtCV2JABF24qTvdCK5ciIWudeFCqkuLC6WKQqVmEVsMjUkTyySTec993+t37n/n5CZNShQ/Dof/db7z/efce2f4J+++PDbqsgz0sN2y9a7NYResmIKPgTVgptY26IOpwViz0cnFdur04XFrqJDw64OargZ+ODKQJPaAWr1td5zs1lq+pKpmztBzYaPWYcxvV9cN/v7sa4cr1ulzz6Oitv7As0OqBnzH6ThRr1VPfcbyxfKAqeimWRotwe1126hHGWW3Fft2jwzdyn/42U2ygatvXaAU4iAsl/KwiQTMoqK/deymbNwoY95oBiZvJwGhhAzSk7PUbr1brdZkCkoWVmzR3jOT+1p+Keita/nRRnVpYEDs1+n0YGAWHAkCvVwyXGyw3lbhbstKtBylaEbNFg4wxRc3bn19fSaf97hy5O8H9y6/9+vrLz2naoIE4Lki6skmZJmJTQZB67DCE0XxZFEKcZKdlKdAcHhIm5tfFe1V9o1hJapjrxUG4vZ8P8BsWgZmx3Z1XYMaMihFoDgMpMjFTJVBIMo0TYPxzfd3Pv/giFUq5y02NHKMOnxxZpoKABgAtiMeLKGgNAjZOGbYMGSQXMsySRKaWlmtpu3B6rS7iEpIIkC6j4JIUycDCnp++qjf/PmPj9/cPzRmjIyXZYcXzhxmqo5sTk9vcjdInj0ChNPTRxcWltXzZ6YUzpuNtud5UQZJXwEMWkBBx/U5Z4qiUFDWIEKGBLKbmkJ/ojJ87cbiC5OFKPYVtTf65LFzx/Offjk3MT7EFDWMYjlUNSUHwEDB1N8zsAQaOp2uaM80crWaeIkl3W7DdV0ehX4Y+0GIIYK+F8YctpS1RVPoszhygwjuU+Pl69/+9cYrxcDrdZvL+4+ffPrg4LWvfhcdxhGaTFYLZXJQ5L+hULAcx+XvXLnIrOFWdVlIAZKnZRvQVWrtAsMQbymBig1NdIvGkpjAj7/d/2h2Csbd+bWV9bXbS2a96Zw/dYgqBR7dGpIQ3F3YYzA2NtyoN9WTkwcCp92znfTM+tB4LA4VZ5/5lmSBWwtjRoNF6SqAsqCy/UgW/HRn8erlibxqz99tNZuL9Vb050N29sRBVeG0r6bgoe+/gaGPTUEFBi/ZnYRJSZuVu0M8nVGknjhaCYMgK4UG1KMIvJiznciRxbYURIvlUcC4gvmXuaW3Xy2xwL2/EqG3jY5+a8E4PVXhDI1FIcQmTW4eaHLnJCBLLiUlxyiQLsmcCzEggs+4aO/U5IG2GwoplMCAJiru824BVVJNfxUuD5McUdKVyCMes9W19nihttFouW4Dvf1wL4fekEWK40sV480UTSIC6fKgd4SUhBMRLt180qS48MSliO/hNDi/cmmGVv5fwNnL14nuweT2d7cfwiga4n/Z2elDIpfAiS3MKCBj8z38lyiqvpP5DyjBZy8+qxs5WGEURH76JVB0sY2q7PxbtyOwnAwiIQbp7hFy1Y4QVKrNQnEQBNRnRWrGFsGBG/wD9kSQTvgpZ/YAAAAASUVORK5CYII=\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/continueimgdown.data.png\":\n/*!**************************************************!*\\\n  !*** ./src/dialog/imgs/continueimgdown.data.png ***!\n  \\**************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAEoAAAANCAIAAACB72/yAAABMklEQVRIS92VoU4DQRCG5wKGNyEo3gB1BtWEYGqaNAGBoQ3BoAiqKVXwDJUEgcAgCQIUBoPgVfg2/2WzGUpqdk40+XqZ3Z3u3Le32bXbQbMc2UaCmj2cbr1dWTSvl4mXC3s82+appsupDmqp3ueNRaN6s+nBaHzCU82Pa59WF9TSihJ9zex7EQgl7s/3cRPEcqNuUGkmRy2tohsIotSTIW/gcurS6f3c9QFf6a8hL+HSKoJatznzPsm7pWyu7FlL+RfmZzdS73BwtNseZ56nOyq9dv6VCerMQwSKZZS+Xj9Hi9wmw73SjSadcQdMOlr4qUYczP+fm3D5VWDapNfPvQelHjE7xyVUJ9173O66ZKNhLWUoNzcaAWqd3vsknFxSgRutjmrZvG34iE9D2zCQmrfNLxl9slarbU3QAAAAAElFTkSuQmCC\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/continueimgdown_leg.data.png\":\n/*!******************************************************!*\\\n  !*** ./src/dialog/imgs/continueimgdown_leg.data.png ***!\n  \\******************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAEoAAAANCAIAAACB72/yAAAAAW5vUEUAYtdMlAAAAARub1BFAAAAAEEgjiIAAAAJbm9QRQAAAAAAAAAAAKGKctUAAAQQSURBVEhL1VW9bxxFFN/52NvbO59sEic5GZMIEHFkAiICKaRDAlGAlJKGioqShpqejn+ABiEoqFIhkIJEk44miSCRyIcSJXawfT6f7253dueD39xbz62/Ekei4ae5pzdv3rz3fm9m59jHb780N5tFu1GWttKOgDjmlXY4DgsY9nKRQkppaAqkup3JUTXZh0IViFlP3UgalTZZhexvpezyu6ePH4u73QXMc+15ltZBxpxBscNxVnhXQtpo8JkWlljccGVlJ394QpKzZSl3WaZYmjiSV69PO/j+mymMUGCHZ+eFhOwEBIek1GQJGJUCYUlHJaRQPVCwZdTrBzsq2eiVnt7phZOYb6u8HRuEoOWAEBGlkKLyPGk2SQ+AkchU8x2oTP/xoPj2m8+gt9qdR3/f/PLr395alILzJJXkQ6CYSBcShR7VU0PCk5ZI7yRNFF9f8l1Lmg8e/yOWFmfjNM1LheWssEbrPWM0NI4Jbdh4O4+YhTTaqrzAwJR8yAg3X8KEUlHosjTWOGPt6sBeXErKfOzc+MTi2UvL7e9+vjPfjIyxlY9GHEvRkI4iI2ae+yWEhU4ZyRMKLZG+PRyHJWxEqb4qFuWZ8vSSpgQ31EQeewbKrSuT+iuQPRjrU+f8jYU0pTs1w3+8+vDCa3NWS602uy8vg+H3v9ydSyxzzBgXce8Jqhi4+BTKR5zAx7QWDkcBBcFIW8lokHt60CaHsKv0A4E0lP6ZgJsu8AFV02Mtd+Xa6jtLLYbuqhEx/OHXe2COVbhhcOEj1+MTK1ggyYIrHfSnA46jceHpzXQ6w8GuNyrEreuFMigCzQ79BgGaCjl9waad3uFWWv8ezrejK9fWPnpvCXdyfWXtzLnzyy+qn35fIYYAMUSiEKGyOxdYOc3wRWJa54wLQg2iwSMhJJMxz7LS/zHMd2cHm0NUD9dGIlgZafQpjrwirDRcTep7CrCLFGzZ70z0bq1FX31+yfLW9b/+XF/Zunl/Y6DSN07teskEF/TaoIBIVO1BAZAuppkHshBghE4y1EyeeLe2+8rTQ3HErQ7KhD349ivT84OIAeD2xScXoNy7/2R9q9/rjWE5dwJ/A1N6CRfTth6UN5QEWad0GEBKnDk+I7kIBx0Ai8HvaBf9MDSUKSy73Ys+/fDVXJnV1R644Q27sWLOzk3uEm4a27nYjKNuYyOc2oE9nZbEOPbS4Yb+gC3zD6cfkYiaPFZai1dOdmod/C+Bo5PGlYxt5FFHqs3+AO83/Q2CGwF/JYEe1Q3lmfeFh45gl/W3GJRwkuCFgTVM8YXjr51dfr0rW3v/o+sXnUB3GvJ5QZ/ijSdeaq2llPXvDRey0nYQsoQaKHXQgf3l4awqrYZBlrMPzi+00IH/P/Yf0iAr/gXJh0N13Pe/YwAAAABJRU5ErkJggg==\")\n\n/***/ }),\n\n/***/ \"./src/dialog/index.ts\":\n/*!*****************************!*\\\n  !*** ./src/dialog/index.ts ***!\n  \\*****************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst a1lib = __importStar(__webpack_require__(/*! alt1/base */ \"alt1/base\"));\nconst OCR = __importStar(__webpack_require__(/*! alt1/ocr */ \"alt1/ocr\"));\nconst base_1 = __webpack_require__(/*! alt1/base */ \"alt1/base\");\nvar imgs_rs3 = (0, base_1.webpackImages)({\n    chatimg: __webpack_require__(/*! ./imgs/chatimg.data.png */ \"./src/dialog/imgs/chatimg.data.png\"),\n    chatimghover: __webpack_require__(/*! ./imgs/chatimghover.data.png */ \"./src/dialog/imgs/chatimghover.data.png\"),\n    chatimgactive: __webpack_require__(/*! ./imgs/chatimgactive.data.png */ \"./src/dialog/imgs/chatimgactive.data.png\"),\n    continueimg: __webpack_require__(/*! ./imgs/continueimg.data.png */ \"./src/dialog/imgs/continueimg.data.png\"),\n    continueimgdown: __webpack_require__(/*! ./imgs/continueimgdown.data.png */ \"./src/dialog/imgs/continueimgdown.data.png\"),\n    boxtl: __webpack_require__(/*! ./imgs/boxtl.data.png */ \"./src/dialog/imgs/boxtl.data.png\"),\n    boxtr: __webpack_require__(/*! ./imgs/boxtr.data.png */ \"./src/dialog/imgs/boxtr.data.png\")\n});\nvar imgs_leg = (0, base_1.webpackImages)({\n    chatimg: __webpack_require__(/*! ./imgs/chatimg_leg.data.png */ \"./src/dialog/imgs/chatimg_leg.data.png\"),\n    chatimghover: __webpack_require__(/*! ./imgs/chatimghover_leg.data.png */ \"./src/dialog/imgs/chatimghover_leg.data.png\"),\n    chatimgactive: __webpack_require__(/*! ./imgs/chatimgactive_leg.data.png */ \"./src/dialog/imgs/chatimgactive_leg.data.png\"),\n    continueimg: __webpack_require__(/*! ./imgs/continueimg_leg.data.png */ \"./src/dialog/imgs/continueimg_leg.data.png\"),\n    continueimgdown: __webpack_require__(/*! ./imgs/continueimgdown_leg.data.png */ \"./src/dialog/imgs/continueimgdown_leg.data.png\"),\n    boxtl: __webpack_require__(/*! ./imgs/boxtl_leg.data.png */ \"./src/dialog/imgs/boxtl_leg.data.png\"),\n    boxtr: __webpack_require__(/*! ./imgs/boxtr_leg.data.png */ \"./src/dialog/imgs/boxtr_leg.data.png\")\n});\nvar fontmono = __webpack_require__(/*! ../fonts/aa_8px_mono.fontmeta.json */ \"./src/fonts/aa_8px_mono.fontmeta.json\");\nvar fontheavy = __webpack_require__(/*! ../fonts/aa_8px_mono_allcaps.fontmeta.json */ \"./src/fonts/aa_8px_mono_allcaps.fontmeta.json\");\nclass DialogReader {\n    constructor() {\n        this.pos = null;\n    }\n    find(imgref) {\n        if (!imgref) {\n            imgref = a1lib.captureHoldFullRs();\n        }\n        if (!imgref) {\n            return null;\n        }\n        var boxes = [];\n        for (let imgs of [imgs_rs3, imgs_leg]) {\n            var pos = imgref.findSubimage(imgs.boxtl);\n            for (var a in pos) {\n                var p = pos[a];\n                if (imgref.findSubimage(imgs.boxtr, p.x + 492, p.y, 16, 16).length != 0) {\n                    boxes.push(Object.assign(Object.assign({}, p), { legacy: imgs == imgs_leg }));\n                }\n            }\n        }\n        if (boxes.length == 0) {\n            return false;\n        }\n        var box = boxes[0];\n        if (boxes.length > 1) {\n            console.log(\"More than one dialog box found\");\n        }\n        this.pos = { x: box.x + 1, y: box.y + 1, width: 506, height: 130, legacy: box.legacy };\n        return this.pos;\n    }\n    ensureimg(imgref) {\n        if (!this.pos) {\n            return null;\n        }\n        if (imgref && a1lib.Rect.fromArgs(imgref).contains(this.pos)) {\n            return imgref;\n        }\n        return a1lib.captureHold(this.pos.x, this.pos.y, this.pos.width, this.pos.height);\n    }\n    read(imgref) {\n        imgref = this.ensureimg(imgref);\n        if (!imgref) {\n            return false;\n        }\n        let title = this.readTitle(imgref);\n        var r = {\n            text: null,\n            opts: null,\n            title\n        };\n        if (this.checkDialog(imgref)) {\n            r.text = this.readDialog(imgref, true);\n            return r;\n        }\n        else {\n            var opts = this.findOptions(imgref);\n            if (opts.length != 0) {\n                r.opts = this.readOptions(imgref, opts);\n                return r;\n            }\n            else {\n                return null;\n            }\n        }\n    }\n    readTitle(imgref) {\n        if (!this.pos) {\n            throw new Error(\"position not found yet\");\n        }\n        var buf = imgref.toData(this.pos.x, this.pos.y, this.pos.width, 32);\n        //somehow y coord can change, 19 for \"choose and option:\" 18 for npc names\n        var pos = OCR.findChar(buf, fontheavy, [255, 203, 5], Math.round(this.pos.width / 2) - 10, 16, 20, 4);\n        if (!pos) {\n            return \"\";\n        }\n        var read = OCR.readSmallCapsBackwards(buf, fontheavy, [[255, 203, 5]], Math.round(this.pos.width / 2) - 10, pos.y, 150, 1);\n        return read.text.toLowerCase(); //normalize case since we don't actually know the original\n    }\n    checkDialog(imgref) {\n        if (!this.pos) {\n            throw new Error(\"position not found yet\");\n        }\n        var locs = [];\n        let imgs = (this.pos.legacy ? imgs_leg : imgs_rs3);\n        locs = locs.concat(imgref.findSubimage(imgs.continueimg, this.pos.x - imgref.x, this.pos.y - imgref.y, this.pos.width, this.pos.height));\n        locs = locs.concat(imgref.findSubimage(imgs.continueimgdown, this.pos.x - imgref.x, this.pos.y - imgref.y, this.pos.width, this.pos.height));\n        return locs.length != 0;\n    }\n    readDialog(imgref, checked) {\n        if (!this.pos) {\n            throw new Error(\"position not found yet\");\n        }\n        imgref = this.ensureimg(imgref);\n        if (!imgref) {\n            return null;\n        }\n        if (!checked) {\n            checked = this.checkDialog(imgref);\n        }\n        if (!checked) {\n            return null;\n        }\n        var lines = [];\n        var buf = imgref.toData(this.pos.x, this.pos.y + 33, this.pos.width, 80);\n        for (var y = 0; y < buf.height; y++) {\n            var hastext = false;\n            for (var x = 200; x < 300; x++) {\n                var i = x * 4 + y * 4 * buf.width;\n                if (buf.data[i] + buf.data[i + 1] + buf.data[i + 2] < 50) {\n                    hastext = true;\n                    break;\n                }\n            }\n            if (hastext) {\n                var chr = null;\n                chr = chr || OCR.findChar(buf, fontmono, [0, 0, 0], 192, y + 5, 12, 3);\n                chr = chr || OCR.findChar(buf, fontmono, [0, 0, 0], 246, y + 5, 12, 3);\n                chr = chr || OCR.findChar(buf, fontmono, [0, 0, 0], 310, y + 5, 12, 3);\n                if (chr) {\n                    var read = OCR.readLine(buf, fontmono, [0, 0, 0], chr.x, chr.y, true, true);\n                    if (read.text.length >= 3) {\n                        lines.push(read.text);\n                    }\n                    y = chr.y + 5;\n                }\n            }\n        }\n        return lines;\n    }\n    findOptions(imgref) {\n        var locs = [];\n        if (!this.pos) {\n            throw new Error(\"position not found yet\");\n        }\n        let imgs = (this.pos.legacy ? imgs_leg : imgs_rs3);\n        var a = imgref.findSubimage(imgs.chatimg);\n        for (var b in a) {\n            locs.push({ x: a[b].x, y: a[b].y, hover: false, active: false });\n        }\n        var a = imgref.findSubimage(imgs.chatimghover);\n        for (var b in a) {\n            locs.push({ x: a[b].x, y: a[b].y, hover: true, active: false });\n        }\n        var a = imgref.findSubimage(imgs.chatimgactive);\n        for (var b in a) {\n            locs.push({ x: a[b].x, y: a[b].y, hover: false, active: true });\n        }\n        return locs;\n    }\n    readOptions(imgref, locs) {\n        imgref = this.ensureimg(imgref);\n        if (!imgref) {\n            return null;\n        }\n        if (!this.pos) {\n            throw new Error(\"interface not found\");\n        }\n        var buf = imgref.toData();\n        if (!locs) {\n            locs = this.findOptions(imgref);\n        }\n        var bgcol = [150, 135, 105];\n        var fontcol = this.pos.legacy ? [255, 255, 255] : [174, 208, 224];\n        var r = [];\n        for (var a = 0; a < locs.length; a++) {\n            var dx = locs[a].x + 30;\n            var dy = locs[a].y + 6;\n            var checkline = imgref.toData(dx, dy, Math.min(500, imgref.width - a), 1);\n            var row = null;\n            for (var x = 0; x < checkline.width; x++) {\n                var i = x * 4;\n                if (row) {\n                    if (coldiff(checkline.data[i], checkline.data[i + 1], checkline.data[i + 2], bgcol[0], bgcol[1], bgcol[2]) < 75) {\n                        row.width = x + 20;\n                        break;\n                    }\n                }\n                else if (coldiff(checkline.data[i], checkline.data[i + 1], checkline.data[i + 2], fontcol[0], fontcol[1], fontcol[2]) < 100) {\n                    var text = \"\";\n                    var chr = OCR.findChar(buf, fontmono, fontcol, dx + x + 2 - imgref.x, dy + 3 - imgref.y, 30, 1);\n                    if (chr) {\n                        var read = OCR.readLine(buf, fontmono, fontcol, chr.x, chr.y, true, true);\n                        var text = read.text;\n                    }\n                    row = { text: text, x: dx + x, y: dy, width: 200, buttonx: dx - 31, hover: !!locs[a].hover, active: locs[a].active };\n                }\n            }\n            if (row) {\n                r.push(row);\n            }\n        }\n        r.sort((a, b) => a.y - b.y);\n        return r;\n    }\n}\nexports[\"default\"] = DialogReader;\n//TODO get rid of this or make it standard\nfunction coldiff(r1, g1, b1, r2, g2, b2) {\n    return Math.abs(r1 - r2) + Math.abs(g1 - g2) + Math.abs(b1 - b2);\n}\n\n\n/***/ }),\n\n/***/ \"alt1/base\":\n/*!**************************************************************************************************!*\\\n  !*** external {\"root\":\"A1lib\",\"commonjs2\":\"alt1/base\",\"commonjs\":\"alt1/base\",\"amd\":\"alt1/base\"} ***!\n  \\**************************************************************************************************/\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_alt1_base__;\n\n/***/ }),\n\n/***/ \"alt1/ocr\":\n/*!*********************************************************************************************!*\\\n  !*** external {\"root\":\"OCR\",\"commonjs2\":\"alt1/ocr\",\"commonjs\":\"alt1/ocr\",\"amd\":\"alt1/ocr\"} ***!\n  \\*********************************************************************************************/\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_alt1_ocr__;\n\n/***/ }),\n\n/***/ \"./src/fonts/aa_8px_mono.fontmeta.json\":\n/*!*********************************************!*\\\n  !*** ./src/fonts/aa_8px_mono.fontmeta.json ***!\n  \\*********************************************/\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = JSON.parse('{\"chars\":[{\"width\":7,\"bonus\":75,\"chr\":\"a\",\"pixels\":[0,7,187,1,3,221,1,6,170,1,8,255,2,3,255,2,5,187,2,8,255,3,3,255,3,5,255,3,8,221,4,4,238,4,5,255,4,6,204,4,7,255,4,8,238],\"secondary\":false},{\"width\":7,\"bonus\":105,\"chr\":\"b\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,3,204,1,4,170,1,7,170,1,8,187,2,3,255,2,8,255,3,3,255,3,8,255,4,3,170,4,4,170,4,7,170,5,5,187,5,6,187],\"secondary\":false},{\"width\":7,\"bonus\":50,\"chr\":\"c\",\"pixels\":[0,5,170,0,6,187,1,4,187,1,7,187,2,3,255,2,8,255,3,3,255,3,8,255,4,3,221,4,8,221],\"secondary\":false},{\"width\":7,\"bonus\":105,\"chr\":\"d\",\"pixels\":[0,5,187,0,6,187,1,4,170,1,7,170,1,8,170,2,3,255,2,8,255,3,3,255,3,8,255,4,3,204,4,4,170,4,7,170,4,8,187,5,1,204,5,2,221,5,3,221,5,4,221,5,5,221,5,6,221,5,7,221,5,8,204],\"secondary\":false},{\"width\":7,\"bonus\":75,\"chr\":\"e\",\"pixels\":[0,5,187,0,6,170,1,4,187,1,5,255,1,7,204,2,3,255,2,5,255,2,8,255,3,3,255,3,5,255,3,8,255,4,3,187,4,5,255,4,8,221,5,5,204],\"secondary\":false},{\"width\":4,\"bonus\":50,\"chr\":\"f\",\"pixels\":[0,3,204,1,2,221,1,3,255,1,4,221,1,5,221,1,6,221,1,7,221,1,8,204,2,1,255,2,3,255],\"secondary\":false},{\"width\":7,\"bonus\":115,\"chr\":\"g\",\"pixels\":[0,5,187,0,6,187,1,3,170,1,4,153,1,7,170,1,11,153,2,3,255,2,8,255,2,11,238,3,3,255,3,8,255,3,11,221,4,3,221,4,7,153,4,8,221,4,10,204,5,3,204,5,4,221,5,5,221,5,6,221,5,7,221,5,8,221,5,9,170],\"secondary\":false},{\"width\":7,\"bonus\":90,\"chr\":\"h\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,3,170,1,4,204,2,3,255,3,3,255,4,3,170,4,4,221,4,5,221,4,6,221,4,7,221,4,8,204],\"secondary\":false},{\"width\":3,\"bonus\":35,\"chr\":\"i\",\"pixels\":[0,1,238,0,3,204,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204],\"secondary\":false},{\"width\":4,\"bonus\":50,\"chr\":\"j\",\"pixels\":[0,11,153,1,11,170,2,1,204,2,3,204,2,4,221,2,5,221,2,6,221,2,7,221,2,8,221,2,9,221],\"secondary\":false},{\"width\":6,\"bonus\":70,\"chr\":\"k\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,5,255,2,4,153,2,5,255,2,6,221,3,3,204,3,7,221],\"secondary\":false},{\"width\":3,\"bonus\":40,\"chr\":\"l\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,1,8,255],\"secondary\":false},{\"width\":10,\"bonus\":115,\"chr\":\"m\",\"pixels\":[0,3,204,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,4,221,2,3,238,3,3,255,4,3,153,4,4,255,4,5,221,4,6,221,4,7,221,4,8,204,5,4,187,6,3,255,7,3,238,8,4,170,8,5,221,8,6,221,8,7,221,8,8,204],\"secondary\":false},{\"width\":7,\"bonus\":75,\"chr\":\"n\",\"pixels\":[0,3,204,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,4,221,2,3,238,3,3,255,4,3,238,5,4,170,5,5,221,5,6,221,5,7,221,5,8,204],\"secondary\":false},{\"width\":8,\"bonus\":70,\"chr\":\"o\",\"pixels\":[0,5,187,0,6,170,1,4,204,1,7,221,2,3,238,2,8,238,3,3,255,3,8,255,4,3,238,4,8,255,5,4,204,5,7,221,6,5,170,6,6,170],\"secondary\":false},{\"width\":6,\"bonus\":90,\"chr\":\"p\",\"pixels\":[0,3,238,0,4,255,0,5,187,0,6,204,0,7,255,0,8,221,0,9,221,0,10,221,1,3,255,1,8,238,2,3,255,2,8,255,3,3,238,3,8,238,4,4,238,4,5,255,4,6,255,4,7,238],\"secondary\":false},{\"width\":7,\"bonus\":90,\"chr\":\"q\",\"pixels\":[0,5,187,0,6,187,1,3,170,1,4,153,1,7,153,1,8,170,2,3,255,2,8,255,3,3,238,3,8,238,4,3,255,4,4,255,4,5,187,4,6,187,4,7,255,4,8,238,4,9,221,4,10,221],\"secondary\":false},{\"width\":4,\"bonus\":45,\"chr\":\"r\",\"pixels\":[0,3,204,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,3,187,1,4,204,2,3,255],\"secondary\":false},{\"width\":6,\"bonus\":50,\"chr\":\"s\",\"pixels\":[0,4,187,1,3,255,1,5,238,1,8,255,2,3,255,2,8,255,3,3,255,3,6,238,3,8,255,4,7,187],\"secondary\":false},{\"width\":5,\"bonus\":45,\"chr\":\"t\",\"pixels\":[1,2,221,1,3,255,1,4,221,1,5,221,1,6,221,1,7,170,2,3,255,2,8,238,3,8,153],\"secondary\":false},{\"width\":6,\"bonus\":70,\"chr\":\"u\",\"pixels\":[0,3,204,0,4,221,0,5,221,0,6,221,0,7,170,1,8,238,2,8,255,3,8,204,4,3,204,4,4,221,4,5,221,4,6,204,4,7,255,4,8,221],\"secondary\":false},{\"width\":6,\"bonus\":50,\"chr\":\"v\",\"pixels\":[0,3,238,1,5,238,1,6,204,2,7,255,2,8,255,3,5,153,3,6,255,3,7,153,4,3,238,4,4,204],\"secondary\":false},{\"width\":10,\"bonus\":95,\"chr\":\"w\",\"pixels\":[1,3,153,1,4,238,1,5,187,2,6,153,2,7,238,2,8,187,3,6,204,3,7,238,3,8,153,4,3,170,4,4,255,5,4,221,5,5,221,6,7,255,6,8,221,7,6,238,7,7,204,8,3,238,8,4,204],\"secondary\":false},{\"width\":6,\"bonus\":55,\"chr\":\"x\",\"pixels\":[0,8,170,1,3,170,1,4,204,1,7,221,2,5,255,2,6,238,3,4,255,3,6,187,3,7,187,4,3,221,4,8,255],\"secondary\":false},{\"width\":6,\"bonus\":65,\"chr\":\"y\",\"pixels\":[0,3,255,0,4,153,0,11,221,1,5,204,1,6,221,1,11,187,2,7,187,2,8,255,2,9,238,3,6,238,3,7,187,4,3,204,4,4,221],\"secondary\":false},{\"width\":6,\"bonus\":70,\"chr\":\"z\",\"pixels\":[0,3,153,0,8,204,1,3,255,1,7,221,1,8,255,2,3,255,2,6,255,2,8,255,3,3,255,3,4,170,3,5,170,3,8,255,4,3,255,4,8,255],\"secondary\":false},{\"width\":8,\"bonus\":85,\"chr\":\"A\",\"pixels\":[0,8,153,1,6,221,1,7,238,2,3,170,2,4,255,2,5,187,2,6,255,3,1,255,3,2,255,3,6,255,4,2,255,4,3,238,4,6,255,5,5,255,5,6,255,6,7,187,6,8,255],\"secondary\":false},{\"width\":7,\"bonus\":125,\"chr\":\"B\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,1,255,1,4,255,1,8,255,2,1,255,2,4,255,2,8,255,3,1,255,3,4,255,3,8,255,4,1,221,4,4,255,4,5,170,4,8,204,5,2,170,5,3,170,5,6,187,5,7,153],\"secondary\":false},{\"width\":9,\"bonus\":80,\"chr\":\"C\",\"pixels\":[0,4,187,0,5,187,1,2,221,1,3,153,1,6,153,1,7,204,2,1,170,2,8,170,3,1,255,3,8,255,4,1,255,4,8,255,5,1,255,5,8,255,6,1,170,6,8,170],\"secondary\":false},{\"width\":8,\"bonus\":100,\"chr\":\"D\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,1,255,1,8,255,2,1,255,2,8,255,3,1,255,3,8,255,4,1,204,4,8,204,5,2,221,5,7,221,6,4,187,6,5,187],\"secondary\":false},{\"width\":6,\"bonus\":95,\"chr\":\"E\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,1,255,1,5,255,1,8,255,2,1,255,2,5,255,2,8,255,3,1,255,3,5,255,3,8,255,4,1,153,4,8,221],\"secondary\":false},{\"width\":6,\"bonus\":70,\"chr\":\"F\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,1,255,1,5,255,2,1,255,2,5,255,3,1,255,3,5,255],\"secondary\":false},{\"width\":9,\"bonus\":105,\"chr\":\"G\",\"pixels\":[0,4,170,0,5,187,1,2,204,1,3,153,1,7,221,2,1,170,2,8,187,3,1,255,3,8,255,4,1,255,4,8,255,5,1,255,5,8,238,6,1,170,6,5,255,6,7,153,6,8,170,7,5,153,7,6,221,7,7,221,7,8,204],\"secondary\":false},{\"width\":8,\"bonus\":105,\"chr\":\"H\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,5,255,2,5,255,3,5,255,4,5,255,5,5,255,6,1,204,6,2,221,6,3,221,6,4,221,6,5,221,6,6,221,6,7,221,6,8,204],\"secondary\":false},{\"width\":4,\"bonus\":60,\"chr\":\"I\",\"pixels\":[0,1,192,0,8,191,1,1,255,1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,2,1,192,2,8,191],\"secondary\":false},{\"width\":6,\"bonus\":70,\"chr\":\"J\",\"pixels\":[0,6,153,0,7,153,1,8,204,2,1,221,2,8,255,3,1,255,3,8,204,4,1,204,4,2,221,4,3,221,4,4,221,4,5,221,4,6,221,4,7,153],\"secondary\":false},{\"width\":7,\"bonus\":85,\"chr\":\"K\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,4,255,2,4,255,3,3,221,3,5,170,3,6,204,4,1,204,4,2,153,4,7,238,4,8,153],\"secondary\":false},{\"width\":6,\"bonus\":60,\"chr\":\"L\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,8,255,2,8,255,3,8,255,4,8,255],\"secondary\":false},{\"width\":9,\"bonus\":130,\"chr\":\"M\",\"pixels\":[0,1,245,0,2,255,0,3,255,0,4,255,0,5,255,0,6,255,0,7,255,0,8,255,1,2,170,1,3,225,2,4,207,2,5,190,3,6,232,4,6,232,5,4,207,5,5,190,6,2,170,6,3,224,7,1,245,7,2,255,7,3,255,7,4,255,7,5,255,7,6,255,7,7,255,7,8,255],\"secondary\":false},{\"width\":8,\"bonus\":110,\"chr\":\"N\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,2,255,2,3,221,3,4,187,3,5,187,4,6,221,5,7,255,6,1,204,6,2,221,6,3,221,6,4,221,6,5,221,6,6,221,6,7,221,6,8,204],\"secondary\":false},{\"width\":10,\"bonus\":110,\"chr\":\"O\",\"pixels\":[0,4,187,0,5,170,1,2,204,1,3,153,1,6,170,1,7,204,2,1,153,2,8,153,3,1,255,3,8,255,4,1,255,4,8,255,5,1,255,5,8,255,6,1,153,6,8,153,7,2,204,7,3,153,7,6,170,7,7,204,8,4,187,8,5,170],\"secondary\":false},{\"width\":7,\"bonus\":85,\"chr\":\"P\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,1,255,1,5,255,2,1,255,2,5,255,3,1,255,3,5,255,4,1,187,4,5,187,5,3,221],\"secondary\":false},{\"width\":9,\"bonus\":100,\"chr\":\"Q\",\"pixels\":[0,4,187,0,5,187,1,2,221,1,6,153,1,7,221,2,1,187,2,8,170,3,1,255,3,8,255,4,1,255,4,8,255,5,1,238,5,8,238,6,2,204,6,7,255,7,3,255,7,4,204,7,5,221,7,6,255,7,8,204],\"secondary\":false},{\"width\":7,\"bonus\":100,\"chr\":\"R\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,1,255,1,5,255,2,1,255,2,5,255,3,1,255,3,5,255,3,6,187,4,2,238,4,3,204,4,4,255,4,7,238,4,8,170],\"secondary\":false},{\"width\":6,\"bonus\":70,\"chr\":\"S\",\"pixels\":[0,2,153,0,3,170,1,1,204,1,4,221,1,8,238,2,1,255,2,4,170,2,8,255,3,1,255,3,5,255,3,8,255,4,1,170,4,6,221,4,7,238],\"secondary\":false},{\"width\":8,\"bonus\":65,\"chr\":\"T\",\"pixels\":[0,1,255,1,1,255,2,1,255,3,1,255,3,2,221,3,3,221,3,4,221,3,5,221,3,6,221,3,7,221,3,8,204,4,1,255,5,1,255],\"secondary\":false},{\"width\":8,\"bonus\":85,\"chr\":\"U\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,187,1,7,170,2,8,255,3,8,255,4,8,221,5,1,204,5,2,221,5,3,221,5,4,221,5,5,221,5,6,255,5,7,238],\"secondary\":false},{\"width\":7,\"bonus\":70,\"chr\":\"V\",\"pixels\":[0,1,255,0,2,187,1,3,153,1,4,255,1,5,153,2,6,187,2,7,238,3,7,255,3,8,204,4,4,204,4,5,238,5,1,170,5,2,255,5,3,153],\"secondary\":false},{\"width\":10,\"bonus\":125,\"chr\":\"W\",\"pixels\":[0,1,255,0,2,221,1,4,187,1,5,255,1,6,204,2,7,255,2,8,255,3,3,153,3,4,238,3,5,221,4,1,255,4,2,255,4,3,153,5,3,170,5,4,238,5,5,204,6,7,255,6,8,255,7,4,153,7,5,238,7,6,238,7,7,153,8,1,238,8,2,238,8,3,153],\"secondary\":false},{\"width\":7,\"bonus\":75,\"chr\":\"X\",\"pixels\":[0,8,170,1,1,187,1,2,204,1,7,238,2,3,221,2,4,153,2,5,255,2,6,153,3,4,255,3,5,238,4,2,238,4,6,204,4,7,170,5,1,204,5,8,255],\"secondary\":false},{\"width\":7,\"bonus\":55,\"chr\":\"Y\",\"pixels\":[0,1,170,1,2,238,2,3,153,2,4,255,3,4,221,3,5,204,3,6,221,3,7,221,3,8,204,4,3,255,5,1,238],\"secondary\":false},{\"width\":7,\"bonus\":75,\"chr\":\"Z\",\"pixels\":[0,8,187,1,1,255,1,7,221,1,8,255,2,1,255,2,5,204,2,8,255,3,1,255,3,4,204,3,8,255,4,1,255,4,2,221,4,8,255,5,1,187,5,8,153],\"secondary\":false},{\"width\":7,\"bonus\":90,\"chr\":\"0\",\"pixels\":[0,2,153,0,3,221,0,4,255,0,5,255,0,6,238,0,7,170,1,1,187,1,8,204,2,1,187,2,8,187,3,1,221,3,8,204,4,2,170,4,3,255,4,4,187,4,5,187,4,6,238,4,7,170],\"secondary\":false},{\"width\":7,\"bonus\":50,\"chr\":\"1\",\"pixels\":[1,8,187,2,1,204,2,2,204,2,3,187,2,4,187,2,5,187,2,6,187,2,7,187,2,8,238,3,8,204],\"secondary\":false},{\"width\":7,\"bonus\":55,\"chr\":\"2\",\"pixels\":[1,8,255,2,1,187,2,6,153,2,8,187,3,1,204,3,5,153,3,8,187,4,1,187,4,2,153,4,4,204,4,8,187],\"secondary\":false},{\"width\":7,\"bonus\":50,\"chr\":\"3\",\"pixels\":[0,8,204,1,1,187,1,8,187,2,1,187,2,4,187,2,8,204,3,2,221,3,3,204,3,5,204,3,7,170],\"secondary\":false},{\"width\":7,\"bonus\":80,\"chr\":\"4\",\"pixels\":[0,6,238,1,4,187,1,6,187,2,3,170,2,6,187,3,1,187,3,2,153,3,6,204,4,1,187,4,2,187,4,3,187,4,4,187,4,5,187,4,6,238,4,7,187,4,8,187],\"secondary\":false},{\"width\":7,\"bonus\":70,\"chr\":\"5\",\"pixels\":[1,1,238,1,2,187,1,3,187,1,4,187,1,8,204,2,1,187,2,4,187,2,8,187,3,1,187,3,4,204,3,8,204,4,5,238,4,6,187,4,7,221],\"secondary\":false},{\"width\":7,\"bonus\":80,\"chr\":\"6\",\"pixels\":[0,3,170,0,4,255,0,5,255,0,6,238,0,7,153,1,2,187,1,8,187,2,1,204,2,4,187,2,8,187,3,1,187,3,4,204,3,8,187,4,5,221,4,6,255,4,7,187],\"secondary\":false},{\"width\":7,\"bonus\":55,\"chr\":\"7\",\"pixels\":[0,1,187,1,1,187,1,8,204,2,1,187,2,6,238,2,7,153,3,1,187,3,3,153,3,4,221,4,1,255,4,2,187],\"secondary\":false},{\"width\":7,\"bonus\":95,\"chr\":\"8\",\"pixels\":[1,2,238,1,3,221,1,6,204,1,7,221,2,1,204,2,4,204,2,5,170,2,8,221,3,1,187,3,4,170,3,8,187,4,1,221,4,4,170,4,5,204,4,8,187,5,2,170,5,3,153,5,6,238,5,7,238],\"secondary\":false},{\"width\":7,\"bonus\":85,\"chr\":\"9\",\"pixels\":[1,2,221,1,3,187,1,4,238,1,8,153,2,1,204,2,5,221,2,8,187,3,1,187,3,5,187,3,8,204,4,1,187,4,7,170,5,2,153,5,3,238,5,4,255,5,5,255,5,6,187],\"secondary\":false},{\"width\":8,\"bonus\":75,\"chr\":\"%\",\"pixels\":[0,3,255,0,8,255,1,2,255,1,4,255,1,7,255,2,3,255,2,6,255,3,5,255,4,4,255,4,7,255,5,3,255,5,6,255,5,8,255,6,2,255,6,7,255],\"secondary\":false},{\"width\":4,\"bonus\":40,\"chr\":\"/\",\"pixels\":[0,7,153,0,8,238,0,9,221,1,4,187,1,5,238,1,6,170,2,1,221,2,2,221],\"secondary\":false},{\"width\":7,\"bonus\":60,\"chr\":\"+\",\"pixels\":[0,5,221,1,5,255,2,5,255,3,2,153,3,3,221,3,4,221,3,5,255,3,6,221,3,7,221,3,8,204,4,5,255,5,5,255],\"secondary\":false},{\"width\":5,\"bonus\":40,\"chr\":\"?\",\"pixels\":[0,1,170,1,1,255,1,6,221,1,8,255,2,1,255,2,5,170,3,2,255,3,3,221],\"secondary\":false},{\"width\":2,\"bonus\":35,\"chr\":\"!\",\"pixels\":[0,1,170,0,2,187,0,3,187,0,4,187,0,5,187,0,6,170,0,8,255],\"secondary\":false},{\"width\":8,\"bonus\":130,\"chr\":\"@\",\"pixels\":[0,4,255,0,5,255,0,6,221,0,7,255,0,8,187,1,3,221,1,9,238,2,2,221,2,5,255,2,6,238,2,7,255,2,10,153,3,2,255,3,4,255,3,8,204,3,10,187,4,2,238,4,4,255,4,8,255,5,3,238,5,4,255,5,5,221,5,6,221,5,7,221,5,8,238,6,8,221],\"secondary\":false},{\"width\":8,\"bonus\":120,\"chr\":\"#\",\"pixels\":[0,6,255,1,3,255,1,6,255,1,7,170,1,8,238,2,1,170,2,2,238,2,3,255,2,4,221,2,5,170,2,6,255,3,3,255,3,6,255,4,3,255,4,4,153,4,5,204,4,6,255,4,7,238,4,8,187,5,1,255,5,2,187,5,3,255,5,6,255,6,3,255],\"secondary\":false},{\"width\":6,\"bonus\":70,\"chr\":\"$\",\"pixels\":[0,2,153,0,3,170,1,1,204,1,4,221,1,8,238,2,0,204,2,1,238,2,8,238,2,9,204,3,1,238,3,5,238,3,8,255,4,6,170,4,7,170],\"secondary\":false},{\"width\":6,\"bonus\":40,\"chr\":\"^\",\"pixels\":[0,4,153,0,5,238,1,2,204,1,3,221,2,1,221,2,2,221,3,3,187,3,4,221],\"secondary\":false},{\"width\":6,\"bonus\":20,\"chr\":\"~\",\"pixels\":[1,5,255,2,5,221,3,6,221,4,5,204],\"secondary\":false},{\"width\":7,\"bonus\":95,\"chr\":\"&\",\"pixels\":[0,6,187,1,2,238,1,3,255,1,4,187,1,5,187,1,8,187,2,1,255,2,4,255,2,8,255,3,1,255,3,4,255,3,8,255,4,4,255,4,8,187,5,3,204,5,4,255,5,5,221,5,6,187,6,4,153],\"secondary\":false},{\"width\":6,\"bonus\":45,\"chr\":\"*\",\"pixels\":[0,2,170,1,2,170,1,3,204,1,4,255,2,1,204,2,2,238,2,3,255,3,2,170,3,4,153],\"secondary\":false},{\"width\":4,\"bonus\":55,\"chr\":\"(\",\"pixels\":[0,3,173,0,4,239,0,5,253,0,6,230,0,7,171,1,1,194,1,2,204,1,8,204,1,9,191,2,0,210,2,10,216],\"secondary\":false},{\"width\":4,\"bonus\":55,\"chr\":\")\",\"pixels\":[1,0,211,1,10,216,2,1,194,2,2,203,2,8,203,2,9,191,3,3,174,3,4,240,3,5,253,3,6,229,3,7,171],\"secondary\":false},{\"width\":7,\"bonus\":30,\"chr\":\"_\",\"pixels\":[0,9,153,1,9,255,2,9,255,3,9,255,4,9,255,5,9,255],\"secondary\":false},{\"width\":4,\"bonus\":15,\"chr\":\"-\",\"pixels\":[0,5,255,1,5,255,2,5,255],\"secondary\":true},{\"width\":8,\"bonus\":50,\"chr\":\"=\",\"pixels\":[0,4,255,0,6,255,1,4,255,1,6,255,2,4,255,2,6,255,3,4,255,3,6,255,4,4,255,4,6,255],\"secondary\":false},{\"width\":3,\"bonus\":55,\"chr\":\"[\",\"pixels\":[0,0,204,0,1,221,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,0,238,1,8,238],\"secondary\":false},{\"width\":3,\"bonus\":55,\"chr\":\"]\",\"pixels\":[0,0,238,0,8,238,1,0,204,1,1,221,1,2,221,1,3,221,1,4,221,1,5,221,1,6,221,1,7,221,1,8,204],\"secondary\":false},{\"width\":5,\"bonus\":50,\"chr\":\"{\",\"pixels\":[0,5,153,1,2,170,1,3,221,1,4,221,1,5,204,1,6,255,1,7,221,1,8,170,2,1,238,2,9,238],\"secondary\":false},{\"width\":5,\"bonus\":50,\"chr\":\"}\",\"pixels\":[1,1,238,1,9,238,2,2,170,2,3,221,2,4,221,2,5,204,2,6,255,2,7,221,2,8,170,3,5,153],\"secondary\":false},{\"width\":3,\"bonus\":10,\"chr\":\":\",\"pixels\":[1,3,255,1,7,255],\"secondary\":true},{\"width\":3,\"bonus\":20,\"chr\":\";\",\"pixels\":[0,9,201,1,3,255,1,7,241,1,8,255],\"secondary\":true},{\"width\":3,\"bonus\":20,\"chr\":\"\\\\\"\",\"pixels\":[0,1,255,0,2,255,2,1,255,2,2,255],\"secondary\":true},{\"width\":2,\"bonus\":10,\"chr\":\"\\'\",\"pixels\":[0,1,255,0,2,177],\"secondary\":true},{\"width\":7,\"bonus\":40,\"chr\":\"<\",\"pixels\":[0,5,204,1,5,255,2,4,238,2,6,238,3,4,170,3,6,170,4,3,221,4,7,221],\"secondary\":false},{\"width\":7,\"bonus\":45,\"chr\":\">\",\"pixels\":[0,3,204,0,7,204,1,7,187,2,4,238,2,6,255,3,4,170,3,5,153,3,6,204,4,5,255],\"secondary\":false},{\"width\":5,\"bonus\":35,\"chr\":\"\\\\\\\\\",\"pixels\":[1,1,153,1,2,255,1,3,204,2,5,255,2,6,204,3,8,255,3,9,204],\"secondary\":false},{\"width\":2,\"bonus\":5,\"chr\":\".\",\"pixels\":[0,8,255],\"secondary\":true},{\"width\":3,\"bonus\":15,\"chr\":\",\",\"pixels\":[0,9,205,1,7,205,1,8,255],\"secondary\":true},{\"width\":3,\"bonus\":50,\"chr\":\"|\",\"pixels\":[0,1,221,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,221,0,9,221,0,10,204],\"secondary\":false}],\"width\":10,\"spacewidth\":3,\"shadow\":false,\"height\":12,\"basey\":8}');\n\n/***/ }),\n\n/***/ \"./src/fonts/aa_8px_mono_allcaps.fontmeta.json\":\n/*!*****************************************************!*\\\n  !*** ./src/fonts/aa_8px_mono_allcaps.fontmeta.json ***!\n  \\*****************************************************/\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = JSON.parse('{\"chars\":[{\"width\":3,\"bonus\":35,\"chr\":\"!\",\"pixels\":[0,2,170,1,1,221,1,2,255,1,3,221,1,4,187,1,5,170,1,9,204],\"secondary\":false},{\"width\":6,\"bonus\":20,\"chr\":\"\\\\\"\",\"pixels\":[1,2,221,1,3,255,3,2,221,3,3,255],\"secondary\":true},{\"width\":8,\"bonus\":125,\"chr\":\"#\",\"pixels\":[0,7,187,1,4,255,1,7,255,1,10,170,2,3,170,2,4,255,2,5,255,2,6,221,2,7,255,2,8,170,3,4,255,3,7,255,4,4,255,4,5,153,4,7,255,4,8,238,4,9,255,4,10,204,5,2,238,5,3,204,5,4,255,5,5,153,5,7,255,6,4,255,6,7,153],\"secondary\":false},{\"width\":7,\"bonus\":115,\"chr\":\"$\",\"pixels\":[0,8,187,1,2,255,1,3,255,1,4,221,1,9,238,2,1,187,2,4,255,2,5,204,2,8,170,2,9,255,2,10,221,3,0,187,3,1,238,3,2,187,3,3,170,3,4,153,3,5,255,3,6,221,3,9,221,4,1,221,4,6,255,4,7,255,4,8,255],\"secondary\":false},{\"width\":12,\"bonus\":135,\"chr\":\"%\",\"pixels\":[1,2,255,1,3,255,1,4,221,2,5,153,3,1,153,3,9,187,4,1,170,4,2,255,4,3,255,4,4,221,4,7,238,4,8,204,5,4,153,5,5,238,5,6,153,6,1,153,6,2,187,6,3,204,6,6,221,6,7,255,6,8,255,7,1,153,7,9,187,8,9,187,9,6,221,9,7,255,9,8,255],\"secondary\":false},{\"width\":11,\"bonus\":190,\"chr\":\"&\",\"pixels\":[0,6,187,0,7,255,0,8,170,1,2,204,1,3,255,1,4,153,1,5,238,1,6,170,1,7,187,1,8,255,1,9,153,2,1,170,2,2,153,2,3,153,2,4,255,2,5,187,2,9,238,3,1,221,3,5,238,3,6,170,3,9,255,4,1,238,4,6,238,4,7,153,4,9,204,5,1,187,5,2,187,5,7,255,5,8,204,6,7,170,6,8,255,7,5,238,7,6,255,7,7,170,7,8,170,7,9,221,8,9,238,9,9,153],\"secondary\":false},{\"width\":4,\"bonus\":10,\"chr\":\"\\'\",\"pixels\":[1,2,204,1,3,255],\"secondary\":true},{\"width\":4,\"bonus\":50,\"chr\":\"(\",\"pixels\":[0,3,170,0,4,238,0,5,255,0,6,221,0,7,153,1,1,153,1,2,221,1,3,153,1,7,170,1,8,238],\"secondary\":false},{\"width\":4,\"bonus\":40,\"chr\":\")\",\"pixels\":[1,1,170,1,2,221,1,7,170,1,8,238,2,3,187,2,4,238,2,5,255,2,6,204],\"secondary\":false},{\"width\":5,\"bonus\":25,\"chr\":\"*\",\"pixels\":[1,1,170,1,2,221,1,3,153,2,2,255,2,3,204],\"secondary\":false},{\"width\":8,\"bonus\":45,\"chr\":\"+\",\"pixels\":[1,6,255,2,6,255,3,4,255,3,5,255,3,6,255,3,7,255,3,8,255,4,6,255,5,6,255],\"secondary\":false},{\"width\":3,\"bonus\":10,\"chr\":\",\",\"pixels\":[1,8,187,1,9,221],\"secondary\":true},{\"width\":5,\"bonus\":20,\"chr\":\"-\",\"pixels\":[0,7,204,1,7,255,2,7,238,3,7,187],\"secondary\":true},{\"width\":3,\"bonus\":5,\"chr\":\".\",\"pixels\":[0,9,204],\"secondary\":true},{\"width\":7,\"bonus\":40,\"chr\":\"/\",\"pixels\":[0,9,221,1,7,187,1,8,187,2,6,221,3,4,221,4,2,170,4,3,187,5,1,187],\"secondary\":false},{\"width\":8,\"bonus\":105,\"chr\":\"0\",\"pixels\":[0,6,153,1,3,221,1,4,255,1,5,255,1,6,255,1,7,255,1,8,238,2,2,187,2,8,153,2,9,204,3,2,187,3,9,204,4,2,221,4,9,187,5,3,238,5,4,255,5,5,255,5,6,255,5,7,255,5,8,221,6,5,153],\"secondary\":false},{\"width\":6,\"bonus\":85,\"chr\":\"1\",\"pixels\":[1,3,170,1,9,153,2,3,255,2,4,255,2,5,255,2,6,255,2,7,255,2,8,255,2,9,255,3,2,153,3,3,153,3,4,153,3,5,153,3,6,153,3,7,153,3,8,153,3,9,221],\"secondary\":false},{\"width\":8,\"bonus\":100,\"chr\":\"2\",\"pixels\":[1,2,187,1,3,153,1,9,255,2,2,187,2,8,221,2,9,255,3,2,221,3,7,221,3,9,255,4,2,187,4,3,238,4,4,187,4,5,238,4,6,238,4,9,255,5,3,221,5,4,255,5,5,170,5,8,153,5,9,238],\"secondary\":false},{\"width\":7,\"bonus\":100,\"chr\":\"3\",\"pixels\":[0,2,170,0,8,170,0,9,204,1,2,221,1,9,238,2,2,238,2,5,221,2,9,221,3,2,221,3,3,187,3,4,204,3,5,255,3,6,153,3,9,187,4,3,238,4,4,153,4,6,255,4,7,255,4,8,255,5,7,153],\"secondary\":false},{\"width\":8,\"bonus\":85,\"chr\":\"4\",\"pixels\":[0,7,153,1,6,187,1,7,255,2,5,187,2,7,255,3,4,187,3,7,255,4,3,255,4,4,255,4,5,255,4,6,255,4,7,255,4,8,255,4,9,255,5,7,255,5,9,204,6,7,221],\"secondary\":false},{\"width\":7,\"bonus\":95,\"chr\":\"5\",\"pixels\":[0,8,153,0,9,221,1,2,255,1,3,187,1,4,238,1,9,221,2,2,255,2,4,187,2,5,170,2,9,204,3,2,255,3,5,255,3,9,170,4,2,255,4,5,204,4,6,255,4,7,255,4,8,238,5,7,153],\"secondary\":false},{\"width\":8,\"bonus\":105,\"chr\":\"6\",\"pixels\":[0,7,153,1,4,153,1,5,255,1,6,255,1,7,255,1,8,255,2,4,204,2,9,221,3,3,170,3,5,153,3,9,204,4,2,153,4,5,187,4,9,204,5,6,238,5,7,170,5,8,187,5,9,153,6,6,187,6,7,255,6,8,170],\"secondary\":false},{\"width\":7,\"bonus\":75,\"chr\":\"7\",\"pixels\":[0,2,204,0,3,187,1,2,255,1,9,187,2,2,255,2,7,238,2,8,255,2,9,170,3,2,255,3,5,221,3,6,204,4,2,255,4,3,204,4,4,170,5,2,204],\"secondary\":false},{\"width\":8,\"bonus\":120,\"chr\":\"8\",\"pixels\":[1,3,221,1,4,204,1,6,187,1,7,255,1,8,255,2,2,187,2,4,204,2,5,221,2,6,153,2,9,221,3,2,153,3,5,255,3,9,187,4,2,187,4,5,238,4,6,204,4,9,204,5,2,170,5,3,255,5,4,238,5,6,238,5,7,255,5,8,255,6,7,153],\"secondary\":false},{\"width\":8,\"bonus\":95,\"chr\":\"9\",\"pixels\":[0,4,153,1,3,255,1,4,255,1,5,255,2,2,187,2,6,153,3,2,204,3,6,153,3,9,153,4,2,221,4,7,153,4,8,204,5,3,255,5,4,255,5,5,255,5,6,255,5,7,187,6,4,153,6,5,153],\"secondary\":false},{\"width\":3,\"bonus\":10,\"chr\":\":\",\"pixels\":[0,3,204,0,7,204],\"secondary\":true},{\"width\":3,\"bonus\":20,\"chr\":\";\",\"pixels\":[0,2,204,0,6,153,0,7,187,0,8,153],\"secondary\":true},{\"width\":7,\"bonus\":55,\"chr\":\"<\",\"pixels\":[0,6,187,0,7,153,1,6,221,1,7,238,2,5,153,3,5,238,3,8,238,4,5,153,4,8,187,5,4,187,5,9,153],\"secondary\":false},{\"width\":7,\"bonus\":60,\"chr\":\"=\",\"pixels\":[0,5,255,0,8,255,1,5,255,1,8,255,2,5,255,2,8,255,3,5,255,3,8,255,4,5,255,4,8,255,5,5,221,5,8,221],\"secondary\":false},{\"width\":7,\"bonus\":50,\"chr\":\">\",\"pixels\":[0,4,204,0,9,170,1,5,170,1,8,187,2,5,238,2,8,221,3,7,153,4,6,238,4,7,238,5,6,153],\"secondary\":false},{\"width\":6,\"bonus\":65,\"chr\":\"?\",\"pixels\":[0,2,153,0,3,187,1,2,221,1,7,221,2,2,238,2,6,238,2,10,204,3,2,204,3,3,221,3,4,204,3,5,255,4,3,238,4,4,221],\"secondary\":false},{\"width\":11,\"bonus\":180,\"chr\":\"@\",\"pixels\":[0,4,187,0,5,255,0,6,255,0,7,238,1,3,170,1,8,204,2,5,187,2,6,238,2,7,187,2,9,204,3,4,204,3,5,153,3,6,153,3,7,204,3,9,204,4,3,153,4,6,153,4,9,187,5,0,153,5,3,221,5,4,170,5,5,238,5,6,255,5,7,187,5,9,170,6,3,221,6,4,153,6,7,238,7,1,153,7,7,170,8,1,170,8,2,153,8,6,170,9,3,187,9,4,221,9,5,170],\"secondary\":false},{\"width\":9,\"bonus\":110,\"chr\":\"A\",\"pixels\":[1,9,238,2,6,153,2,7,255,2,8,170,2,9,170,3,4,187,3,5,238,3,7,221,4,2,187,4,3,255,4,4,238,4,7,221,5,4,221,5,5,255,5,6,238,5,7,238,6,6,187,6,7,255,6,8,255,6,9,187,7,8,170,7,9,255],\"secondary\":false},{\"width\":7,\"bonus\":150,\"chr\":\"B\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,153,2,9,255,3,2,221,3,5,221,3,9,204,4,2,187,4,3,255,4,4,255,4,5,170,4,6,255,4,7,170,4,8,187,4,9,187,5,6,153,5,7,255,5,8,204],\"secondary\":false},{\"width\":8,\"bonus\":120,\"chr\":\"C\",\"pixels\":[0,4,170,0,5,238,0,6,238,0,7,170,1,3,238,1,4,255,1,5,221,1,6,238,1,7,255,1,8,238,2,2,153,2,3,153,2,8,221,2,9,153,3,2,221,3,9,221,4,2,221,4,9,221,5,2,221,5,9,221,6,2,187,6,3,187,6,8,153,6,9,170],\"secondary\":false},{\"width\":10,\"bonus\":165,\"chr\":\"D\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,153,2,6,153,2,7,153,2,8,170,2,9,255,3,2,221,3,9,221,4,2,238,4,9,221,5,2,221,5,9,204,6,2,153,6,3,238,6,8,187,7,3,221,7,4,255,7,5,255,7,6,255,7,7,255,7,8,170,8,5,187,8,6,170],\"secondary\":false},{\"width\":7,\"bonus\":110,\"chr\":\"E\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,170,2,9,239,3,2,214,3,5,221,3,9,212,4,2,212,4,5,226,4,9,238],\"secondary\":false},{\"width\":7,\"bonus\":100,\"chr\":\"F\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,153,2,9,221,3,2,221,3,5,221,4,2,238,4,5,238],\"secondary\":false},{\"width\":9,\"bonus\":135,\"chr\":\"G\",\"pixels\":[0,4,170,0,5,238,0,6,255,0,7,187,1,3,238,1,4,238,1,5,187,1,6,204,1,7,255,1,8,238,2,2,153,2,8,221,2,9,153,3,2,221,3,9,221,4,2,221,4,9,238,5,2,238,5,9,221,6,2,204,6,6,255,6,7,255,6,8,255,6,9,204,7,6,204,7,7,153,7,8,153],\"secondary\":false},{\"width\":10,\"bonus\":175,\"chr\":\"H\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,153,2,9,221,3,5,221,4,5,221,5,5,221,6,2,204,6,3,153,6,4,153,6,5,238,6,6,153,6,7,153,6,8,153,6,9,221,7,2,255,7,3,255,7,4,255,7,5,255,7,6,255,7,7,255,7,8,255,7,9,255],\"secondary\":false},{\"width\":5,\"bonus\":80,\"chr\":\"I\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,153,2,6,153,2,7,153,2,8,153,2,9,221],\"secondary\":false},{\"width\":6,\"bonus\":90,\"chr\":\"J\",\"pixels\":[2,2,255,2,3,255,2,4,255,2,5,255,2,6,255,2,7,255,2,8,255,2,9,255,2,10,255,2,11,187,3,2,204,3,3,153,3,4,153,3,5,153,3,6,153,3,7,153,3,8,153,3,9,153],\"secondary\":false},{\"width\":10,\"bonus\":140,\"chr\":\"K\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,238,2,6,187,2,7,153,2,8,153,2,9,204,3,5,238,3,6,238,4,6,170,4,7,255,5,2,238,5,3,153,5,7,170,5,8,255,6,2,204,6,8,170,6,9,238,7,9,204],\"secondary\":false},{\"width\":7,\"bonus\":95,\"chr\":\"L\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,153,2,6,153,2,7,153,2,8,170,2,9,255,3,9,221,4,9,221,5,9,204],\"secondary\":false},{\"width\":12,\"bonus\":150,\"chr\":\"M\",\"pixels\":[1,6,170,1,7,221,1,8,255,1,9,255,2,2,170,2,3,255,2,4,255,2,5,221,3,4,204,3,5,255,3,6,238,4,6,204,4,7,255,4,8,221,5,7,187,5,8,255,6,6,221,7,4,238,7,5,204,8,2,187,8,3,255,8,4,255,8,5,255,8,6,255,8,7,238,8,8,204,8,9,187,9,7,170,9,8,204,9,9,255],\"secondary\":false},{\"width\":10,\"bonus\":130,\"chr\":\"N\",\"pixels\":[1,2,204,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,3,221,2,4,238,3,4,221,3,5,238,4,5,238,4,6,238,5,6,238,5,7,238,6,7,238,6,8,238,7,2,255,7,3,255,7,4,255,7,5,255,7,6,255,7,7,255,7,8,255,7,9,204],\"secondary\":false},{\"width\":10,\"bonus\":155,\"chr\":\"O\",\"pixels\":[0,4,170,0,5,238,0,6,238,0,7,170,1,3,238,1,4,238,1,5,187,1,6,204,1,7,255,1,8,238,2,2,170,2,8,204,2,9,170,3,2,221,3,9,238,4,2,221,4,9,221,5,2,238,5,9,204,6,2,153,6,3,238,6,8,170,7,3,238,7,4,255,7,5,255,7,6,255,7,7,255,7,8,187,8,4,153,8,5,221,8,6,204],\"secondary\":false},{\"width\":8,\"bonus\":130,\"chr\":\"P\",\"pixels\":[1,1,255,1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,1,238,2,2,153,2,3,153,2,4,153,2,5,170,2,6,153,2,7,153,2,8,153,2,9,221,3,1,204,4,1,238,4,5,187,5,1,153,5,2,255,5,3,255,5,4,255,6,3,153],\"secondary\":false},{\"width\":10,\"bonus\":180,\"chr\":\"Q\",\"pixels\":[0,4,153,0,5,238,0,6,238,0,7,170,1,3,221,1,4,255,1,5,221,1,6,238,1,7,255,1,8,238,2,2,153,2,8,221,2,9,170,3,2,221,3,9,238,4,2,221,4,9,221,5,2,238,5,9,204,6,2,153,6,3,221,6,8,153,6,9,238,7,3,221,7,4,255,7,5,255,7,6,255,7,7,255,7,8,170,7,9,187,7,10,153,8,4,153,8,5,204,8,6,204,8,10,255,9,10,204],\"secondary\":false},{\"width\":7,\"bonus\":140,\"chr\":\"R\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,153,2,6,238,2,7,153,2,8,153,2,9,221,3,2,238,3,6,238,4,2,204,4,3,204,4,4,153,4,5,204,4,6,204,4,7,255,5,3,221,5,4,221,5,8,255,6,9,238],\"secondary\":false},{\"width\":6,\"bonus\":115,\"chr\":\"S\",\"pixels\":[0,3,221,0,4,238,0,8,187,0,9,187,1,2,187,1,4,204,1,5,255,1,9,238,2,2,187,2,5,255,2,6,187,2,9,221,3,2,204,3,5,153,3,6,255,3,7,170,3,8,153,3,9,170,4,2,204,4,3,153,4,6,170,4,7,255,4,8,187],\"secondary\":false},{\"width\":9,\"bonus\":105,\"chr\":\"T\",\"pixels\":[1,2,238,2,2,221,3,2,238,3,3,153,3,4,153,3,5,153,3,6,153,3,7,153,3,8,153,3,9,221,4,2,255,4,3,255,4,4,255,4,5,255,4,6,255,4,7,255,4,8,255,4,9,255,5,2,221,6,2,221,7,2,255],\"secondary\":false},{\"width\":10,\"bonus\":120,\"chr\":\"U\",\"pixels\":[1,2,204,1,3,153,1,4,153,1,5,153,1,6,153,2,2,255,2,3,255,2,4,255,2,5,255,2,6,255,2,7,255,2,8,255,3,9,221,4,9,238,5,9,221,6,9,170,7,2,255,7,3,255,7,4,255,7,5,255,7,6,255,7,7,255,7,8,204,8,2,153],\"secondary\":false},{\"width\":10,\"bonus\":90,\"chr\":\"V\",\"pixels\":[1,2,255,1,3,153,2,2,238,2,3,255,2,4,255,2,5,187,3,5,238,3,6,255,3,7,221,4,7,221,4,8,255,4,9,187,5,6,187,5,7,204,6,4,221,6,5,187,7,2,255,7,3,170],\"secondary\":false},{\"width\":13,\"bonus\":165,\"chr\":\"W\",\"pixels\":[1,2,255,1,3,221,2,2,204,2,3,221,2,4,255,2,5,255,2,6,221,3,6,187,3,7,255,3,8,255,3,9,187,4,6,153,4,7,221,5,4,221,5,5,187,6,2,187,6,3,255,6,4,255,6,5,153,7,4,170,7,5,255,7,6,255,7,7,187,8,7,255,8,8,255,8,9,187,9,5,153,9,6,221,9,7,170,10,2,221,10,3,238,10,4,187,11,2,187],\"secondary\":false},{\"width\":9,\"bonus\":115,\"chr\":\"X\",\"pixels\":[1,2,221,1,9,238,2,2,255,2,3,255,2,7,153,2,8,221,2,9,153,3,3,153,3,4,255,3,5,221,3,6,204,4,5,255,4,6,255,4,7,170,5,3,187,5,4,170,5,7,255,5,8,255,5,9,153,6,2,255,6,8,204,6,9,255,7,9,170],\"secondary\":false},{\"width\":8,\"bonus\":95,\"chr\":\"Y\",\"pixels\":[0,2,187,1,2,255,1,3,221,2,3,221,2,4,255,2,5,153,3,5,238,3,6,255,3,7,255,3,8,255,3,9,255,4,5,204,4,6,170,4,7,153,4,8,153,4,9,204,5,3,187,5,4,187,6,2,238],\"secondary\":false},{\"width\":8,\"bonus\":105,\"chr\":\"Z\",\"pixels\":[0,9,204,1,2,238,1,7,153,1,8,255,1,9,255,2,2,221,2,6,221,2,7,255,2,9,221,3,2,221,3,4,153,3,5,255,3,6,221,3,9,221,4,2,238,4,3,221,4,4,255,4,9,221,5,2,255,5,3,204,5,9,255],\"secondary\":false},{\"width\":4,\"bonus\":65,\"chr\":\"[\",\"pixels\":[0,0,255,0,1,255,0,2,255,0,3,255,0,4,255,0,5,255,0,6,255,0,7,255,0,8,255,0,9,255,0,10,187,1,0,187,1,10,170],\"secondary\":false},{\"width\":8,\"bonus\":40,\"chr\":\"\\\\\\\\\",\"pixels\":[1,1,170,1,2,187,2,3,221,3,5,221,4,6,187,4,7,187,5,8,221,6,9,153],\"secondary\":false},{\"width\":5,\"bonus\":65,\"chr\":\"]\",\"pixels\":[1,0,153,1,10,153,2,0,255,2,1,255,2,2,255,2,3,255,2,4,255,2,5,255,2,6,255,2,7,255,2,8,255,2,9,255,2,10,187],\"secondary\":false},{\"width\":7,\"bonus\":40,\"chr\":\"^\",\"pixels\":[0,5,204,1,3,238,1,4,170,2,1,238,3,1,221,3,2,204,4,3,187,4,4,238],\"secondary\":false},{\"width\":7,\"bonus\":30,\"chr\":\"_\",\"pixels\":[0,10,221,1,10,221,2,10,221,3,10,221,4,10,221,5,10,221],\"secondary\":false},{\"width\":9,\"bonus\":110,\"chr\":\"a\",\"pixels\":[1,9,238,2,6,153,2,7,255,2,8,170,2,9,170,3,4,187,3,5,238,3,7,221,4,2,187,4,3,255,4,4,238,4,7,221,5,4,221,5,5,255,5,6,238,5,7,238,6,6,187,6,7,255,6,8,255,6,9,187,7,8,170,7,9,255],\"secondary\":false},{\"width\":7,\"bonus\":150,\"chr\":\"b\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,153,2,9,255,3,2,221,3,5,221,3,9,204,4,2,187,4,3,255,4,4,255,4,5,170,4,6,255,4,7,170,4,8,187,4,9,187,5,6,153,5,7,255,5,8,204],\"secondary\":false},{\"width\":8,\"bonus\":120,\"chr\":\"c\",\"pixels\":[0,4,170,0,5,238,0,6,238,0,7,170,1,3,238,1,4,255,1,5,221,1,6,238,1,7,255,1,8,238,2,2,153,2,3,153,2,8,221,2,9,153,3,2,221,3,9,221,4,2,221,4,9,221,5,2,221,5,9,221,6,2,187,6,3,187,6,8,153,6,9,170],\"secondary\":false},{\"width\":10,\"bonus\":165,\"chr\":\"d\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,153,2,6,153,2,7,153,2,8,170,2,9,255,3,2,221,3,9,221,4,2,238,4,9,221,5,2,221,5,9,204,6,2,153,6,3,238,6,8,187,7,3,221,7,4,255,7,5,255,7,6,255,7,7,255,7,8,170,8,5,187,8,6,170],\"secondary\":false},{\"width\":7,\"bonus\":110,\"chr\":\"e\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,170,2,9,255,3,2,221,3,5,221,3,9,221,4,2,238,4,5,238,4,9,238],\"secondary\":false},{\"width\":7,\"bonus\":100,\"chr\":\"f\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,153,2,9,221,3,2,221,3,5,221,4,2,238,4,5,238],\"secondary\":false},{\"width\":10,\"bonus\":135,\"chr\":\"g\",\"pixels\":[0,4,170,0,5,238,0,6,255,0,7,187,1,3,238,1,4,238,1,5,187,1,6,204,1,7,255,1,8,238,2,2,153,2,8,221,2,9,153,3,2,221,3,9,221,4,2,221,4,9,238,5,2,238,5,9,221,6,2,204,6,6,255,6,7,255,6,8,255,6,9,204,7,6,204,7,7,153,7,8,153],\"secondary\":false},{\"width\":10,\"bonus\":175,\"chr\":\"h\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,153,2,9,221,3,5,221,4,5,221,5,5,221,6,2,204,6,3,153,6,4,153,6,5,238,6,6,153,6,7,153,6,8,153,6,9,221,7,2,255,7,3,255,7,4,255,7,5,255,7,6,255,7,7,255,7,8,255,7,9,255],\"secondary\":false},{\"width\":5,\"bonus\":80,\"chr\":\"i\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,153,2,6,153,2,7,153,2,8,153,2,9,221],\"secondary\":false},{\"width\":5,\"bonus\":90,\"chr\":\"j\",\"pixels\":[2,2,255,2,3,255,2,4,255,2,5,255,2,6,255,2,7,255,2,8,255,2,9,255,2,10,255,2,11,187,3,2,204,3,3,153,3,4,153,3,5,153,3,6,153,3,7,153,3,8,153,3,9,153],\"secondary\":false},{\"width\":9,\"bonus\":140,\"chr\":\"k\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,238,2,6,187,2,7,153,2,8,153,2,9,204,3,5,238,3,6,238,4,6,170,4,7,255,5,2,238,5,3,153,5,7,170,5,8,255,6,2,204,6,8,170,6,9,238,7,9,204],\"secondary\":false},{\"width\":7,\"bonus\":95,\"chr\":\"l\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,153,2,6,153,2,7,153,2,8,170,2,9,255,3,9,221,4,9,221,5,9,204],\"secondary\":false},{\"width\":12,\"bonus\":150,\"chr\":\"m\",\"pixels\":[1,6,170,1,7,221,1,8,255,1,9,255,2,2,170,2,3,255,2,4,255,2,5,221,3,4,204,3,5,255,3,6,238,4,6,204,4,7,255,4,8,221,5,7,187,5,8,255,6,6,221,7,4,238,7,5,204,8,2,187,8,3,255,8,4,255,8,5,255,8,6,255,8,7,238,8,8,204,8,9,187,9,7,170,9,8,204,9,9,255],\"secondary\":false},{\"width\":10,\"bonus\":130,\"chr\":\"n\",\"pixels\":[1,2,204,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,3,221,2,4,238,3,4,221,3,5,238,4,5,238,4,6,238,5,6,238,5,7,238,6,7,238,6,8,238,7,2,255,7,3,255,7,4,255,7,5,255,7,6,255,7,7,255,7,8,255,7,9,204],\"secondary\":false},{\"width\":10,\"bonus\":155,\"chr\":\"o\",\"pixels\":[0,4,170,0,5,238,0,6,238,0,7,170,1,3,238,1,4,238,1,5,187,1,6,204,1,7,255,1,8,238,2,2,170,2,8,204,2,9,170,3,2,221,3,9,238,4,2,221,4,9,221,5,2,238,5,9,204,6,2,153,6,3,238,6,8,170,7,3,238,7,4,255,7,5,255,7,6,255,7,7,255,7,8,187,8,4,153,8,5,221,8,6,204],\"secondary\":false},{\"width\":7,\"bonus\":115,\"chr\":\"p\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,153,2,6,170,2,7,153,2,8,153,2,9,221,3,2,221,4,2,221,4,3,204,4,4,153,4,5,221,5,3,221,5,4,221],\"secondary\":false},{\"width\":10,\"bonus\":180,\"chr\":\"q\",\"pixels\":[0,4,153,0,5,238,0,6,238,0,7,170,1,3,221,1,4,255,1,5,221,1,6,238,1,7,255,1,8,238,2,2,153,2,8,221,2,9,170,3,2,221,3,9,238,4,2,221,4,9,221,5,2,238,5,9,204,6,2,153,6,3,221,6,8,153,6,9,238,7,3,221,7,4,255,7,5,255,7,6,255,7,7,255,7,8,170,7,9,187,7,10,153,8,4,153,8,5,204,8,6,204,8,10,255,9,10,204],\"secondary\":false},{\"width\":9,\"bonus\":145,\"chr\":\"r\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,153,2,6,238,2,7,153,2,8,153,2,9,221,3,2,238,3,6,238,4,2,204,4,3,204,4,4,153,4,5,204,4,6,204,4,7,255,5,3,221,5,4,221,5,8,255,6,9,238,7,9,153],\"secondary\":false},{\"width\":6,\"bonus\":115,\"chr\":\"s\",\"pixels\":[0,3,221,0,4,238,0,8,187,0,9,187,1,2,187,1,4,204,1,5,255,1,9,238,2,2,187,2,5,255,2,6,187,2,9,221,3,2,204,3,5,153,3,6,255,3,7,170,3,8,153,3,9,170,4,2,204,4,3,153,4,6,170,4,7,255,4,8,187],\"secondary\":false},{\"width\":9,\"bonus\":105,\"chr\":\"t\",\"pixels\":[1,2,238,2,2,221,3,2,238,3,3,153,3,4,153,3,5,153,3,6,153,3,7,153,3,8,153,3,9,221,4,2,255,4,3,255,4,4,255,4,5,255,4,6,255,4,7,255,4,8,255,4,9,255,5,2,221,6,2,221,7,2,255],\"secondary\":false},{\"width\":10,\"bonus\":120,\"chr\":\"u\",\"pixels\":[1,2,204,1,3,153,1,4,153,1,5,153,1,6,153,2,2,255,2,3,255,2,4,255,2,5,255,2,6,255,2,7,255,2,8,255,3,9,221,4,9,238,5,9,221,6,9,170,7,2,255,7,3,255,7,4,255,7,5,255,7,6,255,7,7,255,7,8,204,8,2,153],\"secondary\":false},{\"width\":10,\"bonus\":90,\"chr\":\"v\",\"pixels\":[1,2,255,1,3,153,2,2,238,2,3,255,2,4,255,2,5,187,3,5,238,3,6,255,3,7,221,4,7,221,4,8,255,4,9,187,5,6,187,5,7,204,6,4,221,6,5,187,7,2,255,7,3,170],\"secondary\":false},{\"width\":13,\"bonus\":165,\"chr\":\"w\",\"pixels\":[1,2,255,1,3,221,2,2,204,2,3,221,2,4,255,2,5,255,2,6,221,3,6,187,3,7,255,3,8,255,3,9,187,4,6,153,4,7,221,5,4,221,5,5,187,6,2,187,6,3,255,6,4,255,6,5,153,7,4,170,7,5,255,7,6,255,7,7,187,8,7,255,8,8,255,8,9,187,9,5,153,9,6,221,9,7,170,10,2,221,10,3,238,10,4,187,11,2,187],\"secondary\":false},{\"width\":9,\"bonus\":115,\"chr\":\"x\",\"pixels\":[1,2,221,1,9,238,2,2,255,2,3,255,2,7,153,2,8,221,2,9,153,3,3,153,3,4,255,3,5,221,3,6,204,4,5,255,4,6,255,4,7,170,5,3,187,5,4,170,5,7,255,5,8,255,5,9,153,6,2,255,6,8,204,6,9,255,7,9,170],\"secondary\":false},{\"width\":8,\"bonus\":95,\"chr\":\"y\",\"pixels\":[0,2,187,1,2,255,1,3,221,2,3,221,2,4,255,2,5,153,3,5,238,3,6,255,3,7,255,3,8,255,3,9,255,4,5,204,4,6,170,4,7,153,4,8,153,4,9,204,5,3,187,5,4,187,6,2,238],\"secondary\":false},{\"width\":8,\"bonus\":105,\"chr\":\"z\",\"pixels\":[0,9,204,1,2,238,1,7,153,1,8,255,1,9,255,2,2,221,2,6,221,2,7,255,2,9,221,3,2,221,3,4,153,3,5,255,3,6,221,3,9,221,4,2,238,4,3,221,4,4,255,4,9,221,5,2,255,5,3,204,5,9,255],\"secondary\":false},{\"width\":4,\"bonus\":45,\"chr\":\"{\",\"pixels\":[1,1,255,1,2,255,1,3,255,1,5,187,1,6,255,1,7,255,1,8,255,1,9,221,2,0,153],\"secondary\":false},{\"width\":2,\"bonus\":60,\"chr\":\"|\",\"pixels\":[0,0,255,0,1,255,0,2,255,0,3,255,0,4,255,0,5,255,0,6,255,0,7,255,0,8,255,0,9,255,0,10,255,0,11,255],\"secondary\":true},{\"width\":4,\"bonus\":45,\"chr\":\"}\",\"pixels\":[0,0,153,1,1,255,1,2,255,1,3,255,1,5,187,1,6,255,1,7,255,1,8,255,1,9,221],\"secondary\":false},{\"width\":7,\"bonus\":30,\"chr\":\"~\",\"pixels\":[0,5,221,1,4,255,2,4,187,3,5,187,4,5,255,5,4,204],\"secondary\":false}],\"width\":13,\"spacewidth\":3,\"shadow\":false,\"height\":12,\"basey\":9}');\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(\"./src/dialog/index.ts\");\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"alt1/base\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"alt1/base\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ocr\"] = factory(require(\"alt1/base\"));\n\telse\n\t\troot[\"OCR\"] = factory(root[\"A1lib\"]);\n})(globalThis, (__WEBPACK_EXTERNAL_MODULE_alt1_base__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./src/ocr/index.ts\":\n/*!**************************!*\\\n  !*** ./src/ocr/index.ts ***!\n  \\**************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.generatefont = exports.readChar = exports.readSmallCapsBackwards = exports.readLine = exports.getChatColor = exports.GetChatColorMono = exports.findReadLine = exports.findChar = exports.decompose3col = exports.decomposeblack = exports.decompose2col = exports.canblend = exports.unblendTrans = exports.unblendKnownBg = exports.unblendBlackBackground = exports.debugFont = exports.debugout = exports.debug = void 0;\nconst base_1 = __webpack_require__(/*! alt1/base */ \"alt1/base\");\nexports.debug = {\n    printcharscores: false,\n    trackread: false\n};\nexports.debugout = {};\n/**\n * draws the font definition to a buffer and displays it in the dom for debugging purposes\n * @param font\n */\nfunction debugFont(font) {\n    var spacing = font.width + 2;\n    var buf = new base_1.ImageData(spacing * font.chars.length, font.height + 1);\n    for (var a = 0; a < buf.data.length; a += 4) {\n        buf.data[a] = buf.data[a + 1] = buf.data[a + 2] = 0;\n        buf.data[a + 3] = 255;\n    }\n    for (var a = 0; a < font.chars.length; a++) {\n        var bx = a * spacing;\n        var chr = font.chars[a];\n        for (var b = 0; b < chr.pixels.length; b += (font.shadow ? 4 : 3)) {\n            buf.setPixel(bx + chr.pixels[b], chr.pixels[b + 1], [chr.pixels[b + 2], chr.pixels[b + 2], chr.pixels[b + 2], 255]);\n            if (font.shadow) {\n                buf.setPixel(bx + chr.pixels[b], chr.pixels[b + 1], [chr.pixels[b + 3], 0, 0, 255]);\n            }\n        }\n    }\n    buf.show();\n}\nexports.debugFont = debugFont;\nfunction unblendBlackBackground(img, r, g, b) {\n    var rimg = new base_1.ImageData(img.width, img.height);\n    for (var i = 0; i < img.data.length; i += 4) {\n        var col = decomposeblack(img.data[i], img.data[i + 1], img.data[i + 2], r, g, b);\n        rimg.data[i + 0] = col[0] * 255;\n        rimg.data[i + 1] = rimg.data[i + 0];\n        rimg.data[i + 2] = rimg.data[i + 0];\n        rimg.data[i + 3] = 255;\n    }\n    return rimg;\n}\nexports.unblendBlackBackground = unblendBlackBackground;\n/**\n * unblends a imagebuffer into match strength with given color\n * the bgimg argument should contain a second image with pixel occluded by the font visible.\n * @param img\n * @param shadow detect black as second color\n * @param bgimg optional second image to\n */\nfunction unblendKnownBg(img, bgimg, shadow, r, g, b) {\n    if (bgimg && (img.width != bgimg.width || img.height != bgimg.height)) {\n        throw \"bgimg size doesn't match\";\n    }\n    var rimg = new base_1.ImageData(img.width, img.height);\n    var totalerror = 0;\n    for (var i = 0; i < img.data.length; i += 4) {\n        var col = decompose2col(img.data[i], img.data[i + 1], img.data[i + 2], r, g, b, bgimg.data[i + 0], bgimg.data[i + 1], bgimg.data[i + 2]);\n        if (shadow) {\n            if (col[2] > 0.01) {\n                console.log(\"high error component: \" + (col[2] * 100).toFixed(1) + \"%\");\n            }\n            totalerror += col[2];\n            var m = 1 - col[1] - Math.abs(col[2]); //main color+black=100%-bg-error\n            rimg.data[i + 0] = m * 255;\n            rimg.data[i + 1] = col[0] / m * 255;\n            rimg.data[i + 2] = rimg.data[i + 0];\n        }\n        else {\n            rimg.data[i + 0] = col[0] * 255;\n            rimg.data[i + 1] = rimg.data[i + 0];\n            rimg.data[i + 2] = rimg.data[i + 0];\n        }\n        rimg.data[i + 3] = 255;\n    }\n    return rimg;\n}\nexports.unblendKnownBg = unblendKnownBg;\n/**\n * Unblends a font image that is already conpletely isolated to the raw image used ingame. This is the easiest mode for pixel fonts where alpha is 0 or 255, or for extracted font files.\n * @param img\n * @param r\n * @param g\n * @param b\n * @param shadow whether the font has a black shadow\n */\nfunction unblendTrans(img, shadow, r, g, b) {\n    var rimg = new base_1.ImageData(img.width, img.height);\n    var pxlum = r + g + b;\n    for (var i = 0; i < img.data.length; i += 4) {\n        if (shadow) {\n            var lum = img.data[i + 0] + img.data[i + 1] + img.data[i + 2];\n            rimg.data[i + 0] = img.data[i + 3];\n            rimg.data[i + 1] = lum / pxlum * 255;\n            rimg.data[i + 2] = rimg.data[i + 0];\n        }\n        else {\n            rimg.data[i + 0] = img.data[i + 3];\n            rimg.data[i + 1] = rimg.data[i + 0];\n            rimg.data[i + 2] = rimg.data[i + 0];\n        }\n        rimg.data[i + 3] = 255;\n    }\n    return rimg;\n}\nexports.unblendTrans = unblendTrans;\n/**\n * Determised wether color [rgb]m can be a result of a blend with color [rgb]1 that is p (0-1) of the mix\n * It returns the number that the second color has to lie outside of the possible color ranges\n * @param rm resulting color\n * @param r1 first color of the mix (the other color is unknown)\n * @param p the portion of the [rgb]1 in the mix (0-1)\n */\nfunction canblend(rm, gm, bm, r1, g1, b1, p) {\n    var m = Math.min(50, p / (1 - p));\n    var r = rm + (rm - r1) * m;\n    var g = gm + (gm - g1) * m;\n    var b = bm + (bm - b1) * m;\n    return Math.max(0, -r, -g, -b, r - 255, g - 255, b - 255);\n}\nexports.canblend = canblend;\n/**\n * decomposes a color in 2 given component colors and returns the amount of each color present\n * also return a third (noise) component which is the the amount leftover orthagonal from the 2 given colors\n */\nfunction decompose2col(rp, gp, bp, r1, g1, b1, r2, g2, b2) {\n    //get the normal of the error (cross-product of both colors)\n    var r3 = g1 * b2 - g2 * b1;\n    var g3 = b1 * r2 - b2 * r1;\n    var b3 = r1 * g2 - r2 * g1;\n    //normalize to length 255\n    var norm = 255 / Math.sqrt(r3 * r3 + g3 * g3 + b3 * b3);\n    r3 *= norm;\n    g3 *= norm;\n    b3 *= norm;\n    return decompose3col(rp, gp, bp, r1, g1, b1, r2, g2, b2, r3, g3, b3);\n}\nexports.decompose2col = decompose2col;\n/**\n * decomposes a pixel in a given color component and black and returns what proportion of the second color it contains\n * this is not as formal as decompose 2/3 and only give a \"good enough\" number\n */\nfunction decomposeblack(rp, gp, bp, r1, g1, b1) {\n    var dr = Math.abs(rp - r1);\n    var dg = Math.abs(gp - g1);\n    var db = Math.abs(bp - b1);\n    var maxdif = Math.max(dr, dg, db);\n    return [1 - maxdif / 255];\n}\nexports.decomposeblack = decomposeblack;\n/**\n * decomposes a color in 3 given component colors and returns the amount of each color present\n */\nfunction decompose3col(rp, gp, bp, r1, g1, b1, r2, g2, b2, r3, g3, b3) {\n    //P=x*C1+y*C2+z*C3\n    //assemble as matrix \n    //M*w=p\n    //get inverse of M\n    //dirty written out version of cramer's rule\n    var A = g2 * b3 - b2 * g3;\n    var B = g3 * b1 - b3 * g1;\n    var C = g1 * b2 - b1 * g2;\n    var D = b2 * r3 - r2 * b3;\n    var E = b3 * r1 - r3 * b1;\n    var F = b1 * r2 - r1 * b2;\n    var G = r2 * g3 - g2 * r3;\n    var H = r3 * g1 - g3 * r1;\n    var I = r1 * g2 - g1 * r2;\n    var det = r1 * A + g1 * D + b1 * G;\n    //M^-1*p=w\n    var x = (A * rp + D * gp + G * bp) / det;\n    var y = (B * rp + E * gp + H * bp) / det;\n    var z = (C * rp + F * gp + I * bp) / det;\n    return [x, y, z];\n}\nexports.decompose3col = decompose3col;\n/**\n * brute force to the exact position of the text\n */\nfunction findChar(buffer, font, col, x, y, w, h) {\n    if (x < 0) {\n        return null;\n    }\n    if (y - font.basey < 0) {\n        return null;\n    }\n    if (x + w + font.width > buffer.width) {\n        return null;\n    }\n    if (y + h - font.basey + font.height > buffer.height) {\n        return null;\n    }\n    var best = 1000; //TODO finetune score constants\n    var bestchar = null;\n    for (var cx = x; cx < x + w; cx++) {\n        for (var cy = y; cy < y + h; cy++) {\n            var chr = readChar(buffer, font, col, cx, cy, false, false);\n            if (chr != null && chr.sizescore < best) {\n                best = chr.sizescore;\n                bestchar = chr;\n            }\n        }\n    }\n    return bestchar;\n}\nexports.findChar = findChar;\n/**\n * reads text with unknown exact coord or color. The given coord should be inside the text\n * color selection not implemented yet\n */\nfunction findReadLine(buffer, font, cols, x, y, w = -1, h = -1) {\n    if (w == -1) {\n        w = font.width + font.spacewidth;\n        x -= Math.ceil(w / 2);\n    }\n    if (h == -1) {\n        h = 7;\n        y -= 1;\n    }\n    var chr = null;\n    if (cols.length > 1) {\n        //TODO use getChatColor() instead for non-mono?\n        var sorted = GetChatColorMono(buffer, new base_1.Rect(x, y - font.basey, w, h), cols);\n        //loop until we have a match (max 2 cols)\n        for (var a = 0; a < 2 && a < sorted.length && chr == null; a++) {\n            chr = findChar(buffer, font, sorted[a].col, x, y, w, h);\n        }\n    }\n    else {\n        chr = findChar(buffer, font, cols[0], x, y, w, h);\n    }\n    if (chr == null) {\n        return { debugArea: { x, y, w, h }, text: \"\", fragments: [] };\n    }\n    return readLine(buffer, font, cols, chr.x, chr.y, true, true);\n}\nexports.findReadLine = findReadLine;\nfunction GetChatColorMono(buf, rect, colors) {\n    var colormap = colors.map(c => ({ col: c, score: 0 }));\n    if (rect.x < 0 || rect.y < 0 || rect.x + rect.width > buf.width || rect.y + rect.height > buf.height) {\n        return colormap;\n    }\n    var data = buf.data;\n    var maxd = 50;\n    for (var colobj of colormap) {\n        var score = 0;\n        var col = colobj.col;\n        for (var y = rect.y; y < rect.y + rect.height; y++) {\n            for (var x = rect.x; x < rect.x + rect.width; x++) {\n                var i = x * 4 + y * 4 * buf.width;\n                var d = Math.abs(data[i] - col[0]) + Math.abs(data[i + 1] - col[1]) + Math.abs(data[i + 2] - col[2]);\n                if (d < maxd) {\n                    score += maxd - d;\n                }\n            }\n        }\n        colobj.score = score;\n    }\n    return colormap.sort((a, b) => b.score - a.score);\n}\nexports.GetChatColorMono = GetChatColorMono;\nfunction unblend(r, g, b, R, G, B) {\n    var m = Math.sqrt(r * r + g * g + b * b);\n    var n = Math.sqrt(R * R + G * G + B * B);\n    var x = (r * R + g * G + b * B) / n;\n    var y = Math.sqrt(Math.max(0, m * m - x * x));\n    var r1 = Math.max(0, (63.75 - y) * 4);\n    var r2 = x / n * 255;\n    if (r2 > 255) //brighter than refcol\n     {\n        r1 = Math.max(0, r1 - r2 + 255);\n        r2 = 255;\n    }\n    return [r1, r2];\n}\nfunction getChatColor(buf, rect, colors) {\n    var bestscore = -1.0;\n    var best = null;\n    var b2 = 0.0;\n    var data = buf.data;\n    for (let col of colors) {\n        var score = 0.0;\n        for (var y = rect.y; y < rect.y + rect.height; y++) {\n            for (var x = rect.x; x < rect.x + rect.width; x++) {\n                if (x < 0 || x + 1 >= buf.width) {\n                    continue;\n                }\n                if (y < 0 || y + 1 >= buf.width) {\n                    continue;\n                }\n                let i1 = buf.pixelOffset(x, y);\n                let i2 = buf.pixelOffset(x + 1, y + 1);\n                var pixel1 = unblend(data[i1 + 0], data[i1 + 1], data[i1 + 2], col[0], col[1], col[2]);\n                var pixel2 = unblend(data[i2 + 0], data[i2 + 1], data[i2 + 2], col[0], col[1], col[2]);\n                //TODO this is from c# can simplify a bit\n                var s = (pixel1[0] / 255 * pixel1[1] / 255) * (pixel2[0] / 255 * (255.0 - pixel2[1]) / 255);\n                score += s;\n            }\n        }\n        if (score > bestscore) {\n            b2 = bestscore;\n            bestscore = score;\n            best = col;\n        }\n        else if (score > b2) {\n            b2 = score;\n        }\n    }\n    //Console.WriteLine(\"color: \" + bestcol + \" - \" + (bestscore - b2));\n    //bestscore /= rect.width * rect.height;\n    return best;\n}\nexports.getChatColor = getChatColor;\n/**\n * reads a line of text with exactly known position and color. y should be the y coord of the text base line, x should be the first pixel of a new character\n */\nfunction readLine(buffer, font, colors, x, y, forward, backward = false) {\n    if (typeof colors[0] != \"number\" && colors.length == 1) {\n        colors = colors[0];\n    }\n    var multicol = typeof colors[0] != \"number\";\n    var allcolors = multicol ? colors : [colors];\n    var detectcolor = function (sx, sy, backward) {\n        var w = Math.floor(font.width * 1.5);\n        if (backward) {\n            sx -= w;\n        }\n        sy -= font.basey;\n        return getChatColor(buffer, { x: sx, y: sy, width: w, height: font.height }, allcolors);\n    };\n    var fragments = [];\n    var x1 = x;\n    var x2 = x;\n    var maxspaces = (typeof font.maxspaces == \"number\" ? font.maxspaces : 1);\n    let fragtext = \"\";\n    let fraghadprimary = false;\n    var lastcol = null;\n    let addfrag = (forward) => {\n        if (!fragtext) {\n            return;\n        }\n        let frag = {\n            text: fragtext,\n            color: lastcol,\n            index: 0,\n            xstart: x + (forward ? fragstartdx : fragenddx),\n            xend: x + (forward ? fragenddx : fragstartdx)\n        };\n        if (forward) {\n            fragments.push(frag);\n        }\n        else {\n            fragments.unshift(frag);\n        }\n        fragtext = \"\";\n        fragstartdx = dx;\n        fraghadprimary = false;\n    };\n    for (var dirforward of [true, false]) {\n        //init vars\n        if (dirforward && !forward) {\n            continue;\n        }\n        if (!dirforward && !backward) {\n            continue;\n        }\n        var dx = 0;\n        var fragstartdx = dx;\n        var fragenddx = dx;\n        var triedspaces = 0;\n        var triedrecol = false;\n        var col = multicol ? null : colors;\n        while (true) {\n            col = col || detectcolor(x + dx, y, !dirforward);\n            var chr = (col ? readChar(buffer, font, col, x + dx, y, !dirforward, true) : null);\n            if (col == null || chr == null) {\n                if (triedspaces < maxspaces) {\n                    dx += (dirforward ? 1 : -1) * font.spacewidth;\n                    triedspaces++;\n                    continue;\n                }\n                if (multicol && !triedrecol && fraghadprimary) {\n                    dx -= (dirforward ? 1 : -1) * triedspaces * font.spacewidth;\n                    triedspaces = 0;\n                    col = null;\n                    triedrecol = true;\n                    continue;\n                }\n                if (dirforward) {\n                    x2 = x + dx - font.spacewidth;\n                }\n                else {\n                    x1 = x + dx + font.spacewidth;\n                }\n                break;\n            }\n            else {\n                if (lastcol && (col[0] != lastcol[0] || col[1] != lastcol[1] || col[2] != lastcol[2])) {\n                    addfrag(dirforward);\n                }\n                var spaces = \"\";\n                for (var a = 0; a < triedspaces; a++) {\n                    spaces += \" \";\n                }\n                if (dirforward) {\n                    fragtext += spaces + chr.chr;\n                }\n                else {\n                    fragtext = chr.chr + spaces + fragtext;\n                }\n                if (!chr.basechar.secondary) {\n                    fraghadprimary = true;\n                }\n                triedspaces = 0;\n                triedrecol = false;\n                dx += (dirforward ? 1 : -1) * chr.basechar.width;\n                fragenddx = dx;\n                lastcol = col;\n            }\n        }\n        if (lastcol && fraghadprimary) {\n            addfrag(dirforward);\n        }\n    }\n    fragments.forEach((f, i) => f.index = i);\n    return {\n        debugArea: { x: x1, y: y - 9, w: x2 - x1, h: 10 },\n        text: fragments.map(f => f.text).join(\"\"),\n        fragments\n    };\n}\nexports.readLine = readLine;\n/**\n * Reads a line of text that uses a smallcaps font, these fonts can have duplicate chars that only have a different amount of\n * empty space after the char before the next char starts.\n * The coordinates should be near the end of the string, or a rectangle with high 1 containing all points where the string can end.\n */\nfunction readSmallCapsBackwards(buffer, font, cols, x, y, w = -1, h = -1) {\n    if (w == -1) {\n        w = font.width + font.spacewidth;\n        x -= Math.ceil(w / 2);\n    }\n    if (h == -1) {\n        h = 7;\n        y -= 1;\n    }\n    var matchedchar = null;\n    var sorted = (cols.length == 1 ? [{ col: cols[0], score: 1 }] : GetChatColorMono(buffer, new base_1.Rect(x, y - font.basey, w, h), cols));\n    //loop until we have a match (max 2 cols)\n    for (var a = 0; a < 2 && a < sorted.length && matchedchar == null; a++) {\n        for (var cx = x + w - 1; cx >= x; cx--) {\n            var best = 1000; //TODO finetune score constants\n            var bestchar = null;\n            for (var cy = y; cy < y + h; cy++) {\n                var chr = readChar(buffer, font, sorted[a].col, cx, cy, true, false);\n                if (chr != null && chr.sizescore < best) {\n                    best = chr.sizescore;\n                    bestchar = chr;\n                }\n            }\n            if (bestchar) {\n                matchedchar = bestchar;\n                break;\n            }\n        }\n    }\n    if (matchedchar == null) {\n        return { text: \"\", debugArea: { x, y, w, h } };\n    }\n    return readLine(buffer, font, cols, matchedchar.x, matchedchar.y, false, true);\n}\nexports.readSmallCapsBackwards = readSmallCapsBackwards;\n/**\n * Reads a single character at the exact given location\n * @param x exact x location of the start of the character domain (includes part of the spacing between characters)\n * @param y exact y location of the baseline pixel of the character\n * @param backwards read in backwards direction, the x location should be the first pixel after the character domain in that case\n */\nfunction readChar(buffer, font, col, x, y, backwards, allowSecondary) {\n    y -= font.basey;\n    var shiftx = 0;\n    var shifty = font.basey;\n    var shadow = font.shadow;\n    var debugobj = null;\n    var debugimg = null;\n    if (exports.debug.trackread) {\n        var name = x + \";\" + y + \" \" + JSON.stringify(col);\n        if (!exports.debugout[name]) {\n            exports.debugout[name] = [];\n        }\n        debugobj = exports.debugout[name];\n    }\n    //===== make sure the full domain is inside the bitmap/buffer ======\n    if (y < 0 || y + font.height >= buffer.height) {\n        return null;\n    }\n    if (!backwards) {\n        if (x < 0 || x + font.width > buffer.width) {\n            return null;\n        }\n    }\n    else {\n        if (x - font.width < 0 || x > buffer.width) {\n            return null;\n        }\n    }\n    //====== start reading the char ======\n    var scores = [];\n    for (var chr = 0; chr < font.chars.length; chr++) {\n        var chrobj = font.chars[chr];\n        if (chrobj.secondary && !allowSecondary) {\n            continue;\n        }\n        scores[chr] = { score: 0, sizescore: 0, chr: chrobj };\n        var chrx = (backwards ? x - chrobj.width : x);\n        if (exports.debug.trackread) {\n            debugimg = new base_1.ImageData(font.width, font.height);\n        }\n        for (var a = 0; a < chrobj.pixels.length;) {\n            var i = (chrx + chrobj.pixels[a]) * 4 + (y + chrobj.pixels[a + 1]) * buffer.width * 4;\n            var penalty = 0;\n            if (!shadow) {\n                penalty = canblend(buffer.data[i], buffer.data[i + 1], buffer.data[i + 2], col[0], col[1], col[2], chrobj.pixels[a + 2] / 255);\n                a += 3;\n            }\n            else {\n                var lum = chrobj.pixels[a + 3] / 255;\n                penalty = canblend(buffer.data[i], buffer.data[i + 1], buffer.data[i + 2], col[0] * lum, col[1] * lum, col[2] * lum, chrobj.pixels[a + 2] / 255);\n                a += 4;\n            }\n            scores[chr].score += Math.max(0, penalty);\n            //TODO add compiler flag to this to remove it for performance\n            if (debugimg) {\n                debugimg.setPixel(chrobj.pixels[a], chrobj.pixels[a + 1], [penalty, penalty, penalty, 255]);\n            }\n        }\n        scores[chr].sizescore = scores[chr].score - chrobj.bonus;\n        if (debugobj) {\n            debugobj.push({ chr: chrobj.chr, score: scores[chr].sizescore, rawscore: scores[chr].score, img: debugimg });\n        }\n    }\n    scores.sort((a, b) => a.sizescore - b.sizescore);\n    if (exports.debug.printcharscores) {\n        scores.slice(0, 5).forEach(q => console.log(q.chr.chr, q.score.toFixed(3), q.sizescore.toFixed(3)));\n    }\n    var winchr = scores[0];\n    if (!winchr || winchr.score > 400) {\n        return null;\n    }\n    return { chr: winchr.chr.chr, basechar: winchr.chr, x: x + shiftx, y: y + shifty, score: winchr.score, sizescore: winchr.sizescore };\n}\nexports.readChar = readChar;\n/**\n * Generates a font json description to use in reader functions\n * @param unblended A source image with all characters lined up. The image should be unblended into components using the unblend functions\n * The lowest pixel line of this image is used to mark the location and size of the charecters if the red component is 255 it means there is a character on that pixel column\n * @param chars A string containing all the characters of the image in the same order\n * @param seconds A string with characters that are considered unlikely and should only be detected if no other character is possible.\n * For example the period (.) character matches positive inside many other characters and should be marked as secondary\n * @param bonusses An object that contains bonus scores for certain difficult characters to make the more likely to be red.\n * @param basey The y position of the baseline pixel of the font\n * @param spacewidth the number of pixels a space takes\n * @param treshold minimal color match proportion (0-1) before a pixel is used for the font\n * @param shadow whether this font also uses the black shadow some fonts have. The \"unblended\" image should be unblended correspondingly\n * @returns a javascript object describing the font which is used as input for the different read functions\n */\nfunction generatefont(unblended, chars, seconds, bonusses, basey, spacewidth, treshold, shadow) {\n    //settings vars\n    treshold *= 255;\n    //initial vars\n    var miny = unblended.height - 1;\n    var maxy = 0;\n    var font = { chars: [], width: 0, spacewidth: spacewidth, shadow: shadow, height: 0, basey: 0 };\n    var ds = false;\n    var chardata = [];\n    //index all chars\n    for (var dx = 0; dx < unblended.width; dx++) {\n        var i = 4 * dx + 4 * unblended.width * (unblended.height - 1);\n        if (unblended.data[i] == 255 && unblended.data[i + 3] == 255) {\n            if (ds === false) {\n                ds = dx;\n            }\n        }\n        else {\n            if (ds !== false) {\n                //char found, start detection\n                var de = dx;\n                var char = chars[chardata.length];\n                var chr = {\n                    ds: ds,\n                    de: de,\n                    width: de - ds,\n                    chr: char,\n                    bonus: (bonusses && bonusses[char]) || 0,\n                    secondary: seconds.indexOf(chars[chardata.length]) != -1,\n                    pixels: []\n                };\n                chardata.push(chr);\n                font.width = Math.max(font.width, chr.width);\n                for (x = 0; x < de - ds; x++) {\n                    for (y = 0; y < unblended.height - 1; y++) {\n                        var i = (x + ds) * 4 + y * unblended.width * 4;\n                        if (unblended.data[i] >= treshold) {\n                            miny = Math.min(miny, y);\n                            maxy = Math.max(maxy, y);\n                        }\n                    }\n                }\n                ds = false;\n            }\n        }\n    }\n    font.height = maxy + 1 - miny;\n    font.basey = basey - miny;\n    //detect all pixels\n    for (var a in chardata) {\n        var chr = chardata[a];\n        for (var x = 0; x < chr.width; x++) {\n            for (var y = 0; y < maxy + 1 - miny; y++) {\n                var i = (x + chr.ds) * 4 + (y + miny) * unblended.width * 4;\n                if (unblended.data[i] >= treshold) {\n                    chr.pixels.push(x, y);\n                    chr.pixels.push(unblended.data[i]);\n                    if (shadow) {\n                        chr.pixels.push(unblended.data[i + 1]);\n                    }\n                    chr.bonus += 5;\n                }\n            }\n        }\n        //prevent js from doing the thing with unnecessary output precision\n        chr.bonus = +chr.bonus.toFixed(3);\n        font.chars.push({ width: chr.width, bonus: chr.bonus, chr: chr.chr, pixels: chr.pixels, secondary: chr.secondary });\n    }\n    return font;\n}\nexports.generatefont = generatefont;\n\n\n/***/ }),\n\n/***/ \"alt1/base\":\n/*!**************************************************************************************************!*\\\n  !*** external {\"root\":\"A1lib\",\"commonjs2\":\"alt1/base\",\"commonjs\":\"alt1/base\",\"amd\":\"alt1/base\"} ***!\n  \\**************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_alt1_base__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(\"./src/ocr/index.ts\");\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as dochandler from \"./modules/dochandler\";\nimport * as settings from \"./modules/settings\";\nimport * as slayer from \"./modules/slayer\";\nimport * as logger from \"./modules/logger\";\nimport \"./index.html\";\nimport \"./appconfig.json\";\n/* COPYRIGHT NOTICE - DO NOT REMOVE\n    2021 @ Unlishema Dragonsworn\n    I have programmed this enitre app myself; however, I must give credit where credit is due.\n    \n    The credits have been moved into their own file @ https://slayer.unlishema.org/pages/credits.html\n*/\n/*\n    ~~~ Slayer Assistant App ~~~\n    Features coming in the near future (Also my current TODO List)\n\n    ~ Before Release for Sure ~\n    Update the about page. (Will need updated again on next release)\n    Update the changelog page. (Will need updated again on next release)\n    Update the credits page. (Will need updated again on next release)\n\n    ~ Coming Next Release ~\n    Add Revo Bar to Reapers (and Assignments later on)\n    Redesign the Reaper UI (I have an idea already but wanna add Revo bar too now)\n\n    Add ability to load the database through a php file instead of the json (Done, except for reapers.json)\n    - Add other features to the database query php even if the app don't use them yet (Coming in the future)\n    -- Example: http://slayer.unlishema.org/data/creatures.php?q=Dragon&l=10\n    -- l=100 could limit results, d could have it give extra details, q could also be setup for seaching, and so on\n\n    ~ Coming Very Soon Maybe even next Release ~\n    Add in a status tracking area to keep track of xp/hr, kills/hr, and more (Needs finished)\n    Adjust histories to use sessionStorage (Is this needed, It is only for navigating back and forth now)\n\n    ~ Near future Release ~\n    Add support for Ushubti\n\n    ~ Settings Still needed for the app ~\n    Settings:\n    - Ability to toggle on and off Debug and Verbose mode\n\n    - Ability to select default loading\n    -- Default Task(s) on open and adjust doc based on it (Done, Partially)\n    -- Load previous task(s) and adjust doc based on it\n\n    - Ability to select defaults for everything (Later On)\n    -- Select default creature per task\n    -- Select default variant per creature\n\n    - Ability to customize the Look N Feel of the Slayer Assistant UI (Style added just need color selectors later on now)\n    - Ability to select the type of search algo for the app (Maybe Later On)\n*/\nif (window.alt1)\n    alt1.identifyAppUrl(\"./appconfig.json\");\n// Initialize the JavaScript for the app\ndocument.addEventListener(\"DOMContentLoaded\", function () { return __awaiter(void 0, void 0, void 0, function () {\n    var url, error_1;\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0:\n                _a.trys.push([0, 3, , 4]);\n                url = new URL(window.location.href);\n                if (!url.searchParams.has(\"cache_bust\")) {\n                    url.searchParams.set(\"cache_bust\", \"\".concat(Date.now()));\n                    window.location.href = url.toString();\n                }\n                // Setup the main document and load assignment index\n                return [4 /*yield*/, dochandler.main.setup.documentMain()];\n            case 1:\n                // Setup the main document and load assignment index\n                _a.sent();\n                // Run the Config Setup Process\n                return [4 /*yield*/, settings.controller.load()];\n            case 2:\n                // Run the Config Setup Process\n                _a.sent();\n                // Start the capture loop at the configured interval\n                setInterval(function () {\n                    slayer.findTask();\n                }, settings.controller.autoCapture.loopTimer);\n                return [3 /*break*/, 4];\n            case 3:\n                error_1 = _a.sent();\n                logger.error(\"Initialization error:\", error_1);\n                return [3 /*break*/, 4];\n            case 4: return [2 /*return*/];\n        }\n    });\n}); });\n// Save settings before closing the app\ndocument.addEventListener(\"beforeunload\", function () { return __awaiter(void 0, void 0, void 0, function () {\n    var error_2;\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0:\n                _a.trys.push([0, 2, , 3]);\n                return [4 /*yield*/, settings.controller.save()];\n            case 1:\n                _a.sent();\n                return [3 /*break*/, 3];\n            case 2:\n                error_2 = _a.sent();\n                logger.error(\"Error saving settings:\", error_2);\n                return [3 /*break*/, 3];\n            case 3: return [2 /*return*/];\n        }\n    });\n}); });\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"main.js","mappings":"AAAA;AACA;AACA,2EAA2E,MAAM,2BAA2B,aAAa,qDAAqD,MAAM,4BAA4B,aAAa,qDAAqD,MAAM,qCAAqC,aAAa;AAC1U;AACA;AACA;AACA,uFAAuF,MAAM,2BAA2B,aAAa,qDAAqD,MAAM,4BAA4B,aAAa,qDAAqD,MAAM,qCAAqC,aAAa;AACtV;AACA;AACA,CAAC;AACD,O;;;;;;;;;ACVA,eAAe,6FAAgC;;;;;;;;;;ACA/C,eAAe,6FAAgC;;;;;;;;;;ACA/C,eAAe,6FAAgC;;;;;;;;;;ACA/C,eAAe,6FAAgC;;;;;;;;;;ACA/C,eAAe,6FAAgC;;;;;;;;;;ACA/C,eAAe,6FAAgC;;;;;;;;;;ACA/C,eAAe,6FAAgC;;;;;;;;;;ACA/C,eAAe,6FAAgC;;;;;;;;;;;;;;;;ACA/C,iBAAiB,SAAI,IAAI,SAAI;AAC7B,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,6IAA6I,cAAc;AAC3J,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,wCAAwC,oBAAoB;AAC5D;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;AACA,kDAAkD,gBAAgB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,gBAAgB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,gBAAgB;AAC7F;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,iGAAiG;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC0B;;;;;;;;;;;;;;;;;;;;;;;ACtN3B,iBAAiB,SAAI,IAAI,SAAI;AAC7B,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,6IAA6I,cAAc;AAC3J,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wC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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC,sBAAsB;AAChB;AACP;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,0DAA4B;AAC7E;AACA;AACA,6CAA6C,0DAA4B;AACzE;AACA;AACA;AACA;AACA,4BAA4B,6CAAe,cAAc,uCAAuC;AAChG;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,0DAA4B;AAC7E;AACA;AACA;AACA;AACA,4BAA4B,6CAAe,cAAc,+BAA+B;AACxF;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,sDAAwB;AACzE;AACA;AACA;AACA;AACA,4BAA4B,6CAAe,cAAc,+BAA+B;AACxF;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,mDAAqB;AAClE;AACA;AACA;AACA;AACA,4BAA4B,6CAAe,cAAc,iCAAiC;AAC1F;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ,iDAAmB,kFAAkF;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iDAAmB;AAC3B,QAAQ,oDAAsB;AAC9B;AACA;AACA,CAAC,kBAAkB;AACZ;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uDAAoB;AACrE;AACA;AACA,6CAA6C,4DAAwB;AACrE;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,gDAAkB,KAAK;AAC5F;AACA;AACA,oBAAoB,oDAAsB;AAC1C;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA,iBAAiB;AACjB;AACA;AA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AAe;AACzJ,wBAAwB,iDAAmB,wEAAwE,OAAO,2DAA6B,MAAM;AAC7J,wBAAwB,iDAAmB,iEAAiE,OAAO,wDAA0B,MAAM;AACnJ,wBAAwB,iDAAmB,gEAAgE,OAAO,uDAAyB,MAAM;AACjJ;AACA;AACA,wCAAwC,iDAAmB;AAC3D,4BAA4B,iDAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iDAAmB;AACzD;AACA,oIAAoI,kBAAkB;AACtJ;AACA;AACA,sCAAsC,iDAAmB;AACzD;AACA,gFAAgF,+EAA+E;AAC/J;AACA;AACA,0CAA0C,iDAAmB;AAC7D;AACA,gFAAgF,OAAO,gDAAkB,sBAAsB;AAC/H;AACA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,0BAA0B,iDAAmB;AAC7C,4BAA4B,iDAAmB;AAC/C,+BAA+B,iDAAmB;AAClD,YAAY,iDAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB;AAChB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iDAAmB;AAC1D,6CAA6C,iDAAmB;AAChE,6CAA6C,iDAAmB;AAChE;AACA;AACA;AACA,4BAA4B,iDAAmB;AAC/C;AACA;AACA,4BAA4B,iDAAmB;AAC/C;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC,wBAAwB;;;;;;;;;;;;;;;;;;;;;;AC1uBmB;AACJ;AACJ;AACpC;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,IAAI,yCAAW;AACf;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,QAAQ,iDAAmB;AAC3B,QAAQ,oDAAsB;AAC9B,QAAQ,yCAAW;AACnB;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA,mBAAmB,gDAAkB;AACrC,mBAAmB,iDAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gDAAkB;AACrC,uBAAuB,iDAAmB;AAC1C,sBAAsB,iDAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gDAAkB;AACrC,qBAAqB,iDAAmB;AACxC;AACA;AACA;AACA;AACA,CAAC,oBAAoB;;;;;;;;;;;;;;;;;;;;;ACnEuB;AACJ;AACxC;AACO;AACP,QAAQ,iDAAmB;AAC3B;AACA,eAAe,gDAAkB;AACjC,IAAI,iDAAmB;AACvB;AACA;AACO;AACP,QAAQ,iDAAmB;AAC3B;AACA,eAAe,gDAAkB;AACjC,IAAI,iDAAmB;AACvB;AACA;AACO;AACP;AACA,QAAQ,iDAAmB;AAC3B;AACA,eAAe,gDAAkB;AACjC,6BAA6B,iDAAmB;AAChD;AACA;AACA;AACA;AACA;AACO;AACP;AACA,QAAQ,iDAAmB;AAC3B;AACA,eAAe,gDAAkB;AACjC,gCAAgC,iDAAmB;AACnD;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACrCA;AACO;AACP;AACA,yCAAyC;AACzC;AACA,yCAAyC;AACzC,0CAA0C,EAAE;AAC5C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,oCAAoC,oBAAoB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,aAAa;AACb;AACA;AACO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA,wCAAwC;AACxC;AACA;AACO;AACP;AACA;AACA,4CAA4C;AAC5C;AACA;AACO;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AClFA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,6IAA6I,cAAc;AAC3J,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AAC2C;AACR;AACO;AACP;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,+DAA+D,+BAA+B;AAC9F;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yCAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yCAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yCAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mIAAmI,kBAAkB;AACrJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mDAAU;AAClC,wBAAwB,mDAAU;AAClC,wBAAwB,mDAAU;AAClC,wBAAwB,mDAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,4BAA4B,iDAAmB;AAC/C;AACA,6CAA6C,iDAAQ,UAAU,8DAA8D,IAAI,8DAA8D;AAC/L;AACA;AACA;AACA;AACA;AACA,6CAA6C,iDAAQ,UAAU,8DAA8D;AAC7H;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wCAAU;AAC1B;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACiC;AAC3B;AACP;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yCAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mDAAU;AAClB,QAAQ,mDAAU;AAClB,QAAQ,mDAAU;AAClB,QAAQ,mDAAU;AAClB;AACA,QAAQ,yCAAW;AACnB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yCAAW;AACnB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yCAAW;AACnB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA,YAAY,iDAAQ;AACpB;AACA;AACA;AACA,CAAC,wBAAwB;AAClB;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA,oBAAoB,wCAAU;AAC9B;AACA;AACA;AACA;AACA,oBAAoB,wCAAU;AAC9B;AACA;AACA;AACA,oBAAoB,6CAAe;AACnC;AACA;AACA;AACA,oBAAoB,+CAAiB;AACrC;AACA;AACA;AACA,yCAAyC,kDAAoB;AAC7D;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC,wBAAwB,wCAAU;AAClC,wBAAwB,wCAAU;AAClC,wBAAwB,wCAAU;AAClC,wBAAwB,wCAAU;AAClC;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA;AACA,yCAAyC,iDAAmB;AAC5D;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC,wBAAwB,wCAAU;AAClC,wBAAwB,wCAAU;AAClC;AACA,4BAA4B,wCAAU,0BAA0B,eAAe;AAC/E;AACA;AACA,4BAA4B,wCAAU,yBAAyB,eAAe;AAC9E;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC,8BAA8B,iDAAmB;AACjD;AACA,4BAA4B,wCAAU;AACtC;AACA;AACA,8BAA8B,iDAAmB;AACjD;AACA,4BAA4B,wCAAU;AACtC;AACA;AACA;AACA,4BAA4B,wCAAU;AACtC;AACA,4BAA4B,wCAAU;AACtC;AACA,4BAA4B,wCAAU;AACtC,kEAAkE,gBAAgB;AAClF;AACA,gCAAgC,wCAAU;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,0CAAY;AAChC;AACA;AACA,oBAAoB,wCAAU;AAC9B;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3gBA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,6IAA6I,cAAc;AAC3J,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AAC8B;AACsB;AACM;AACN;AACb;AACI;AACR;AACnC;AACO,qBAAqB,6DAAe;AACpC,uBAAuB,mEAAkB;AACzC,wBAAwB,6DAAe;AACvC;AACP;AACA,4BAA4B,oCAAoC,6BAA6B;AAC7F;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA,eAAe,mDAAuB;AACtC;AACA;AACA;AACA,YAAY,yCAAW;AACvB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yBAAyB,iDAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAA8B;AAClD;AACA;AACA;AACA;AACA,oBAAoB,wDAA0B;AAC9C;AACA,oBAAoB,iDAAmB;AACvC,oBAAoB,4DAA8B;AAClD,+CAA+C,iDAAmB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iDAAmB,UAAU,sDAAsD;AAC5H;AACA;AACA;AACA;AACA;AACA,yCAAyC,iDAAmB,UAAU,sDAAsD,IAAI,sDAAsD;AACtL;AACA;AACA;AACA,6CAA6C,iDAAmB,UAAU,sDAAsD;AAChI;AACA;AACA;AACA;AACA,oBAAoB,4DAA8B;AAClD,+CAA+C,iDAAmB;AAClE;AACA;AACA;AACA;AACA;AACA,yBAAyB,iDAAmB;AAC5C;AACA;AACA;AACA;AACA,oBAAoB,wDAA0B;AAC9C,iDAAiD,0DAA4B;AAC7E,yCAAyC,iDAAmB,UAAU,kDAAkD;AACxH;AACA;AACA;AACA;AACA,kDAAkD,0DAA4B;AAC9E,yCAAyC,iDAAmB,UAAU,kDAAkD;AACxH;AACA;AACA;AACA;AACA,oBAAoB,4DAA8B;AAClD,+CAA+C,iDAAmB;AAClE;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAA8B;AAClD;AACA;AACA;AACA;AACA,oBAAoB,4DAA8B;AAClD;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iDAAmB;AAC5D;AACA;AACA;AACA;AACA,oBAAoB,mDAAqB;AACzC,iEAAiE,iDAAmB;AACpF;AACA,oBAAoB,oDAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sDAAwB;AAChD;AACA;AACA;AACA,wBAAwB,iDAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA,oBAAoB,oDAAsB;AAC1C,oBAAoB,wCAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wCAAU;AAClC,qCAAqC,sCAAsC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iDAAmB,UAAU,+BAA+B,IAAI,+BAA+B;AACxI;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iDAAmB,UAAU,+BAA+B;AACrG;AACA;AACA;AACA,8CAA8C,iDAAmB,UAAU,+BAA+B;AAC1G;AACA;AACA;AACA;AACA,oBAAoB,4DAA8B;AAClD,yBAAyB,iDAAmB;AAC5C,+CAA+C,iDAAmB;AAClE;AACA;AACA;AACA,oBAAoB,oDAAsB;AAC1C;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1PA,gEAAgE,kDAAkD,6BAA6B;;AAE/I;;;;;;;;;;;ACFA,yEAAyE,2DAA2D,6BAA6B;;AAEjK;;;;;;;;;;;ACFA,+DAA+D,iDAAiD,6BAA6B;;AAE7I;;;;;;;;;;ACFA;AACA,IAAI,IAAyD;AAC7D,2EAA2E,MAAM,OAAO,mBAAO,CAAC,oBAAO,KAAK,aAAa,qDAAqD,MAAM,OAAO,mBAAO,CAAC,sBAAQ,KAAK,aAAa,qDAAqD,MAAM,OAAO,mBAAO,CAAC,wCAAiB,KAAK,aAAa;AAC1U,MAAM,EAK4E;AAClF,CAAC;AACD,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,gDAAgD,aAAa;;;AAG7D,OAAO;;AAEP;AACA;AACA;AACA;AACA;;;AAGA,gDAAgD,aAAa;;;AAG7D,OAAO;;AAEP;AACA;AACA;AACA;AACA,kDAAkD,+BAAmB;;;AAGrE;AACA;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,aAAa;AAC7D;AACA,2BAA2B,+BAAmB;AAC9C,iCAAiC,+BAAmB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,IAAI;AACJ;AACA,iEAAiE,+BAAmB,oBAAoB,+BAAmB;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yBAAyB;AAClD,6BAA6B,0BAA0B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA;AACA;AACA,kDAAkD,gCAAmB;;;AAGrE;AACA;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,aAAa;AAC7D;AACA,iBAAiB,gCAAmB;AACpC,4BAA4B,gCAAmB;AAC/C,iCAAiC,gCAAmB;AACpD,WAAW,gCAAmB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,SAAS;AACT;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,qBAAqB;AACrB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC,wBAAwB,kBAAkB;AAC1C;AACA;AACA,iCAAiC,YAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B,gCAAgC,SAAS;AACzC,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC,yBAAyB,qBAAqB;AAC9C,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C,yBAAyB,sBAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,YAAY,WAAW;AACjF;AACA;AACA;AACA,qDAAqD,iBAAiB,WAAW;AACjF,yCAAyC,iDAAiD;AAC1F,0CAA0C,mCAAmC;AAC7E,sCAAsC,+BAA+B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA;AACA;AACA,0CAA0C,gCAAmB;;;AAG7D,gDAAgD,aAAa;AAC7D;AACA,gBAAgB,gCAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA;AACA;AACA,kDAAkD,gCAAmB;;;AAGrE;AACA;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,gDAAgD,aAAa;AAC7D;AACA,gCAAmB;AACnB,mCAAmC,gCAAmB;AACtD,kCAAkC,gCAAmB;AACrD,aAAa,gCAAmB;AAChC,0CAA0C,qCAAqC,2CAA2C;AAC1H,6BAA6B,gCAAmB;AAChD,+CAA+C,qCAAqC,4CAA4C;AAChI,oCAAoC,gCAAmB;AACvD,aAAa,gCAAmB;AAChC,aAAa,gCAAmB;AAChC,oBAAoB,gCAAmB;AACvC,mDAAmD,qCAAqC,uCAAuC;AAC/H,kDAAkD,qCAAqC,sCAAsC;AAC7H,mDAAmD,qCAAqC,uCAAuC;AAC/H,mDAAmD,qCAAqC,uCAAuC;AAC/H,kDAAkD,qCAAqC,sCAAsC;;;AAG7H,OAAO;;AAEP;AACA;AACA;AACA;AACA,0CAA0C,gCAAmB;;;AAG7D;AACA;AACA,gDAAgD,aAAa;AAC7D;AACA,gBAAgB,gCAAmB;AACnC,sBAAsB,gCAAmB;AACzC;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gCAAmB,kDAAkD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gCAAmB,oDAAoD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gCAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,sCAAsC;AACrG;AACA;AACA;AACA,wDAAwD,OAAO,qDAAqD;AACpH;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,0BAA0B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA;AACA;AACA,kDAAkD,gCAAmB;;;AAGrE;AACA;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,aAAa;AAC7D;AACA,gBAAgB,gCAAmB;AACnC,iCAAiC,gCAAmB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4BAA4B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,0BAA0B;AACpC,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kCAAkC,OAAO;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,mBAAmB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,aAAa;AACpD;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,8BAA8B,kBAAkB;AAChD;AACA;AACA,gDAAgD,aAAa;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA;AACA;AACA,kDAAkD,gCAAmB;;;AAGrE;AACA,6CAA6C;AAC7C;AACA,gDAAgD,aAAa;AAC7D;AACA,+BAA+B,gCAAmB;AAClD,iBAAiB,gCAAmB;AACpC,+BAA+B,gCAAmB;AAClD,gCAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B,wBAAwB,OAAO;AAC/B;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,aAAa;AAClC,yBAAyB,aAAa;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mHAAmH,WAAW,2BAA2B;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA,4GAA4G,yCAAyC;AACrJ;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,yCAAyC;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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CpC,qBAAqB,gCAAmB;AACxC,WAAW,gCAAmB;AAC9B,WAAW,gCAAmB;AAC9B,CAAC;AACD,eAAe,gCAAmB;AAClC,gBAAgB,gCAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,QAAQ,0BAA0B;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA,8BAA8B,SAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mDAAmD;AAC3E;AACA;AACA;AACA,wBAAwB,kDAAkD;AAC1E;AACA;AACA;AACA,wBAAwB,kDAAkD;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;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AAiW,EAAE,qSAAqS,EAAE,qPAAqP,EAAE,qOAAqO,EAAE,8PAA8P,EAAE,6MAA6M,EAAE,0UAA0U,EAAE,qPAAqP,EAAE,oNAAoN,EAAE,qOAAqO,EAAE,6BAA6B,uGAAuG,EAAE,6JAA6J,EAAE,6BAA6B,uGAAuG,EAAE,4GAA4G,iEAAiE;;AAEvuoB,OAAO;;AAEP,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,mBAAmB,gCAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,gCAAmB;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0BAAmB,GAAG,gCAAmB;AACvD;AACA,iBAAiB,0BAAmB;AACpC,UAAU;AACV;AACA,CAAC;;;;;;;;;;AC7eD;AACA,IAAI,IAAyD;AAC7D,2BAA2B,mBAAO,CAAC,0DAAW;AAC9C,MAAM,EAKiC;AACvC,CAAC;AACD,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAA0C,8BAAmB;;;AAG7D,gDAAgD,aAAa;AAC7D;AACA,eAAe,8BAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB,YAAY;AACjC,yBAAyB,YAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2CAA2C;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa,YAAY;AAC1C;AACA;AACA;AACA;AACA;AACA,sCAAsC,kBAAkB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0BAA0B;AACvD,iCAAiC,yBAAyB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0BAA0B;AACvD,iCAAiC,yBAAyB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6CAA6C;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oCAAoC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,wBAAwB;AAChE;AACA,oBAAoB,mDAAmD;AACvE,iCAAiC,SAAS;AAC1C,6BAA6B;AAC7B;AACA,6BAA6B,YAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yBAAyB;AAC/C;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2FAA2F;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC,gCAAgC,0BAA0B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gGAAgG;AAC1H;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA,iBAAiB,iFAAiF;AAClG;AACA;;AAEA;;AAEA,OAAO;;AAEP,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,mBAAmB,gCAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,gCAAmB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0BAAmB,GAAG,gCAAmB;AACvD;AACA,iBAAiB,0BAAmB;AACpC,UAAU;AACV;AACA,CAAC;;;;;;UCrsBD;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;;;;;;;;;;;;;;AClBA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,6IAA6I,cAAc;AAC3J,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AACmD;AACJ;AACJ;AACA;AACrB;AACI;AAC1B;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2DAAqB;AAC1D;AACA;AACA;AACA;AACA,qCAAqC,yDAAmB;AACxD;AACA;AACA;AACA;AACA;AACA,oBAAoB,qDAAe;AACnC,iBAAiB,EAAE,yDAAmB;AACtC;AACA;AACA;AACA,gBAAgB,kDAAY;AAC5B;AACA;AACA;AACA,KAAK;AACL,CAAC,IAAI;AACL;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA,qCAAqC,yDAAmB;AACxD;AACA;AACA;AACA;AACA;AACA,gBAAgB,kDAAY;AAC5B;AACA;AACA;AACA,KAAK;AACL,CAAC,IAAI","sources":["webpack://SlayerAssistant/webpack/universalModuleDefinition","webpack://SlayerAssistant/./images/data/reaper_collapsed_OSL.data.png","webpack://SlayerAssistant/./images/data/reaper_collapsed_RS3.data.png","webpack://SlayerAssistant/./images/data/reaper_expanded_OSL.data.png","webpack://SlayerAssistant/./images/data/reaper_expanded_RS3.data.png","webpack://SlayerAssistant/./images/data/slayer_collapsed_OSL.data.png","webpack://SlayerAssistant/./images/data/slayer_collapsed_RS3.data.png","webpack://SlayerAssistant/./images/data/slayer_expanded_OSL.data.png","webpack://SlayerAssistant/./images/data/slayer_expanded_RS3.data.png","webpack://SlayerAssistant/./modules/SearchAlgorithm.ts","webpack://SlayerAssistant/./modules/SlayerDialogReader.ts","webpack://SlayerAssistant/./modules/UICounterReader.ts","webpack://SlayerAssistant/./modules/data/assignnments.ts","webpack://SlayerAssistant/./modules/data/creatures.ts","webpack://SlayerAssistant/./modules/data/masters.ts","webpack://SlayerAssistant/./modules/data/reapers.ts","webpack://SlayerAssistant/./modules/data/variants.ts","webpack://SlayerAssistant/./modules/dochandler.ts","webpack://SlayerAssistant/./modules/dochandler/animate.ts","webpack://SlayerAssistant/./modules/dochandler/change.ts","webpack://SlayerAssistant/./modules/dochandler/hide.ts","webpack://SlayerAssistant/./modules/dochandler/hover.ts","webpack://SlayerAssistant/./modules/dochandler/main.ts","webpack://SlayerAssistant/./modules/dochandler/open.ts","webpack://SlayerAssistant/./modules/dochandler/show.ts","webpack://SlayerAssistant/./modules/extrafuncs.ts","webpack://SlayerAssistant/./modules/logger.ts","webpack://SlayerAssistant/./modules/settings.ts","webpack://SlayerAssistant/./modules/slayer.ts","webpack://SlayerAssistant/external umd \"canvas\"","webpack://SlayerAssistant/external umd \"electron/common\"","webpack://SlayerAssistant/external umd \"sharp\"","webpack://SlayerAssistant/../node_modules/alt1/dist/base/index.js","webpack://SlayerAssistant/../node_modules/alt1/dist/dialog/index.js","webpack://SlayerAssistant/../node_modules/alt1/dist/ocr/index.js","webpack://SlayerAssistant/webpack/bootstrap","webpack://SlayerAssistant/webpack/runtime/compat get default export","webpack://SlayerAssistant/webpack/runtime/define property getters","webpack://SlayerAssistant/webpack/runtime/global","webpack://SlayerAssistant/webpack/runtime/hasOwnProperty shorthand","webpack://SlayerAssistant/webpack/runtime/make namespace object","webpack://SlayerAssistant/webpack/runtime/publicPath","webpack://SlayerAssistant/./index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"sharp\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"canvas\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"electron/common\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"sharp\", \"canvas\", \"electron/common\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SlayerAssistant\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"sharp\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"canvas\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"electron/common\"); } catch(e) {} }()));\n\telse\n\t\troot[\"SlayerAssistant\"] = factory(root[\"sharp\"], root[\"canvas\"], root[\"electron/common\"]);\n})(self, (__WEBPACK_EXTERNAL_MODULE_sharp__, __WEBPACK_EXTERNAL_MODULE_canvas__, __WEBPACK_EXTERNAL_MODULE_electron_common__) => {\nreturn ","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAADcAAAAZCAYAAACVfbYAAAAVXG5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKKrnKwAAAGFbm9QRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqiMNDQAADRhub1BFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\")","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAADcAAAAZCAYAAACVfbYAAAAXKm5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQRroAAAGFbm9QRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqiMNDQAADRhub1BFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\")","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAAK8AAABLCAYAAAAGR9fhAAAa4G5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ePXqQAAAYVub1BFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqIw0NAAANGG5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\")","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAAK8AAABLCAYAAAAGR9fhAAAe825vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz2Q1aAAABhW5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKojDQ0AAA0Ybm9QRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\")","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAADcAAAAZCAYAAACVfbYAAAAXWm5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALW4o8EAAAGFbm9QRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqiMNDQAADRhub1BFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\")","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAADcAAAAZCAYAAACVfbYAAAAYyG5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgO3bMAAAGFbm9QRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqiMNDQAADRhub1BFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\")","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAAK8AAABLCAYAAAAGR9fhAAAafG5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAejEs8AAABhW5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKojDQ0AAA0Ybm9QRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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\")","module.exports=require(\"alt1/base\").ImageDetect.imageDataFromBase64(\"iVBORw0KGgoAAAANSUhEUgAAAK8AAABLCAYAAAAGR9fhAAAehm5vUEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYX5ysAAAGFbm9QRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqiMNDQAADRhub1BFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPnWe1oAAAAGbm9QRQAAAAAAAOxru9gAAAAJbm9QRQAAAAAAAAAAAKGKctUAAAAHbm9QRQAAAAAAAABa5t7QAAAQyklEQVR42u1da4wlx1X+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\")","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar SearchData = /** @class */ (function () {\n    function SearchData() {\n        this.reaper = false;\n        this.task = 'Dragons';\n        this.probability = 0;\n    }\n    return SearchData;\n}());\nexport { SearchData };\nvar SearchAlgorithm = /** @class */ (function () {\n    function SearchAlgorithm() {\n        this.assignmentsCache = {};\n        this.reapersCache = {};\n        this.data = new SearchData();\n    }\n    SearchAlgorithm.prototype.lookup = function (lookup_1) {\n        return __awaiter(this, arguments, void 0, function (lookup, skipReaper) {\n            var probabilities, reapers, assignments;\n            if (skipReaper === void 0) { skipReaper = false; }\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        probabilities = {};\n                        this.data = new SearchData();\n                        if (!!skipReaper) return [3 /*break*/, 2];\n                        return [4 /*yield*/, this.fetchData(\"reapers\")];\n                    case 1:\n                        reapers = _a.sent();\n                        this.calculateProbabilities(reapers, lookup, probabilities, true);\n                        _a.label = 2;\n                    case 2: return [4 /*yield*/, this.fetchData(\"assignments\")];\n                    case 3:\n                        assignments = _a.sent();\n                        this.calculateProbabilities(assignments, lookup, probabilities, false);\n                        // Find the best match\n                        return [2 /*return*/, this.findBestMatch(probabilities)];\n                }\n            });\n        });\n    };\n    SearchAlgorithm.prototype.fetchData = function (type) {\n        return __awaiter(this, void 0, void 0, function () {\n            var cacheKey, data, response;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        cacheKey = type === \"reapers\" ? \"reapersList\" : \"assignmentsList\";\n                        if (!(cacheKey in this[\"\".concat(type, \"Cache\")])) return [3 /*break*/, 1];\n                        data = this[\"\".concat(type, \"Cache\")][cacheKey];\n                        return [3 /*break*/, 4];\n                    case 1: return [4 /*yield*/, fetch(\"./data/\".concat(type, \".json\"))];\n                    case 2:\n                        response = _a.sent();\n                        return [4 /*yield*/, response.json()];\n                    case 3:\n                        data = _a.sent();\n                        this[\"\".concat(type, \"Cache\")][cacheKey] = data;\n                        _a.label = 4;\n                    case 4: return [2 /*return*/, data];\n                }\n            });\n        });\n    };\n    SearchAlgorithm.prototype.calculateProbabilities = function (data, lookup, probabilities, isReaper) {\n        for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n            var a = data_1[_i];\n            var indexScore = this.calculateIndexScore(a[\"index\"], lookup);\n            probabilities[a[\"index\"]] = {\n                reaper: isReaper,\n                index: indexScore,\n                alias: {},\n                creatures: {}\n            };\n            for (var _a = 0, _b = a[\"alias\"]; _a < _b.length; _a++) {\n                var b = _b[_a];\n                probabilities[a[\"index\"]].alias[b] = this.calculateIndexScore(b, lookup);\n            }\n            for (var _c = 0, _d = a[\"creatures\"]; _c < _d.length; _c++) {\n                var b = _d[_c];\n                probabilities[a[\"index\"]].creatures[b] = this.calculateIndexScore(b, lookup);\n            }\n        }\n    };\n    // Calculate index score based on matching logic\n    SearchAlgorithm.prototype.calculateIndexScore = function (index, lookup) {\n        var score = 0;\n        // Normalize input for comparison\n        var normalizedIndex = index.toLowerCase();\n        var normalizedLookup = lookup.toLowerCase();\n        // Exact matches\n        if (normalizedIndex === normalizedLookup) {\n            score += 100; // Highest score for exact matches\n        }\n        else if (normalizedIndex === normalizedLookup + 's') {\n            score += 90; // High score for plural matches\n        }\n        else if (normalizedLookup === normalizedIndex.slice(0, -1) && normalizedIndex.endsWith('s')) {\n            score += 80; // High score for singular form matches\n        }\n        else {\n            // Calculate the edit distance\n            var editDist = this.editDistance(normalizedIndex, normalizedLookup);\n            // Close matches within 3 characters\n            if (editDist <= 3) {\n                score += 40; // Boost for close matches\n            }\n            // Starts with lookup\n            if (normalizedIndex.startsWith(normalizedLookup)) {\n                score += 30; // Boost for prefix matches\n            }\n        }\n        return score;\n    };\n    SearchAlgorithm.prototype.findBestMatch = function (probabilities) {\n        for (var key in probabilities) {\n            if (probabilities[key].index > this.data.probability) {\n                this.data.task = key;\n                this.data.reaper = probabilities[key].reaper;\n                this.data.probability = probabilities[key].index;\n            }\n            this.checkAliasMatches(probabilities, key);\n            this.checkCreatureMatches(probabilities, key);\n        }\n        return this.data;\n    };\n    SearchAlgorithm.prototype.checkAliasMatches = function (probabilities, key) {\n        if (probabilities[key].alias) {\n            for (var _i = 0, _a = Object.keys(probabilities[key].alias); _i < _a.length; _i++) {\n                var aliasKey = _a[_i];\n                if (probabilities[key].alias[aliasKey] > this.data.probability) {\n                    this.data.task = key;\n                    this.data.reaper = probabilities[key].reaper;\n                    this.data.probability = probabilities[key].alias[aliasKey];\n                }\n            }\n        }\n    };\n    SearchAlgorithm.prototype.checkCreatureMatches = function (probabilities, key) {\n        if (probabilities[key].creatures) {\n            for (var _i = 0, _a = Object.keys(probabilities[key].creatures); _i < _a.length; _i++) {\n                var creatureKey = _a[_i];\n                var creatureScore = probabilities[key].creatures[creatureKey];\n                // Increase the visibility of creatures but keep them as a lower priority\n                if (this.data.probability < 10) { // Allow creatures to show up if current probability is low\n                    this.data.task = key;\n                    this.data.reaper = probabilities[key].reaper;\n                    this.data.probability = Math.max(this.data.probability, creatureScore + 20); // Add a base boost for creatures\n                }\n            }\n        }\n    };\n    SearchAlgorithm.prototype.editDistance = function (s1, s2) {\n        s1 = s1.toLowerCase();\n        s2 = s2.toLowerCase();\n        var costs = [];\n        for (var i = 0; i <= s1.length; i++) {\n            var lastValue = i;\n            for (var j = 0; j <= s2.length; j++) {\n                if (i === 0) {\n                    costs[j] = j;\n                }\n                else if (j > 0) {\n                    var newValue = costs[j - 1];\n                    if (s1.charAt(i - 1) !== s2.charAt(j - 1)) {\n                        newValue = Math.min(Math.min(newValue, lastValue), costs[j]) + 1;\n                    }\n                    costs[j - 1] = lastValue;\n                    lastValue = newValue;\n                }\n            }\n            if (i > 0) {\n                costs[s2.length] = lastValue;\n            }\n        }\n        return costs[s2.length];\n    };\n    return SearchAlgorithm;\n}());\nexport { SearchAlgorithm };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as a1lib from \"alt1\";\nimport DialogReader from 'alt1/dialog';\nimport * as extrafuncs from './extrafuncs';\nimport * as settings from \"./settings\";\nvar SlayerData = /** @class */ (function () {\n    function SlayerData() {\n        this.selectYourOwn = false;\n        this.ticket = false;\n        this.reaper = false;\n        this.count = [];\n        this.task = [];\n    }\n    return SlayerData;\n}());\nexport { SlayerData };\nvar SlayerDialogReader = /** @class */ (function () {\n    function SlayerDialogReader() {\n    }\n    SlayerDialogReader.prototype.read = function () {\n        return __awaiter(this, arguments, void 0, function (buffer) {\n            var pos, _a, r, g, b, box, msg, countText, e, countText, e, i, msg, countText;\n            if (buffer === void 0) { buffer = null; }\n            return __generator(this, function (_b) {\n                if (!buffer) {\n                    buffer = a1lib.captureHoldFullRs();\n                }\n                if (!this.dialogReader) {\n                    this.dialogReader = new DialogReader();\n                }\n                this.data = new SlayerData();\n                pos = this.dialogReader.find(buffer);\n                if (!pos)\n                    return [2 /*return*/, null];\n                // Overlay a rectangle around the matched area on screen if we're running in alt1 and setting is enabled\n                if (window.alt1 && alt1.permissionOverlay && settings.controller.ui.overlay) {\n                    _a = extrafuncs.hexToRgb(settings.controller.ui.overlayColor), r = _a[0], g = _a[1], b = _a[2];\n                    alt1.overLayRect(a1lib.mixColor(r, g, b), pos.x, pos.y, pos.width, pos.height, settings.controller.ui.overlayTimer, 3);\n                }\n                box = this.dialogReader.read(buffer);\n                if (!box)\n                    return [2 /*return*/, null];\n                if (box.text && (!box.opts || box.opts.length !== 2)) {\n                    msg = box.text.toString();\n                    // Parsing logic for various types of dialogs\n                    if (msg.toLowerCase().includes(\"select your own task\")) {\n                        this.data.selectYourOwn = true;\n                    }\n                    if (msg.toLowerCase().includes(\"require you to collect\")) {\n                        this.data.reaper = true;\n                        countText = msg.substring(msg.indexOf(\"collect \") + 8, msg.indexOf(\" souls\"));\n                        this.data.count[0] = parseInt(countText);\n                        this.data.task[0] = msg.substring(msg.indexOf(\"battle: \") + 8, msg.indexOf(\". Can\"));\n                    }\n                    if (msg.toLowerCase().includes(\"new task is to kill\")) {\n                        e = msg.substring(msg.indexOf(\"kill \") + 5, msg.length - 1);\n                        countText = e.substring(0, e.includes(\",\") ? e.indexOf(\",\") : e.indexOf(\" \"));\n                        this.data.count[0] = parseInt(countText);\n                        this.data.task[0] = e.substring((e.includes(\",\") ? e.indexOf(\",\") : e.indexOf(\" \")) + 1);\n                    }\n                    if (msg.toLowerCase().includes(\"still need to kill\")) {\n                        e = msg.substring(msg.indexOf(\"kill \") + 5);\n                        this.data.count[0] = parseInt(e.substring(0, e.indexOf(\" \")));\n                        this.data.task[0] = e.substring(e.indexOf(\" \") + 1, e.includes(\".\") ? e.indexOf(\".\") : e.length - 1);\n                    }\n                    if (msg.toLowerCase().includes(\"still hunting\")) {\n                        this.data.task[0] = msg.substring(msg.indexOf(\"hunting \") + 8, msg.indexOf(\";\"));\n                    }\n                }\n                if (box.opts && box.opts.length === 2 && (box.title && box.title.toLowerCase().includes(\"change your assigned slayer task\"))) {\n                    this.data.ticket = true;\n                    for (i = 0; i < box.opts.length; i++) {\n                        msg = box.opts[i].text;\n                        countText = msg.substring(0, msg.indexOf(' '));\n                        this.data.count[i] = parseInt(countText);\n                        this.data.task[i] = msg.substring(msg.indexOf(' ') + 1, msg.includes('(') ? msg.indexOf('(') - 1 : msg.length);\n                    }\n                }\n                return [2 /*return*/, this.data];\n            });\n        });\n    };\n    return SlayerDialogReader;\n}());\nexport { SlayerDialogReader };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as a1lib from \"alt1\";\nimport * as OCR from \"alt1/ocr\";\nimport * as extrafuncs from './extrafuncs';\nimport * as settings from \"./settings\";\nvar imgs = a1lib.webpackImages({\n    slayer_expanded_RS3: require(\"../images/data/slayer_expanded_RS3.data.png\"),\n    slayer_expanded_OSL: require(\"../images/data/slayer_expanded_OSL.data.png\"),\n    reaper_expanded_RS3: require(\"../images/data/reaper_expanded_RS3.data.png\"),\n    reaper_expanded_OSL: require(\"../images/data/reaper_expanded_OSL.data.png\"),\n    slayer_collapsed_RS3: require(\"../images/data/slayer_collapsed_RS3.data.png\"),\n    slayer_collapsed_OSL: require(\"../images/data/slayer_collapsed_OSL.data.png\"),\n    reaper_collapsed_RS3: require(\"../images/data/reaper_collapsed_RS3.data.png\"),\n    reaper_collapsed_OSL: require(\"../images/data/reaper_collapsed_OSL.data.png\"),\n});\nvar UICounterData = /** @class */ (function () {\n    function UICounterData() {\n    }\n    return UICounterData;\n}());\nexport { UICounterData };\nvar UICounterReader = /** @class */ (function () {\n    function UICounterReader() {\n        this.countFont = null;\n        this.taskFont = null;\n        this.data = null;\n    }\n    UICounterReader.prototype.read = function (buffer) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _a, _b, width, height, _i, _c, match, _d, r, g, b, countText;\n            return __generator(this, function (_e) {\n                switch (_e.label) {\n                    case 0:\n                        if (!buffer)\n                            buffer = a1lib.captureHoldFullRs();\n                        if (!!this.countFont) return [3 /*break*/, 2];\n                        _a = this;\n                        return [4 /*yield*/, fetch(require(\"../fonts/aa_10px_mono.fontmeta.json\")).then(function (r) { return r.json(); })];\n                    case 1:\n                        _a.countFont = _e.sent();\n                        _e.label = 2;\n                    case 2:\n                        if (!!this.taskFont) return [3 /*break*/, 4];\n                        _b = this;\n                        return [4 /*yield*/, fetch(require(\"../fonts/aa_8px_mono.fontmeta.json\")).then(function (r) { return r.json(); })];\n                    case 3:\n                        _b.taskFont = _e.sent();\n                        _e.label = 4;\n                    case 4:\n                        // Reset data for next search\n                        this.pos = [];\n                        this.data = null;\n                        // Look for all UI Elements until we find one, then the rest will get skipped\n                        this.findUIElement(buffer, imgs.slayer_collapsed_OSL, { reaper: false, collapsed: true, OS: true });\n                        this.findUIElement(buffer, imgs.slayer_expanded_OSL, { reaper: false, collapsed: false, OS: true });\n                        this.findUIElement(buffer, imgs.slayer_collapsed_RS3, { reaper: false, collapsed: true, OS: false });\n                        this.findUIElement(buffer, imgs.slayer_expanded_RS3, { reaper: false, collapsed: false, OS: false });\n                        this.findUIElement(buffer, imgs.reaper_collapsed_OSL, { reaper: true, collapsed: true, OS: true });\n                        this.findUIElement(buffer, imgs.reaper_expanded_OSL, { reaper: true, collapsed: false, OS: true });\n                        this.findUIElement(buffer, imgs.reaper_collapsed_RS3, { reaper: true, collapsed: true, OS: false });\n                        this.findUIElement(buffer, imgs.reaper_expanded_RS3, { reaper: true, collapsed: false, OS: false });\n                        // If we don't find any data or we found too many matches then return\n                        if (!this.data && this.pos.length == 0)\n                            return [2 /*return*/, null];\n                        width = this.data.collapsed ? imgs.slayer_collapsed_OSL.width : imgs.slayer_expanded_OSL.width;\n                        height = this.data.collapsed ? imgs.slayer_collapsed_OSL.height : imgs.slayer_expanded_OSL.height;\n                        // Loop the results and return the data we find\n                        for (_i = 0, _c = this.pos; _i < _c.length; _i++) {\n                            match = _c[_i];\n                            // Overlay a rectangle around the matched area on screen if we're running in alt1 and setting is enabled\n                            if (window.alt1 && alt1.permissionOverlay && settings.controller.ui.overlay) {\n                                _d = extrafuncs.hexToRgb(settings.controller.ui.overlayColor), r = _d[0], g = _d[1], b = _d[2];\n                                alt1.overLayRect(a1lib.mixColor(r, g, b), match.x, match.y, width, height, settings.controller.ui.overlayTimer, 3);\n                            }\n                            // Get the pixel data for the matched area\n                            this.data.img = buffer.toData(match.x, match.y, width, height);\n                            countText = OCR.findReadLine(this.data.img, this.countFont, this.data.OS ? [[255, 152, 31]] : [[255, 203, 5]], this.data.collapsed ? 10 : 72, 15, 30, 3);\n                            this.data.count = parseInt(countText.text);\n                            if (!this.data.collapsed)\n                                this.data.task = OCR.findReadLine(this.data.img, this.taskFont, this.data.OS ? [[255, 152, 31]] : [[255, 203, 5]], 9, 28, 156, 3).text;\n                        }\n                        return [2 /*return*/, (!this.pos || this.pos.length == 0) ? null : this.data];\n                }\n            });\n        });\n    };\n    UICounterReader.prototype.findUIElement = function (buffer, img, mode) {\n        if (!this.data && this.pos.length == 0)\n            this.pos = buffer.findSubimage(img);\n        if (!this.data && this.pos.length > 0)\n            this.data = { reaper: mode.reaper, collapsed: mode.collapsed, OS: mode.OS, img: null, count: -1, task: null };\n    };\n    return UICounterReader;\n}());\nexport { UICounterReader };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as logger from \"../logger\";\nvar cachedData = null;\nvar CACHE_EXPIRATION_MS = 10 * 60 * 1000; // 10 minutes\nvar cacheTimestamp = Date.now();\n// Helper function to fetch data from URL\nfunction fetchData(url) {\n    return __awaiter(this, void 0, void 0, function () {\n        var response, error_1;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    _a.trys.push([0, 3, , 4]);\n                    return [4 /*yield*/, fetch(url)];\n                case 1:\n                    response = _a.sent();\n                    if (!response.ok)\n                        throw new Error(\"HTTP error! status: \".concat(response.status));\n                    return [4 /*yield*/, response.json()];\n                case 2: return [2 /*return*/, _a.sent()];\n                case 3:\n                    error_1 = _a.sent();\n                    logger.error(\"Error fetching data:\", error_1);\n                    return [2 /*return*/, null]; // Return null on error\n                case 4: return [2 /*return*/];\n            }\n        });\n    });\n}\n// Fetch and cache the assignments data\nfunction fetchAssignments() {\n    return __awaiter(this, arguments, void 0, function (index, list) {\n        var urlBuild, data;\n        if (index === void 0) { index = \"all\"; }\n        if (list === void 0) { list = false; }\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    logger.log(\"Fetch Assignment: \".concat(index));\n                    // Check if we need to fetch new data for \"all\"\n                    if (!list && (index === \"all\" && cachedData && (Date.now() - cacheTimestamp) <= CACHE_EXPIRATION_MS)) {\n                        return [2 /*return*/, cachedData]; // Return cached data if still valid\n                    }\n                    urlBuild = \"./data/assignments.json?q=\".concat(encodeURIComponent(index)).concat(list ? \"&list\" : '', \"&cache_bust=\").concat(Date.now());\n                    return [4 /*yield*/, fetchData(urlBuild)];\n                case 1:\n                    data = _a.sent();\n                    if (index === \"all\") {\n                        cachedData = data; // Cache data if fetching all\n                        cacheTimestamp = Date.now(); // Update timestamp\n                    }\n                    return [2 /*return*/, data]; // Return the fetched data\n            }\n        });\n    });\n}\n// Fetch a single assignment based on the index or alias\nexport function get(assignment) {\n    return __awaiter(this, void 0, void 0, function () {\n        var data, lowerCasedAssignment;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, fetchAssignments()];\n                case 1:\n                    data = _a.sent();\n                    lowerCasedAssignment = assignment.toLowerCase();\n                    return [2 /*return*/, (data === null || data === void 0 ? void 0 : data.find(function (a) {\n                            return a[\"index\"].toLowerCase() === lowerCasedAssignment ||\n                                a[\"alias\"].some(function (alias) { return alias.toLowerCase() === lowerCasedAssignment; });\n                        })) || null]; // Return the found assignment or null\n            }\n        });\n    });\n}\n// Get an array of the index\nexport function getIndexList() {\n    return __awaiter(this, void 0, void 0, function () {\n        var data;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, fetchAssignments(\"all\")];\n                case 1:\n                    data = _a.sent();\n                    return [2 /*return*/, data.map(function (a) { return a[\"index\"]; })]; // Return the list of indices\n            }\n        });\n    });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport { decodeHtml } from '../extrafuncs';\nimport * as logger from \"../logger\";\nvar cachedCreaturesData = null;\nvar CACHE_EXPIRATION_MS = 10 * 60 * 1000; // 10 minutes\nvar creaturesCacheTimestamp = Date.now(); // Initial timestamp\n// Fetch creatures data\nfunction fetchData(url) {\n    return __awaiter(this, void 0, void 0, function () {\n        var response, error_1;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    _a.trys.push([0, 3, , 4]);\n                    return [4 /*yield*/, fetch(url)];\n                case 1:\n                    response = _a.sent();\n                    if (!response.ok)\n                        throw new Error(\"HTTP error! status: \".concat(response.status));\n                    return [4 /*yield*/, response.json()];\n                case 2: return [2 /*return*/, _a.sent()];\n                case 3:\n                    error_1 = _a.sent();\n                    logger.error(\"Error fetching data:\", error_1);\n                    return [2 /*return*/, null]; // Return null on error\n                case 4: return [2 /*return*/];\n            }\n        });\n    });\n}\n// Fetch and cache the creatures data\nexport function fetchCreatures() {\n    return __awaiter(this, arguments, void 0, function (name) {\n        var urlBuild, data;\n        if (name === void 0) { name = \"all\"; }\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    logger.log(\"Fetch Creature: \".concat(name));\n                    // If fetching \"all\", check cache expiration\n                    if (name === \"all\" && cachedCreaturesData && (Date.now() - creaturesCacheTimestamp <= CACHE_EXPIRATION_MS)) {\n                        return [2 /*return*/, cachedCreaturesData]; // Return cached data if still valid\n                    }\n                    urlBuild = \"./data/creatures.json?q=\".concat(encodeURIComponent(name), \"&cache_bust=\").concat(Date.now());\n                    return [4 /*yield*/, fetchData(urlBuild)];\n                case 1:\n                    data = _a.sent();\n                    if (name === \"all\") {\n                        cachedCreaturesData = data; // Cache data if fetching all\n                        creaturesCacheTimestamp = Date.now(); // Update timestamp\n                    }\n                    return [2 /*return*/, data]; // Return the fetched data\n            }\n        });\n    });\n}\n// Fetch a single creature based on the name\nexport function get(creature) {\n    return __awaiter(this, void 0, void 0, function () {\n        var data, lowerCasedCreature;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, fetchCreatures(creature)];\n                case 1:\n                    data = _a.sent();\n                    lowerCasedCreature = creature.toLowerCase();\n                    return [2 /*return*/, (data === null || data === void 0 ? void 0 : data.find(function (a) { return decodeHtml(a[\"name\"].toLowerCase()) === lowerCasedCreature; })) || null]; // Use find for compactness\n            }\n        });\n    });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport { decodeHtml } from '../extrafuncs';\nimport * as logger from \"../logger\";\nvar cachedMastersData = null;\nvar CACHE_EXPIRATION_MS = 10 * 60 * 1000; // 10 minutes\nvar mastersCacheTimestamp = Date.now(); // Initial timestamp\n// Fetch masters data\nfunction fetchData(url) {\n    return __awaiter(this, void 0, void 0, function () {\n        var response, error_1;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    _a.trys.push([0, 3, , 4]);\n                    return [4 /*yield*/, fetch(url)];\n                case 1:\n                    response = _a.sent();\n                    if (!response.ok)\n                        throw new Error(\"HTTP error! status: \".concat(response.status));\n                    return [4 /*yield*/, response.json()];\n                case 2: return [2 /*return*/, _a.sent()];\n                case 3:\n                    error_1 = _a.sent();\n                    logger.error(\"Error fetching data:\", error_1);\n                    return [2 /*return*/, null]; // Return null on error\n                case 4: return [2 /*return*/];\n            }\n        });\n    });\n}\n// Fetch and cache the masters data\nexport function fetchMasters() {\n    return __awaiter(this, arguments, void 0, function (name) {\n        var urlBuild, data;\n        if (name === void 0) { name = \"all\"; }\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    logger.log(\"Fetch Master: \".concat(name));\n                    // If fetching \"all\", check cache expiration\n                    if (name === \"all\" && cachedMastersData && (Date.now() - mastersCacheTimestamp <= CACHE_EXPIRATION_MS)) {\n                        return [2 /*return*/, cachedMastersData]; // Return cached data if still valid\n                    }\n                    urlBuild = \"./data/masters.json?q=\".concat(encodeURIComponent(name), \"&cache_bust=\").concat(Date.now());\n                    return [4 /*yield*/, fetchData(urlBuild)];\n                case 1:\n                    data = _a.sent();\n                    if (name === \"all\") {\n                        cachedMastersData = data; // Cache data if fetching all\n                        mastersCacheTimestamp = Date.now(); // Update timestamp\n                    }\n                    return [2 /*return*/, data]; // Return the fetched data\n            }\n        });\n    });\n}\n// Fetch a single master based on the name\nexport function get(master) {\n    return __awaiter(this, void 0, void 0, function () {\n        var data, lowerCasedMaster;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, fetchMasters(master)];\n                case 1:\n                    data = _a.sent();\n                    lowerCasedMaster = master.toLowerCase();\n                    return [2 /*return*/, (data === null || data === void 0 ? void 0 : data.find(function (a) { return decodeHtml(a[\"name\"].toLowerCase()) === lowerCasedMaster; })) || null]; // Use find for compactness\n            }\n        });\n    });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as logger from \"../logger\";\nvar cachedReapersData = null;\nvar CACHE_EXPIRATION_MS = 10 * 60 * 1000; // 10 minutes\nvar reapersCacheTimestamp = Date.now();\n// Helper function to fetch data from URL\nfunction fetchData(url) {\n    return __awaiter(this, void 0, void 0, function () {\n        var response, error_1;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    _a.trys.push([0, 3, , 4]);\n                    return [4 /*yield*/, fetch(url)];\n                case 1:\n                    response = _a.sent();\n                    if (!response.ok)\n                        throw new Error(\"HTTP error! status: \".concat(response.status));\n                    return [4 /*yield*/, response.json()];\n                case 2: return [2 /*return*/, _a.sent()];\n                case 3:\n                    error_1 = _a.sent();\n                    logger.error(\"Error fetching data:\", error_1);\n                    return [2 /*return*/, null]; // Return null on error\n                case 4: return [2 /*return*/];\n            }\n        });\n    });\n}\n// Fetch and cache the reapers data\nfunction fetchReapers() {\n    return __awaiter(this, arguments, void 0, function (index, list) {\n        var urlBuild, data;\n        if (index === void 0) { index = \"all\"; }\n        if (list === void 0) { list = false; }\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    logger.log(\"Fetch Assignment: \".concat(index));\n                    // Check if we need to fetch new data for \"all\"\n                    if (!list && (index === \"all\" && cachedReapersData && (Date.now() - reapersCacheTimestamp) <= CACHE_EXPIRATION_MS)) {\n                        return [2 /*return*/, cachedReapersData]; // Return cached data if still valid\n                    }\n                    urlBuild = \"./data/reapers.json?q=\".concat(encodeURIComponent(index)).concat(list ? \"&list\" : '', \"&cache_bust=\").concat(Date.now());\n                    return [4 /*yield*/, fetchData(urlBuild)];\n                case 1:\n                    data = _a.sent();\n                    if (index === \"all\") {\n                        cachedReapersData = data; // Cache data if fetching all\n                        reapersCacheTimestamp = Date.now(); // Update timestamp\n                    }\n                    return [2 /*return*/, data]; // Return the fetched data\n            }\n        });\n    });\n}\n// Fetch a single reaper based on the index or alias\nexport function get(reaper) {\n    return __awaiter(this, void 0, void 0, function () {\n        var data, lowerCasedReaper, specificReaper;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, fetchReapers(reaper)];\n                case 1:\n                    data = _a.sent();\n                    lowerCasedReaper = reaper.toLowerCase();\n                    specificReaper = data.find(function (a) { return a[\"index\"].toLowerCase() === lowerCasedReaper; });\n                    return [2 /*return*/, specificReaper || null]; // Return the specific reaper or null\n            }\n        });\n    });\n}\n// Get an array of the index as HTML option elements\nexport function getIndexList() {\n    return __awaiter(this, void 0, void 0, function () {\n        var data;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, fetchReapers()];\n                case 1:\n                    data = _a.sent();\n                    return [2 /*return*/, data.map(function (a) { return a[\"index\"]; })]; // Return the list of indices\n            }\n        });\n    });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport { decodeHtml } from '../extrafuncs';\nimport * as logger from \"../logger\";\nimport * as creatures from './creatures';\n// Fetch a single variant based on the creature name and variant name\nexport function get(creature, variant) {\n    return __awaiter(this, void 0, void 0, function () {\n        var data, lowerCasedCreature, lowerCasedVariant, _i, data_1, a, _a, _b, b;\n        return __generator(this, function (_c) {\n            switch (_c.label) {\n                case 0: return [4 /*yield*/, creatures.fetchCreatures(creature)];\n                case 1:\n                    data = _c.sent();\n                    lowerCasedCreature = decodeHtml(creature.toLowerCase());\n                    lowerCasedVariant = variant.toLowerCase();\n                    for (_i = 0, data_1 = data; _i < data_1.length; _i++) {\n                        a = data_1[_i];\n                        if (decodeHtml(a[\"name\"].toLowerCase()) === lowerCasedCreature) {\n                            for (_a = 0, _b = a[\"variants\"]; _a < _b.length; _a++) {\n                                b = _b[_a];\n                                logger.log(\"Variant Compare: \".concat(b[\"name\"], \" | \").concat(lowerCasedVariant));\n                                if (b[\"name\"].toLowerCase() === lowerCasedVariant) {\n                                    return [2 /*return*/, b];\n                                }\n                            }\n                        }\n                    }\n                    return [2 /*return*/, null];\n            }\n        });\n    });\n}\n","// Import required modules\nimport * as main from './dochandler/main';\n// Export required modules\nexport * as animate from './dochandler/animate';\nexport * as change from './dochandler/change';\nexport * as hide from './dochandler/hide';\nexport * as hover from './dochandler/hover';\nexport * as main from './dochandler/main';\nexport * as show from './dochandler/show';\nexport * as open from './dochandler/open';\n// Function to get the side element based on the index\nexport function getSide(i) {\n    var base = main.get.elid(\"base\");\n    var side = main.get.elc(i === 0 ? \"left\" : \"right\", base);\n    if (!side)\n        side = main.get.elc(\"single\", base);\n    return side;\n}\n","// Import required modules\nimport * as dochandler from '../dochandler';\n// Function to show the loading bar\nexport function loading() {\n    var loadingBar = dochandler.main.get.elid(\"loading-bar\");\n    if (loadingBar) {\n        loadingBar.style.visibility = \"visible\";\n    }\n}\n// Function to hide the loading bar\nexport function loadingStop() {\n    var loadingBar = dochandler.main.get.elid(\"loading-bar\");\n    if (loadingBar) {\n        loadingBar.style.visibility = \"hidden\";\n    }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n// Import all modules as namespaces\nimport * as settings from '../settings';\nimport * as dochandler from '../dochandler';\nimport * as extrafuncs from '../extrafuncs';\nimport * as masters from '../data/masters';\nimport * as reapers from '../data/reapers';\nimport * as assignments from '../data/assignnments';\nimport * as creatures from '../data/creatures';\nimport * as variants from '../data/variants';\nimport * as logger from \"../logger\";\n// Update the Creature variant shown\nexport function variant(i_1) {\n    return __awaiter(this, arguments, void 0, function (i, creature, variant) {\n        var side, data, imageContainer, imageElement, newSize, kills, slayerExp;\n        if (creature === void 0) { creature = null; }\n        if (variant === void 0) { variant = null; }\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    // Start loading animation\n                    dochandler.animate.loading();\n                    side = dochandler.getSide(i);\n                    // Return early if UI is limited or data is not available\n                    if ((settings.controller.ui.limited || dochandler.main.limitedLoaded) && (!creature || !variant)) {\n                        dochandler.animate.loadingStop();\n                        return [2 /*return*/];\n                    }\n                    // Fetch creature and variant from UI elements if not provided\n                    if (!creature) {\n                        creature = dochandler.main.get.elc(\"creatures\", side).value;\n                    }\n                    if (!variant) {\n                        variant = dochandler.main.get.elc(\"variants\", side).value;\n                    }\n                    logger.log(\"Change variant to: \".concat(creature, \"#\").concat(variant));\n                    return [4 /*yield*/, variants.get(creature, variant)];\n                case 1:\n                    data = _a.sent();\n                    if (data) {\n                        // Update UI if not limited\n                        if (!settings.controller.ui.limited && !dochandler.main.limitedLoaded) {\n                            imageContainer = dochandler.main.get.elc(\"image-container\", side);\n                            imageContainer.innerHTML = data[\"image\"].replace(\"#\", \"%23\");\n                            imageElement = imageContainer.firstElementChild;\n                            newSize = extrafuncs.calculateAspectRatioFit(parseInt(imageElement.getAttribute(\"width\")), parseInt(imageElement.getAttribute(\"height\")), imageContainer.offsetWidth, imageContainer.offsetHeight);\n                            imageElement.style.maxWidth = \"\".concat(newSize.width, \"px\");\n                            imageElement.style.maxHeight = \"\".concat(newSize.height, \"px\");\n                            // Update stats\n                            updateStats(side, data);\n                        }\n                        kills = parseInt(dochandler.main.get.elc(\"kills\", side).innerHTML, 10);\n                        slayerExp = parseFloat(data[\"slayer-exp\"]);\n                        if (!isNaN(slayerExp) && !isNaN(kills))\n                            dochandler.main.get.elc(\"total-slayer-exp\", side).innerHTML = extrafuncs.numberWithCommas((slayerExp * kills).toFixed(2));\n                        else\n                            dochandler.main.get.elc(\"total-slayer-exp\", side).innerHTML = \"N/A\";\n                    }\n                    // Stop loading animation\n                    dochandler.animate.loadingStop();\n                    return [2 /*return*/];\n            }\n        });\n    });\n}\n// Helper function to update stats\nfunction updateStats(side, data) {\n    dochandler.main.get.elc(\"level\", side).innerHTML = data[\"level\"];\n    dochandler.main.get.elc(\"slayer-level\", side).innerHTML = data[\"slayer-level\"];\n    dochandler.main.get.elc(\"lifepoints\", side).innerHTML = data[\"lifepoints\"];\n    dochandler.main.get.elc(\"defence\", side).innerHTML = data[\"defence\"];\n    dochandler.main.get.elc(\"max-melee\", side).innerHTML = data[\"max-melee\"];\n    dochandler.main.get.elc(\"max-ranged\", side).innerHTML = data[\"max-ranged\"];\n    dochandler.main.get.elc(\"max-magic\", side).innerHTML = data[\"max-magic\"];\n    dochandler.main.get.elc(\"max-necromancy\", side).innerHTML = data[\"max-necromancy\"];\n    dochandler.main.get.elc(\"max-spec\", side).innerHTML = data[\"max-spec\"];\n    // Update weakness and susceptibility\n    var weaknessElem = dochandler.main.get.elc(\"weaknessBox\", side);\n    weaknessElem.innerHTML = \"<p id=\\\"weakness-text\\\">Weakness</p>\" + data[\"weakness\"].join(\"\");\n    var susceptibleElem = dochandler.main.get.elc(\"susceptibleBox\", side);\n    susceptibleElem.innerHTML = \"<p id=\\\"susceptible-text\\\">Susceptible</p>\" + data[\"susceptible\"].join(\"\");\n    // Update experience values\n    var experience = parseFloat(data[\"experience\"]);\n    if (!isNaN(experience))\n        dochandler.main.get.elc(\"combat-exp\", side).innerHTML = extrafuncs.numberWithCommas(experience.toFixed(2));\n    else\n        dochandler.main.get.elc(\"combat-exp\", side).innerHTML = \"N/A\"; // Or any default value for invalid experience\n    // Handle lifepoints-exp\n    var lifepointsExp = parseFloat(data[\"lifepoint-exp\"]);\n    if (!isNaN(lifepointsExp))\n        dochandler.main.get.elc(\"lifepoints-exp\", side).innerHTML = extrafuncs.numberWithCommas(lifepointsExp.toFixed(2));\n    else\n        dochandler.main.get.elc(\"lifepoints-exp\", side).innerHTML = \"N/A\"; // Or any default value for invalid lifepoints-exp\n    // Handle slayer-exp\n    var slayerExp = parseFloat(data[\"slayer-exp\"]);\n    if (!isNaN(slayerExp))\n        dochandler.main.get.elc(\"slayer-exp\", side).innerHTML = extrafuncs.numberWithCommas(slayerExp.toFixed(2));\n    else\n        dochandler.main.get.elc(\"slayer-exp\", side).innerHTML = \"N/A\"; // Or any default value for invalid slayer-exp\n}\n// Update the Creature shown\nexport function creature(i_1) {\n    return __awaiter(this, arguments, void 0, function (i, creature, variant) {\n        var side, data, variantsElem_1;\n        if (creature === void 0) { creature = null; }\n        if (variant === void 0) { variant = null; }\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    // Start loading animation\n                    dochandler.animate.loading();\n                    side = dochandler.getSide(i);\n                    // Return early if UI is limited and no creature is provided\n                    if ((settings.controller.ui.limited || dochandler.main.limitedLoaded) && !creature) {\n                        dochandler.animate.loadingStop();\n                        return [2 /*return*/];\n                    }\n                    // Fetch creature from UI elements if not provided\n                    if (!creature) {\n                        creature = dochandler.main.get.elc(\"creatures\", side).value;\n                    }\n                    logger.log(\"Change Creature to: \".concat(creature).concat(variant ? \"#\".concat(variant) : ''));\n                    return [4 /*yield*/, creatures.get(creature)];\n                case 1:\n                    data = _a.sent();\n                    if (data) {\n                        // Update variants if available\n                        if (data[\"variants\"] && !settings.controller.ui.limited && !dochandler.main.limitedLoaded) {\n                            variantsElem_1 = dochandler.main.get.elc(\"variants\", side);\n                            variantsElem_1.innerHTML = \"\";\n                            data[\"variants\"].forEach(function (a) {\n                                if (!settings.controller.hiddenCreatures.templeTrekking || (settings.controller.hiddenCreatures.templeTrekking && !a[\"name\"].startsWith(\"Temple Trekking\")))\n                                    variantsElem_1.innerHTML += \"<option value=\\\"\".concat(a[\"name\"], \"\\\"\").concat(variant && extrafuncs.decodeHtml(a[\"name\"]) === extrafuncs.decodeHtml(variant) ? \" selected\" : \"\", \">\").concat(a[\"name\"], \"</option>\");\n                            });\n                            if (!variant) {\n                                variant = data[\"variants\"][0][\"name\"];\n                            }\n                        }\n                        // Update the variant to reflect changes\n                        dochandler.change.variant(i, creature, variant);\n                    }\n                    // Stop loading animation\n                    dochandler.animate.loadingStop();\n                    return [2 /*return*/];\n            }\n        });\n    });\n}\n// Update the reaper assignment data\nexport function reaper(task, count) {\n    return __awaiter(this, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            // Ensure correct task loading conditions\n            if (dochandler.main.singleLoaded || dochandler.main.doubleLoaded) {\n                logger.error(\"Cannot load normal task as a reaper task!\");\n                return [2 /*return*/];\n            }\n            if (!dochandler.main.reaperLoaded) {\n                logger.error(\"Cannot load reaper task without reaper being displayed!\");\n                return [2 /*return*/];\n            }\n            // Show loading animation and get side + nameElement and if not return\n            dochandler.animate.loading();\n            // Update and load task\n            if (updateTask(2, task, count))\n                return [2 /*return*/];\n            loadTask(2, task, count);\n            // Stop loading animation\n            dochandler.animate.loadingStop();\n            return [2 /*return*/];\n        });\n    });\n}\n// Update the entire Assignment data\nexport function assignment(i, task, count) {\n    return __awaiter(this, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            // Ensure correct task loading conditions\n            if (i === 0 && (!dochandler.main.singleLoaded && !dochandler.main.doubleLoaded)) {\n                logger.error(\"Cannot load normal task if normal task isn't displayed!\");\n                return [2 /*return*/];\n            }\n            if (i === 1 && !dochandler.main.doubleLoaded) {\n                logger.error(\"Cannot load double slayer task if only 1 is displayed!\");\n                return [2 /*return*/];\n            }\n            if (i === 2) {\n                logger.error(\"Cannot load reaper task as a normal task!\");\n                return [2 /*return*/];\n            }\n            // Show loading animation and get side + nameElement and if not return\n            dochandler.animate.loading();\n            // Update and load task\n            if (updateTask(i, task, count))\n                return [2 /*return*/];\n            loadTask(i, task, count);\n            // Stop loading animation\n            dochandler.animate.loadingStop();\n            return [2 /*return*/];\n        });\n    });\n}\nfunction updateTask(i, task, count) {\n    var type = \"(\".concat(i === 0 ? \"Default\" : (i === 2 ? \"Reaper\" : \"1 Slayer Token\"), \")\");\n    var side = dochandler.getSide(i);\n    if (!side)\n        return;\n    var nameElement = dochandler.main.get.elc(\"name\", side);\n    if (!nameElement)\n        return;\n    // Check if the current task is the same as the new one\n    if ((task == null && nameElement.innerHTML !== \"???\") || nameElement.innerHTML === task) {\n        logger.log(\"Update task: [\".concat(count, \"] \").concat(task, \" \").concat(type));\n        dochandler.main.get.elc(\"kills\", side).innerHTML = extrafuncs.numberWithCommas(count);\n        // Get individual exp for task and update based on new count\n        var slayer_exp = dochandler.main.get.elc(\"slayer-exp\", side);\n        if (slayer_exp && slayer_exp.innerHTML !== \"\") {\n            var xp = parseInt(slayer_exp.innerHTML);\n            if (!isNaN(xp))\n                dochandler.main.get.elc(\"total-slayer-exp\", side).innerHTML = extrafuncs.numberWithCommas((xp * count).toFixed(2));\n            else\n                dochandler.main.get.elc(\"total-slayer-exp\", side).innerHTML = \"N/A\";\n        }\n        // TODO Update status here\n        dochandler.animate.loadingStop();\n        return true;\n    }\n    if (task == null)\n        return true; // Just incase we are trying to update a task that hasn't loaded lets return and try again\n    return false;\n}\nfunction loadTask(i, task, count) {\n    return __awaiter(this, void 0, void 0, function () {\n        var type, side, data, _a, creature_1, variant_1, cvdata, slayxp, j, img, masterData, kills, _loop_1, j, j, j, j, j, _i, _b, a, name_1, defaultCreature, defaultCreature, _c, creature_2, variant_2;\n        var _d, _e;\n        return __generator(this, function (_f) {\n            switch (_f.label) {\n                case 0:\n                    type = \"(\".concat(i === 0 ? \"Default\" : (i === 2 ? \"Reaper\" : \"1 Slayer Token\"), \")\");\n                    side = dochandler.getSide(i);\n                    if (!side)\n                        return [2 /*return*/];\n                    return [4 /*yield*/, (i === 2 ? reapers : assignments).get(task)];\n                case 1:\n                    data = _f.sent();\n                    if (!data) {\n                        dochandler.animate.loadingStop();\n                        return [2 /*return*/];\n                    }\n                    logger.log(\"Load task: [\".concat(count, \"] \").concat(task, \" \").concat(type));\n                    dochandler.main.get.elc(\"type\", side).innerHTML = type;\n                    if (i === 2)\n                        dochandler.main.get.elc(\"type\", side).id = \"type-reaper\";\n                    // Update UI elements with the new data\n                    dochandler.main.get.elc(\"info\", side).title = data[\"index\"];\n                    dochandler.main.get.elc(\"name\", side).innerHTML = data[\"index\"];\n                    dochandler.main.get.elc(\"kills\", side).innerHTML = extrafuncs.numberWithCommas(count);\n                    if (!dochandler.main.limitedLoaded) return [3 /*break*/, 3];\n                    _a = data[\"default-creature\"].split(\"#\"), creature_1 = _a[0], variant_1 = _a[1];\n                    return [4 /*yield*/, variants.get(creature_1, variant_1)];\n                case 2:\n                    cvdata = _f.sent();\n                    slayxp = parseFloat(cvdata[\"slayer-exp\"]);\n                    if (!isNaN(slayxp))\n                        dochandler.main.get.elc(\"total-slayer-exp\", side).innerHTML = extrafuncs.numberWithCommas((slayxp * count).toFixed(2));\n                    else\n                        dochandler.main.get.elc(\"total-slayer-exp\", side).innerHTML = \"N/A\";\n                    _f.label = 3;\n                case 3:\n                    if (!(!settings.controller.ui.limited && !dochandler.main.limitedLoaded)) return [3 /*break*/, 8];\n                    // Update masters data\n                    dochandler.main.get.elc(\"masters\", side).innerHTML = \"<div class=\\\"nistext masterTitle\\\">Assignment Range</div>\";\n                    j = 0;\n                    _f.label = 4;\n                case 4:\n                    if (!(j < data[\"masters\"].length)) return [3 /*break*/, 7];\n                    img = \"<img id=\\\"masterImage\".concat(j, \"\\\" alt=\\\"\").concat(data[\"masters\"][j], \"\\\" src=\\\"./images/masters/\").concat(data[\"masters\"][j], \".png\\\" title=\\\"\").concat(data[\"masters\"][j], \"\\\"></img>\");\n                    return [4 /*yield*/, masters.get(data[\"masters\"][j])];\n                case 5:\n                    masterData = _f.sent();\n                    kills = masterData[\"task-counts\"][data[\"index\"]];\n                    dochandler.main.get.elc(\"masters\", side).innerHTML += \"<div class=\\\"nistext masterInfo\".concat(j, \"\\\">\").concat(img, \" Kills: \").concat(kills, \"</div>\");\n                    _f.label = 6;\n                case 6:\n                    j++;\n                    return [3 /*break*/, 4];\n                case 7:\n                    _loop_1 = function (j) {\n                        dochandler.main.get.elc(\"masterInfo\".concat(j), side).addEventListener('click', function () { return dochandler.open.wiki.master(i, j); });\n                    };\n                    for (j = 0; j < data[\"masters\"].length; j++) {\n                        _loop_1(j);\n                    }\n                    // Update equipment data\n                    if (data[\"equipment\"]) {\n                        for (j = 0; j < 3; j++) {\n                            dochandler.main.get.elc(\"equipInfo\".concat(j + 1), side).innerHTML = j === 0 ? \"None\" : \"\";\n                        }\n                        for (j = 0; j < data[\"equipment\"].length; j++) {\n                            dochandler.main.get.elc(\"equipInfo\".concat(j + 1), side).innerHTML = data[\"equipment\"][j] || \"<span style=\\\"color: red;\\\" title=\\\"There is no information in the database.\\\">Database Empty</span>\";\n                        }\n                        dochandler.main.get.elc(\"equipMore\", side).style.visibility = data[\"equipment\"].length < 3 ? \"hidden\" : \"visible\";\n                    }\n                    else {\n                        dochandler.main.get.elc(\"equipMore\", side).style.visibility = \"hidden\";\n                        dochandler.main.get.elc(\"equipInfo1\", side).innerHTML = \"<span style=\\\"color: red;\\\" title=\\\"There is no information in the database.\\\">Database Missing</span>\";\n                    }\n                    // Update locations data\n                    if (data[\"locations\"]) {\n                        for (j = 0; j < 3; j++) {\n                            dochandler.main.get.elc(\"locationInfo\".concat(j + 1), side).innerHTML = j === 0 ? \"None\" : \"\";\n                        }\n                        for (j = 0; j < data[\"locations\"].length; j++) {\n                            dochandler.main.get.elc(\"locationInfo\".concat(j + 1), side).innerHTML = data[\"locations\"][j] || \"<span style=\\\"color: red;\\\" title=\\\"There is no information in the database.\\\">Database Empty</span>\";\n                        }\n                        dochandler.main.get.elc(\"locationMore\", side).style.visibility = data[\"locations\"].length < 3 ? \"hidden\" : \"visible\";\n                    }\n                    else {\n                        dochandler.main.get.elc(\"locationMore\", side).style.visibility = \"hidden\";\n                        dochandler.main.get.elc(\"locationInfo1\", side).innerHTML = \"<span style=\\\"color: red;\\\" title=\\\"There is no information in the database.\\\">Database Missing</span>\";\n                    }\n                    // Update creatures data\n                    if (data[\"creatures\"]) {\n                        dochandler.main.get.elc(\"creatures\", side).innerHTML = \"\";\n                        for (_i = 0, _b = data[\"creatures\"]; _i < _b.length; _i++) {\n                            a = _b[_i];\n                            name_1 = extrafuncs.decodeHtml(a);\n                            if (settings.controller.hiddenCreatures.dragonkin && name_1.endsWith(\"(Dragonkin Laboratory)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.godWars && name_1.endsWith(\"(God Wars Dungeon)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.ghorrock && name_1.endsWith(\"(Ghorrock)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.heartGielinor && name_1.endsWith(\"(Heart of Gielinor)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.newVarrock && name_1.endsWith(\"(New Varrock)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.shadowReef && (name_1.endsWith(\"(The Shadow Reef)\") || name_1.startsWith(\"Summoned\")))\n                                continue;\n                            if (settings.controller.hiddenCreatures.strongholdSecurity && name_1.endsWith(\"(Stronghold of Security)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.templeTrekking && name_1.endsWith(\"(Temple Trekking)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.unchartedIsles && name_1.endsWith(\"(Uncharted Isles)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.elite && name_1.endsWith(\"(elite)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.monster && name_1.endsWith(\"(monster)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.summoned && name_1.endsWith(\"(summoned)\"))\n                                continue;\n                            if (settings.controller.hiddenCreatures.default && !extrafuncs.listContains(data[\"hidden-creatures\"], a)) {\n                                defaultCreature = ((_d = data[\"default-creature\"]) === null || _d === void 0 ? void 0 : _d.split(\"#\")[0]) || \"\";\n                                dochandler.main.get.elc(\"creatures\", side).innerHTML += \"<option value=\\\"\".concat(a, \"\\\" \").concat(extrafuncs.decodeHtml(a) === extrafuncs.decodeHtml(defaultCreature) ? \"selected\" : \"\", \">\").concat(a, \"</option>\");\n                            }\n                            else {\n                                defaultCreature = ((_e = data[\"default-creature\"]) === null || _e === void 0 ? void 0 : _e.split(\"#\")[0]) || \"\";\n                                dochandler.main.get.elc(\"creatures\", side).innerHTML += \"<option value=\\\"\".concat(a, \"\\\" \").concat(extrafuncs.decodeHtml(a) === extrafuncs.decodeHtml(defaultCreature) ? \"selected\" : \"\", \">\").concat(a, \"</option>\");\n                            }\n                        }\n                    }\n                    // Set default creature and variant\n                    if (data[\"default-creature\"]) {\n                        _c = data[\"default-creature\"].split(\"#\"), creature_2 = _c[0], variant_2 = _c[1];\n                        dochandler.change.creature(i, creature_2, variant_2);\n                    }\n                    else {\n                        dochandler.change.creature(i);\n                    }\n                    _f.label = 8;\n                case 8:\n                    // Stop loading animation\n                    dochandler.animate.loadingStop();\n                    return [2 /*return*/];\n            }\n        });\n    });\n}\n","import * as dochandler from \"../dochandler\";\nimport * as settings from \"../settings\";\nexport function assignmentWikiPreview(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    dochandler.main.get.elc(\"preview-task-wiki\", side).style.visibility = \"hidden\";\n}\nexport function creatureWikiPreview(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    dochandler.main.get.elc(\"preview-creature-wiki\", side).style.visibility = \"hidden\";\n}\nexport function moreEquip(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    dochandler.main.get.elc(\"equipHidden\", side).style.visibility = \"hidden\";\n}\nexport function moreLocations(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    dochandler.main.get.elc(\"locationHidden\", side).style.visibility = \"hidden\";\n}\n","import * as dochandler from \"../dochandler\";\nimport * as settings from \"../settings\";\nexport function assignmentWiki(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    var showTimer;\n    var hideTimer = null;\n    showTimer = setTimeout(function () { return dochandler.show.assignmentWikiPreview(i); }, 500);\n    dochandler.main.get.elc(\"task-wiki\", side).onmouseleave = function () {\n        hideTimer = setTimeout(function () { return dochandler.hide.assignmentWikiPreview(i); }, 200);\n        clearTimeout(showTimer);\n    };\n    dochandler.main.get.elc(\"preview-task-wiki\", side).onmouseenter = function () {\n        if (hideTimer !== null)\n            clearTimeout(hideTimer);\n    };\n}\nexport function creatureWiki(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    var showTimer;\n    var hideTimer = null;\n    showTimer = setTimeout(function () { return dochandler.show.creatureWikiPreview(i); }, 500);\n    dochandler.main.get.elc(\"creature-wiki\", side).onmouseleave = function () {\n        hideTimer = setTimeout(function () { return dochandler.hide.creatureWikiPreview(i); }, 200);\n        clearTimeout(showTimer);\n    };\n    dochandler.main.get.elc(\"preview-creature-wiki\", side).onmouseenter = function () {\n        if (hideTimer !== null)\n            clearTimeout(hideTimer);\n    };\n}\nexport function moreEquip(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    var showTimer = setTimeout(function () { return dochandler.show.moreEquip(i); }, 500);\n    dochandler.main.get.elc(\"equipMore\", side).onmouseleave = function () {\n        clearTimeout(showTimer);\n    };\n}\nexport function moreLocations(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    var showTimer = setTimeout(function () { return dochandler.show.moreLocations(i); }, 500);\n    dochandler.main.get.elc(\"locationMore\", side).onmouseleave = function () {\n        clearTimeout(showTimer);\n    };\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as dochandler from '../dochandler';\nimport * as reapers from '../data/reapers';\nimport * as assignments from '../data/assignnments';\nimport * as settings from '../settings';\nimport * as slayer from '../slayer';\nimport * as logger from \"../logger\";\n// Define variables\nexport var doubleLoaded = false;\nexport var singleLoaded = false;\nexport var reaperLoaded = false;\nexport var suggestedLoaded = false;\nexport var limitedLoaded = false;\nexport var get;\n(function (get) {\n    function elc(id, base) {\n        return base.getElementsByClassName(id)[0];\n    }\n    get.elc = elc;\n    function elid(id) {\n        return document.getElementById(id);\n    }\n    get.elid = elid;\n    function searchInput() {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/, document.querySelector(\"input[name='search-input']\").value];\n            });\n        });\n    }\n    get.searchInput = searchInput;\n})(get || (get = {}));\nexport var reset;\n(function (reset) {\n    function single() {\n        return __awaiter(this, void 0, void 0, function () {\n            var baseElement;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!singleLoaded)\n                            return [2 /*return*/];\n                        return [4 /*yield*/, get.elid(\"base\")];\n                    case 1:\n                        baseElement = _a.sent();\n                        baseElement.innerHTML = \"\";\n                        singleLoaded = false;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    reset.single = single;\n    function double() {\n        return __awaiter(this, void 0, void 0, function () {\n            var baseElement;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!doubleLoaded)\n                            return [2 /*return*/];\n                        return [4 /*yield*/, get.elid(\"base\")];\n                    case 1:\n                        baseElement = _a.sent();\n                        baseElement.innerHTML = \"\";\n                        doubleLoaded = false;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    reset.double = double;\n    function reaper() {\n        return __awaiter(this, void 0, void 0, function () {\n            var baseElement;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!reaperLoaded)\n                            return [2 /*return*/];\n                        return [4 /*yield*/, get.elid(\"base\")];\n                    case 1:\n                        baseElement = _a.sent();\n                        baseElement.innerHTML = \"\";\n                        reaperLoaded = false;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    reset.reaper = reaper;\n    function suggested() {\n        return __awaiter(this, void 0, void 0, function () {\n            var baseElement;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!suggestedLoaded)\n                            return [2 /*return*/];\n                        return [4 /*yield*/, get.elid(\"base\")];\n                    case 1:\n                        baseElement = _a.sent();\n                        baseElement.innerHTML = \"\";\n                        suggestedLoaded = false;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    reset.suggested = suggested;\n    function searchBox() {\n        return __awaiter(this, void 0, void 0, function () {\n            var searchInfo;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, get.elid(\"search-input\")];\n                    case 1:\n                        searchInfo = _a.sent();\n                        searchInfo.value = \"\";\n                        toggle.searchText();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    reset.searchBox = searchBox;\n})(reset || (reset = {}));\nexport var set;\n(function (set) {\n    // Set to use a double document\n    function double(task0_1, task1_1) {\n        return __awaiter(this, arguments, void 0, function (task0, task1, bypass) {\n            if (bypass === void 0) { bypass = false; }\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if ((task0 == null || task1 == null) && !doubleLoaded)\n                            return [2 /*return*/];\n                        logger.log(\"Load Double: [\".concat(task0.count, \"] \").concat(task0.name, \" | [\").concat(task1.count, \"] \").concat(task1.name));\n                        // Reset all others\n                        return [4 /*yield*/, reset.single()];\n                    case 1:\n                        // Reset all others\n                        _a.sent();\n                        return [4 /*yield*/, reset.reaper()];\n                    case 2:\n                        _a.sent();\n                        return [4 /*yield*/, reset.suggested()];\n                    case 3:\n                        _a.sent();\n                        if (!!doubleLoaded) return [3 /*break*/, 5];\n                        return [4 /*yield*/, setup.doubleAssignment()];\n                    case 4:\n                        _a.sent();\n                        _a.label = 5;\n                    case 5: return [4 /*yield*/, dochandler.change.assignment(0, task0.name, task0.count)];\n                    case 6:\n                        _a.sent();\n                        return [4 /*yield*/, dochandler.change.assignment(1, task1.name, task1.count)];\n                    case 7:\n                        _a.sent();\n                        // Log history if not bypassed\n                        if (!bypass && task0.name && task1.name) {\n                            settings.change.addHistory({ type: 'double', tasks: [task0, task1] });\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    set.double = double;\n    // Set to use a single document\n    function single(task_1) {\n        return __awaiter(this, arguments, void 0, function (task, bypass) {\n            if (bypass === void 0) { bypass = false; }\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (task == null && !singleLoaded)\n                            return [2 /*return*/];\n                        logger.log(\"Load Single: [\".concat(task.count, \"] \").concat(task.name));\n                        // Reset all others\n                        return [4 /*yield*/, reset.double()];\n                    case 1:\n                        // Reset all others\n                        _a.sent();\n                        return [4 /*yield*/, reset.reaper()];\n                    case 2:\n                        _a.sent();\n                        return [4 /*yield*/, reset.suggested()];\n                    case 3:\n                        _a.sent();\n                        if (!!singleLoaded) return [3 /*break*/, 5];\n                        return [4 /*yield*/, setup.singleAssignment(0)];\n                    case 4:\n                        _a.sent();\n                        _a.label = 5;\n                    case 5: return [4 /*yield*/, dochandler.change.assignment(0, task.name, task.count)];\n                    case 6:\n                        _a.sent();\n                        // Log history if not bypassed\n                        if (!bypass && task.name) {\n                            settings.change.addHistory({ type: 'single', tasks: [task] });\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    set.single = single;\n    // Set to use reaper tasks doc\n    function reaper(task_1) {\n        return __awaiter(this, arguments, void 0, function (task, bypass) {\n            if (bypass === void 0) { bypass = false; }\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (task == null && !reaperLoaded)\n                            return [2 /*return*/];\n                        logger.log(\"Load Reaper: [\".concat(task.count, \"] \").concat(task.name));\n                        // Reset all others\n                        return [4 /*yield*/, reset.single()];\n                    case 1:\n                        // Reset all others\n                        _a.sent();\n                        return [4 /*yield*/, reset.double()];\n                    case 2:\n                        _a.sent();\n                        return [4 /*yield*/, reset.suggested()];\n                    case 3:\n                        _a.sent();\n                        if (!!reaperLoaded) return [3 /*break*/, 5];\n                        return [4 /*yield*/, setup.reaperAssignment()];\n                    case 4:\n                        _a.sent();\n                        _a.label = 5;\n                    case 5: return [4 /*yield*/, dochandler.change.reaper(task.name, task.count)];\n                    case 6:\n                        _a.sent();\n                        // Log history if not bypassed\n                        if (!bypass && task.name) {\n                            settings.change.addHistory({ type: 'reaper', tasks: [task] });\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    set.reaper = reaper;\n    // Set to use suggested tasks doc\n    function suggested() {\n        return __awaiter(this, arguments, void 0, function (bypass) {\n            if (bypass === void 0) { bypass = false; }\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (suggestedLoaded)\n                            return [2 /*return*/];\n                        logger.log(\"Load Suggested!\");\n                        // Reset all others\n                        return [4 /*yield*/, reset.single()];\n                    case 1:\n                        // Reset all others\n                        _a.sent();\n                        return [4 /*yield*/, reset.double()];\n                    case 2:\n                        _a.sent();\n                        return [4 /*yield*/, reset.reaper()];\n                    case 3:\n                        _a.sent();\n                        return [4 /*yield*/, dochandler.main.setup.suggested()];\n                    case 4:\n                        _a.sent();\n                        // Log history if not bypassed\n                        if (!bypass) {\n                            settings.change.addHistory({ type: 'suggestion', tasks: null });\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    set.suggested = suggested;\n    // Set search button\n    function searchButtonText(s) {\n        dochandler.main.get.elid(\"search-button\").innerHTML = \"\".concat(s, \"<span style=\\\"visibility: hidden;\\\">. . .</span>\");\n    }\n    set.searchButtonText = searchButtonText;\n    // Set the search input\n    function searchInput(s) {\n        if (s == null)\n            return;\n        dochandler.main.get.elid(\"search-input\").value = s;\n        dochandler.main.toggle.searchText();\n    }\n    set.searchInput = searchInput;\n})(set || (set = {}));\nexport var setup;\n(function (setup) {\n    var suggestions = [];\n    function getSuggestions() {\n        return __awaiter(this, void 0, void 0, function () {\n            var reapersIndexList, assignmentsIndexList;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, reapers.getIndexList()];\n                    case 1:\n                        reapersIndexList = _a.sent();\n                        return [4 /*yield*/, assignments.getIndexList()];\n                    case 2:\n                        assignmentsIndexList = _a.sent();\n                        return [2 /*return*/, reapersIndexList.concat(assignmentsIndexList)];\n                }\n            });\n        });\n    }\n    setup.getSuggestions = getSuggestions;\n    // Function to filter options based on input\n    function filterOptions() {\n        return __awaiter(this, void 0, void 0, function () {\n            var searchSuggestions, query, filteredOptions;\n            return __generator(this, function (_a) {\n                searchSuggestions = document.querySelector(\"#search-suggestions\");\n                query = document.querySelector(\"#search-input\").value.toLowerCase();\n                if (query.includes(\"|\"))\n                    query = query.substring(query.indexOf(\"|\") + 1).trim();\n                searchSuggestions.innerHTML = \"\"; // Clear previous suggestions\n                // Check if `suggestions` has been populated\n                if (suggestions.length === 0) {\n                    console.warn(\"Suggestions are not yet loaded.\");\n                    return [2 /*return*/];\n                }\n                filteredOptions = suggestions.filter(function (option) {\n                    return option.toLowerCase().includes(query);\n                });\n                // Populate the select dropdown with matching options\n                filteredOptions.forEach(function (option) {\n                    var optionElement = document.createElement(\"option\");\n                    optionElement.value = option;\n                    optionElement.textContent = option;\n                    searchSuggestions.appendChild(optionElement);\n                });\n                // Show or hide the dropdown based on the presence of matching options\n                searchSuggestions.style.display = filteredOptions.length > 0 ? \"block\" : \"none\";\n                // Adjust size of dropdown based on the length of options available\n                searchSuggestions.size = filteredOptions.length > 1 && filteredOptions.length !== 0 ? filteredOptions.length : 2;\n                return [2 /*return*/];\n            });\n        });\n    }\n    function setupSearchListeners() {\n        return __awaiter(this, void 0, void 0, function () {\n            var searchInput, searchButton, searchSuggestions;\n            return __generator(this, function (_a) {\n                searchInput = document.querySelector(\"#search-input\");\n                searchButton = document.querySelector(\"#search-button\");\n                searchSuggestions = document.querySelector(\"#search-suggestions\");\n                // Setup search button listener\n                searchButton.addEventListener('click', function () { slayer.searchTasks(); });\n                // Show suggestions based on input value\n                searchInput.addEventListener(\"input\", function () {\n                    dochandler.main.toggle.searchText();\n                    filterOptions();\n                });\n                // Hide suggestions on blur\n                searchInput.addEventListener(\"blur\", function (e) {\n                    if (e.relatedTarget !== searchSuggestions) {\n                        searchSuggestions.style.display = \"none\";\n                    }\n                });\n                // Show suggestions on click and focus\n                searchInput.addEventListener(\"click\", filterOptions);\n                searchInput.addEventListener(\"focus\", filterOptions);\n                // Enable keyboard navigation\n                searchInput.addEventListener(\"keydown\", function (e) {\n                    // Force click on enter\n                    if (e.key === \"Enter\") {\n                        searchSuggestions.style.display = \"none\";\n                        searchButton.click();\n                    }\n                    // Force blur on esc\n                    if (e.key === \"Escape\") {\n                        searchInput.blur();\n                    }\n                    // Focus on select when arrow key down\n                    if (e.key === \"ArrowDown\") {\n                        searchSuggestions.focus();\n                        searchSuggestions.selectedIndex = 0;\n                    }\n                    // Tab key fills input with the first suggestion\n                    if (e.key === \"Tab\") {\n                        if (searchInput.value.length == 0)\n                            return;\n                        e.preventDefault(); // Prevent default tab behavior\n                        if (searchSuggestions.options.length > 0) {\n                            if (searchInput.value.includes(\"|\"))\n                                searchInput.value = searchInput.value.substring(0, searchInput.value.indexOf(\"|\") + 1) + \" \" + searchSuggestions.options[0].value;\n                            else\n                                searchInput.value = searchSuggestions.options[0].value;\n                            searchSuggestions.style.display = \"none\"; // Optionally, hide the suggestions dropdown\n                        }\n                    }\n                });\n                // Update input value when an option is selected + click button\n                searchSuggestions.addEventListener(\"click\", function () {\n                    if (searchSuggestions.style.display === \"none\")\n                        return;\n                    if (searchInput.value.includes(\"|\"))\n                        searchInput.value = searchInput.value.substring(0, searchInput.value.indexOf(\"|\") + 1) + \" \" + searchSuggestions.value;\n                    else\n                        searchInput.value = searchSuggestions.value;\n                    searchSuggestions.style.display = \"none\"; // Hide the dropdown\n                    searchButton.click();\n                });\n                searchSuggestions.addEventListener(\"keydown\", function (e) {\n                    if (searchSuggestions.style.display === \"none\")\n                        return;\n                    // Set the input value to the selected option\n                    if (e.key === \"Enter\") {\n                        searchInput.value = searchSuggestions.options[searchSuggestions.selectedIndex].value;\n                        searchSuggestions.style.display = \"none\";\n                        searchButton.click();\n                    }\n                    // Go back to input when going up on the first item\n                    if (e.key === \"ArrowUp\" && searchSuggestions.selectedIndex === 0) {\n                        searchInput.focus();\n                    }\n                });\n                // Remove suggestions when not focussing on them\n                searchSuggestions.addEventListener(\"blur\", function (e) {\n                    if (e.relatedTarget !== searchInput) {\n                        searchSuggestions.style.display = \"none\";\n                    }\n                });\n                return [2 /*return*/];\n            });\n        });\n    }\n    // Setup the main document\n    function documentMain() {\n        return __awaiter(this, void 0, void 0, function () {\n            var nisElement, _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        nisElement = dochandler.main.get.elid(\"nis\");\n                        _a = nisElement;\n                        return [4 /*yield*/, fetch(\"./pages/doc/body.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                    case 1:\n                        _a.innerHTML = _b.sent();\n                        return [4 /*yield*/, getSuggestions()];\n                    case 2:\n                        suggestions = _b.sent();\n                        // Setup event listeners\n                        dochandler.main.get.elid(\"infobutton\").addEventListener('click', dochandler.open.aboutInfo);\n                        dochandler.main.get.elid(\"menubutton\").addEventListener('click', dochandler.open.settingsPage);\n                        dochandler.main.get.elid(\"donatebutton\").addEventListener('click', dochandler.open.donate);\n                        dochandler.main.get.elid(\"backbutton\").addEventListener('click', settings.change.goPreviousHistory);\n                        dochandler.main.get.elid(\"forwardbutton\").addEventListener('click', settings.change.goNextHistory);\n                        // Setup Search Listeners\n                        setupSearchListeners();\n                        // Setup warning link listener\n                        dochandler.main.get.elid(\"warning-link\").addEventListener('click', function (e) {\n                            dochandler.main.get.elid(\"warning-ui\").style.visibility = \"hidden\";\n                        });\n                        // Setup warnings based on the status\n                        if (window.alt1) {\n                            if (!alt1.permissionInstalled)\n                                dochandler.main.get.elid(\"warning-msg\").innerHTML = \"You should click <a href=\\\"https://slayer.unlishema.org\\\">Add App</a> at top right\";\n                            else if (!alt1.permissionOverlay || !alt1.permissionGameState || !alt1.permissionPixel)\n                                dochandler.main.get.elid(\"warning-msg\").innerHTML = \"This app is missing permissions\";\n                            else if (!alt1.rsLinked)\n                                dochandler.main.get.elid(\"warning-msg\").innerHTML = \"RuneScape not detected, <a onclick=\\\"window.open('https://discord.gg/G3SbcS8');\\\">troubleshoot</a>\";\n                            else\n                                dochandler.main.get.elid(\"warning-ui\").style.visibility = \"hidden\";\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    setup.documentMain = documentMain;\n    // Setup the base for double assignment\n    function doubleAssignment() {\n        return __awaiter(this, void 0, void 0, function () {\n            var baseElement, _a, _loop_1, i;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        limitedLoaded = true;\n                        baseElement = dochandler.main.get.elid(\"base\");\n                        _a = baseElement;\n                        return [4 /*yield*/, fetch(\"./pages/doc/dual.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                    case 1:\n                        _a.innerHTML = _b.sent();\n                        _loop_1 = function (i) {\n                            var side, _c, extraInfo, _d;\n                            return __generator(this, function (_e) {\n                                switch (_e.label) {\n                                    case 0:\n                                        side = dochandler.getSide(i);\n                                        _c = side;\n                                        return [4 /*yield*/, fetch(\"./pages/doc/example.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                                    case 1:\n                                        _c.innerHTML = _e.sent();\n                                        // Setup event listeners\n                                        dochandler.main.get.elc(\"task-wiki\", side).addEventListener('click', function () { return dochandler.open.wiki.assignment(i); });\n                                        dochandler.main.get.elc(\"task-wiki\", side).addEventListener('keydown', function (e) {\n                                            if (e.key === \"Enter\")\n                                                dochandler.main.get.elc(\"task-wiki\", side).click();\n                                        });\n                                        dochandler.main.get.elc(\"task-wiki\", side).addEventListener('mouseover', function () { return dochandler.hover.assignmentWiki(i); });\n                                        if (!!settings.controller.ui.limited) return [3 /*break*/, 3];\n                                        extraInfo = dochandler.main.get.elc(\"extra-info\", side);\n                                        _d = extraInfo;\n                                        return [4 /*yield*/, fetch(\"./pages/doc/example-extra.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                                    case 2:\n                                        _d.innerHTML = _e.sent();\n                                        limitedLoaded = false;\n                                        dochandler.main.get.elc(\"preview-task-wiki\", side).addEventListener('mouseleave', function () { return dochandler.hide.assignmentWikiPreview(i); });\n                                        dochandler.main.get.elc(\"preview-creature-wiki\", side).addEventListener('mouseleave', function () { return dochandler.hide.creatureWikiPreview(i); });\n                                        dochandler.main.get.elc(\"equipMore\", side).addEventListener('mouseenter', function () { return dochandler.hover.moreEquip(i); });\n                                        dochandler.main.get.elc(\"equipHidden\", side).addEventListener('mouseleave', function () { return dochandler.hide.moreEquip(i); });\n                                        dochandler.main.get.elc(\"locationMore\", side).addEventListener('mouseenter', function () { return dochandler.hover.moreLocations(i); });\n                                        dochandler.main.get.elc(\"locationHidden\", side).addEventListener('mouseleave', function () { return dochandler.hide.moreLocations(i); });\n                                        dochandler.main.get.elc(\"creature-wiki\", side).addEventListener('click', function () { return dochandler.open.wiki.creature(i); });\n                                        dochandler.main.get.elc(\"creature-wiki\", side).addEventListener('keydown', function (e) {\n                                            if (e.key === \"Enter\")\n                                                dochandler.main.get.elc(\"creature-wiki\", side).click();\n                                        });\n                                        dochandler.main.get.elc(\"creature-wiki\", side).addEventListener('mouseover', function () { return dochandler.hover.creatureWiki(i); });\n                                        dochandler.main.get.elc(\"creatures\", side).addEventListener('change', function () { return dochandler.change.creature(i); });\n                                        dochandler.main.get.elc(\"variants\", side).addEventListener('change', function () { return dochandler.change.variant(i); });\n                                        _e.label = 3;\n                                    case 3: return [2 /*return*/];\n                                }\n                            });\n                        };\n                        i = 0;\n                        _b.label = 2;\n                    case 2:\n                        if (!(i < 2)) return [3 /*break*/, 5];\n                        return [5 /*yield**/, _loop_1(i)];\n                    case 3:\n                        _b.sent();\n                        _b.label = 4;\n                    case 4:\n                        i++;\n                        return [3 /*break*/, 2];\n                    case 5:\n                        // Adjust the doc for limited and full\n                        adjustForSettings();\n                        doubleLoaded = true;\n                        singleLoaded = false;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    setup.doubleAssignment = doubleAssignment;\n    // Setup the base for single assignment\n    function singleAssignment(i) {\n        return __awaiter(this, void 0, void 0, function () {\n            var baseElement, _a, side, _b, extraInfo, _c, statusElement;\n            return __generator(this, function (_d) {\n                switch (_d.label) {\n                    case 0:\n                        limitedLoaded = true;\n                        baseElement = dochandler.main.get.elid(\"base\");\n                        _a = baseElement;\n                        return [4 /*yield*/, fetch(\"./pages/doc/single.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                    case 1:\n                        _a.innerHTML = _d.sent();\n                        side = dochandler.getSide(i);\n                        _b = side;\n                        return [4 /*yield*/, fetch(\"./pages/doc/example.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                    case 2:\n                        _b.innerHTML = _d.sent();\n                        // Setup event listeners\n                        dochandler.main.get.elc(\"task-wiki\", side).addEventListener('click', function () { return dochandler.open.wiki.assignment(i); });\n                        dochandler.main.get.elc(\"task-wiki\", side).addEventListener('mouseover', function () { return dochandler.hover.assignmentWiki(i); });\n                        if (!!settings.controller.ui.limited) return [3 /*break*/, 4];\n                        extraInfo = dochandler.main.get.elc(\"extra-info\", side);\n                        _c = extraInfo;\n                        return [4 /*yield*/, fetch(\"./pages/doc/example-extra.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                    case 3:\n                        _c.innerHTML = _d.sent();\n                        limitedLoaded = false;\n                        dochandler.main.get.elc(\"preview-task-wiki\", side).addEventListener('mouseleave', function () { return dochandler.hide.assignmentWikiPreview(i); });\n                        dochandler.main.get.elc(\"preview-creature-wiki\", side).addEventListener('mouseleave', function () { return dochandler.hide.creatureWikiPreview(i); });\n                        dochandler.main.get.elc(\"equipMore\", side).addEventListener('mouseenter', function () { return dochandler.hover.moreEquip(i); });\n                        dochandler.main.get.elc(\"equipHidden\", side).addEventListener('mouseleave', function () { return dochandler.hide.moreEquip(i); });\n                        dochandler.main.get.elc(\"locationMore\", side).addEventListener('mouseenter', function () { return dochandler.hover.moreLocations(i); });\n                        dochandler.main.get.elc(\"locationHidden\", side).addEventListener('mouseleave', function () { return dochandler.hide.moreLocations(i); });\n                        dochandler.main.get.elc(\"creature-wiki\", side).addEventListener('click', function () { return dochandler.open.wiki.creature(i); });\n                        dochandler.main.get.elc(\"creature-wiki\", side).addEventListener('mouseover', function () { return dochandler.hover.creatureWiki(i); });\n                        dochandler.main.get.elc(\"creatures\", side).addEventListener('change', function () { return dochandler.change.creature(i); });\n                        dochandler.main.get.elc(\"variants\", side).addEventListener('change', function () { return dochandler.change.variant(i); });\n                        _d.label = 4;\n                    case 4:\n                        statusElement = dochandler.main.get.elc(\"status\", side);\n                        if (settings.controller.ui.status) {\n                            statusElement.style.visibility = \"visible\";\n                        }\n                        else {\n                            statusElement.style.visibility = \"hidden\";\n                        }\n                        // Adjust the doc for limited and full\n                        adjustForSettings();\n                        singleLoaded = true;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    setup.singleAssignment = singleAssignment;\n    // Setup the base for reaper assignment\n    function reaperAssignment() {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, singleAssignment(2)];\n                    case 1:\n                        _a.sent();\n                        reaperLoaded = true;\n                        singleLoaded = false;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    setup.reaperAssignment = reaperAssignment;\n    // Setup the base for suggested\n    function suggested() {\n        return __awaiter(this, void 0, void 0, function () {\n            var baseElement, _a, suggestType, _loop_2, i;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        baseElement = dochandler.main.get.elid(\"base\");\n                        _a = baseElement;\n                        return [4 /*yield*/, fetch(\"./pages/doc/suggested.html?cache_bust=\".concat(Date.now())).then(function (r) { return r.text(); })];\n                    case 1:\n                        _a.innerHTML = _b.sent();\n                        suggestType = dochandler.main.get.elid(\"type-suggest\");\n                        if (suggestType) {\n                            suggestType.addEventListener('click', function () { return window.open(\"https://runescape.wiki/w/Slayer_training/High-levelled\"); });\n                        }\n                        _loop_2 = function (i) {\n                            var element = dochandler.main.get.elid(\"suggestion-\".concat(i));\n                            if (element) {\n                                element.addEventListener('click', function () { return slayer.searchTasks(element.innerHTML); });\n                            }\n                        };\n                        for (i = 1; i <= 12; i++) {\n                            _loop_2(i);\n                        }\n                        suggestedLoaded = true;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    setup.suggested = suggested;\n    // If limited, set the size of the base\n    function adjustForSettings() {\n        var baseElement = dochandler.main.get.elid(\"base\");\n        var divideElement = dochandler.main.get.elid(\"divide\");\n        var copyrightElement = dochandler.main.get.elid(\"copyright\");\n        if (settings.controller.ui.limited) {\n            baseElement.classList.remove(\"base-full\");\n            if (divideElement) {\n                divideElement.classList.remove(\"divide-full\");\n            }\n            copyrightElement.classList.remove(\"copyright-full\");\n        }\n        else {\n            baseElement.classList.add(\"base-full\");\n            if (divideElement) {\n                divideElement.classList.add(\"divide-full\");\n            }\n            copyrightElement.classList.add(\"copyright-full\");\n        }\n    }\n})(setup || (setup = {}));\nexport var toggle;\n(function (toggle) {\n    // Toggle if we are capturing screen or searching text\n    function searchText() {\n        return __awaiter(this, void 0, void 0, function () {\n            var searchResult, autoCaptureEnabled, searchInput;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        searchResult = slayer.searchResult;\n                        autoCaptureEnabled = settings.controller.autoCapture.enabled;\n                        return [4 /*yield*/, dochandler.main.get.searchInput()];\n                    case 1:\n                        searchInput = _a.sent();\n                        if ((searchResult && searchInput === \"\") || (!autoCaptureEnabled && searchInput === \"\")) {\n                            dochandler.main.set.searchButtonText(\"Capture\");\n                        }\n                        else {\n                            dochandler.main.set.searchButtonText(\"Search\");\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    }\n    toggle.searchText = searchText;\n})(toggle || (toggle = {}));\n","import * as dochandler from '../dochandler';\nimport * as settings from '../settings';\nimport * as logger from \"../logger\";\n// Open the Donate Page (https://www.paypal.com/donate/?hosted_button_id=LRFC6766YMVTQ)\nexport function donate() {\n    window.open(\"https://www.paypal.com/donate/?hosted_button_id=LRFC6766YMVTQ\");\n}\n// Open the about info page\nexport function aboutInfo() {\n    var width = 680;\n    var height = 550;\n    var left = window.screenX + (window.innerWidth / 2) - (width / 2);\n    var top = window.screenY + (window.innerHeight / 2) - (height / 2);\n    window.open(\"./pages/about.html?cache_bust=\".concat(Date.now()), null, \"width=\".concat(width, \",height=\").concat(height, \",left=\").concat(left, \",top=\").concat(top));\n}\n// Open the settings page\nexport function settingsPage() {\n    var width = 650;\n    var height = 600;\n    var left = window.screenX + (window.innerWidth / 2) - (width / 2);\n    var top = window.screenY + (window.innerHeight / 2) - (height / 2);\n    var settingsWindow = window.open(\"./pages/settings.html?cache_bust=\".concat(Date.now()), \"_blank\", \"width=\".concat(width, \",height=\").concat(height, \",left=\").concat(left, \",top=\").concat(top));\n    logger.warn(\"Settings Opened!\");\n    settingsWindow === null || settingsWindow === void 0 ? void 0 : settingsWindow.window.console.warn(\"Settings Loaded!\");\n    settingsWindow === null || settingsWindow === void 0 ? void 0 : settingsWindow.addEventListener('keyup', function (e) {\n        if ((e.which || e.keyCode) === 116) {\n            // Prevent F5 key press from refreshing the page\n            e.preventDefault();\n        }\n    });\n    settingsWindow === null || settingsWindow === void 0 ? void 0 : settingsWindow.addEventListener('beforeunload', function () {\n        // Load the new settings and apply them\n        settings.controller.load();\n        dochandler.main.toggle.searchText();\n        logger.warn(\"Settings Closed!\");\n        settingsWindow === null || settingsWindow === void 0 ? void 0 : settingsWindow.window.console.warn(\"Settings Saved!\");\n    });\n}\nexport var wiki;\n(function (wiki) {\n    // Opens the wiki page for a specific task\n    function assignment(i) {\n        var side = dochandler.getSide(i);\n        var task = dochandler.main.get.elc(\"name\", side).innerHTML;\n        if (task)\n            window.open(\"https://runescape.wiki/\".concat(task, \"_(Slayer_assignment)\"), \"_blank\");\n    }\n    wiki.assignment = assignment;\n    // Opens the wiki page for a specific creature\n    function creature(i) {\n        var side = dochandler.getSide(i);\n        var creature = dochandler.main.get.elc(\"creatures\", side).value;\n        var variant = dochandler.main.get.elc(\"variants\", side).value;\n        if (creature && variant)\n            window.open(\"https://runescape.wiki/\".concat(creature, \"#\").concat(variant), \"_blank\");\n        else if (creature)\n            window.open(\"https://runescape.wiki/\".concat(creature), \"_blank\");\n    }\n    wiki.creature = creature;\n    // Opens the wiki page for a specific master\n    function master(i, j) {\n        var side = dochandler.getSide(i);\n        var master = dochandler.main.get.elc(\"masterImage\" + j, side).alt;\n        if (master)\n            window.open(\"https://runescape.wiki/\".concat(master), \"_blank\");\n    }\n    wiki.master = master;\n})(wiki || (wiki = {}));\n","import * as dochandler from '../dochandler';\nimport * as settings from '../settings';\n// Show the specific Creature's preview wiki page\nexport function assignmentWikiPreview(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    dochandler.main.get.elc(\"preview-task-wiki\", side).style.visibility = \"visible\";\n}\n// Show the specific Creature's preview wiki page\nexport function creatureWikiPreview(i) {\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    dochandler.main.get.elc(\"preview-creature-wiki\", side).style.visibility = \"visible\";\n}\n// Show more Equipment for task\nexport function moreEquip(i) {\n    var _a;\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    var equipHiddenElement = dochandler.main.get.elc(\"equipHidden\", side);\n    if ((_a = equipHiddenElement.innerHTML) === null || _a === void 0 ? void 0 : _a.trimEnd()) {\n        equipHiddenElement.style.visibility = \"visible\";\n    }\n}\n// Show more Locations for task\nexport function moreLocations(i) {\n    var _a;\n    if (settings.controller.ui.limited)\n        return;\n    var side = dochandler.getSide(i);\n    var locationHiddenElement = dochandler.main.get.elc(\"locationHidden\", side);\n    if ((_a = locationHiddenElement.innerHTML) === null || _a === void 0 ? void 0 : _a.trimEnd()) {\n        locationHiddenElement.style.visibility = \"visible\";\n    }\n}\n","// Add commas into a number if its big enough\nexport function numberWithCommas(n) {\n    if (n == null)\n        return \"<span style=\\\"color: red;\\\">Empty</span>\";\n    if (n === -666)\n        return \"<span style=\\\"color: red;\\\">Error</span>\";\n    return n.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n// Convert hex color to RGB color\nexport function hexToRgb(hex) {\n    hex = hex.replace('#', '');\n    var r = parseInt(hex.substring(0, 2), 16);\n    var g = parseInt(hex.substring(2, 4), 16);\n    var b = parseInt(hex.substring(4, 6), 16);\n    return [r, g, b];\n}\n// Check if the list contains what you want to find\nexport function listContains(list, find) {\n    for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {\n        var l = list_1[_i];\n        if (decodeHtml(l).toLowerCase() === decodeHtml(find).toLowerCase())\n            return true;\n    }\n    return false;\n}\n// Get new width and height for image based on aspect ratio\nexport function calculateAspectRatioFit(srcWidth, srcHeight, maxWidth, maxHeight) {\n    var ratio = Math.min(maxWidth / srcWidth, maxHeight / srcHeight);\n    return { width: srcWidth * ratio, height: srcHeight * ratio };\n}\n// Decode the HTML chars that have been encoded during database downloading\nexport function decodeHtml(html) {\n    var txt = document.createElement(\"textarea\");\n    txt.innerHTML = html;\n    return txt.value;\n}\n","// Private queues and settings\nvar debugQueue = [];\nvar verboseQueue = [];\nvar queueLimit = 50;\nvar debugEnabled = false;\nvar verboseEnabled = false;\n// Set the queue limit for debug and verbose\nexport function setLimit(limit) {\n    queueLimit = limit;\n}\n// Enable or disable debug logging\nexport function setDebug(enabled) {\n    debugEnabled = enabled;\n    if (enabled)\n        debug(\"Debug logging enabled\"); // Force Flush the Queue\n}\n// Enable or disable verbose logging\nexport function setVerbose(enabled) {\n    verboseEnabled = enabled;\n    if (enabled)\n        verbose(\"Verbose logging enabled\"); // Force Flush the Queue\n}\n// Public: Log to the normal queue and flush the queue\nexport function log() {\n    var messages = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        messages[_i] = arguments[_i];\n    }\n    console.log.apply(console, messages);\n}\n// Public: Log to the warn queue and flush the queue\nexport function warn() {\n    var messages = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        messages[_i] = arguments[_i];\n    }\n    console.warn.apply(console, messages);\n}\n// Public: Log to the error queue and flush the queue\nexport function error() {\n    var messages = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        messages[_i] = arguments[_i];\n    }\n    console.error.apply(console, messages);\n}\n// Public: Log to the debug queue only if debug is enabled and flush the queue\nexport function debug() {\n    var messages = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        messages[_i] = arguments[_i];\n    }\n    debugQueue.push(messages.join(' '));\n    trimQueue(debugQueue);\n    if (debugEnabled)\n        flushQueue(debugQueue, \"Debug\");\n}\n// Public: Log to the verbose queue only if verbose is enabled and flush the queue\nexport function verbose() {\n    var messages = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        messages[_i] = arguments[_i];\n    }\n    verboseQueue.push(messages.join(' '));\n    trimQueue(verboseQueue);\n    if (verboseEnabled)\n        flushQueue(verboseQueue, \"Verbose\");\n}\n// Private: Trim the queue if it exceeds the limit (FIFO: remove first entry)\nfunction trimQueue(queue) {\n    if (queue.length > queueLimit)\n        queue.shift();\n}\n// Private: Flush and output the entire queue, emptying it afterward\nfunction flushQueue(queue, label) {\n    while (queue.length > 0) {\n        var message = queue.shift();\n        if (label === \"Debug\")\n            console.log(\"[\".concat(label, \"] \").concat(message));\n        if (label === \"Verbose\")\n            console.warn(\"[\".concat(label, \"] \").concat(message));\n    }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as dochandler from \"./dochandler\";\nimport * as slayer from \"./slayer\";\nimport * as main from \"./dochandler/main\";\nimport * as logger from \"./logger\";\n// Controls all the settings data\nvar SettingsDataController = /** @class */ (function () {\n    function SettingsDataController() {\n        this.loaded = false;\n        this.version = 1;\n        this.searchAlgorithim = \"default\";\n        this.autoCapture = {\n            enabled: true,\n            counter: true,\n            search: true,\n            loopTimer: 500,\n            counterTimer: 500,\n            searchTimer: 10000,\n            dialogTimer: 5000,\n        };\n        this.ui = {\n            style: \"default\",\n            limited: false,\n            status: false,\n            overlay: false,\n            overlayColor: \"#ff8c00\",\n            overlayTimer: 500,\n            historyRetentionCount: 10,\n            hideAlt1Warn: false,\n        };\n        this.hiddenCreatures = {\n            default: true,\n            dragonkin: true,\n            godWars: true,\n            ghorrock: true,\n            heartGielinor: true,\n            newVarrock: true,\n            shadowReef: true,\n            strongholdSecurity: true,\n            templeTrekking: true,\n            unchartedIsles: true,\n            elite: true,\n            monster: false,\n            summoned: true\n        };\n        this.default = {\n            taskName0: \"waterfiends\",\n            taskName1: \"black demons\",\n            taskCount0: 777,\n            taskCount1: 666\n        };\n    }\n    SettingsDataController.prototype.createTestInstance = function () {\n        // Store this app's instance locally so we always keep the same settings\n        var currentInstance = 0;\n        // On app load add the instance\n        document.addEventListener(\"DOMContentLoaded\", function () {\n            var instanceSet = JSON.parse(localStorage.getItem(\"instance-set\") || \"[]\");\n            currentInstance = (instanceSet[instanceSet.length - 1] || 0) + 1;\n            instanceSet.push(currentInstance);\n            localStorage.setItem(\"instance-set\", JSON.stringify(instanceSet));\n            var setting1 = localStorage.getItem(\"\".concat(currentInstance, \"-setting1\"));\n            var setting2 = localStorage.getItem(\"\".concat(currentInstance, \"-setting2\"));\n        });\n        // On app close remove the instance\n        document.addEventListener(\"beforeunload\", function () {\n            var instanceSet = JSON.parse(localStorage.getItem(\"instance-set\") || \"[]\");\n            var updatedSet = instanceSet.filter(function (i) { return i !== currentInstance; });\n            updatedSet.length ? localStorage.setItem(\"instance-set\", JSON.stringify(updatedSet)) : localStorage.removeItem(\"instance-set\");\n        });\n    };\n    SettingsDataController.prototype.load = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var tempSearchBoolFlip, res, legacyStyles, links, absoluteLegacyStyles_1;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        // If versioning system exists the load it up so we can use it\n                        if (localStorage.getItem('version') != null)\n                            this.version = this.decodeVersion(localStorage.getItem('version'));\n                        // We only want to update the versioning system on the first load\n                        if (!this.loaded) {\n                            // If Versioning system is missing or outdated then update it\n                            if (this.version < this.decodeVersion(\"0.0.6\")) {\n                                logger.warn(\"[Versioning] Versioning System is missing, setting up versioning system.\");\n                                // Remove pre-versioning system default tasks\n                                localStorage.removeItem('recent_task_0');\n                                localStorage.removeItem('recent_task_count_0');\n                                localStorage.removeItem('recent_task_1');\n                                localStorage.removeItem('recent_task_count_1');\n                                // Save the new versioning system since it wasn't setup or way outdated\n                                this.save();\n                            }\n                            // If the versioning system is updating to 0.0.22 then we need to flip the auto-capture-search value due to updated code\n                            if (this.version < this.decodeVersion(\"0.0.22\")) {\n                                logger.warn(\"[Versioning] Versioning System 0.0.22 flipped the auto-capture-search boolean, updating now!\");\n                                if (localStorage.getItem('auto-capture-search') !== null) {\n                                    tempSearchBoolFlip = localStorage.getItem(\"auto-capture-search\") === \"false\";\n                                    localStorage.setItem(\"auto-capture-search\", \"\".concat(tempSearchBoolFlip));\n                                }\n                                // Remove mistake on creating the ui-counter and ui-counterTimer instead of ui-overlay etc...\n                                if (localStorage.getItem('ui-counter') !== null)\n                                    localStorage.removeItem(\"ui-counter\");\n                                if (localStorage.getItem('ui-counter-timer') !== null)\n                                    localStorage.removeItem(\"ui-counter-timer\");\n                                // No need to save as we are just updating outdated settings here\n                            }\n                            // If we are updating to 0.0.25 then we need to make sure the new settings are setup\n                            if (this.version < this.decodeVersion(\"0.0.25\")) {\n                                logger.warn(\"[Versioning] Versioning System 0.0.25 new settings added, updating now!\");\n                                // Add these new UI settings as we have implemented them now\n                                if (localStorage.getItem('ui-style') == null)\n                                    localStorage.setItem(\"ui-style\", controller.ui.style);\n                                if (localStorage.getItem('ui-overlay-color') == null)\n                                    localStorage.setItem(\"ui-overlay-color\", \"\".concat(controller.ui.overlayColor));\n                                if (localStorage.getItem('ui-overlay-timer') == null)\n                                    localStorage.setItem(\"ui-overlay-timer\", \"\".concat(controller.ui.overlayTimer));\n                                if (localStorage.getItem('ui-history-retention-count') == null)\n                                    localStorage.setItem(\"ui-history-retention-count\", \"\".concat(controller.ui.historyRetentionCount));\n                                // Add the new hidden creatures settings\n                                if (localStorage.getItem('hidden-creatures-default') == null)\n                                    localStorage.setItem(\"hidden-creatures-default\", \"\".concat(controller.hiddenCreatures.default));\n                                if (localStorage.getItem('hidden-creatures-dragonkin') == null)\n                                    localStorage.setItem(\"hidden-creatures-dragonkin\", \"\".concat(controller.hiddenCreatures.dragonkin));\n                                if (localStorage.getItem('hidden-creatures-godWars') == null)\n                                    localStorage.setItem(\"hidden-creatures-godWars\", \"\".concat(controller.hiddenCreatures.godWars));\n                                if (localStorage.getItem('hidden-creatures-ghorrock') == null)\n                                    localStorage.setItem(\"hidden-creatures-ghorrock\", \"\".concat(controller.hiddenCreatures.ghorrock));\n                                if (localStorage.getItem('hidden-creatures-heartGielinor') == null)\n                                    localStorage.setItem(\"hidden-creatures-heartGielinor\", \"\".concat(controller.hiddenCreatures.heartGielinor));\n                                if (localStorage.getItem('hidden-creatures-newVarrock') == null)\n                                    localStorage.setItem(\"hidden-creatures-newVarrock\", \"\".concat(controller.hiddenCreatures.newVarrock));\n                                if (localStorage.getItem('hidden-creatures-shadowReef') == null)\n                                    localStorage.setItem(\"hidden-creatures-shadowReef\", \"\".concat(controller.hiddenCreatures.shadowReef));\n                                if (localStorage.getItem('hidden-creatures-strongholdSecurity') == null)\n                                    localStorage.setItem(\"hidden-creatures-strongholdSecurity\", \"\".concat(controller.hiddenCreatures.strongholdSecurity));\n                                if (localStorage.getItem('hidden-creatures-templeTrekking') == null)\n                                    localStorage.setItem(\"hidden-creatures-templeTrekking\", \"\".concat(controller.hiddenCreatures.templeTrekking));\n                                if (localStorage.getItem('hidden-creatures-unchartedIsles') == null)\n                                    localStorage.setItem(\"hidden-creatures-unchartedIsles\", \"\".concat(controller.hiddenCreatures.unchartedIsles));\n                                if (localStorage.getItem('hidden-creatures-elite') == null)\n                                    localStorage.setItem(\"hidden-creatures-elite\", \"\".concat(controller.hiddenCreatures.elite));\n                                if (localStorage.getItem('hidden-creatures-monster') == null)\n                                    localStorage.setItem(\"hidden-creatures-monster\", \"\".concat(controller.hiddenCreatures.monster));\n                                if (localStorage.getItem('hidden-creatures-summoned') == null)\n                                    localStorage.setItem(\"hidden-creatures-summoned\", \"\".concat(controller.hiddenCreatures.summoned));\n                            }\n                        }\n                        // Capture Settings\n                        controller.autoCapture.enabled = localStorage.getItem(\"auto-capture-enabled\") === \"true\";\n                        controller.autoCapture.counter = localStorage.getItem(\"auto-capture-counter\") === \"true\";\n                        controller.autoCapture.search = localStorage.getItem(\"auto-capture-search\") === \"true\";\n                        controller.autoCapture.loopTimer = parseInt(localStorage.getItem(\"auto-capture-timer-loop\"));\n                        controller.autoCapture.dialogTimer = parseInt(localStorage.getItem(\"auto-capture-timer-dialog\"));\n                        controller.autoCapture.counterTimer = parseInt(localStorage.getItem(\"auto-capture-timer-counter\"));\n                        controller.autoCapture.searchTimer = parseInt(localStorage.getItem(\"auto-capture-timer-search\"));\n                        // UI Settings\n                        if (alt1.skinName === \"default\" && localStorage.getItem('ui-style') !== \"default\")\n                            localStorage.setItem(\"ui-style\", \"default\");\n                        if (alt1.skinName === \"legacy\" && localStorage.getItem('ui-style') !== \"legacy\")\n                            localStorage.setItem(\"ui-style\", \"legacy\");\n                        controller.ui.style = localStorage.getItem(\"ui-style\");\n                        controller.ui.hideAlt1Warn = localStorage.getItem(\"ui-hideAlt1Warn\") === \"true\";\n                        controller.ui.limited = localStorage.getItem(\"ui-limited\") === \"true\";\n                        controller.ui.status = localStorage.getItem(\"ui-status\") === \"true\";\n                        controller.ui.overlay = localStorage.getItem(\"ui-overlay\") === \"true\";\n                        controller.ui.overlayColor = localStorage.getItem(\"ui-overlay-color\");\n                        controller.ui.overlayTimer = parseInt(localStorage.getItem(\"ui-overlay-timer\"));\n                        controller.ui.historyRetentionCount = parseInt(localStorage.getItem(\"ui-history-retention-count\"));\n                        // Hidden Creatures\n                        controller.hiddenCreatures.default = localStorage.getItem('hidden-creatures-default') === \"true\";\n                        controller.hiddenCreatures.dragonkin = localStorage.getItem('hidden-creatures-dragonkin') === \"true\";\n                        controller.hiddenCreatures.godWars = localStorage.getItem('hidden-creatures-godWars') === \"true\";\n                        controller.hiddenCreatures.ghorrock = localStorage.getItem('hidden-creatures-ghorrock') === \"true\";\n                        controller.hiddenCreatures.heartGielinor = localStorage.getItem('hidden-creatures-heartGielinor') === \"true\";\n                        controller.hiddenCreatures.newVarrock = localStorage.getItem('hidden-creatures-newVarrock') === \"true\";\n                        controller.hiddenCreatures.shadowReef = localStorage.getItem('hidden-creatures-shadowReef') === \"true\";\n                        controller.hiddenCreatures.strongholdSecurity = localStorage.getItem('hidden-creatures-strongholdSecurity') === \"true\";\n                        controller.hiddenCreatures.templeTrekking = localStorage.getItem('hidden-creatures-templeTrekking') === \"true\";\n                        controller.hiddenCreatures.unchartedIsles = localStorage.getItem('hidden-creatures-unchartedIsles') === \"true\";\n                        controller.hiddenCreatures.elite = localStorage.getItem('hidden-creatures-elite') === \"true\";\n                        controller.hiddenCreatures.monster = localStorage.getItem('hidden-creatures-monster') === \"true\";\n                        controller.hiddenCreatures.summoned = localStorage.getItem('hidden-creatures-summoned') === \"true\";\n                        return [4 /*yield*/, fetch(\"./pages/data/version.json?cache_bust=\".concat(Date.now())).then(function (r) { return r.json(); })];\n                    case 1:\n                        res = _a.sent();\n                        if (!this.loaded && this.version < this.decodeVersion(res['version'])) {\n                            this.version = this.decodeVersion(res['version']);\n                            this.save();\n                            window.location.href = \"\".concat(window.location.pathname, \"?cache_bust=\").concat(Date.now());\n                        }\n                        // TODO Load history here then reset the UI and load them\n                        main.reset.single();\n                        main.reset.double();\n                        main.reset.reaper();\n                        main.reset.suggested();\n                        legacyStyles = [\n                            \"./styles/legacy/index.css\",\n                            \"./styles/legacy/single.css\",\n                            \"./styles/legacy/double.css\",\n                        ];\n                        // Add each legacy CSS file to the <head>\n                        if (controller.ui.style === \"legacy\") {\n                            legacyStyles.forEach(function (stylePath) {\n                                var linkElement = document.createElement('link');\n                                linkElement.rel = 'stylesheet';\n                                linkElement.href = stylePath;\n                                document.head.appendChild(linkElement);\n                            });\n                        }\n                        // Remove each legacy CSS file from the <head>\n                        if (controller.ui.style === \"default\") {\n                            links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n                            absoluteLegacyStyles_1 = legacyStyles.map(function (stylePath) {\n                                return new URL(stylePath, document.baseURI).href;\n                            });\n                            links.forEach(function (link) {\n                                var linkHref = link.href;\n                                if (absoluteLegacyStyles_1.includes(linkHref))\n                                    link.parentNode.removeChild(link);\n                            });\n                        }\n                        // If we are hiding the warnings then lets apply that here\n                        if (controller.ui.hideAlt1Warn)\n                            dochandler.main.get.elid(\"warning-ui\").style.visibility = \"hidden\";\n                        if (!(this.default.taskName0 != null && this.default.taskName1 != null)) return [3 /*break*/, 3];\n                        return [4 /*yield*/, main.set.double({ name: this.default.taskName0, count: this.default.taskCount0 }, { name: this.default.taskName1, count: this.default.taskCount1 })];\n                    case 2:\n                        _a.sent();\n                        return [3 /*break*/, 5];\n                    case 3:\n                        if (!(this.default.taskName0 != null && this.default.taskName1 == null)) return [3 /*break*/, 5];\n                        return [4 /*yield*/, main.set.single({ name: this.default.taskName0, count: this.default.taskCount0 })];\n                    case 4:\n                        _a.sent();\n                        _a.label = 5;\n                    case 5:\n                        // Settings Loaded\n                        logger.log(\"Settings Loaded\");\n                        this.loaded = true;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    SettingsDataController.prototype.save = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                // Versioning System\n                if (this.version > this.decodeVersion(\"0.0.1\"))\n                    localStorage.setItem('version', this.encodeVersion(this.version));\n                // Capture Settings\n                localStorage.setItem(\"auto-capture-enabled\", \"\".concat(controller.autoCapture.enabled));\n                localStorage.setItem(\"auto-capture-counter\", \"\".concat(controller.autoCapture.counter));\n                localStorage.setItem(\"auto-capture-search\", \"\".concat(controller.autoCapture.search));\n                localStorage.setItem(\"auto-capture-timer-loop\", \"\".concat(controller.autoCapture.loopTimer));\n                localStorage.setItem(\"auto-capture-timer-dialog\", \"\".concat(controller.autoCapture.dialogTimer));\n                localStorage.setItem(\"auto-capture-timer-counter\", \"\".concat(controller.autoCapture.counterTimer));\n                localStorage.setItem(\"auto-capture-timer-search\", \"\".concat(controller.autoCapture.searchTimer));\n                // UI Settings\n                localStorage.setItem(\"ui-style\", \"\".concat(controller.ui.style));\n                localStorage.setItem(\"ui-hideAlt1Warn\", \"\".concat(controller.ui.hideAlt1Warn));\n                localStorage.setItem(\"ui-limited\", \"\".concat(controller.ui.limited));\n                localStorage.setItem(\"ui-status\", \"\".concat(controller.ui.status));\n                localStorage.setItem(\"ui-overlay\", \"\".concat(controller.ui.overlay));\n                localStorage.setItem(\"ui-overlay-color\", \"\".concat(controller.ui.overlayColor));\n                localStorage.setItem(\"ui-overlay-timer\", \"\".concat(controller.ui.overlayTimer));\n                localStorage.setItem(\"ui-history-retention-count\", \"\".concat(controller.ui.historyRetentionCount));\n                // Hidden Creatures\n                localStorage.setItem(\"hidden-creatures-default\", \"\".concat(controller.hiddenCreatures.default));\n                localStorage.setItem(\"hidden-creatures-dragonkin\", \"\".concat(controller.hiddenCreatures.dragonkin));\n                localStorage.setItem(\"hidden-creatures-godWars\", \"\".concat(controller.hiddenCreatures.godWars));\n                localStorage.setItem(\"hidden-creatures-ghorrock\", \"\".concat(controller.hiddenCreatures.ghorrock));\n                localStorage.setItem(\"hidden-creatures-heartGielinor\", \"\".concat(controller.hiddenCreatures.heartGielinor));\n                localStorage.setItem(\"hidden-creatures-newVarrock\", \"\".concat(controller.hiddenCreatures.newVarrock));\n                localStorage.setItem(\"hidden-creatures-shadowReef\", \"\".concat(controller.hiddenCreatures.shadowReef));\n                localStorage.setItem(\"hidden-creatures-strongholdSecurity\", \"\".concat(controller.hiddenCreatures.strongholdSecurity));\n                localStorage.setItem(\"hidden-creatures-templeTrekking\", \"\".concat(controller.hiddenCreatures.templeTrekking));\n                localStorage.setItem(\"hidden-creatures-unchartedIsles\", \"\".concat(controller.hiddenCreatures.unchartedIsles));\n                localStorage.setItem(\"hidden-creatures-elite\", \"\".concat(controller.hiddenCreatures.elite));\n                localStorage.setItem(\"hidden-creatures-monster\", \"\".concat(controller.hiddenCreatures.monster));\n                localStorage.setItem(\"hidden-creatures-summoned\", \"\".concat(controller.hiddenCreatures.summoned));\n                logger.log(\"Settings Saved\");\n                return [2 /*return*/];\n            });\n        });\n    };\n    SettingsDataController.prototype.decodeVersion = function (version) {\n        var versionSplit = version.split(\".\");\n        var versionUpper = versionSplit.length > 2 ? parseInt(versionSplit[0]) : 0;\n        var versionLower = parseInt(versionSplit.length > 2 ? versionSplit[1] : versionSplit[0]);\n        var versionPatch = parseInt(versionSplit.length > 2 ? versionSplit[2] : versionSplit[1]);\n        return ((versionUpper * 256 * 256) + (versionLower * 256) + versionPatch);\n    };\n    SettingsDataController.prototype.encodeVersion = function (version) {\n        var versionUpper = version > 256 * 256 ? version / (256 * 256) : 0;\n        var versionLower = version > 256 ? (version - (versionUpper * 256 * 256)) / 256 : 0;\n        var versionPatch = (version - (versionUpper * 256 * 256) - (versionLower * 256));\n        return versionUpper + \".\" + versionLower + \".\" + versionPatch;\n    };\n    return SettingsDataController;\n}());\nexport { SettingsDataController };\nexport var controller = new SettingsDataController();\n// Change history functions\nexport var change;\n(function (change) {\n    change.history = [];\n    change.index = 0;\n    function addHistory(history) {\n        if (!history)\n            return;\n        if ((history.type === \"single\" || history.type === \"reaper\") && !history.tasks && change.history.length > 0 &&\n            history.tasks[0].name === change.history[change.index].tasks[0].name)\n            return;\n        if (history.type === \"double\" && !history.tasks && change.history.length > 0 &&\n            history.tasks[0].name === change.history[change.index].tasks[0].name &&\n            history.tasks[1].name === change.history[change.index].tasks[1].name)\n            return;\n        if (history.type === \"suggestion\" && change.history.length > 0 && history.type === change.history[change.index].type)\n            return;\n        if (change.index + 1 != change.history.length)\n            change.history = change.history.slice(0, change.index + 1);\n        logger.warn(\"Added History:\", history);\n        change.history.push(history);\n        change.index = change.history.length - 1;\n        pruneHistory();\n        controller.save();\n    }\n    change.addHistory = addHistory;\n    function pruneHistory() {\n        if (change.history.length > controller.ui.historyRetentionCount) {\n            change.history = change.history.slice(1);\n            change.index = change.index - 1;\n        }\n    }\n    function refreshCurrent() {\n        if (change.index < 0 || change.index >= change.history.length)\n            return;\n        main.reset.single();\n        main.reset.double();\n        main.reset.reaper();\n        main.reset.suggested();\n        var currentChange = change.history[change.index];\n        logger.warn(\"Current History:\", currentChange);\n        if (currentChange.type === 'double')\n            main.set.double(currentChange.tasks[0], currentChange.tasks[1], true);\n        if (currentChange.type === 'single')\n            main.set.single(currentChange.tasks[0], true);\n        if (currentChange.type === 'reaper')\n            main.set.reaper(currentChange.tasks[0], true);\n        if (currentChange.type === 'suggestion')\n            main.set.suggested(true);\n        controller.save();\n    }\n    change.refreshCurrent = refreshCurrent;\n    function goPreviousHistory() {\n        if (change.index - 1 < 0)\n            return;\n        var previousChange = change.history[--change.index];\n        logger.warn(\"Previous History:\", previousChange);\n        if (previousChange.type === 'double')\n            main.set.double(previousChange.tasks[0], previousChange.tasks[1], true);\n        if (previousChange.type === 'single')\n            main.set.single(previousChange.tasks[0], true);\n        if (previousChange.type === 'reaper')\n            main.set.reaper(previousChange.tasks[0], true);\n        if (previousChange.type === 'suggestion')\n            main.set.suggested(true);\n        controller.save();\n    }\n    change.goPreviousHistory = goPreviousHistory;\n    function goNextHistory() {\n        if (change.index + 1 >= change.history.length)\n            return;\n        var nextChange = change.history[++change.index];\n        logger.warn(\"Next History:\", nextChange);\n        if (nextChange.type === 'double')\n            main.set.double(nextChange.tasks[0], nextChange.tasks[1], true);\n        if (nextChange.type === 'single')\n            main.set.single(nextChange.tasks[0], true);\n        if (nextChange.type === 'reaper')\n            main.set.reaper(nextChange.tasks[0], true);\n        if (nextChange.type === 'suggestion')\n            main.set.suggested(true);\n        controller.save();\n    }\n    change.goNextHistory = goNextHistory;\n})(change || (change = {}));\nexport function executeDevTools(value) {\n    return __awaiter(this, void 0, void 0, function () {\n        var counterData, slayerData, a, a, pos, box, _i, _a, _b, index, option, e_1;\n        return __generator(this, function (_c) {\n            switch (_c.label) {\n                case 0:\n                    if (value === \"devTools\") {\n                        logger.log(\" ~~~ Dev Tools ~ Information Opened ~~~ \");\n                        alt1.openBrowser(\"https://runeapps.org/forums/viewtopic.php?id=101\");\n                        return [2 /*return*/];\n                    }\n                    logger.log(\" ~~~ Dev Tools ~ Started ~~~ \");\n                    _c.label = 1;\n                case 1:\n                    _c.trys.push([1, 10, , 11]);\n                    if (!(value === \"size\")) return [3 /*break*/, 2];\n                    logger.log(\"Current Size: \".concat(document.body.clientWidth, \", \").concat(document.body.clientHeight));\n                    return [3 /*break*/, 9];\n                case 2:\n                    if (!(value === \"debug\")) return [3 /*break*/, 3];\n                    logger.setDebug(true);\n                    return [3 /*break*/, 9];\n                case 3:\n                    if (!(value === \"verbose\")) return [3 /*break*/, 4];\n                    logger.setVerbose(true);\n                    return [3 /*break*/, 9];\n                case 4:\n                    if (!(value === \"counterReader\")) return [3 /*break*/, 6];\n                    return [4 /*yield*/, slayer.counterReader.read()];\n                case 5:\n                    counterData = _c.sent();\n                    if (counterData) {\n                        logger.log(\"The Counter UI Collapsed [\".concat(counterData.collapsed, \"]\"));\n                        logger.log(\"The Counter UI Old School [\".concat(counterData.OS, \"]\"));\n                        logger.log(\"The Counter UI Reaper [\".concat(counterData.reaper, \"]\"));\n                        logger.log(\"The Counter UI Count [\".concat(counterData.count, \"]\"));\n                        logger.log(\"The Counter UI Task [\".concat(counterData.task, \"]\"));\n                    }\n                    else {\n                        logger.log(\" ~~~ Dev Tools ~ Error: Cannot read counter data! ~~~ \");\n                    }\n                    return [3 /*break*/, 9];\n                case 6:\n                    if (!(value === \"slayerReader\")) return [3 /*break*/, 8];\n                    return [4 /*yield*/, slayer.slayerReader.read()];\n                case 7:\n                    slayerData = _c.sent();\n                    if (slayerData) {\n                        logger.log(\"The Slayer Reader Select Your Own [\".concat(slayerData.selectYourOwn, \"]\"));\n                        logger.log(\"The Slayer Reader Reaper [\".concat(slayerData.reaper, \"]\"));\n                        logger.log(\"The Slayer Reader Ticket [\".concat(slayerData.ticket, \"]\"));\n                        for (a in slayerData.count) {\n                            logger.log(\"The Slayer Reader Count{\".concat(a, \"} [\").concat(slayerData.count[a], \"]\"));\n                        }\n                        for (a in slayerData.task) {\n                            logger.log(\"The Slayer Reader Task{\".concat(a, \"} [\").concat(slayerData.task[a], \"]\"));\n                        }\n                    }\n                    else {\n                        logger.log(\" ~~~ Dev Tools ~ Error: Cannot read slayer data! ~~~ \");\n                    }\n                    return [3 /*break*/, 9];\n                case 8:\n                    if (value === \"dialogReader\") {\n                        logger.log(\"Searching for Dialog...\");\n                        pos = slayer.slayerReader.dialogReader.find();\n                        if (!pos) {\n                            logger.log(\" ~~~ Dev Tools ~ Error: Cannot find the Dialog! ~~~ \");\n                            return [2 /*return*/];\n                        }\n                        box = slayer.slayerReader.dialogReader.read();\n                        if (!box) {\n                            logger.log(\" ~~~ Dev Tools ~ Error: Cannot read the Dialog! ~~~ \");\n                            return [2 /*return*/];\n                        }\n                        if (box.title)\n                            logger.log(\"The Dialog Box Title [\".concat(box.title, \"]\"));\n                        if (box.text)\n                            logger.log(\"The Dialog Box Text [\".concat(box.text, \"]\"));\n                        if (box.opts) {\n                            logger.log(\"The Dialog Box Options (\".concat(box.opts.length, \") [\").concat(box.opts, \"]\"));\n                            for (_i = 0, _a = box.opts.entries(); _i < _a.length; _i++) {\n                                _b = _a[_i], index = _b[0], option = _b[1];\n                                logger.log(\"\\t\".concat(index + 1, \". \").concat(option.text));\n                            }\n                        }\n                    }\n                    _c.label = 9;\n                case 9: return [3 /*break*/, 11];\n                case 10:\n                    e_1 = _c.sent();\n                    logger.error(\"~~~ Dev Tools ~ Error: Issue Capturing Screen! ~~~ \");\n                    return [3 /*break*/, 11];\n                case 11:\n                    logger.log(\" ~~~ Dev Tools ~ Finished ~~~ \");\n                    return [2 /*return*/];\n            }\n        });\n    });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as a1lib from \"alt1\";\nimport { SearchAlgorithm } from './SearchAlgorithm';\nimport { SlayerDialogReader } from './SlayerDialogReader';\nimport { UICounterReader } from './UICounterReader';\nimport * as settings from './settings';\nimport * as docHandler from './dochandler';\nimport * as logger from \"./logger\";\n// Setup the readers and search algo\nexport var searchAlgo = new SearchAlgorithm();\nexport var slayerReader = new SlayerDialogReader();\nexport var counterReader = new UICounterReader();\nexport var searchResult = false;\n// Get a timer and setup vars\nvar timer = function (ms) { return new Promise(function (res) { return setTimeout(res, ms); }); };\nvar loopRunning = false;\n// Check if we can capture the screen\nexport function canCaptureRunescape() {\n    return window.alt1 && alt1.rsLinked && alt1.permissionPixel;\n}\n// Capture the screen\nexport function captureRunescape() {\n    if (!canCaptureRunescape())\n        return null;\n    try {\n        return a1lib.captureHoldFullRs();\n    }\n    catch (ex) {\n        if (ex.message === \"capturehold failed\")\n            logger.warn(\"Capturing screen failed! Is runescape open?\");\n    }\n    return null;\n}\n// Find a task on the current screen\nexport function findTask(buffer) {\n    return __awaiter(this, void 0, void 0, function () {\n        var slayerData, counterData;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    if (!settings.controller.autoCapture.enabled || loopRunning || searchResult)\n                        return [2 /*return*/];\n                    if (!buffer)\n                        buffer = captureRunescape();\n                    if (!buffer)\n                        return [2 /*return*/];\n                    loopRunning = true;\n                    docHandler.animate.loadingStop();\n                    return [4 /*yield*/, slayerReader.read(buffer)];\n                case 1:\n                    slayerData = _a.sent();\n                    if (!(slayerData && slayerData[0])) return [3 /*break*/, 11];\n                    docHandler.animate.loading();\n                    if (!slayerData.selectYourOwn) return [3 /*break*/, 3];\n                    docHandler.main.set.suggested();\n                    docHandler.animate.loadingStop();\n                    return [4 /*yield*/, timer(settings.controller.autoCapture.dialogTimer)];\n                case 2:\n                    _a.sent();\n                    loopRunning = false;\n                    return [2 /*return*/];\n                case 3:\n                    if (!(slayerData.reaper && !slayerData.ticket)) return [3 /*break*/, 5];\n                    return [4 /*yield*/, docHandler.main.set.reaper({ name: slayerData[0].task, count: slayerData[0].count })];\n                case 4:\n                    _a.sent();\n                    return [3 /*break*/, 9];\n                case 5:\n                    if (!slayerData.ticket) return [3 /*break*/, 7];\n                    return [4 /*yield*/, docHandler.main.set.double({ name: slayerData[0].task, count: slayerData[0].count }, { name: slayerData[1].task, count: slayerData[1].count })];\n                case 6:\n                    _a.sent();\n                    return [3 /*break*/, 9];\n                case 7: return [4 /*yield*/, docHandler.main.set.single({ name: slayerData[0].task, count: slayerData[0].count })];\n                case 8:\n                    _a.sent();\n                    _a.label = 9;\n                case 9:\n                    docHandler.animate.loadingStop();\n                    return [4 /*yield*/, timer(settings.controller.autoCapture.dialogTimer)];\n                case 10:\n                    _a.sent();\n                    loopRunning = false;\n                    return [3 /*break*/, 21];\n                case 11:\n                    if (!settings.controller.autoCapture.counter) return [3 /*break*/, 20];\n                    return [4 /*yield*/, counterReader.read(buffer)];\n                case 12:\n                    counterData = _a.sent();\n                    if (!counterData) return [3 /*break*/, 18];\n                    docHandler.animate.loading();\n                    if (!(counterData.reaper && (docHandler.main.reaperLoaded || counterData.task != null))) return [3 /*break*/, 14];\n                    return [4 /*yield*/, docHandler.main.set.reaper({ name: counterData.task, count: counterData.count })];\n                case 13:\n                    _a.sent();\n                    return [3 /*break*/, 16];\n                case 14:\n                    if (!(!counterData.reaper && (docHandler.main.singleLoaded || counterData.task != null))) return [3 /*break*/, 16];\n                    return [4 /*yield*/, docHandler.main.set.single({ name: counterData.task, count: counterData.count })];\n                case 15:\n                    _a.sent();\n                    _a.label = 16;\n                case 16:\n                    docHandler.animate.loadingStop();\n                    return [4 /*yield*/, timer(settings.controller.autoCapture.counterTimer)];\n                case 17:\n                    _a.sent();\n                    loopRunning = false;\n                    return [3 /*break*/, 19];\n                case 18:\n                    docHandler.animate.loadingStop();\n                    loopRunning = false;\n                    _a.label = 19;\n                case 19: return [3 /*break*/, 21];\n                case 20:\n                    docHandler.animate.loadingStop();\n                    loopRunning = false;\n                    _a.label = 21;\n                case 21: return [2 /*return*/];\n            }\n        });\n    });\n}\n// Search for tasks\nexport function searchTasks(value) {\n    return __awaiter(this, void 0, void 0, function () {\n        var tool, lookup, tasks, _i, lookup_1, term, normalizedTerm, data;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    if (!!value) return [3 /*break*/, 2];\n                    return [4 /*yield*/, docHandler.main.get.searchInput()];\n                case 1:\n                    value = _a.sent();\n                    _a.label = 2;\n                case 2:\n                    docHandler.main.reset.searchBox();\n                    if (!(value.length == 0 && (searchResult || !settings.controller.autoCapture.enabled))) return [3 /*break*/, 4];\n                    searchResult = false;\n                    docHandler.main.toggle.searchText();\n                    return [4 /*yield*/, findTask()];\n                case 3:\n                    _a.sent();\n                    return [2 /*return*/];\n                case 4:\n                    if (value.startsWith(\"devTools \")) {\n                        tool = value.includes(\" \") ? value.substring(value.indexOf(\" \") + 1) : value;\n                        settings.executeDevTools(tool);\n                        return [2 /*return*/];\n                    }\n                    else if (value.toLowerCase().includes(\"suggest\")) {\n                        docHandler.main.set.suggested();\n                        return [2 /*return*/];\n                    }\n                    _a.label = 5;\n                case 5:\n                    searchResult = true;\n                    docHandler.main.toggle.searchText();\n                    logger.log(\"Searching for: \" + value);\n                    lookup = value.includes(\"|\") ?\n                        [value.substring(0, value.indexOf(\"|\")), value.substring(value.indexOf(\"|\") + 1)] :\n                        [value];\n                    tasks = [];\n                    _i = 0, lookup_1 = lookup;\n                    _a.label = 6;\n                case 6:\n                    if (!(_i < lookup_1.length)) return [3 /*break*/, 9];\n                    term = lookup_1[_i];\n                    normalizedTerm = term;\n                    // Remove all whitespaces at start and end of search term just incase\n                    while (normalizedTerm.startsWith(\" \"))\n                        normalizedTerm = normalizedTerm.substring(1);\n                    while (normalizedTerm.endsWith(\" \"))\n                        normalizedTerm = normalizedTerm.substring(0, normalizedTerm.length - 2);\n                    return [4 /*yield*/, searchAlgo.lookup(normalizedTerm, lookup.length > 1)];\n                case 7:\n                    data = _a.sent();\n                    if (data) {\n                        logger.log(\"Search for (Reaper/Slayer Assignment, Alias, or Creature): \" + data.task);\n                        tasks.push({ name: data.task, reaper: data.reaper });\n                    }\n                    _a.label = 8;\n                case 8:\n                    _i++;\n                    return [3 /*break*/, 6];\n                case 9:\n                    if (!(tasks.length > 1)) return [3 /*break*/, 11];\n                    return [4 /*yield*/, docHandler.main.set.double({ name: tasks[0].name, count: 1 }, { name: tasks[1].name, count: 1 })];\n                case 10:\n                    _a.sent();\n                    return [3 /*break*/, 15];\n                case 11:\n                    if (!(tasks.length == 1)) return [3 /*break*/, 15];\n                    if (!tasks[0].reaper) return [3 /*break*/, 13];\n                    return [4 /*yield*/, docHandler.main.set.reaper({ name: tasks[0].name, count: 1 })];\n                case 12:\n                    _a.sent();\n                    return [3 /*break*/, 15];\n                case 13: return [4 /*yield*/, docHandler.main.set.single({ name: tasks[0].name, count: 1 })];\n                case 14:\n                    _a.sent();\n                    _a.label = 15;\n                case 15:\n                    docHandler.animate.loadingStop();\n                    if (!settings.controller.autoCapture.search) return [3 /*break*/, 17];\n                    return [4 /*yield*/, timer(settings.controller.autoCapture.searchTimer)];\n                case 16:\n                    _a.sent();\n                    searchResult = false;\n                    docHandler.main.toggle.searchText();\n                    _a.label = 17;\n                case 17: return [2 /*return*/];\n            }\n        });\n    });\n}\n","if(typeof __WEBPACK_EXTERNAL_MODULE_canvas__ === 'undefined') { var e = new Error(\"Cannot find module 'canvas'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_canvas__;","if(typeof __WEBPACK_EXTERNAL_MODULE_electron_common__ === 'undefined') { var e = new Error(\"Cannot find module 'electron/common'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_electron_common__;","if(typeof __WEBPACK_EXTERNAL_MODULE_sharp__ === 'undefined') { var e = new Error(\"Cannot find module 'sharp'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_sharp__;","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"sharp\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"canvas\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"electron/common\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"sharp\", \"canvas\", \"electron/common\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"base\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"sharp\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"canvas\"); } catch(e) {} }()), (function webpackLoadOptionalExternalModule() { try { return require(\"electron/common\"); } catch(e) {} }()));\n\telse\n\t\troot[\"A1lib\"] = factory(root[\"sharp\"], root[\"canvas\"], root[\"electron/common\"]);\n})(globalThis, (__WEBPACK_EXTERNAL_MODULE_sharp__, __WEBPACK_EXTERNAL_MODULE_canvas__, __WEBPACK_EXTERNAL_MODULE_electron_common__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./src/base/alt1api.ts\":\n/*!*****************************!*\\\n  !*** ./src/base/alt1api.ts ***!\n  \\*****************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n\n\n/***/ }),\n\n/***/ \"./src/base/declarations.ts\":\n/*!**********************************!*\\\n  !*** ./src/base/declarations.ts ***!\n  \\**********************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n\n\n/***/ }),\n\n/***/ \"./src/base/imagedata-extensions.ts\":\n/*!******************************************!*\\\n  !*** ./src/base/imagedata-extensions.ts ***!\n  \\******************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ImageData = void 0;\nconst a1lib = __importStar(__webpack_require__(/*! ./index */ \"./src/base/index.ts\"));\nconst nodeimports = __importStar(__webpack_require__(/*! ./nodepolyfill */ \"./src/base/nodepolyfill.ts\"));\n// //TODO revamp this madness a bit?\n// (function () {\n// \tvar globalvar = (typeof self != \"undefined\" ? self : (typeof (global as any) != \"undefined\" ? (global as any) : null)) as any;\n// \t//use the node-canvas version when on node\n// \tif (typeof globalvar.ImageData == \"undefined\") {\n// \t\tlet nodecnv = requireNodeCanvas();\n// \t\tglobalvar.ImageData = nodecnv.ImageData;\n// \t}\n// \tvar fill = typeof globalvar.ImageData == \"undefined\";\n// \t//should never be reach anymore\n// \tvar constr = function (this: any) {\n// \t\tvar i = 0;\n// \t\tvar data = (arguments[i] instanceof Uint8ClampedArray ? arguments[i++] : null);\n// \t\tvar width = arguments[i++];\n// \t\tvar height = arguments[i++];\n// \t\tif (fill) {\n// \t\t\tif (!data) { data = new Uint8ClampedArray(width * height * 4); }\n// \t\t\tthis.width = width;\n// \t\t\tthis.height = height;\n// \t\t\tthis.data = data;\n// \t\t}\n// \t\telse if (oldconstr) {\n// \t\t\treturn (data ? new oldconstr(data, width, height) : new oldconstr(width, height));\n// \t\t} else {\n// \t\t\tvar canvas = document.createElement('canvas');\n// \t\t\tcanvas.width = width;\n// \t\t\tcanvas.height = height;\n// \t\t\tvar ctx = canvas.getContext(\"2d\")!;\n// \t\t\tvar imageData = ctx.createImageData(width, height);\n// \t\t\tif (data) { imageData.data.set(data); }\n// \t\t\treturn imageData;\n// \t\t}\n// \t}\n// \tvar oldconstr = globalvar.ImageData;\n// \tif (typeof document != \"undefined\") {\n// \t\ttry {\n// \t\t\tnew oldconstr(1, 1);\n// \t\t} catch (e) {\n// \t\t\t//direct constructor call not allowed in ie\n// \t\t\toldconstr = null;\n// \t\t}\n// \t}\n// \tif (!fill) { constr.prototype = globalvar.ImageData.prototype; }\n// \tglobalvar.ImageData = constr;\n// \tImageData = constr as any;\n// })();\n(function () {\n    var globalvar = (typeof self != \"undefined\" ? self : (typeof __webpack_require__.g != \"undefined\" ? __webpack_require__.g : null));\n    var filltype = typeof globalvar.ImageData == \"undefined\" || typeof globalvar.document == \"undefined\";\n    var fillconstr = filltype;\n    if (!filltype) {\n        var oldconstr = globalvar.ImageData;\n        try {\n            let data = new Uint8ClampedArray(4);\n            data[0] = 1;\n            let a = new globalvar.ImageData(data, 1, 1);\n            fillconstr = a.data[0] != 1;\n        }\n        catch (e) {\n            fillconstr = true;\n        }\n    }\n    if (fillconstr) {\n        var constr = function ImageDataShim() {\n            var i = 0;\n            var data = (arguments[i] instanceof Uint8ClampedArray ? arguments[i++] : null);\n            var width = arguments[i++];\n            var height = arguments[i++];\n            if (filltype) {\n                if (!data) {\n                    data = new Uint8ClampedArray(width * height * 4);\n                }\n                this.width = width;\n                this.height = height;\n                this.data = data;\n            }\n            else if (fillconstr) {\n                //WARNING This branch of code does not use the same pixel data backing store\n                //(problem with wasm, however all wasm browser have a native constructor (unless asm.js is used))\n                var canvas = document.createElement('canvas');\n                canvas.width = width;\n                canvas.height = height;\n                var ctx = canvas.getContext(\"2d\");\n                var imageData = ctx.createImageData(width, height);\n                if (data) {\n                    imageData.data.set(data);\n                }\n                return imageData;\n            }\n            // else {\n            // \t//oh no...\n            // \t//we need this monstrocity in order to call the native constructor with variable number of args\n            // \t//when es5 transpile is enable (that strips the spread operator)\n            // \treturn new (Function.prototype.bind.apply(oldconstr, [null,...arguments]));\n            // }\n        };\n        if (!filltype) {\n            constr.prototype = globalvar.ImageData.prototype;\n        }\n        globalvar.ImageData = constr;\n        exports.ImageData = constr;\n    }\n    else {\n        exports.ImageData = globalvar.ImageData;\n    }\n})();\n//Recast into a drawable imagedata class on all platforms, into a normal browser ImageData on browsers or a node-canvas imagedata on nodejs\nexports.ImageData.prototype.toDrawableData = function () {\n    if (typeof document == \"undefined\") {\n        return nodeimports.imageDataToDrawable(this);\n    }\n    else {\n        return this;\n    }\n};\nexports.ImageData.prototype.putImageData = function (buf, cx, cy) {\n    for (var dx = 0; dx < buf.width; dx++) {\n        for (var dy = 0; dy < buf.height; dy++) {\n            var i1 = (dx + cx) * 4 + (dy + cy) * 4 * this.width;\n            var i2 = dx * 4 + dy * 4 * buf.width;\n            this.data[i1] = buf.data[i2];\n            this.data[i1 + 1] = buf.data[i2 + 1];\n            this.data[i1 + 2] = buf.data[i2 + 2];\n            this.data[i1 + 3] = buf.data[i2 + 3];\n        }\n    }\n};\nexports.ImageData.prototype.pixelOffset = function (x, y) {\n    return x * 4 + y * this.width * 4;\n};\n//creates a hash of a portion of the buffer used to check for changes\nexports.ImageData.prototype.getPixelHash = function (rect) {\n    if (!rect) {\n        rect = new a1lib.Rect(0, 0, this.width, this.height);\n    }\n    var hash = 0;\n    for (var x = rect.x; x < rect.x + rect.width; x++) {\n        for (var y = rect.y; y < rect.y + rect.height; y++) {\n            var i = x * 4 + y * 4 * this.width;\n            hash = (((hash << 5) - hash) + this.data[i]) | 0;\n            hash = (((hash << 5) - hash) + this.data[i + 1]) | 0;\n            hash = (((hash << 5) - hash) + this.data[i + 2]) | 0;\n            hash = (((hash << 5) - hash) + this.data[i + 3]) | 0;\n        }\n    }\n    return hash;\n};\nexports.ImageData.prototype.clone = function (rect) {\n    return this.toImage(rect).getContext(\"2d\").getImageData(0, 0, rect.width, rect.height);\n};\nexports.ImageData.prototype.show = function (x = 5, y = 5, zoom = 1) {\n    if (typeof document == \"undefined\") {\n        console.error(\"need a document to show an imagedata object\");\n        return;\n    }\n    var imgs = document.getElementsByClassName(\"debugimage\");\n    while (imgs.length > exports.ImageData.prototype.show.maxImages) {\n        imgs[0].remove();\n    }\n    var el = this.toImage();\n    el.classList.add(\"debugimage\");\n    el.style.position = \"absolute\";\n    el.style.zIndex = \"1000\";\n    el.style.left = x / zoom + \"px\";\n    el.style.top = y / zoom + \"px\";\n    el.style.background = \"purple\";\n    el.style.cursor = \"pointer\";\n    el.style.imageRendering = \"pixelated\";\n    el.style.outline = \"1px solid #0f0\";\n    el.style.width = (this.width == 1 ? 100 : this.width) * zoom + \"px\";\n    el.style.height = (this.height == 1 ? 100 : this.height) * zoom + \"px\";\n    el.onclick = function () { el.remove(); };\n    document.body.appendChild(el);\n    return el;\n};\nexports.ImageData.prototype.show.maxImages = 10;\nexports.ImageData.prototype.toImage = function (rect) {\n    if (!rect) {\n        rect = new a1lib.Rect(0, 0, this.width, this.height);\n    }\n    if (typeof document != \"undefined\") {\n        var el = document.createElement(\"canvas\");\n        el.width = rect.width;\n        el.height = rect.height;\n    }\n    else {\n        el = nodeimports.createCanvas(rect.width, rect.height);\n    }\n    var ctx = el.getContext(\"2d\");\n    ctx.putImageData(this.toDrawableData(), -rect.x, -rect.y);\n    return el;\n};\nexports.ImageData.prototype.getPixel = function (x, y) {\n    var i = x * 4 + y * 4 * this.width;\n    return [this.data[i], this.data[i + 1], this.data[i + 2], this.data[i + 3]];\n};\nexports.ImageData.prototype.getPixelValueSum = function (x, y) {\n    var i = x * 4 + y * 4 * this.width;\n    return this.data[i] + this.data[i + 1] + this.data[i + 2];\n};\nexports.ImageData.prototype.getPixelInt = function (x, y) {\n    var i = x * 4 + y * 4 * this.width;\n    return (this.data[i + 3] << 24) + (this.data[i + 0] << 16) + (this.data[i + 1] << 8) + (this.data[i + 2] << 0);\n};\nexports.ImageData.prototype.getColorDifference = function (x, y, r, g, b, a = 255) {\n    var i = x * 4 + y * 4 * this.width;\n    return Math.abs(this.data[i] - r) + Math.abs(this.data[i + 1] - g) + Math.abs(this.data[i + 2] - b) * a / 255;\n};\nexports.ImageData.prototype.setPixel = function (x, y, ...color) {\n    var r, g, b, a;\n    var [r, g, b, a] = (Array.isArray(color[0]) ? color[0] : color);\n    var i = x * 4 + y * 4 * this.width;\n    this.data[i] = r;\n    this.data[i + 1] = g;\n    this.data[i + 2] = b;\n    this.data[i + 3] = a == undefined ? 255 : a;\n};\nexports.ImageData.prototype.setPixelInt = function (x, y, color) {\n    var i = x * 4 + y * 4 * this.width;\n    this.data[i] = (color >> 24) & 0xff;\n    this.data[i + 1] = (color >> 16) & 0xff;\n    this.data[i + 2] = (color >> 8) & 0xff;\n    this.data[i + 3] = (color >> 0) & 0xff;\n};\nexports.ImageData.prototype.toFileBytes = function (format, quality) {\n    if (typeof HTMLCanvasElement != \"undefined\") {\n        return new Promise(d => this.toImage().toBlob(b => {\n            var r = new FileReader();\n            r.readAsArrayBuffer(b);\n            r.onload = () => d(new Uint8Array(r.result));\n        }, format, quality));\n    }\n    else {\n        return nodeimports.imageDataToFileBytes(this, format, quality);\n    }\n};\nexports.ImageData.prototype.toPngBase64 = function () {\n    if (typeof HTMLCanvasElement != \"undefined\") {\n        var str = this.toImage().toDataURL(\"image/png\");\n        return str.slice(str.indexOf(\",\") + 1);\n    }\n    else {\n        throw new Error(\"synchronous image conversion not supported in nodejs, try using ImageData.prototype.toFileBytes\");\n    }\n};\nexports.ImageData.prototype.pixelCompare = function (buf, x = 0, y = 0, max) {\n    return a1lib.ImageDetect.simpleCompare(this, buf, x, y, max);\n};\nexports.ImageData.prototype.copyTo = function (target, sourcex, sourcey, width, height, targetx, targety) {\n    //convince v8 that these are 31bit uints\n    const targetwidth = target.width | 0;\n    const thiswidth = this.width | 0;\n    const copywidth = width | 0;\n    const fastwidth = Math.floor(width / 4) * 4;\n    const thisdata = new Int32Array(this.data.buffer, this.data.byteOffset, this.data.byteLength / 4);\n    const targetdata = new Int32Array(target.data.buffer, target.data.byteOffset, target.data.byteLength / 4);\n    for (let cy = 0; cy < height; cy++) {\n        let cx = 0;\n        let it = (cx + targetx) + (cy + targety) * targetwidth;\n        let is = (cx + sourcex) + (cy + sourcey) * thiswidth;\n        //copy 4 pixels per iter (xmm)\n        for (; cx < fastwidth; cx += 4) {\n            targetdata[it] = thisdata[is];\n            targetdata[it + 1] = thisdata[is + 1];\n            targetdata[it + 2] = thisdata[is + 2];\n            targetdata[it + 3] = thisdata[is + 3];\n            it += 4;\n            is += 4;\n        }\n        //copy remainder per pixel\n        for (; cx < copywidth; cx++) {\n            targetdata[it] = thisdata[is];\n            it += 1;\n            is += 1;\n        }\n    }\n};\nif (typeof HTMLImageElement != \"undefined\") {\n    HTMLImageElement.prototype.toBuffer = function (x = 0, y = 0, w = this.width, h = this.height) {\n        var cnv = document.createElement(\"canvas\");\n        cnv.width = w;\n        cnv.height = h;\n        var ctx = cnv.getContext(\"2d\");\n        ctx.drawImage(this, -x, -y);\n        return ctx.getImageData(0, 0, w, h);\n    };\n    HTMLImageElement.prototype.toCanvas = function (x = 0, y = 0, w = this.width, h = this.height) {\n        var cnv = document.createElement(\"canvas\");\n        cnv.width = w;\n        cnv.height = h;\n        var ctx = cnv.getContext(\"2d\");\n        ctx.drawImage(this, -x, -y);\n        return cnv;\n    };\n}\n\n\n/***/ }),\n\n/***/ \"./src/base/imagedetect.ts\":\n/*!*********************************!*\\\n  !*** ./src/base/imagedetect.ts ***!\n  \\*********************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ImageDataSet = exports.webpackImages = exports.asyncMap = exports.coldif = exports.simpleCompareRMSE = exports.simpleCompare = exports.findSubbuffer = exports.findSubimage = exports.clearPngColorspace = exports.isPngBuffer = exports.imageDataFromFileBuffer = exports.imageDataFromBase64 = exports.imageDataFromUrl = void 0;\nconst imgref_1 = __webpack_require__(/*! ./imgref */ \"./src/base/imgref.ts\");\nconst wapper = __importStar(__webpack_require__(/*! ./wrapper */ \"./src/base/wrapper.ts\"));\nconst nodeimports = __importStar(__webpack_require__(/*! ./nodepolyfill */ \"./src/base/nodepolyfill.ts\"));\nconst _1 = __webpack_require__(/*! . */ \"./src/base/index.ts\");\n/**\n* Downloads an image and returns the ImageData\n* Make sure the png image does not have a sRGB chunk or the resulting pixels will differ for different users!!!\n* @param url http(s) or data url to the image\n*/\nasync function imageDataFromUrl(url) {\n    if (typeof Image != \"undefined\") {\n        var img = new Image();\n        img.crossOrigin = \"crossorigin\";\n        return await new Promise((done, fail) => {\n            img.onload = function () { done(img.toBuffer()); };\n            img.onerror = fail;\n            img.src = url;\n        });\n    }\n    else {\n        var hdr = \"data:image/png;base64,\";\n        if (url.startsWith(hdr)) {\n            return imageDataFromBase64(url.slice(hdr.length));\n        }\n        throw new Error(\"loading remote images in nodejs has been disabled, load the raw bytes and use imageDataFromNodeBuffer instead\");\n    }\n}\nexports.imageDataFromUrl = imageDataFromUrl;\n/**\n* Loads an ImageData object from a base64 encoded png image\n* Make sure the png image does not have a sRGB chunk or the resulting pixels will differ for different users!!!\n* @param data a base64 encoded png image\n*/\nasync function imageDataFromBase64(data) {\n    if (typeof Image != \"undefined\") {\n        return imageDataFromUrl(\"data:image/png;base64,\" + data);\n    }\n    else {\n        return nodeimports.imageDataFromBase64(data);\n    }\n}\nexports.imageDataFromBase64 = imageDataFromBase64;\n/**\n * Loads an ImageData object directly from a png encoded file buffer\n * This method ensures that png color space headers are taken care off\n * @param data The bytes of a png file\n */\nasync function imageDataFromFileBuffer(data) {\n    clearPngColorspace(data);\n    if (typeof Image != \"undefined\") {\n        let blob = new Blob([data], { type: \"image/png\" });\n        let url = URL.createObjectURL(blob);\n        let r = await imageDataFromUrl(url);\n        URL.revokeObjectURL(url);\n        return r;\n    }\n    else {\n        return nodeimports.imageDataFromBuffer(data);\n    }\n}\nexports.imageDataFromFileBuffer = imageDataFromFileBuffer;\n/**\n* Checks if a given byte array is a png file (by checking for ?PNG as first 4 bytes)\n* @param bytes Raw bytes of the png file\n*/\nfunction isPngBuffer(bytes) {\n    return bytes[0] == 137 && bytes[1] == 80 && bytes[2] == 78 && bytes[3] == 71;\n}\nexports.isPngBuffer = isPngBuffer;\n/**\n* Resets the colorspace data in the png file.\n* This makes sure the browser renders the exact colors in the file instead of filtering it in order to obtain the best real life representation of\n* what it looked like on the authors screen. (this feature is often broken and not supported)\n* For example a round trip printscreen -> open in browser results in different colors than the original\n* @param data Raw bytes of the png file\n*/\nfunction clearPngColorspace(data) {\n    if (!isPngBuffer(data)) {\n        throw new Error(\"non-png image received\");\n    }\n    var i = 8;\n    while (i < data.length) {\n        var length = data[i++] * 0x1000000 + data[i++] * 0x10000 + data[i++] * 0x100 + data[i++];\n        var ancillary = !!((data[i] >> 5) & 1);\n        var chunkname = String.fromCharCode(data[i], data[i + 1], data[i + 2], data[i + 3]);\n        var chunkid = chunkname.toLowerCase();\n        if (chunkid != \"trns\" && ancillary) {\n            data[i + 0] = \"n\".charCodeAt(0);\n            data[i + 1] = \"o\".charCodeAt(0);\n            data[i + 2] = \"P\".charCodeAt(0);\n            data[i + 3] = \"E\".charCodeAt(0);\n            //calculate new chunk checksum\n            //http://www.libpng.org/pub/png/spec/1.2/PNG-CRCAppendix.html\n            var end = i + 4 + length;\n            var crc = 0xffffffff;\n            //should be fast enough like this\n            var bitcrc = function (bit) {\n                for (var k = 0; k < 8; k++) {\n                    if (bit & 1) {\n                        bit = 0xedb88320 ^ (bit >>> 1);\n                    }\n                    else {\n                        bit = bit >>> 1;\n                    }\n                }\n                return bit;\n            };\n            for (var a = i; a < end; a++) {\n                if (a >= i + 4) {\n                    data[a] = 0;\n                }\n                var bit = data[a];\n                crc = bitcrc((crc ^ bit) & 0xff) ^ (crc >>> 8);\n            }\n            crc = crc ^ 0xffffffff;\n            //new chunk checksum\n            data[i + 4 + length + 0] = (crc >> 24) & 0xff;\n            data[i + 4 + length + 1] = (crc >> 16) & 0xff;\n            data[i + 4 + length + 2] = (crc >> 8) & 0xff;\n            data[i + 4 + length + 3] = (crc >> 0) & 0xff;\n        }\n        if (chunkname == \"IEND\") {\n            break;\n        }\n        i += 4; //type\n        i += length; //data\n        i += 4; //crc\n    }\n}\nexports.clearPngColorspace = clearPngColorspace;\n/**\n* finds the given needle ImageBuffer in the given haystack ImgRef this function uses the best optimized available\n* code depending on the type of the haystack. It will use fast c# searching if the haystack is an ImgRefBind, js searching\n* is used otherwise.\n* the checklist argument is no longer used and should ignored or null/undefined\n* The optional sx,sy,sw,sh arguments indicate a bounding rectangle in which to search the needle. The rectangle should be bigger than the needle\n* @returns An array of points where the needle is found. The array is empty if none are found\n*/\nfunction findSubimage(haystackImgref, needleBuffer, sx = 0, sy = 0, sw = haystackImgref.width, sh = haystackImgref.height) {\n    if (!haystackImgref) {\n        throw new TypeError();\n    }\n    if (!needleBuffer) {\n        throw new TypeError();\n    }\n    var max = 30;\n    //check if we can do this in alt1\n    if (haystackImgref instanceof imgref_1.ImgRefBind && wapper.hasAlt1 && alt1.bindFindSubImg) {\n        var needlestr = wapper.encodeImageString(needleBuffer);\n        var r = alt1.bindFindSubImg(haystackImgref.handle, needlestr, needleBuffer.width, sx, sy, sw, sh);\n        if (!r) {\n            throw new wapper.Alt1Error();\n        }\n        return JSON.parse(r);\n    }\n    return findSubbuffer(haystackImgref.read(), needleBuffer, sx, sy, sw, sh);\n}\nexports.findSubimage = findSubimage;\n/**\n* Uses js to find the given needle ImageBuffer in the given haystack ImageBuffer. It is better to use the alt1.bind- functions in\n* combination with a1nxt.findsubimg.\n* the optional sx,sy,sw,sh arguments indicate a bounding rectangle in which to search.\n* @returns An array of points where the needle is found. The array is empty if none are found\n*/\nfunction findSubbuffer(haystack, needle, sx = 0, sy = 0, sw = haystack.width, sh = haystack.height) {\n    var r = [];\n    var maxdif = 30;\n    var maxresults = 50;\n    var needlestride = needle.width * 4;\n    var heystackstride = haystack.width * 4;\n    //built list of non trans pixel to check\n    var checkList = [];\n    for (var y = 0; y < needle.height; y++) {\n        for (var x = 0; x < needle.width; x++) {\n            var i = x * 4 + y * needlestride;\n            if (needle.data[i + 3] == 255) {\n                checkList.push({ x: x, y: y });\n            }\n            if (checkList.length == 10) {\n                break;\n            }\n        }\n        if (checkList.length == 10) {\n            break;\n        }\n    }\n    var cw = (sx + sw) - needle.width;\n    var ch = (sy + sh) - needle.height;\n    var checklength = checkList.length;\n    for (var y = sy; y <= ch; y++) {\n        outer: for (var x = sx; x <= cw; x++) {\n            for (var a = 0; a < checklength; a++) {\n                var i1 = (x + checkList[a].x) * 4 + (y + checkList[a].y) * heystackstride;\n                var i2 = checkList[a].x * 4 + checkList[a].y * needlestride;\n                var d = 0;\n                d = d + Math.abs(haystack.data[i1 + 0] - needle.data[i2 + 0]) | 0;\n                d = d + Math.abs(haystack.data[i1 + 1] - needle.data[i2 + 1]) | 0;\n                d = d + Math.abs(haystack.data[i1 + 2] - needle.data[i2 + 2]) | 0;\n                d *= 255 / needle.data[i2 + 3];\n                if (d > maxdif) {\n                    continue outer;\n                }\n            }\n            if (simpleCompare(haystack, needle, x, y, maxdif) != Infinity) {\n                r.push({ x, y });\n                if (r.length > maxresults) {\n                    return r;\n                }\n            }\n        }\n    }\n    return r;\n}\nexports.findSubbuffer = findSubbuffer;\n/**\n* Compares two images and returns the average color difference per pixel between them\n* @param max The max color difference at any point in the image before short circuiting the function and returning Infinity. set to -1 to always continue.\n* @returns The average color difference per pixel or Infinity if the difference is more than max at any point in the image\n*/\nfunction simpleCompare(bigbuf, checkbuf, x, y, max = 30) {\n    if (x < 0 || y < 0) {\n        throw new RangeError();\n    }\n    if (x + checkbuf.width > bigbuf.width || y + checkbuf.height > bigbuf.height) {\n        throw new RangeError();\n    }\n    if (max == -1) {\n        max = 255 * 4;\n    }\n    var dif = 0;\n    for (var step = 8; step >= 1; step /= 2) {\n        for (var cx = 0; cx < checkbuf.width; cx += step) {\n            for (var cy = 0; cy < checkbuf.height; cy += step) {\n                var i1 = (x + cx) * 4 + (y + cy) * bigbuf.width * 4;\n                var i2 = cx * 4 + cy * checkbuf.width * 4;\n                var d = 0;\n                d = d + Math.abs(bigbuf.data[i1 + 0] - checkbuf.data[i2 + 0]) | 0;\n                d = d + Math.abs(bigbuf.data[i1 + 1] - checkbuf.data[i2 + 1]) | 0;\n                d = d + Math.abs(bigbuf.data[i1 + 2] - checkbuf.data[i2 + 2]) | 0;\n                d *= checkbuf.data[i2 + 3] / 255;\n                if (step == 1) {\n                    dif += d;\n                }\n                if (d > max) {\n                    return Infinity;\n                }\n            }\n        }\n    }\n    return dif / checkbuf.width / checkbuf.height;\n}\nexports.simpleCompare = simpleCompare;\n/**\n* Calculates the root mean square error between the two buffers at the given coordinate, this method can be used in situations with significant blur or\n* transparency, it does not bail early on non-matching images like simpleCompare does so it can be expected to be much slower when called often.\n* @returns The root mean square error beteen the images, high single pixel errors are penalized more than consisten low errors. return of 0 means perfect match.\n*/\nfunction simpleCompareRMSE(bigbuf, checkbuf, x, y) {\n    if (x < 0 || y < 0) {\n        throw new RangeError();\n    }\n    if (x + checkbuf.width > bigbuf.width || y + checkbuf.height > bigbuf.height) {\n        throw new RangeError();\n    }\n    var dif = 0;\n    var numpix = 0;\n    for (var cx = 0; cx < checkbuf.width; cx++) {\n        for (var cy = 0; cy < checkbuf.height; cy++) {\n            var i1 = (x + cx) * 4 + (y + cy) * bigbuf.width * 4;\n            var i2 = cx * 4 + cy * checkbuf.width * 4;\n            var d = 0;\n            d = d + Math.abs(bigbuf.data[i1 + 0] - checkbuf.data[i2 + 0]) | 0;\n            d = d + Math.abs(bigbuf.data[i1 + 1] - checkbuf.data[i2 + 1]) | 0;\n            d = d + Math.abs(bigbuf.data[i1 + 2] - checkbuf.data[i2 + 2]) | 0;\n            var weight = checkbuf.data[i2 + 3] / 255;\n            numpix += weight;\n            dif += d * d * weight;\n        }\n    }\n    return Math.sqrt(dif / numpix);\n}\nexports.simpleCompareRMSE = simpleCompareRMSE;\n/**\n* Returns the difference between two colors (scaled to the alpha of the second color)\n*/\nfunction coldif(r1, g1, b1, r2, g2, b2, a2) {\n    return (Math.abs(r1 - r2) + Math.abs(g1 - g2) + Math.abs(b1 - b2)) * a2 / 255; //only applies alpha for 2nd buffer!\n}\nexports.coldif = coldif;\n/**\n * Turns map of promises into a map that contains the resolved values after loading.\n * @param input\n */\nfunction asyncMap(input) {\n    var raw = {};\n    var promises = [];\n    for (var a in input) {\n        if (input.hasOwnProperty(a)) {\n            raw[a] = null;\n            promises.push(input[a].then(function (a, i) { raw[a] = i; r[a] = i; }.bind(null, a)));\n        }\n    }\n    var r = {};\n    var promise = Promise.all(promises).then(() => { r.loaded = true; return r; });\n    Object.defineProperty(r, \"loaded\", { enumerable: false, value: false, writable: true });\n    Object.defineProperty(r, \"promise\", { enumerable: false, value: promise });\n    Object.defineProperty(r, \"raw\", { enumerable: false, value: raw });\n    return Object.assign(r, raw);\n}\nexports.asyncMap = asyncMap;\n/**\n* Same as asyncMap, but casts the properties to ImageData in typescript\n*/\nfunction webpackImages(input) {\n    return asyncMap(input);\n}\nexports.webpackImages = webpackImages;\nclass ImageDataSet {\n    constructor() {\n        this.buffers = [];\n    }\n    matchBest(img, x, y, max) {\n        let best = null;\n        let bestscore = max;\n        for (let a = 0; a < this.buffers.length; a++) {\n            let score = img.pixelCompare(this.buffers[a], x, y, bestscore);\n            if (isFinite(score) && (bestscore == undefined || score < bestscore)) {\n                bestscore = score;\n                best = a;\n            }\n        }\n        if (best == null) {\n            return null;\n        }\n        return { index: best, score: bestscore };\n    }\n    static fromFilmStrip(baseimg, width) {\n        if ((baseimg.width % width) != 0) {\n            throw new Error(\"slice size does not fit in base img\");\n        }\n        let r = new ImageDataSet();\n        for (let x = 0; x < baseimg.width; x += width) {\n            r.buffers.push(baseimg.clone(new _1.Rect(x, 0, width, baseimg.height)));\n        }\n        return r;\n    }\n    static fromFilmStripUneven(baseimg, widths) {\n        let r = new ImageDataSet();\n        let x = 0;\n        for (let w of widths) {\n            r.buffers.push(baseimg.clone(new _1.Rect(x, 0, w, baseimg.height)));\n            x += w;\n            if (x > baseimg.width) {\n                throw new Error(\"sampling filmstrip outside bounds\");\n            }\n        }\n        if (x != baseimg.width) {\n            throw new Error(\"unconsumed pixels left in film strip imagedata\");\n        }\n        return r;\n    }\n    static fromAtlas(baseimg, slices) {\n        let r = new ImageDataSet();\n        for (let slice of slices) {\n            r.buffers.push(baseimg.clone(slice));\n        }\n        return r;\n    }\n}\nexports.ImageDataSet = ImageDataSet;\n\n\n/***/ }),\n\n/***/ \"./src/base/imgref.ts\":\n/*!****************************!*\\\n  !*** ./src/base/imgref.ts ***!\n  \\****************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ImgRefData = exports.ImgRefBind = exports.ImgRefCtx = exports.ImgRef = void 0;\nconst index_1 = __webpack_require__(/*! ./index */ \"./src/base/index.ts\");\n/**\n * Represents an image that might be in different types of memory\n * This is mostly used to represent images still in Alt1 memory that have\n * not been transfered to js yet. Various a1lib api's use this type and\n * choose the most efficient approach based on the memory type\n */\nclass ImgRef {\n    constructor(x, y, w, h) {\n        this.t = \"none\";\n        this.x = x;\n        this.y = y;\n        this.width = w;\n        this.height = h;\n    }\n    read(x = 0, y = 0, w = this.width, h = this.height) {\n        throw new Error(\"This imgref (\" + this.t + \") does not support toData\");\n    }\n    findSubimage(needle, sx = 0, sy = 0, w = this.width, h = this.height) {\n        return index_1.ImageDetect.findSubimage(this, needle, sx, sy, w, h);\n    }\n    toData(x = this.x, y = this.y, w = this.width, h = this.height) {\n        return this.read(x - this.x, y - this.y, w, h);\n    }\n    ;\n    containsArea(rect) {\n        return this.x <= rect.x && this.y <= rect.y && this.x + this.width >= rect.x + rect.width && this.y + this.height >= rect.y + rect.height;\n    }\n}\nexports.ImgRef = ImgRef;\n/**\n * Represents an image in js render memory (canvas/image tag)\n */\nclass ImgRefCtx extends ImgRef {\n    constructor(img, x = 0, y = 0) {\n        if (img instanceof CanvasRenderingContext2D) {\n            super(x, y, img.canvas.width, img.canvas.height);\n            this.ctx = img;\n        }\n        else {\n            super(x, y, img.width, img.height);\n            var cnv = (img instanceof HTMLCanvasElement ? img : img.toCanvas());\n            this.ctx = cnv.getContext(\"2d\");\n        }\n        this.t = \"ctx\";\n    }\n    read(x = 0, y = 0, w = this.width, h = this.height) {\n        return this.ctx.getImageData(x, y, w, h);\n    }\n}\nexports.ImgRefCtx = ImgRefCtx;\n/**\n * Represents in image in Alt1 memory, This type of image can be searched for subimages\n * very efficiently and transfering the full image to js can be avoided this way\n */\nclass ImgRefBind extends ImgRef {\n    constructor(handle, x = 0, y = 0, w = 0, h = 0) {\n        super(x, y, w, h);\n        this.handle = handle;\n        this.t = \"bind\";\n    }\n    read(x = 0, y = 0, w = this.width, h = this.height) {\n        return (0, index_1.transferImageData)(this.handle, x, y, w, h);\n    }\n}\nexports.ImgRefBind = ImgRefBind;\n/**\n * Represents an image in js memory\n */\nclass ImgRefData extends ImgRef {\n    constructor(buf, x = 0, y = 0) {\n        super(x, y, buf.width, buf.height);\n        this.buf = buf;\n        this.t = \"data\";\n    }\n    read(x = 0, y = 0, w = this.width, h = this.height) {\n        if (x == 0 && y == 0 && w == this.width && h == this.height) {\n            return this.buf;\n        }\n        var r = new ImageData(w, h);\n        for (var b = y; b < y + h; b++) {\n            for (var a = x; a < x + w; a++) {\n                var i1 = (a - x) * 4 + (b - y) * w * 4;\n                var i2 = a * 4 + b * 4 * this.buf.width;\n                r.data[i1] = this.buf.data[i2];\n                r.data[i1 + 1] = this.buf.data[i2 + 1];\n                r.data[i1 + 2] = this.buf.data[i2 + 2];\n                r.data[i1 + 3] = this.buf.data[i2 + 3];\n            }\n        }\n        return r;\n    }\n}\nexports.ImgRefData = ImgRefData;\n\n\n/***/ }),\n\n/***/ \"./src/base/index.ts\":\n/*!***************************!*\\\n  !*** ./src/base/index.ts ***!\n  \\***************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ImageDataSet = exports.findSubbuffer = exports.simpleCompare = exports.findSubimage = exports.webpackImages = exports.NodePolyfill = exports.ImageData = exports.Rect = exports.PasteInput = exports.ImageDetect = void 0;\n__webpack_require__(/*! ./declarations */ \"./src/base/declarations.ts\");\nexports.ImageDetect = __importStar(__webpack_require__(/*! ./imagedetect */ \"./src/base/imagedetect.ts\"));\nexports.PasteInput = __importStar(__webpack_require__(/*! ./pasteinput */ \"./src/base/pasteinput.ts\"));\nvar rect_1 = __webpack_require__(/*! ./rect */ \"./src/base/rect.ts\");\nObject.defineProperty(exports, \"Rect\", ({ enumerable: true, get: function () { return __importDefault(rect_1).default; } }));\nvar imagedata_extensions_1 = __webpack_require__(/*! ./imagedata-extensions */ \"./src/base/imagedata-extensions.ts\");\nObject.defineProperty(exports, \"ImageData\", ({ enumerable: true, get: function () { return imagedata_extensions_1.ImageData; } }));\nexports.NodePolyfill = __importStar(__webpack_require__(/*! ./nodepolyfill */ \"./src/base/nodepolyfill.ts\"));\n__exportStar(__webpack_require__(/*! ./imgref */ \"./src/base/imgref.ts\"), exports);\n__exportStar(__webpack_require__(/*! ./wrapper */ \"./src/base/wrapper.ts\"), exports);\nvar imagedetect_1 = __webpack_require__(/*! ./imagedetect */ \"./src/base/imagedetect.ts\");\nObject.defineProperty(exports, \"webpackImages\", ({ enumerable: true, get: function () { return imagedetect_1.webpackImages; } }));\nObject.defineProperty(exports, \"findSubimage\", ({ enumerable: true, get: function () { return imagedetect_1.findSubimage; } }));\nObject.defineProperty(exports, \"simpleCompare\", ({ enumerable: true, get: function () { return imagedetect_1.simpleCompare; } }));\nObject.defineProperty(exports, \"findSubbuffer\", ({ enumerable: true, get: function () { return imagedetect_1.findSubbuffer; } }));\nObject.defineProperty(exports, \"ImageDataSet\", ({ enumerable: true, get: function () { return imagedetect_1.ImageDataSet; } }));\n\n\n/***/ }),\n\n/***/ \"./src/base/nodepolyfill.ts\":\n/*!**********************************!*\\\n  !*** ./src/base/nodepolyfill.ts ***!\n  \\**********************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\n//nodejs and electron polyfills for web api's\n//commented out type info as that breaks webpack with optional dependencies\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.imageDataFromBuffer = exports.imageDataFromBase64 = exports.imageDataToFileBytes = exports.createCanvas = exports.imageDataToDrawable = exports.requireElectronCommon = exports.requireNodeCanvas = exports.requireSharp = exports.polyfillRequire = void 0;\nconst index_1 = __webpack_require__(/*! ./index */ \"./src/base/index.ts\");\nconst imagedetect_1 = __webpack_require__(/*! ./imagedetect */ \"./src/base/imagedetect.ts\");\nvar requirefunction = null;\n/**\n * Call this function to let the libs require extra dependencies on nodejs in order\n * to polyfill some browser api's (mostly image compression/decompression)\n * `NodePolifill.polyfillRequire(require);` should solve most cases\n */\nfunction polyfillRequire(requirefn) {\n    requirefunction = requirefn;\n}\nexports.polyfillRequire = polyfillRequire;\nfunction requireSharp() {\n    try {\n        if (requirefunction) {\n            return requirefunction(\"sharp\");\n        }\n        else {\n            return __webpack_require__(/* webpackIgnore: true */ /*! sharp */ \"sharp\"); // as typeof import(\"sharp\");\n        }\n    }\n    catch (e) { }\n    return null;\n}\nexports.requireSharp = requireSharp;\nfunction requireNodeCanvas() {\n    //attempt to require sharp first, after loading canvas the module sharp fails to load\n    requireSharp();\n    try {\n        if (requirefunction) {\n            return requirefunction(\"canvas\");\n        }\n        else {\n            return __webpack_require__(/* webpackIgnore: true */ /*! canvas */ \"canvas\"); // as typeof import(\"sharp\");\n        }\n    }\n    catch (e) { }\n    return null;\n}\nexports.requireNodeCanvas = requireNodeCanvas;\nfunction requireElectronCommon() {\n    try {\n        if (requirefunction) {\n            return requirefunction(\"electron/common\");\n        }\n        else {\n            return __webpack_require__(/* webpackIgnore: true */ /*! electron/common */ \"electron/common\");\n        }\n    }\n    catch (e) { }\n    return null;\n}\nexports.requireElectronCommon = requireElectronCommon;\nfunction imageDataToDrawable(buf) {\n    let nodecnv = requireNodeCanvas();\n    if (!nodecnv) {\n        throw new Error(\"couldn't find built-in canvas or the module 'canvas'\");\n    }\n    return new nodecnv.ImageData(buf.data, buf.width, buf.height);\n}\nexports.imageDataToDrawable = imageDataToDrawable;\nfunction createCanvas(w, h) {\n    let nodecnv = requireNodeCanvas();\n    if (!nodecnv) {\n        throw new Error(\"couldn't find built-in canvas or the module 'canvas'\");\n    }\n    return nodecnv.createCanvas(w, h);\n}\nexports.createCanvas = createCanvas;\nfunction flipBGRAtoRGBA(data) {\n    for (let i = 0; i < data.length; i += 4) {\n        let tmp = data[i + 2];\n        data[i + 2] = data[i + 0];\n        data[i + 0] = tmp;\n    }\n}\nasync function imageDataToFileBytes(buf, format, quality) {\n    //use the electron API if we're in electron\n    var electronCommon;\n    var sharp;\n    if (electronCommon = requireElectronCommon()) {\n        let nativeImage = electronCommon.nativeImage;\n        //need to copy the buffer in order to flip it without destroying the original\n        let bufcpy = Buffer.from(buf.data.slice(buf.data.byteOffset, buf.data.byteLength));\n        flipBGRAtoRGBA(bufcpy);\n        let nativeimg = nativeImage.createFromBitmap(bufcpy, { width: buf.width, height: buf.height });\n        return nativeimg.toPNG();\n    }\n    else if (sharp = requireSharp()) {\n        let img = sharp(Buffer.from(buf.data.buffer), { raw: { width: buf.width, height: buf.height, channels: 4 } });\n        if (format == \"image/png\") {\n            img.png();\n        }\n        else if (format == \"image/webp\") {\n            var opts = { quality: 80 };\n            if (typeof quality == \"number\") {\n                opts.quality = quality * 100;\n            }\n            img.webp(opts);\n        }\n        else {\n            throw new Error(\"unknown image format: \" + format);\n        }\n        return await img.toBuffer({ resolveWithObject: false }).buffer;\n    }\n    throw new Error(\"coulnd't find build-in image compression methods or the module 'electron/common' or 'sharp'\");\n}\nexports.imageDataToFileBytes = imageDataToFileBytes;\nfunction imageDataFromBase64(base64) {\n    return imageDataFromBuffer(Buffer.from(base64, \"base64\"));\n}\nexports.imageDataFromBase64 = imageDataFromBase64;\nasync function imageDataFromBuffer(buffer) {\n    (0, imagedetect_1.clearPngColorspace)(buffer);\n    //use the electron API if we're in electron\n    var electronCommon;\n    var nodecnv;\n    if (electronCommon = requireElectronCommon()) {\n        let nativeImage = electronCommon.nativeImage;\n        let img = nativeImage.createFromBuffer(buffer);\n        let pixels = img.toBitmap();\n        let size = img.getSize();\n        let pixbuf = new Uint8ClampedArray(pixels.buffer, pixels.byteOffset, pixels.byteLength);\n        flipBGRAtoRGBA(pixbuf);\n        return new index_1.ImageData(pixbuf, size.width, size.height);\n    }\n    else if (nodecnv = requireNodeCanvas()) {\n        return new Promise((done, err) => {\n            let img = new nodecnv.Image();\n            img.onerror = err;\n            img.onload = () => {\n                var cnv = nodecnv.createCanvas(img.naturalWidth, img.naturalHeight);\n                var ctx = cnv.getContext(\"2d\");\n                ctx.drawImage(img, 0, 0);\n                var data = ctx.getImageData(0, 0, img.naturalWidth, img.naturalHeight);\n                //use our own class\n                done(new index_1.ImageData(data.data, data.width, data.height));\n            };\n            img.src = Buffer.from(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n        });\n    }\n    throw new Error(\"couldn't find built-in canvas, module 'electron/common' or the module 'canvas'\");\n}\nexports.imageDataFromBuffer = imageDataFromBuffer;\n\n\n/***/ }),\n\n/***/ \"./src/base/pasteinput.ts\":\n/*!********************************!*\\\n  !*** ./src/base/pasteinput.ts ***!\n  \\********************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.fileDialog = exports.start = exports.startDragNDrop = exports.triggerPaste = exports.unlisten = exports.listen = exports.lastref = void 0;\nconst index_1 = __webpack_require__(/*! ./index */ \"./src/base/index.ts\");\nconst ImageDetect = __importStar(__webpack_require__(/*! ./imagedetect */ \"./src/base/imagedetect.ts\"));\nvar listeners = [];\nvar started = false;\nvar dndStarted = false;\nvar pasting = false;\nexports.lastref = null;\nfunction listen(func, errorfunc, dragndrop) {\n    listeners.push({ cb: func, error: errorfunc });\n    if (!started) {\n        start();\n    }\n    if (dragndrop && !dndStarted) {\n        startDragNDrop();\n    }\n}\nexports.listen = listen;\nfunction unlisten(func) {\n    let i = listeners.findIndex(c => c.cb == func);\n    if (i != -1) {\n        listeners.splice(i, 1);\n    }\n}\nexports.unlisten = unlisten;\n/**\n * currently used in multiple document situations (iframe), might be removed in the future\n */\nfunction triggerPaste(img) {\n    exports.lastref = img;\n    for (var a in listeners) {\n        listeners[a].cb(exports.lastref);\n    }\n}\nexports.triggerPaste = triggerPaste;\nfunction pasted(img) {\n    pasting = false;\n    let cnv = img instanceof HTMLCanvasElement ? img : img.toCanvas();\n    triggerPaste(new index_1.ImgRefCtx(cnv));\n}\nfunction error(error, mes) {\n    var _a, _b;\n    pasting = false;\n    for (var a in listeners) {\n        (_b = (_a = listeners[a]).error) === null || _b === void 0 ? void 0 : _b.call(_a, mes, error);\n    }\n}\nfunction startDragNDrop() {\n    var getitem = function (items) {\n        var foundimage = \"\";\n        for (var a = 0; a < items.length; a++) {\n            var item = items[a];\n            var m = item.type.match(/^image\\/(\\w+)$/);\n            if (m) {\n                if (m[1] == \"png\") {\n                    return item;\n                }\n                else {\n                    foundimage = m[1];\n                }\n            }\n        }\n        if (foundimage) {\n            error(\"notpng\", \"The image you uploaded is not a .png image. Other image type have compression noise and can't be used for image detection.\");\n        }\n        return null;\n    };\n    window.addEventListener(\"dragover\", function (e) {\n        e.preventDefault();\n    });\n    window.addEventListener(\"drop\", function (e) {\n        if (!e.dataTransfer) {\n            return;\n        }\n        var item = getitem(e.dataTransfer.items);\n        e.preventDefault();\n        if (!item) {\n            return;\n        }\n        fromFile(item.getAsFile());\n    });\n}\nexports.startDragNDrop = startDragNDrop;\nfunction start() {\n    if (started) {\n        return;\n    }\n    started = true;\n    //determine if we have a clipboard api\n    //try{a=new Event(\"clipboard\"); a=\"clipboardData\" in a;}\n    //catch(e){a=false;}\n    var ischrome = !!navigator.userAgent.match(/Chrome/) && !navigator.userAgent.match(/Edge/);\n    //old method breaks after chrome 41, revert to good old user agent sniffing\n    //nvm, internet explorer (edge) decided that it wants to be chrome, however fails at delivering\n    //turns out this one is interesting, edge is a hybrid between the paste api's\n    var apipasted = function (e) {\n        if (!e.clipboardData) {\n            return;\n        }\n        for (var a = 0; a < e.clipboardData.items.length; a++) { //loop all data types\n            if (e.clipboardData.items[a].type.indexOf(\"image\") != -1) {\n                var file = e.clipboardData.items[a].getAsFile();\n                if (file) {\n                    var img = new Image();\n                    img.src = (window.URL || window.webkitURL).createObjectURL(file);\n                    if (img.width > 0) {\n                        pasted(img);\n                    }\n                    else {\n                        img.onload = function () { pasted(img); };\n                    }\n                }\n            }\n        }\n    };\n    if (ischrome) {\n        document.addEventListener(\"paste\", apipasted);\n    }\n    else {\n        var catcher = document.createElement(\"div\");\n        catcher.setAttribute(\"contenteditable\", \"\");\n        catcher.className = \"forcehidden\"; //retarded ie safety/bug, cant apply styles using js//TODO i don't even know what's going on\n        catcher.onpaste = function (e) {\n            if (e.clipboardData && e.clipboardData.items) {\n                apipasted(e);\n                return;\n            }\n            setTimeout(function () {\n                var b = catcher.children[0];\n                if (!b || b.tagName != \"IMG\") {\n                    return;\n                }\n                var img = new Image();\n                img.src = b.src;\n                var a = img.src.match(/^data:([\\w\\/]+);/);\n                if (img.width > 0) {\n                    pasted(img);\n                }\n                else {\n                    img.onload = function () { pasted(img); };\n                }\n                catcher.innerHTML = \"\";\n            }, 1);\n        };\n        document.body.appendChild(catcher);\n    }\n    //detect if ctrl-v is pressed and focus catcher if needed\n    document.addEventListener(\"keydown\", function (e) {\n        if (e.target.tagName == \"INPUT\") {\n            return;\n        }\n        if (e.keyCode != \"V\".charCodeAt(0) || !e.ctrlKey) {\n            return;\n        }\n        pasting = true;\n        setTimeout(function () {\n            if (pasting) {\n                error(\"noimg\", \"You pressed Ctrl+V, but no image was pasted by your browser, make sure your clipboard contains an image, and not a link to an image.\");\n            }\n        }, 1000);\n        if (catcher) {\n            catcher.focus();\n        }\n    });\n}\nexports.start = start;\nfunction fileDialog() {\n    var fileinput = document.createElement(\"input\");\n    fileinput.type = \"file\";\n    fileinput.accept = \"image/png\";\n    fileinput.onchange = function () { if (fileinput.files && fileinput.files[0]) {\n        fromFile(fileinput.files[0]);\n    } };\n    fileinput.click();\n    return fileinput;\n}\nexports.fileDialog = fileDialog;\nfunction fromFile(file) {\n    if (!file) {\n        return;\n    }\n    var reader = new FileReader();\n    reader.onload = function () {\n        var bytearray = new Uint8Array(reader.result);\n        if (ImageDetect.isPngBuffer(bytearray)) {\n            ImageDetect.clearPngColorspace(bytearray);\n        }\n        var blob = new Blob([bytearray], { type: \"image/png\" });\n        var img = new Image();\n        img.onerror = () => error(\"invalidfile\", \"The file you uploaded could not be opened as an image.\");\n        var bloburl = URL.createObjectURL(blob);\n        img.src = bloburl;\n        if (img.width > 0) {\n            pasted(img);\n            URL.revokeObjectURL(bloburl);\n        }\n        else {\n            img.onload = function () { pasted(img); URL.revokeObjectURL(bloburl); };\n        }\n    };\n    reader.readAsArrayBuffer(file);\n}\n\n\n/***/ }),\n\n/***/ \"./src/base/rect.ts\":\n/*!**************************!*\\\n  !*** ./src/base/rect.ts ***!\n  \\**************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\n//util class for rectangle maths\n//TODO shit this sucks can we remove it again?\n//more of a shorthand to get {x,y,width,height} than a class\n//kinda starting to like it again\n//TODO remove rant\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n;\n/**\n * Simple rectangle class with some util functions\n */\nclass Rect {\n    constructor(x, y, w, h) {\n        this.x = x;\n        this.y = y;\n        this.width = w;\n        this.height = h;\n    }\n    static fromArgs(...args) {\n        if (typeof args[0] == \"object\") {\n            return new Rect(args[0].x, args[0].y, args[0].width, args[0].height);\n        }\n        else if (typeof args[0] == \"number\" && args.length >= 4) {\n            return new Rect(args[0], args[1], args[2], args[3]);\n        }\n        else {\n            throw new Error(\"invalid rect args\");\n        }\n    }\n    /**\n     * Resizes this Rect to include the full size of a given second rectangle\n     */\n    union(r2) {\n        var x = Math.min(this.x, r2.x);\n        var y = Math.min(this.y, r2.y);\n        this.width = Math.max(this.x + this.width, r2.x + r2.width) - x;\n        this.height = Math.max(this.y + this.height, r2.y + r2.height) - y;\n        this.x = x;\n        this.y = y;\n        return this;\n    }\n    /**\n     * Resizes this Rect to include a given point\n     */\n    includePoint(x, y) {\n        this.union(new Rect(x, y, 0, 0));\n    }\n    /**\n     * Grows the rectangle with the given dimensions\n     */\n    inflate(w, h) {\n        this.x -= w;\n        this.y -= h;\n        this.width += 2 * w;\n        this.height += 2 * h;\n    }\n    /**\n     * Resizes this Rect to the area that overlaps a given Rect\n     * width and height will be set to 0 if the intersection does not exist\n     */\n    intersect(r2) {\n        if (this.x < r2.x) {\n            this.width -= r2.x - this.x;\n            this.x = r2.x;\n        }\n        if (this.y < r2.y) {\n            this.height -= r2.y - this.y;\n            this.y = r2.y;\n        }\n        this.width = Math.min(this.x + this.width, r2.x + r2.width) - this.x;\n        this.height = Math.min(this.y + this.height, r2.y + r2.height) - this.y;\n        if (this.width <= 0 || this.height <= 0) {\n            this.width = 0;\n            this.height = 0;\n        }\n    }\n    /**\n     * Returns wether this Rect has at least one pixel overlap with a given Rect\n     */\n    overlaps(r2) {\n        return this.x < r2.x + r2.width && this.x + this.width > r2.x && this.y < r2.y + r2.height && this.y + this.height > r2.y;\n    }\n    /**\n     * Returns wether a given Rect fits completely inside this Rect\n     * @param r2\n     */\n    contains(r2) {\n        return this.x <= r2.x && this.x + this.width >= r2.x + r2.width && this.y <= r2.y && this.y + this.height >= r2.y + r2.height;\n    }\n    /**\n     * Returns wether a given point lies inside this Rect\n     */\n    containsPoint(x, y) {\n        return this.x <= x && this.x + this.width > x && this.y <= y && this.y + this.height > y;\n    }\n}\nexports[\"default\"] = Rect;\n\n\n/***/ }),\n\n/***/ \"./src/base/wrapper.ts\":\n/*!*****************************!*\\\n  !*** ./src/base/wrapper.ts ***!\n  \\*****************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.captureStream = exports.captureMultiAsync = exports.captureAsync = exports.ImageStreamReader = exports.once = exports.removeListener = exports.on = exports.addResizeElement = exports.getMousePosition = exports.hasAlt1Version = exports.resetEnvironment = exports.identifyApp = exports.unmixColor = exports.mixColor = exports.encodeImageString = exports.decodeImageString = exports.transferImageData = exports.captureHoldFullRs = exports.captureHoldScreen = exports.captureHold = exports.capture = exports.getdisplaybounds = exports.requireAlt1 = exports.openbrowser = exports.skinName = exports.hasAlt1 = exports.newestversion = exports.Alt1Error = exports.NoAlt1Error = void 0;\nconst rect_1 = __importDefault(__webpack_require__(/*! ./rect */ \"./src/base/rect.ts\"));\nconst imgref_1 = __webpack_require__(/*! ./imgref */ \"./src/base/imgref.ts\");\nconst imagedata_extensions_1 = __webpack_require__(/*! ./imagedata-extensions */ \"./src/base/imagedata-extensions.ts\");\n__webpack_require__(/*! ./alt1api */ \"./src/base/alt1api.ts\");\n/**\n * Thrown when a method is called that can not be used outside of Alt1\n */\nclass NoAlt1Error extends Error {\n    constructor() {\n        super();\n        this.message = \"This method can not be ran outside of Alt1\";\n    }\n}\nexports.NoAlt1Error = NoAlt1Error;\n;\n/**\n * Thrown when the Alt1 API returns an invalid result\n * Errors of a different type are throw when internal Alt1 errors occur\n */\nclass Alt1Error extends Error {\n}\nexports.Alt1Error = Alt1Error;\n/**\n * The latest Alt1 version\n */\nexports.newestversion = \"1.5.5\";\n/**\n * Whether the Alt1 API is available\n */\nexports.hasAlt1 = (typeof alt1 != \"undefined\");\n/**\n * The name of the Alt1 interface skin. (Always \"default\" if running in a browser)\n */\nexports.skinName = exports.hasAlt1 ? alt1.skinName : \"default\";\n/**\n * Max number of bytes that can be sent by alt1 in one function\n * Not completely sure why this number is different than window.alt1.maxtranfer\n */\nvar maxtransfer = 4000000;\n/**\n * Open a link in the default browser\n * @deprecated use window.open instead\n */\nfunction openbrowser(url) {\n    if (exports.hasAlt1) {\n        alt1.openBrowser(url);\n    }\n    else {\n        window.open(url, '_blank');\n    }\n}\nexports.openbrowser = openbrowser;\n/**\n * Throw if Alt1 API is not available\n */\nfunction requireAlt1() {\n    if (!exports.hasAlt1) {\n        throw new NoAlt1Error();\n    }\n}\nexports.requireAlt1 = requireAlt1;\n/**\n * Returns an object with a rectangle that spans all screens\n */\nfunction getdisplaybounds() {\n    if (!exports.hasAlt1) {\n        return false;\n    }\n    return new rect_1.default(alt1.screenX, alt1.screenY, alt1.screenWidth, alt1.screenHeight);\n}\nexports.getdisplaybounds = getdisplaybounds;\n/**\n * gets an imagebuffer with pixel data about the requested region\n */\nfunction capture(...args) {\n    //TODO change null return on error into throw instead (x3)\n    if (!exports.hasAlt1) {\n        throw new NoAlt1Error();\n    }\n    var rect = rect_1.default.fromArgs(...args);\n    if (alt1.capture) {\n        return new imagedata_extensions_1.ImageData(alt1.capture(rect.x, rect.y, rect.width, rect.height), rect.width, rect.height);\n    }\n    var buf = new imagedata_extensions_1.ImageData(rect.width, rect.height);\n    if (rect.width * rect.height * 4 <= maxtransfer) {\n        var data = alt1.getRegion(rect.x, rect.y, rect.width, rect.height);\n        if (!data) {\n            return null;\n        }\n        decodeImageString(data, buf, 0, 0, rect.width, rect.height);\n    }\n    else {\n        //split up the request to to exceed the single transfer limit (for now)\n        var x1 = rect.x;\n        var ref = alt1.bindRegion(rect.x, rect.y, rect.width, rect.height);\n        if (ref <= 0) {\n            return null;\n        }\n        while (x1 < rect.x + rect.width) {\n            var x2 = Math.min(rect.x + rect.width, Math.floor(x1 + (maxtransfer / 4 / rect.height)));\n            var data = alt1.bindGetRegion(ref, x1, rect.y, x2 - x1, rect.height);\n            if (!data) {\n                return null;\n            }\n            decodeImageString(data, buf, x1 - rect.x, 0, x2 - x1, rect.height);\n            x1 = x2;\n        }\n    }\n    return buf;\n}\nexports.capture = capture;\n/**\n * Makes alt1 bind an area of the rs client in memory without sending it to the js client\n * returns an imgref object which can be used to get pixel data using the imgreftobuf function\n * currently only one bind can exist per app and the ref in (v) will always be 1\n */\nfunction captureHold(x, y, w, h) {\n    x = Math.round(x);\n    y = Math.round(y);\n    w = Math.round(w);\n    h = Math.round(h);\n    requireAlt1();\n    var r = alt1.bindRegion(x, y, w, h);\n    if (r <= 0) {\n        throw new Alt1Error(\"capturehold failed\");\n    }\n    return new imgref_1.ImgRefBind(r, x, y, w, h);\n}\nexports.captureHold = captureHold;\n/**\n * Same as captureHoldRegion, but captures the screen instead of the rs client. it also uses screen coordinates instead and can capture outside of the rs client\n */\nfunction captureHoldScreen(x, y, w, h) {\n    x = Math.round(x);\n    y = Math.round(y);\n    w = Math.round(w);\n    h = Math.round(h);\n    requireAlt1();\n    var r = alt1.bindScreenRegion(x, y, w, h);\n    if (r <= 0) {\n        return false;\n    }\n    return new imgref_1.ImgRefBind(r, x, y, w, h);\n}\nexports.captureHoldScreen = captureHoldScreen;\n/**\n * bind the full rs window if the rs window can be detected by alt1, otherwise return the full screen\n */\nfunction captureHoldFullRs() {\n    return captureHold(0, 0, alt1.rsWidth, alt1.rsHeight);\n}\nexports.captureHoldFullRs = captureHoldFullRs;\n/**\n * returns a subregion from a bound image\n * used internally in imgreftobuf if imgref is a bound image\n * @deprecated This should be handled internall by the imgrefbind.toData method\n */\nfunction transferImageData(handle, x, y, w, h) {\n    x = Math.round(x);\n    y = Math.round(y);\n    w = Math.round(w);\n    h = Math.round(h);\n    requireAlt1();\n    if (alt1.bindGetRegionBuffer) {\n        return new imagedata_extensions_1.ImageData(alt1.bindGetRegionBuffer(handle, x, y, w, h), w, h);\n    }\n    var r = new imagedata_extensions_1.ImageData(w, h);\n    var x1 = x;\n    while (true) { //split up the request to to exceed the single transfer limit (for now)\n        var x2 = Math.min(x + w, Math.floor(x1 + (maxtransfer / 4 / h)));\n        var a = alt1.bindGetRegion(handle, x1, y, x2 - x1, h);\n        if (!a) {\n            throw new Alt1Error();\n        }\n        decodeImageString(a, r, x1 - x, 0, x2 - x1, h);\n        x1 = x2;\n        if (x1 == x + w) {\n            break;\n        }\n        ;\n    }\n    return r;\n}\nexports.transferImageData = transferImageData;\n/**\n * decodes a returned string from alt1 to an imagebuffer\n */\nfunction decodeImageString(imagestring, target, x, y, w, h) {\n    var bin = atob(imagestring);\n    var bytes = target.data;\n    w |= 0;\n    h |= 0;\n    var offset = 4 * x + 4 * y * target.width;\n    var target_width = target.width | 0;\n    for (var a = 0; a < w; a++) {\n        for (var b = 0; b < h; b++) {\n            var i1 = (offset + (a * 4 | 0) + (b * target_width * 4 | 0)) | 0;\n            var i2 = ((a * 4 | 0) + (b * 4 * w | 0)) | 0;\n            bytes[i1 + 0 | 0] = bin.charCodeAt(i2 + 2 | 0); //fix weird red/blue swap in c#\n            bytes[i1 + 1 | 0] = bin.charCodeAt(i2 + 1 | 0);\n            bytes[i1 + 2 | 0] = bin.charCodeAt(i2 + 0 | 0);\n            bytes[i1 + 3 | 0] = bin.charCodeAt(i2 + 3 | 0);\n        }\n    }\n    return target;\n}\nexports.decodeImageString = decodeImageString;\n/**\n * encodes an imagebuffer to a string\n */\nfunction encodeImageString(buf, sx = 0, sy = 0, sw = buf.width, sh = buf.height) {\n    var raw = \"\";\n    for (var y = sy; y < sy + sh; y++) {\n        for (var x = sx; x < sx + sw; x++) {\n            var i = 4 * x + 4 * buf.width * y | 0;\n            raw += String.fromCharCode(buf.data[i + 2 | 0]);\n            raw += String.fromCharCode(buf.data[i + 1 | 0]);\n            raw += String.fromCharCode(buf.data[i + 0 | 0]);\n            raw += String.fromCharCode(buf.data[i + 3 | 0]);\n        }\n    }\n    return btoa(raw);\n}\nexports.encodeImageString = encodeImageString;\n/**\n * mixes the given color into a single int. This format is used by alt1\n */\nfunction mixColor(r, g, b, a = 255) {\n    return (b << 0) + (g << 8) + (r << 16) + (a << 24);\n}\nexports.mixColor = mixColor;\nfunction unmixColor(col) {\n    var r = (col >> 16) & 0xff;\n    var g = (col >> 8) & 0xff;\n    var b = (col >> 0) & 0xff;\n    return [r, g, b];\n}\nexports.unmixColor = unmixColor;\nfunction identifyApp(url) {\n    if (exports.hasAlt1) {\n        alt1.identifyAppUrl(url);\n    }\n}\nexports.identifyApp = identifyApp;\nfunction resetEnvironment() {\n    exports.hasAlt1 = (typeof alt1 != \"undefined\");\n    exports.skinName = exports.hasAlt1 ? alt1.skinName : \"default\";\n}\nexports.resetEnvironment = resetEnvironment;\nfunction convertAlt1Version(str) {\n    var a = str.match(/^(\\d+)\\.(\\d+)\\.(\\d+)$/);\n    if (!a) {\n        throw new RangeError(\"Invalid version string\");\n    }\n    return (+a[1]) * 1000 * 1000 + (+a[2]) * 1000 + (+a[3]) * 1;\n}\nvar cachedVersionInt = -1;\n/**\n * checks if alt1 is running and at least the given version. versionstr should be a string with the version eg: 1.3.2\n * @param versionstr\n */\nfunction hasAlt1Version(versionstr) {\n    if (!exports.hasAlt1) {\n        return false;\n    }\n    if (cachedVersionInt == -1) {\n        cachedVersionInt = alt1.versionint;\n    }\n    return cachedVersionInt >= convertAlt1Version(versionstr);\n}\nexports.hasAlt1Version = hasAlt1Version;\n/**\n * Gets the current cursor position in the game, returns null if the rs window is not active (alt1.rsActive)\n */\nfunction getMousePosition() {\n    var pos = alt1.mousePosition;\n    if (pos == -1) {\n        return null;\n    }\n    return { x: pos >>> 16, y: pos & 0xFFFF };\n}\nexports.getMousePosition = getMousePosition;\n/**\n * Registers a given HTML element as a frame border, when this element is dragged by the user the Alt1 frame will resize accordingly\n * Use the direction arguements to make a given direction stick to the mouse. eg. Only set left to true to make the element behave as the left border\n * Or set all to true to move the whole window. Not all combinations are permitted\n */\nfunction addResizeElement(el, left, top, right, bot) {\n    if (!exports.hasAlt1 || !alt1.userResize) {\n        return;\n    }\n    el.addEventListener(\"mousedown\", function (e) {\n        alt1.userResize(left, top, right, bot);\n        e.preventDefault();\n    });\n}\nexports.addResizeElement = addResizeElement;\n/**\n * Add an event listener\n */\nfunction on(type, listener) {\n    if (!exports.hasAlt1) {\n        return;\n    }\n    if (!alt1.events) {\n        alt1.events = {};\n    }\n    if (!alt1.events[type]) {\n        alt1.events[type] = [];\n    }\n    alt1.events[type].push(listener);\n}\nexports.on = on;\n/**\n * Removes an event listener\n */\nfunction removeListener(type, listener) {\n    var elist = exports.hasAlt1 && alt1.events && alt1.events[type];\n    if (!elist) {\n        return;\n    }\n    var i = elist.indexOf(listener);\n    if (i == -1) {\n        return;\n    }\n    elist.splice(i, 1);\n}\nexports.removeListener = removeListener;\n/**\n * Listens for the event to fire once and then stops listening\n * @param event\n * @param cb\n */\nfunction once(type, listener) {\n    var fn = (e) => {\n        removeListener(type, fn);\n        listener(e);\n    };\n    on(type, fn);\n}\nexports.once = once;\n;\n/**\n * Used to read a set of images from a binary stream returned by the Alt1 API\n */\nclass ImageStreamReader {\n    constructor(reader, ...args) {\n        this.framebuffer = null;\n        this.pos = 0;\n        this.reading = false;\n        this.closed = false;\n        //paused state\n        this.pausedindex = -1;\n        this.pausedbuffer = null;\n        this.streamreader = reader;\n        if (args[0] instanceof imagedata_extensions_1.ImageData) {\n            this.setFrameBuffer(args[0]);\n        }\n        else if (typeof args[0] == \"number\") {\n            this.setFrameBuffer(new imagedata_extensions_1.ImageData(args[0], args[1]));\n        }\n    }\n    /**\n     *\n     */\n    setFrameBuffer(buffer) {\n        if (this.reading) {\n            throw new Error(\"can't change framebuffer while reading\");\n        }\n        this.framebuffer = buffer;\n    }\n    /**\n     * Closes the underlying stream and ends reading\n     */\n    close() {\n        this.streamreader.cancel();\n    }\n    /**\n     * Reads a single image from the stream\n     */\n    async nextImage() {\n        if (this.reading) {\n            throw new Error(\"already reading from this stream\");\n        }\n        if (!this.framebuffer) {\n            throw new Error(\"framebuffer not set\");\n        }\n        this.reading = true;\n        var synctime = -Date.now();\n        var starttime = Date.now();\n        var r = false;\n        while (!r) {\n            if (this.pausedindex != -1 && this.pausedbuffer) {\n                r = this.readChunk(this.pausedindex, this.framebuffer.data, this.pausedbuffer);\n            }\n            else {\n                synctime += Date.now();\n                var res = await this.streamreader.read();\n                synctime -= Date.now();\n                if (res.done) {\n                    throw new Error(\"Stream closed while reading\");\n                }\n                var data = res.value;\n                r = this.readChunk(0, this.framebuffer.data, data);\n            }\n        }\n        synctime += Date.now();\n        //console.log(\"Decoded async image, \" + this.framebuffer.width + \"x\" + this.framebuffer.height + \" time: \" + (Date.now() - starttime) + \"ms (\" + synctime + \"ms main thread)\");\n        this.reading = false;\n        return this.framebuffer;\n    }\n    readChunk(i, framedata, buffer) {\n        //very hot code, explicit int32 casting with |0 speeds it up by ~ x2\n        i = i | 0;\n        var framesize = framedata.length | 0;\n        var pos = this.pos;\n        var datalen = buffer.length | 0;\n        //var data32 = new Float64Array(buffer.buffer);\n        //var framedata32 = new Float64Array(framedata.buffer);\n        //fix possible buffer misalignment\n        //align to 16 for extra loop unrolling\n        while (i < datalen) {\n            //slow loop, fix alignment and other issues\n            while (i < datalen && pos < framesize && (pos % 16 != 0 || !((i + 16 | 0) <= datalen && (pos + 16 | 0) <= framesize))) {\n                var rel = pos;\n                if (pos % 4 == 0) {\n                    rel = rel + 2 | 0;\n                }\n                if (pos % 4 == 2) {\n                    rel = rel - 2 | 0;\n                }\n                framedata[rel | 0] = buffer[i | 0];\n                i = i + 1 | 0;\n                pos = pos + 1 | 0;\n            }\n            //fast unrolled loop for large chunks i wish js had some sort of memcpy\n            if (pos % 16 == 0) {\n                while ((i + 16 | 0) <= datalen && (pos + 16 | 0) <= framesize) {\n                    framedata[pos + 0 | 0] = buffer[i + 2 | 0];\n                    framedata[pos + 1 | 0] = buffer[i + 1 | 0];\n                    framedata[pos + 2 | 0] = buffer[i + 0 | 0];\n                    framedata[pos + 3 | 0] = buffer[i + 3 | 0];\n                    framedata[pos + 4 | 0] = buffer[i + 6 | 0];\n                    framedata[pos + 5 | 0] = buffer[i + 5 | 0];\n                    framedata[pos + 6 | 0] = buffer[i + 4 | 0];\n                    framedata[pos + 7 | 0] = buffer[i + 7 | 0];\n                    framedata[pos + 8 | 0] = buffer[i + 10 | 0];\n                    framedata[pos + 9 | 0] = buffer[i + 9 | 0];\n                    framedata[pos + 10 | 0] = buffer[i + 8 | 0];\n                    framedata[pos + 11 | 0] = buffer[i + 11 | 0];\n                    framedata[pos + 12 | 0] = buffer[i + 14 | 0];\n                    framedata[pos + 13 | 0] = buffer[i + 13 | 0];\n                    framedata[pos + 14 | 0] = buffer[i + 12 | 0];\n                    framedata[pos + 15 | 0] = buffer[i + 15 | 0];\n                    //could speed it up another x2 but wouldn't be able to swap r/b swap and possible alignment issues\n                    //framedata32[pos / 8 + 0 | 0] = data32[i / 8 + 0 | 0];\n                    //framedata32[pos / 8 + 1 | 0] = data32[i / 8 + 1 | 0];\n                    //framedata32[pos / 4 + 2 | 0] = data32[i / 4 + 2 | 0];\n                    //framedata32[pos / 4 + 3 | 0] = data32[i / 4 + 3 | 0];\n                    pos = pos + 16 | 0;\n                    i = i + 16 | 0;\n                }\n            }\n            if (pos >= framesize) {\n                this.pausedbuffer = null;\n                this.pausedindex = -1;\n                this.pos = 0;\n                if (i != buffer.length - 1) {\n                    this.pausedbuffer = buffer;\n                    this.pausedindex = i;\n                }\n                return true;\n            }\n        }\n        this.pos = pos;\n        this.pausedbuffer = null;\n        this.pausedindex = -1;\n        return false;\n    }\n}\nexports.ImageStreamReader = ImageStreamReader;\n/**\n * Asynchronously captures a section of the game screen\n */\nasync function captureAsync(...args) {\n    requireAlt1();\n    var rect = rect_1.default.fromArgs(...args);\n    if (alt1.captureAsync) {\n        let img = await alt1.captureAsync(rect.x, rect.y, rect.width, rect.height);\n        return new imagedata_extensions_1.ImageData(img, rect.width, rect.height);\n    }\n    if (!hasAlt1Version(\"1.4.6\")) {\n        return capture(rect.x, rect.y, rect.width, rect.height);\n    }\n    var url = \"https://alt1api/pixel/getregion/\" + encodeURIComponent(JSON.stringify(Object.assign(Object.assign({}, rect), { format: \"raw\", quality: 1 })));\n    var res = await fetch(url);\n    var imgreader = new ImageStreamReader(res.body.getReader(), rect.width, rect.height);\n    return imgreader.nextImage();\n}\nexports.captureAsync = captureAsync;\n/**\n * Asynchronously captures multple area's. This method captures the images in the same render frame if possible\n * @param areas\n */\nasync function captureMultiAsync(areas) {\n    requireAlt1();\n    var r = {};\n    if (alt1.captureMultiAsync) {\n        let bufs = await alt1.captureMultiAsync(areas);\n        for (let a in areas) {\n            if (!bufs[a]) {\n                r[a] = null;\n            }\n            r[a] = new imagedata_extensions_1.ImageData(bufs[a], areas[a].width, areas[a].height);\n        }\n        return r;\n    }\n    var capts = [];\n    var captids = [];\n    for (var id in areas) {\n        if (areas[id]) {\n            capts.push(areas[id]);\n            captids.push(id);\n        }\n        else {\n            r[id] = null;\n        }\n    }\n    if (capts.length == 0) {\n        return r;\n    }\n    if (!hasAlt1Version(\"1.5.1\")) {\n        var proms = [];\n        for (var a = 0; a < capts.length; a++) {\n            proms.push(captureAsync(capts[a]));\n        }\n        var results = await Promise.all(proms);\n        for (var a = 0; a < capts.length; a++) {\n            r[captids[a]] = results[a];\n        }\n    }\n    else {\n        var res = await fetch(\"https://alt1api/pixel/getregionmulti/\" + encodeURIComponent(JSON.stringify({ areas: capts, format: \"raw\", quality: 1 })));\n        var imgreader = new ImageStreamReader(res.body.getReader());\n        for (var a = 0; a < capts.length; a++) {\n            var capt = capts[a];\n            imgreader.setFrameBuffer(new imagedata_extensions_1.ImageData(capt.width, capt.height));\n            r[captids[a]] = await imgreader.nextImage();\n        }\n    }\n    return r;\n}\nexports.captureMultiAsync = captureMultiAsync;\n/**\n * Starts capturing a realtime stream of the game. Make sure you keep reading the stream and close it when you're done or Alt1 WILL crash\n * @param framecb Called whenever a new frame is decoded\n * @param errorcb Called whenever an error occurs, the error is rethrown if not defined\n * @param fps Maximum fps of the stream\n */\nfunction captureStream(x, y, width, height, fps, framecb, errorcb) {\n    requireAlt1();\n    if (!hasAlt1Version(\"1.4.6\")) {\n        throw new Alt1Error(\"This function is not supported in this version of Alt1\");\n    }\n    var url = \"https://alt1api/pixel/streamregion/\" + encodeURIComponent(JSON.stringify({ x, y, width, height, fps, format: \"raw\" }));\n    var res = fetch(url).then(async (res) => {\n        var reader = new ImageStreamReader(res.body.getReader(), width, height);\n        try {\n            while (!reader.closed && !state.closed) {\n                var img = await reader.nextImage();\n                if (!state.closed) {\n                    framecb(img);\n                    state.framenr++;\n                }\n            }\n        }\n        catch (e) {\n            if (!state.closed) {\n                reader.close();\n                if (errorcb) {\n                    errorcb(e);\n                }\n                else {\n                    throw e;\n                }\n            }\n        }\n        if (!reader.closed && state.closed) {\n            reader.close();\n        }\n    });\n    var state = {\n        x, y, width, height,\n        framenr: 0,\n        close: () => { state.closed = true; },\n        closed: false,\n    };\n    return state;\n}\nexports.captureStream = captureStream;\n\n\n/***/ }),\n\n/***/ \"canvas\":\n/*!*************************!*\\\n  !*** external \"canvas\" ***!\n  \\*************************/\n/***/ ((module) => {\n\nif(typeof __WEBPACK_EXTERNAL_MODULE_canvas__ === 'undefined') { var e = new Error(\"Cannot find module 'canvas'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_canvas__;\n\n/***/ }),\n\n/***/ \"electron/common\":\n/*!**********************************!*\\\n  !*** external \"electron/common\" ***!\n  \\**********************************/\n/***/ ((module) => {\n\nif(typeof __WEBPACK_EXTERNAL_MODULE_electron_common__ === 'undefined') { var e = new Error(\"Cannot find module 'electron/common'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_electron_common__;\n\n/***/ }),\n\n/***/ \"sharp\":\n/*!************************!*\\\n  !*** external \"sharp\" ***!\n  \\************************/\n/***/ ((module) => {\n\nif(typeof __WEBPACK_EXTERNAL_MODULE_sharp__ === 'undefined') { var e = new Error(\"Cannot find module 'sharp'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_sharp__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/global */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.g = (function() {\n/******/ \t\t\tif (typeof globalThis === 'object') return globalThis;\n/******/ \t\t\ttry {\n/******/ \t\t\t\treturn this || new Function('return this')();\n/******/ \t\t\t} catch (e) {\n/******/ \t\t\t\tif (typeof window === 'object') return window;\n/******/ \t\t\t}\n/******/ \t\t})();\n/******/ \t})();\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(\"./src/base/index.ts\");\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"alt1/base\"), require(\"alt1/ocr\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"alt1/base\", \"alt1/ocr\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dialog\"] = factory(require(\"alt1/base\"), require(\"alt1/ocr\"));\n\telse\n\t\troot[\"Dialog\"] = factory(root[\"A1lib\"], root[\"OCR\"]);\n})(globalThis, (__WEBPACK_EXTERNAL_MODULE_alt1_base__, __WEBPACK_EXTERNAL_MODULE_alt1_ocr__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./src/dialog/imgs/boxtl.data.png\":\n/*!****************************************!*\\\n  !*** ./src/dialog/imgs/boxtl.data.png ***!\n  \\****************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAx0lEQVQ4T5VRywrCMBBMaytYyMFHDw16CNWDBg8WoWAFpTf//4ecsGENMQ0UhmVmO5PdNEKZru0GVCLEL/cnS/MYwU3/Jo+AFiKbgevrE7bSmArksgk6DumVsrIKOmJ/G8JWGrMvjUBkbgLBhFzufBkB7uBPQKDcKJYR4C39ALhUuqj15J7/KwHIVIfztjWoZXOkmYuVtB4OQAM4GAFUh+UabmelZ0GANXdh+mW83eyoUz/ykeQm0G4g/j+wnC9NNQAl+VNR6y/yyxm6AFlANgAAAABJRU5ErkJggg==\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/boxtl_leg.data.png\":\n/*!********************************************!*\\\n  !*** ./src/dialog/imgs/boxtl_leg.data.png ***!\n  \\********************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAW5vUEUAYtdMlAAAAARub1BFAAAAAEEgjiIAAAAJbm9QRQAAAAAAAAAAAKGKctUAAAE0SURBVDhPjZFNTsMwEIVtJ45D05YmLVKBJRISsOIILNiw5QosOXpIKcpPHduFl0wINAHEJ+tpPB6/Gcv8+emRHZIX1TQ6QuBLbs37QNnVxQlj/P+L31yuH+7vZrNptt2QhxSy0vXe6SAMlYrQqshzyiPmt9fny2WslMqyrQr4+vQsTV8m0eTtdRNN582IjGmtob4nrNsLiqBJcjxfxKhGXBblIk6cNVL68AKwQDUCUVuHCsJZR8egrCpkdq0SSEIbb89vhoOZ53vNSYv0JeVpHni16fYCYYztsz10hzDWQEXQulI7Aq266BD0hHYdqC+BVl30CXlDUUZv+Bp9DIrIG4pBxE7XdPAb/bTkK0IVjN/6I1QmVquE9mMGo2KLJdI06xIjBOff72CLn/rr0YOfwVZr/QEeBH9rQlJ0YgAAAABJRU5ErkJggg==\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/boxtr.data.png\":\n/*!****************************************!*\\\n  !*** ./src/dialog/imgs/boxtr.data.png ***!\n  \\****************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA3UlEQVQ4T6WTwQrCMBBEk9oKigEVFSweLOLF6sFehOYgePP/P2jNrE1ZcJFUD68J2cwkO23NofF0vD0IY1k3VLfveXVu+jWMALVYxzowxtjw+A2YGVtM1WIKl/szjEohlb8NuAWtkMru6sMYJplbkR0vKF9XH5s0kBs0fYgxyJRAM7clV1YMGxB9R4pxAG6J04tlOdwAIm63uzVnoIkk2unRAF+kKpJEg9HEcdAwQA59iJpIEg2kEEa4QbIBNkMYM0Arg0NEC1KM14i/WBVJuPcutHy+YQMw259CiJ5egv+YzBEq3jQAAAAASUVORK5CYII=\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/boxtr_leg.data.png\":\n/*!********************************************!*\\\n  !*** ./src/dialog/imgs/boxtr_leg.data.png ***!\n  \\********************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAW5vUEUAYtdMlAAAAARub1BFAAAAAEEgjiIAAAAJbm9QRQAAAAAAAAAAAKGKctUAAAFgSURBVDhPnZO9TsMwFIWPHZuUpo2g6hswsbMzsbEgMfAKiIUnYOWNWBh4F1CFhFKKojatmx/jY+E2RRWK+KSrm9ycHF//iceHO7tal5hM3tGLDyAkIIVAY+0maxUBjYApDYSwOOgdulqMxXwOAbjKPzk9GUPc315bLTWWZo2mNs69hzhOvIAjKC3A72Q4HOAj+9zUnp5fIG6uzm2WTdFP+si/ZkgGqRcTY4zPKpKo6sbnfjJAsZj79+l0BsmfSbEocHQ8Ql2V0Fq5LmIfNKaYz8x5nvsckEHIKJZLX1z95AC/kTRNN1rpullXNdyab9FKI3JBQvu1EwVCjVBLdgwCwSRQumm1aRsJ6/b5Ly4vzvYKInc23l4n+zv4DTtoj0pUpHzuZMD5hoUMBMNOBmx3Hyt3+DoZhJ3g+Wib8e507oBRltXOto7Ho24GvJVcNHbACGTuXnQy4MhcNGbGdhrAN5b0ly21yuFfAAAAAElFTkSuQmCC\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/chatimg.data.png\":\n/*!******************************************!*\\\n  !*** ./src/dialog/imgs/chatimg.data.png ***!\n  \\******************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAAUAAAAOCAIAAABoykFxAAAAwUlEQVQYV2OYPGlSV1dXcnJyRmqSqbUdQ3VNNRB5uTkJCwuLKqgxtLS0ACVVFGQ4eQUFpRUZgBxHWytOHl4oX0tLS1lZGaiYkZOXW1CUQVXXGChkbGwsJSUFFGI4YM+fqycmpahqoG8AVMVwxJipUptPUFIOqEtEkJdBT4JPSVYSqBgoCTSSQUVLG8QCms/DCzI/OjrK0syEgYERaDiI7+3lHRwcDNQC5bu6ukKEgLp4RKUZsjPSgEJAfrC/t7GhHgChFSifluVS6gAAAABJRU5ErkJggg==\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/chatimg_leg.data.png\":\n/*!**********************************************!*\\\n  !*** ./src/dialog/imgs/chatimg_leg.data.png ***!\n  \\**********************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAAgAAAAOCAIAAACdNMrBAAAAAW5vUEUAYtdMlAAAAARub1BFAAAAAEEgjiIAAAAJbm9QRQAAAAAAAAAAAKGKctUAAAEOSURBVChTVY+7SgNBFIZnZ3aTWdCYddVcRBIVREEC2gcsFnwMO9/JxsrGzkbQB1AkleArWJjLXhRhJnNbf9ltcviL/3z/nDMzXjI+Hx0PDoadh6dJI6DGOUKIT6kPenZ6eHv/fDTo7vbbRSF5GCCjoDd3j/v9rThel0sLKoWG2DzN97rxdrwhlFHaCqGNdRAF7e1EUhlrHIQl1sAbGjb/N1aFXgqptYEoD3nx/Yu+QvURXI6+tqtFPcpru1os3my5oBX6tgaEaOtcWbKmTywJGF+rMlA8Cgm9vkry+ed0luXLxo9Q+I12JcSGvc7F+ORt8oE5a32pvEositqeI5fJ6OX1/Ws2TbNFUWR5nv4B2LeYEU2WizoAAAAASUVORK5CYII=\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/chatimgactive.data.png\":\n/*!************************************************!*\\\n  !*** ./src/dialog/imgs/chatimgactive.data.png ***!\n  \\************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAAUAAAAOCAIAAABoykFxAAAApklEQVQYV2Po6upqaWmJjo4CIk1dQ4ZiMLCzNGVgYGQRkGCorqmOjggTEeQF8hm4BRmCg4ONDfVAHAhfWVlZWFgYygciKUVVSVkFoCgnD1jLHkOGZHlWbkFRoBCIf0CdIV+GgZGTF6pLnoNBkJcLqhiIBCXloCwgAprv7eWtraGG4FtZWXq5OQG1QPnGxsaurq5AIRCfhYshKTYKqASoy83RRkVBBgAFhh2w1olrrAAAAABJRU5ErkJggg==\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/chatimgactive_leg.data.png\":\n/*!****************************************************!*\\\n  !*** ./src/dialog/imgs/chatimgactive_leg.data.png ***!\n  \\****************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAAgAAAAOCAIAAACdNMrBAAAAAW5vUEUAYtdMlAAAAARub1BFAAAAAEEgjiIAAAAJbm9QRQAAAAAAAAAAAKGKctUAAAEESURBVChTPY4xTgMxEEXtmfFmE1hpRSQECqIIVRBCEanpuABnyImo09FzASokjgAVVUQBURpCSMiKHdt8ZwVf1mj8/veM7dXlxbBfnvTad4/vmSMNwRgjRAJ6fno4uX3IssA5k5KV5BHozeQedK9s5bm0dwmVmfh1OisLAa3rEJV8DCFE7wOBFjsO1AbGBAg0jerkDNTQSL6hyRDrfIjN5f8RRPpjmCw6NEhgjakdKknWJGCnhFj8yKDSfK7IQla2/p+46LBRaTkiNlETwvoYDY2vBx/V6m2x2u5IpxH3j4+Gg4Pnl1mluvSi335TBRwuu/vO+NFZ72m6+FxvlnW99v5L9ReDbXkhpJVqYwAAAABJRU5ErkJggg==\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/chatimghover.data.png\":\n/*!***********************************************!*\\\n  !*** ./src/dialog/imgs/chatimghover.data.png ***!\n  \\***********************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAAUAAAAOCAIAAABoykFxAAAAz0lEQVQYV2M4dfLEjp07W1pamhrrnL38GFavXr10yeKk2ChhYWEpFW2GLVu2dLQ1a2uocfIKiipoMABVRoaFcPLwcguKiiqoMVhZWRob6kmKCgGFBMSkGUztnU2t7VxdXZWVlYFCDP9DhSfbyaloaQMVSklJMfz3YF1sJSylqKqlpQW0gsFOQVhLTRnC4RGVZjAyBymDma/BUF1T7e3lzcDACJQUlFZkSE5OLsjNAmoByoP4YZGR2RlpQCGgLpD+Sb2d0dFR2dnZQC8Y6WkBAPN1NR2AAHfmAAAAAElFTkSuQmCC\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/chatimghover_leg.data.png\":\n/*!***************************************************!*\\\n  !*** ./src/dialog/imgs/chatimghover_leg.data.png ***!\n  \\***************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAAgAAAAOCAIAAACdNMrBAAAAAW5vUEUAYtdMlAAAAARub1BFAAAAAEEgjiIAAAAJbm9QRQAAAAAAAAAAAKGKctUAAAEjSURBVChTVc89SwNBEIDh2727fChqFosQLExMY4gIsbOIBLT0B9joX9RKTCOksLESSa1Y5TSa+8rdze7s7jl4lfAUw7sMy7CL8cnx4f5Bt3338FzzubbWcRyPc4/q6Kg/nT7eXA72erurz2xHNCBXnOrt/ex01G2JjSwq6nUeh5Ci67ISR30x7DVXqQVAkmegC+BUOx3xFhilNEmTQgIS3qh79JtWOksKkudQ4TXPWyxCpXWSAQGpK3wZrmmDJqn+4VSryRgkIFXF3doUvldyVtJlf8c5gFbbkh5qa822mz5FUBYRpTJaG359dRYE3/OPKEpgncu0MBJtCMztdtqT8eDl9V0xP0cXFe05BktXiBazzvlkOHuaB8vVVxj/xOkySn4BoaPZbEW+44oAAAAASUVORK5CYII=\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/continueimg.data.png\":\n/*!**********************************************!*\\\n  !*** ./src/dialog/imgs/continueimg.data.png ***!\n  \\**********************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAEoAAAANCAIAAACB72/yAAABTklEQVRIS72PMUsDQRCFB2Jjk85KsPEPmMYmgig2gWAlKWwCIiIihIC1WIpiJZY2SpqgpLCQNDZRAjZWHqmvsVEQ1Ebl8J0D4zIXD5HdgY/lzey7fffoeVD9fFxikpfaP/jLhxLhojy+kPdRjZKokhIvBieqIC+6WcVpkfjdiz5u55P7BR6CgqDu2dbeaQdnGpoxeAcpaT0buBsD/XQ1pwwhoPde2YDX/oxbTxpir5x+sasXt8vZhm/9knL6hR5OJm0YHI2D9c1GdeWH7sG0svmF4uMJA7jbbnPW7YaR98rsC7xMHGBAttvd/pjyeIeQYcD1TtGtB42N8oSAettFBnkgR+SPEIxaytVlc5Qb4oQG7q37FSOjMiibQjwMcZIBnY0RcNiYYqFuA0GtOl0s0/laYSj4D6XdjSBLCLENdQru7W9OeUpGhsd8YGvV6Qu6U2ehlR3eegAAAABJRU5ErkJggg==\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/continueimg_leg.data.png\":\n/*!**************************************************!*\\\n  !*** ./src/dialog/imgs/continueimg_leg.data.png ***!\n  \\**************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAEoAAAANCAIAAACB72/yAAAAAW5vUEUAYtdMlAAAAARub1BFAAAAAEEgjiIAAAAJbm9QRQAAAAAAAAAAAKGKctUAAASPSURBVEhLrVZLaFxVGD7nPubeO5NMZpIQTYfaNn2RREsrbQXbuOnKR4WCiKtCV2JABF24qTvdCK5ciIWudeFCqkuLC6WKQqVmEVsMjUkTyySTec993+t37n/n5CZNShQ/Dof/db7z/efce2f4J+++PDbqsgz0sN2y9a7NYResmIKPgTVgptY26IOpwViz0cnFdur04XFrqJDw64OargZ+ODKQJPaAWr1td5zs1lq+pKpmztBzYaPWYcxvV9cN/v7sa4cr1ulzz6Oitv7As0OqBnzH6ThRr1VPfcbyxfKAqeimWRotwe1126hHGWW3Fft2jwzdyn/42U2ygatvXaAU4iAsl/KwiQTMoqK/deymbNwoY95oBiZvJwGhhAzSk7PUbr1brdZkCkoWVmzR3jOT+1p+Keita/nRRnVpYEDs1+n0YGAWHAkCvVwyXGyw3lbhbstKtBylaEbNFg4wxRc3bn19fSaf97hy5O8H9y6/9+vrLz2naoIE4Lki6skmZJmJTQZB67DCE0XxZFEKcZKdlKdAcHhIm5tfFe1V9o1hJapjrxUG4vZ8P8BsWgZmx3Z1XYMaMihFoDgMpMjFTJVBIMo0TYPxzfd3Pv/giFUq5y02NHKMOnxxZpoKABgAtiMeLKGgNAjZOGbYMGSQXMsySRKaWlmtpu3B6rS7iEpIIkC6j4JIUycDCnp++qjf/PmPj9/cPzRmjIyXZYcXzhxmqo5sTk9vcjdInj0ChNPTRxcWltXzZ6YUzpuNtud5UQZJXwEMWkBBx/U5Z4qiUFDWIEKGBLKbmkJ/ojJ87cbiC5OFKPYVtTf65LFzx/Offjk3MT7EFDWMYjlUNSUHwEDB1N8zsAQaOp2uaM80crWaeIkl3W7DdV0ehX4Y+0GIIYK+F8YctpS1RVPoszhygwjuU+Pl69/+9cYrxcDrdZvL+4+ffPrg4LWvfhcdxhGaTFYLZXJQ5L+hULAcx+XvXLnIrOFWdVlIAZKnZRvQVWrtAsMQbymBig1NdIvGkpjAj7/d/2h2Csbd+bWV9bXbS2a96Zw/dYgqBR7dGpIQ3F3YYzA2NtyoN9WTkwcCp92znfTM+tB4LA4VZ5/5lmSBWwtjRoNF6SqAsqCy/UgW/HRn8erlibxqz99tNZuL9Vb050N29sRBVeG0r6bgoe+/gaGPTUEFBi/ZnYRJSZuVu0M8nVGknjhaCYMgK4UG1KMIvJiznciRxbYURIvlUcC4gvmXuaW3Xy2xwL2/EqG3jY5+a8E4PVXhDI1FIcQmTW4eaHLnJCBLLiUlxyiQLsmcCzEggs+4aO/U5IG2GwoplMCAJiru824BVVJNfxUuD5McUdKVyCMes9W19nihttFouW4Dvf1wL4fekEWK40sV480UTSIC6fKgd4SUhBMRLt180qS48MSliO/hNDi/cmmGVv5fwNnL14nuweT2d7cfwiga4n/Z2elDIpfAiS3MKCBj8z38lyiqvpP5DyjBZy8+qxs5WGEURH76JVB0sY2q7PxbtyOwnAwiIQbp7hFy1Y4QVKrNQnEQBNRnRWrGFsGBG/wD9kSQTvgpZ/YAAAAASUVORK5CYII=\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/continueimgdown.data.png\":\n/*!**************************************************!*\\\n  !*** ./src/dialog/imgs/continueimgdown.data.png ***!\n  \\**************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAEoAAAANCAIAAACB72/yAAABMklEQVRIS92VoU4DQRCG5wKGNyEo3gB1BtWEYGqaNAGBoQ3BoAiqKVXwDJUEgcAgCQIUBoPgVfg2/2WzGUpqdk40+XqZ3Z3u3Le32bXbQbMc2UaCmj2cbr1dWTSvl4mXC3s82+appsupDmqp3ueNRaN6s+nBaHzCU82Pa59WF9TSihJ9zex7EQgl7s/3cRPEcqNuUGkmRy2tohsIotSTIW/gcurS6f3c9QFf6a8hL+HSKoJatznzPsm7pWyu7FlL+RfmZzdS73BwtNseZ56nOyq9dv6VCerMQwSKZZS+Xj9Hi9wmw73SjSadcQdMOlr4qUYczP+fm3D5VWDapNfPvQelHjE7xyVUJ9173O66ZKNhLWUoNzcaAWqd3vsknFxSgRutjmrZvG34iE9D2zCQmrfNLxl9slarbU3QAAAAAElFTkSuQmCC\")\n\n/***/ }),\n\n/***/ \"./src/dialog/imgs/continueimgdown_leg.data.png\":\n/*!******************************************************!*\\\n  !*** ./src/dialog/imgs/continueimgdown_leg.data.png ***!\n  \\******************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports=(__webpack_require__(/*! alt1/base */ \"alt1/base\").ImageDetect.imageDataFromBase64)(\"iVBORw0KGgoAAAANSUhEUgAAAEoAAAANCAIAAACB72/yAAAAAW5vUEUAYtdMlAAAAARub1BFAAAAAEEgjiIAAAAJbm9QRQAAAAAAAAAAAKGKctUAAAQQSURBVEhL1VW9bxxFFN/52NvbO59sEic5GZMIEHFkAiICKaRDAlGAlJKGioqShpqejn+ABiEoqFIhkIJEk44miSCRyIcSJXawfT6f7253dueD39xbz62/Ekei4ae5pzdv3rz3fm9m59jHb780N5tFu1GWttKOgDjmlXY4DgsY9nKRQkppaAqkup3JUTXZh0IViFlP3UgalTZZhexvpezyu6ePH4u73QXMc+15ltZBxpxBscNxVnhXQtpo8JkWlljccGVlJ394QpKzZSl3WaZYmjiSV69PO/j+mymMUGCHZ+eFhOwEBIek1GQJGJUCYUlHJaRQPVCwZdTrBzsq2eiVnt7phZOYb6u8HRuEoOWAEBGlkKLyPGk2SQ+AkchU8x2oTP/xoPj2m8+gt9qdR3/f/PLr395alILzJJXkQ6CYSBcShR7VU0PCk5ZI7yRNFF9f8l1Lmg8e/yOWFmfjNM1LheWssEbrPWM0NI4Jbdh4O4+YhTTaqrzAwJR8yAg3X8KEUlHosjTWOGPt6sBeXErKfOzc+MTi2UvL7e9+vjPfjIyxlY9GHEvRkI4iI2ae+yWEhU4ZyRMKLZG+PRyHJWxEqb4qFuWZ8vSSpgQ31EQeewbKrSuT+iuQPRjrU+f8jYU0pTs1w3+8+vDCa3NWS602uy8vg+H3v9ydSyxzzBgXce8Jqhi4+BTKR5zAx7QWDkcBBcFIW8lokHt60CaHsKv0A4E0lP6ZgJsu8AFV02Mtd+Xa6jtLLYbuqhEx/OHXe2COVbhhcOEj1+MTK1ggyYIrHfSnA46jceHpzXQ6w8GuNyrEreuFMigCzQ79BgGaCjl9waad3uFWWv8ezrejK9fWPnpvCXdyfWXtzLnzyy+qn35fIYYAMUSiEKGyOxdYOc3wRWJa54wLQg2iwSMhJJMxz7LS/zHMd2cHm0NUD9dGIlgZafQpjrwirDRcTep7CrCLFGzZ70z0bq1FX31+yfLW9b/+XF/Zunl/Y6DSN07teskEF/TaoIBIVO1BAZAuppkHshBghE4y1EyeeLe2+8rTQ3HErQ7KhD349ivT84OIAeD2xScXoNy7/2R9q9/rjWE5dwJ/A1N6CRfTth6UN5QEWad0GEBKnDk+I7kIBx0Ai8HvaBf9MDSUKSy73Ys+/fDVXJnV1R644Q27sWLOzk3uEm4a27nYjKNuYyOc2oE9nZbEOPbS4Yb+gC3zD6cfkYiaPFZai1dOdmod/C+Bo5PGlYxt5FFHqs3+AO83/Q2CGwF/JYEe1Q3lmfeFh45gl/W3GJRwkuCFgTVM8YXjr51dfr0rW3v/o+sXnUB3GvJ5QZ/ijSdeaq2llPXvDRey0nYQsoQaKHXQgf3l4awqrYZBlrMPzi+00IH/P/Yf0iAr/gXJh0N13Pe/YwAAAABJRU5ErkJggg==\")\n\n/***/ }),\n\n/***/ \"./src/dialog/index.ts\":\n/*!*****************************!*\\\n  !*** ./src/dialog/index.ts ***!\n  \\*****************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst a1lib = __importStar(__webpack_require__(/*! alt1/base */ \"alt1/base\"));\nconst OCR = __importStar(__webpack_require__(/*! alt1/ocr */ \"alt1/ocr\"));\nconst base_1 = __webpack_require__(/*! alt1/base */ \"alt1/base\");\nvar imgs_rs3 = (0, base_1.webpackImages)({\n    chatimg: __webpack_require__(/*! ./imgs/chatimg.data.png */ \"./src/dialog/imgs/chatimg.data.png\"),\n    chatimghover: __webpack_require__(/*! ./imgs/chatimghover.data.png */ \"./src/dialog/imgs/chatimghover.data.png\"),\n    chatimgactive: __webpack_require__(/*! ./imgs/chatimgactive.data.png */ \"./src/dialog/imgs/chatimgactive.data.png\"),\n    continueimg: __webpack_require__(/*! ./imgs/continueimg.data.png */ \"./src/dialog/imgs/continueimg.data.png\"),\n    continueimgdown: __webpack_require__(/*! ./imgs/continueimgdown.data.png */ \"./src/dialog/imgs/continueimgdown.data.png\"),\n    boxtl: __webpack_require__(/*! ./imgs/boxtl.data.png */ \"./src/dialog/imgs/boxtl.data.png\"),\n    boxtr: __webpack_require__(/*! ./imgs/boxtr.data.png */ \"./src/dialog/imgs/boxtr.data.png\")\n});\nvar imgs_leg = (0, base_1.webpackImages)({\n    chatimg: __webpack_require__(/*! ./imgs/chatimg_leg.data.png */ \"./src/dialog/imgs/chatimg_leg.data.png\"),\n    chatimghover: __webpack_require__(/*! ./imgs/chatimghover_leg.data.png */ \"./src/dialog/imgs/chatimghover_leg.data.png\"),\n    chatimgactive: __webpack_require__(/*! ./imgs/chatimgactive_leg.data.png */ \"./src/dialog/imgs/chatimgactive_leg.data.png\"),\n    continueimg: __webpack_require__(/*! ./imgs/continueimg_leg.data.png */ \"./src/dialog/imgs/continueimg_leg.data.png\"),\n    continueimgdown: __webpack_require__(/*! ./imgs/continueimgdown_leg.data.png */ \"./src/dialog/imgs/continueimgdown_leg.data.png\"),\n    boxtl: __webpack_require__(/*! ./imgs/boxtl_leg.data.png */ \"./src/dialog/imgs/boxtl_leg.data.png\"),\n    boxtr: __webpack_require__(/*! ./imgs/boxtr_leg.data.png */ \"./src/dialog/imgs/boxtr_leg.data.png\")\n});\nvar fontmono = __webpack_require__(/*! ../fonts/aa_8px_mono.fontmeta.json */ \"./src/fonts/aa_8px_mono.fontmeta.json\");\nvar fontheavy = __webpack_require__(/*! ../fonts/aa_8px_mono_allcaps.fontmeta.json */ \"./src/fonts/aa_8px_mono_allcaps.fontmeta.json\");\nclass DialogReader {\n    constructor() {\n        this.pos = null;\n    }\n    find(imgref) {\n        if (!imgref) {\n            imgref = a1lib.captureHoldFullRs();\n        }\n        if (!imgref) {\n            return null;\n        }\n        var boxes = [];\n        for (let imgs of [imgs_rs3, imgs_leg]) {\n            var pos = imgref.findSubimage(imgs.boxtl);\n            for (var a in pos) {\n                var p = pos[a];\n                if (imgref.findSubimage(imgs.boxtr, p.x + 492, p.y, 16, 16).length != 0) {\n                    boxes.push(Object.assign(Object.assign({}, p), { legacy: imgs == imgs_leg }));\n                }\n            }\n        }\n        if (boxes.length == 0) {\n            return false;\n        }\n        var box = boxes[0];\n        if (boxes.length > 1) {\n            console.log(\"More than one dialog box found\");\n        }\n        this.pos = { x: box.x + 1, y: box.y + 1, width: 506, height: 130, legacy: box.legacy };\n        return this.pos;\n    }\n    ensureimg(imgref) {\n        if (!this.pos) {\n            return null;\n        }\n        if (imgref && a1lib.Rect.fromArgs(imgref).contains(this.pos)) {\n            return imgref;\n        }\n        return a1lib.captureHold(this.pos.x, this.pos.y, this.pos.width, this.pos.height);\n    }\n    read(imgref) {\n        imgref = this.ensureimg(imgref);\n        if (!imgref) {\n            return false;\n        }\n        let title = this.readTitle(imgref);\n        var r = {\n            text: null,\n            opts: null,\n            title\n        };\n        if (this.checkDialog(imgref)) {\n            r.text = this.readDialog(imgref, true);\n            return r;\n        }\n        else {\n            var opts = this.findOptions(imgref);\n            if (opts.length != 0) {\n                r.opts = this.readOptions(imgref, opts);\n                return r;\n            }\n            else {\n                return null;\n            }\n        }\n    }\n    readTitle(imgref) {\n        if (!this.pos) {\n            throw new Error(\"position not found yet\");\n        }\n        var buf = imgref.toData(this.pos.x, this.pos.y, this.pos.width, 32);\n        //somehow y coord can change, 19 for \"choose and option:\" 18 for npc names\n        var pos = OCR.findChar(buf, fontheavy, [255, 203, 5], Math.round(this.pos.width / 2) - 10, 16, 20, 4);\n        if (!pos) {\n            return \"\";\n        }\n        var read = OCR.readSmallCapsBackwards(buf, fontheavy, [[255, 203, 5]], Math.round(this.pos.width / 2) - 10, pos.y, 150, 1);\n        return read.text.toLowerCase(); //normalize case since we don't actually know the original\n    }\n    checkDialog(imgref) {\n        if (!this.pos) {\n            throw new Error(\"position not found yet\");\n        }\n        var locs = [];\n        let imgs = (this.pos.legacy ? imgs_leg : imgs_rs3);\n        locs = locs.concat(imgref.findSubimage(imgs.continueimg, this.pos.x - imgref.x, this.pos.y - imgref.y, this.pos.width, this.pos.height));\n        locs = locs.concat(imgref.findSubimage(imgs.continueimgdown, this.pos.x - imgref.x, this.pos.y - imgref.y, this.pos.width, this.pos.height));\n        return locs.length != 0;\n    }\n    readDialog(imgref, checked) {\n        if (!this.pos) {\n            throw new Error(\"position not found yet\");\n        }\n        imgref = this.ensureimg(imgref);\n        if (!imgref) {\n            return null;\n        }\n        if (!checked) {\n            checked = this.checkDialog(imgref);\n        }\n        if (!checked) {\n            return null;\n        }\n        var lines = [];\n        var buf = imgref.toData(this.pos.x, this.pos.y + 33, this.pos.width, 80);\n        for (var y = 0; y < buf.height; y++) {\n            var hastext = false;\n            for (var x = 200; x < 300; x++) {\n                var i = x * 4 + y * 4 * buf.width;\n                if (buf.data[i] + buf.data[i + 1] + buf.data[i + 2] < 50) {\n                    hastext = true;\n                    break;\n                }\n            }\n            if (hastext) {\n                var chr = null;\n                chr = chr || OCR.findChar(buf, fontmono, [0, 0, 0], 192, y + 5, 12, 3);\n                chr = chr || OCR.findChar(buf, fontmono, [0, 0, 0], 246, y + 5, 12, 3);\n                chr = chr || OCR.findChar(buf, fontmono, [0, 0, 0], 310, y + 5, 12, 3);\n                if (chr) {\n                    var read = OCR.readLine(buf, fontmono, [0, 0, 0], chr.x, chr.y, true, true);\n                    if (read.text.length >= 3) {\n                        lines.push(read.text);\n                    }\n                    y = chr.y + 5;\n                }\n            }\n        }\n        return lines;\n    }\n    findOptions(imgref) {\n        var locs = [];\n        if (!this.pos) {\n            throw new Error(\"position not found yet\");\n        }\n        let imgs = (this.pos.legacy ? imgs_leg : imgs_rs3);\n        var a = imgref.findSubimage(imgs.chatimg);\n        for (var b in a) {\n            locs.push({ x: a[b].x, y: a[b].y, hover: false, active: false });\n        }\n        var a = imgref.findSubimage(imgs.chatimghover);\n        for (var b in a) {\n            locs.push({ x: a[b].x, y: a[b].y, hover: true, active: false });\n        }\n        var a = imgref.findSubimage(imgs.chatimgactive);\n        for (var b in a) {\n            locs.push({ x: a[b].x, y: a[b].y, hover: false, active: true });\n        }\n        return locs;\n    }\n    readOptions(imgref, locs) {\n        imgref = this.ensureimg(imgref);\n        if (!imgref) {\n            return null;\n        }\n        if (!this.pos) {\n            throw new Error(\"interface not found\");\n        }\n        var buf = imgref.toData();\n        if (!locs) {\n            locs = this.findOptions(imgref);\n        }\n        var bgcol = [150, 135, 105];\n        var fontcol = this.pos.legacy ? [255, 255, 255] : [174, 208, 224];\n        var r = [];\n        for (var a = 0; a < locs.length; a++) {\n            var dx = locs[a].x + 30;\n            var dy = locs[a].y + 6;\n            var checkline = imgref.toData(dx, dy, Math.min(500, imgref.width - a), 1);\n            var row = null;\n            for (var x = 0; x < checkline.width; x++) {\n                var i = x * 4;\n                if (row) {\n                    if (coldiff(checkline.data[i], checkline.data[i + 1], checkline.data[i + 2], bgcol[0], bgcol[1], bgcol[2]) < 75) {\n                        row.width = x + 20;\n                        break;\n                    }\n                }\n                else if (coldiff(checkline.data[i], checkline.data[i + 1], checkline.data[i + 2], fontcol[0], fontcol[1], fontcol[2]) < 100) {\n                    var text = \"\";\n                    var chr = OCR.findChar(buf, fontmono, fontcol, dx + x + 2 - imgref.x, dy + 3 - imgref.y, 30, 1);\n                    if (chr) {\n                        var read = OCR.readLine(buf, fontmono, fontcol, chr.x, chr.y, true, true);\n                        var text = read.text;\n                    }\n                    row = { text: text, x: dx + x, y: dy, width: 200, buttonx: dx - 31, hover: !!locs[a].hover, active: locs[a].active };\n                }\n            }\n            if (row) {\n                r.push(row);\n            }\n        }\n        r.sort((a, b) => a.y - b.y);\n        return r;\n    }\n}\nexports[\"default\"] = DialogReader;\n//TODO get rid of this or make it standard\nfunction coldiff(r1, g1, b1, r2, g2, b2) {\n    return Math.abs(r1 - r2) + Math.abs(g1 - g2) + Math.abs(b1 - b2);\n}\n\n\n/***/ }),\n\n/***/ \"alt1/base\":\n/*!**************************************************************************************************!*\\\n  !*** external {\"root\":\"A1lib\",\"commonjs2\":\"alt1/base\",\"commonjs\":\"alt1/base\",\"amd\":\"alt1/base\"} ***!\n  \\**************************************************************************************************/\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_alt1_base__;\n\n/***/ }),\n\n/***/ \"alt1/ocr\":\n/*!*********************************************************************************************!*\\\n  !*** external {\"root\":\"OCR\",\"commonjs2\":\"alt1/ocr\",\"commonjs\":\"alt1/ocr\",\"amd\":\"alt1/ocr\"} ***!\n  \\*********************************************************************************************/\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_alt1_ocr__;\n\n/***/ }),\n\n/***/ \"./src/fonts/aa_8px_mono.fontmeta.json\":\n/*!*********************************************!*\\\n  !*** ./src/fonts/aa_8px_mono.fontmeta.json ***!\n  \\*********************************************/\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = JSON.parse('{\"chars\":[{\"width\":7,\"bonus\":75,\"chr\":\"a\",\"pixels\":[0,7,187,1,3,221,1,6,170,1,8,255,2,3,255,2,5,187,2,8,255,3,3,255,3,5,255,3,8,221,4,4,238,4,5,255,4,6,204,4,7,255,4,8,238],\"secondary\":false},{\"width\":7,\"bonus\":105,\"chr\":\"b\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,3,204,1,4,170,1,7,170,1,8,187,2,3,255,2,8,255,3,3,255,3,8,255,4,3,170,4,4,170,4,7,170,5,5,187,5,6,187],\"secondary\":false},{\"width\":7,\"bonus\":50,\"chr\":\"c\",\"pixels\":[0,5,170,0,6,187,1,4,187,1,7,187,2,3,255,2,8,255,3,3,255,3,8,255,4,3,221,4,8,221],\"secondary\":false},{\"width\":7,\"bonus\":105,\"chr\":\"d\",\"pixels\":[0,5,187,0,6,187,1,4,170,1,7,170,1,8,170,2,3,255,2,8,255,3,3,255,3,8,255,4,3,204,4,4,170,4,7,170,4,8,187,5,1,204,5,2,221,5,3,221,5,4,221,5,5,221,5,6,221,5,7,221,5,8,204],\"secondary\":false},{\"width\":7,\"bonus\":75,\"chr\":\"e\",\"pixels\":[0,5,187,0,6,170,1,4,187,1,5,255,1,7,204,2,3,255,2,5,255,2,8,255,3,3,255,3,5,255,3,8,255,4,3,187,4,5,255,4,8,221,5,5,204],\"secondary\":false},{\"width\":4,\"bonus\":50,\"chr\":\"f\",\"pixels\":[0,3,204,1,2,221,1,3,255,1,4,221,1,5,221,1,6,221,1,7,221,1,8,204,2,1,255,2,3,255],\"secondary\":false},{\"width\":7,\"bonus\":115,\"chr\":\"g\",\"pixels\":[0,5,187,0,6,187,1,3,170,1,4,153,1,7,170,1,11,153,2,3,255,2,8,255,2,11,238,3,3,255,3,8,255,3,11,221,4,3,221,4,7,153,4,8,221,4,10,204,5,3,204,5,4,221,5,5,221,5,6,221,5,7,221,5,8,221,5,9,170],\"secondary\":false},{\"width\":7,\"bonus\":90,\"chr\":\"h\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,3,170,1,4,204,2,3,255,3,3,255,4,3,170,4,4,221,4,5,221,4,6,221,4,7,221,4,8,204],\"secondary\":false},{\"width\":3,\"bonus\":35,\"chr\":\"i\",\"pixels\":[0,1,238,0,3,204,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204],\"secondary\":false},{\"width\":4,\"bonus\":50,\"chr\":\"j\",\"pixels\":[0,11,153,1,11,170,2,1,204,2,3,204,2,4,221,2,5,221,2,6,221,2,7,221,2,8,221,2,9,221],\"secondary\":false},{\"width\":6,\"bonus\":70,\"chr\":\"k\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,5,255,2,4,153,2,5,255,2,6,221,3,3,204,3,7,221],\"secondary\":false},{\"width\":3,\"bonus\":40,\"chr\":\"l\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,1,8,255],\"secondary\":false},{\"width\":10,\"bonus\":115,\"chr\":\"m\",\"pixels\":[0,3,204,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,4,221,2,3,238,3,3,255,4,3,153,4,4,255,4,5,221,4,6,221,4,7,221,4,8,204,5,4,187,6,3,255,7,3,238,8,4,170,8,5,221,8,6,221,8,7,221,8,8,204],\"secondary\":false},{\"width\":7,\"bonus\":75,\"chr\":\"n\",\"pixels\":[0,3,204,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,4,221,2,3,238,3,3,255,4,3,238,5,4,170,5,5,221,5,6,221,5,7,221,5,8,204],\"secondary\":false},{\"width\":8,\"bonus\":70,\"chr\":\"o\",\"pixels\":[0,5,187,0,6,170,1,4,204,1,7,221,2,3,238,2,8,238,3,3,255,3,8,255,4,3,238,4,8,255,5,4,204,5,7,221,6,5,170,6,6,170],\"secondary\":false},{\"width\":6,\"bonus\":90,\"chr\":\"p\",\"pixels\":[0,3,238,0,4,255,0,5,187,0,6,204,0,7,255,0,8,221,0,9,221,0,10,221,1,3,255,1,8,238,2,3,255,2,8,255,3,3,238,3,8,238,4,4,238,4,5,255,4,6,255,4,7,238],\"secondary\":false},{\"width\":7,\"bonus\":90,\"chr\":\"q\",\"pixels\":[0,5,187,0,6,187,1,3,170,1,4,153,1,7,153,1,8,170,2,3,255,2,8,255,3,3,238,3,8,238,4,3,255,4,4,255,4,5,187,4,6,187,4,7,255,4,8,238,4,9,221,4,10,221],\"secondary\":false},{\"width\":4,\"bonus\":45,\"chr\":\"r\",\"pixels\":[0,3,204,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,3,187,1,4,204,2,3,255],\"secondary\":false},{\"width\":6,\"bonus\":50,\"chr\":\"s\",\"pixels\":[0,4,187,1,3,255,1,5,238,1,8,255,2,3,255,2,8,255,3,3,255,3,6,238,3,8,255,4,7,187],\"secondary\":false},{\"width\":5,\"bonus\":45,\"chr\":\"t\",\"pixels\":[1,2,221,1,3,255,1,4,221,1,5,221,1,6,221,1,7,170,2,3,255,2,8,238,3,8,153],\"secondary\":false},{\"width\":6,\"bonus\":70,\"chr\":\"u\",\"pixels\":[0,3,204,0,4,221,0,5,221,0,6,221,0,7,170,1,8,238,2,8,255,3,8,204,4,3,204,4,4,221,4,5,221,4,6,204,4,7,255,4,8,221],\"secondary\":false},{\"width\":6,\"bonus\":50,\"chr\":\"v\",\"pixels\":[0,3,238,1,5,238,1,6,204,2,7,255,2,8,255,3,5,153,3,6,255,3,7,153,4,3,238,4,4,204],\"secondary\":false},{\"width\":10,\"bonus\":95,\"chr\":\"w\",\"pixels\":[1,3,153,1,4,238,1,5,187,2,6,153,2,7,238,2,8,187,3,6,204,3,7,238,3,8,153,4,3,170,4,4,255,5,4,221,5,5,221,6,7,255,6,8,221,7,6,238,7,7,204,8,3,238,8,4,204],\"secondary\":false},{\"width\":6,\"bonus\":55,\"chr\":\"x\",\"pixels\":[0,8,170,1,3,170,1,4,204,1,7,221,2,5,255,2,6,238,3,4,255,3,6,187,3,7,187,4,3,221,4,8,255],\"secondary\":false},{\"width\":6,\"bonus\":65,\"chr\":\"y\",\"pixels\":[0,3,255,0,4,153,0,11,221,1,5,204,1,6,221,1,11,187,2,7,187,2,8,255,2,9,238,3,6,238,3,7,187,4,3,204,4,4,221],\"secondary\":false},{\"width\":6,\"bonus\":70,\"chr\":\"z\",\"pixels\":[0,3,153,0,8,204,1,3,255,1,7,221,1,8,255,2,3,255,2,6,255,2,8,255,3,3,255,3,4,170,3,5,170,3,8,255,4,3,255,4,8,255],\"secondary\":false},{\"width\":8,\"bonus\":85,\"chr\":\"A\",\"pixels\":[0,8,153,1,6,221,1,7,238,2,3,170,2,4,255,2,5,187,2,6,255,3,1,255,3,2,255,3,6,255,4,2,255,4,3,238,4,6,255,5,5,255,5,6,255,6,7,187,6,8,255],\"secondary\":false},{\"width\":7,\"bonus\":125,\"chr\":\"B\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,1,255,1,4,255,1,8,255,2,1,255,2,4,255,2,8,255,3,1,255,3,4,255,3,8,255,4,1,221,4,4,255,4,5,170,4,8,204,5,2,170,5,3,170,5,6,187,5,7,153],\"secondary\":false},{\"width\":9,\"bonus\":80,\"chr\":\"C\",\"pixels\":[0,4,187,0,5,187,1,2,221,1,3,153,1,6,153,1,7,204,2,1,170,2,8,170,3,1,255,3,8,255,4,1,255,4,8,255,5,1,255,5,8,255,6,1,170,6,8,170],\"secondary\":false},{\"width\":8,\"bonus\":100,\"chr\":\"D\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,1,255,1,8,255,2,1,255,2,8,255,3,1,255,3,8,255,4,1,204,4,8,204,5,2,221,5,7,221,6,4,187,6,5,187],\"secondary\":false},{\"width\":6,\"bonus\":95,\"chr\":\"E\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,1,255,1,5,255,1,8,255,2,1,255,2,5,255,2,8,255,3,1,255,3,5,255,3,8,255,4,1,153,4,8,221],\"secondary\":false},{\"width\":6,\"bonus\":70,\"chr\":\"F\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,1,255,1,5,255,2,1,255,2,5,255,3,1,255,3,5,255],\"secondary\":false},{\"width\":9,\"bonus\":105,\"chr\":\"G\",\"pixels\":[0,4,170,0,5,187,1,2,204,1,3,153,1,7,221,2,1,170,2,8,187,3,1,255,3,8,255,4,1,255,4,8,255,5,1,255,5,8,238,6,1,170,6,5,255,6,7,153,6,8,170,7,5,153,7,6,221,7,7,221,7,8,204],\"secondary\":false},{\"width\":8,\"bonus\":105,\"chr\":\"H\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,5,255,2,5,255,3,5,255,4,5,255,5,5,255,6,1,204,6,2,221,6,3,221,6,4,221,6,5,221,6,6,221,6,7,221,6,8,204],\"secondary\":false},{\"width\":4,\"bonus\":60,\"chr\":\"I\",\"pixels\":[0,1,192,0,8,191,1,1,255,1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,2,1,192,2,8,191],\"secondary\":false},{\"width\":6,\"bonus\":70,\"chr\":\"J\",\"pixels\":[0,6,153,0,7,153,1,8,204,2,1,221,2,8,255,3,1,255,3,8,204,4,1,204,4,2,221,4,3,221,4,4,221,4,5,221,4,6,221,4,7,153],\"secondary\":false},{\"width\":7,\"bonus\":85,\"chr\":\"K\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,4,255,2,4,255,3,3,221,3,5,170,3,6,204,4,1,204,4,2,153,4,7,238,4,8,153],\"secondary\":false},{\"width\":6,\"bonus\":60,\"chr\":\"L\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,8,255,2,8,255,3,8,255,4,8,255],\"secondary\":false},{\"width\":9,\"bonus\":130,\"chr\":\"M\",\"pixels\":[0,1,245,0,2,255,0,3,255,0,4,255,0,5,255,0,6,255,0,7,255,0,8,255,1,2,170,1,3,225,2,4,207,2,5,190,3,6,232,4,6,232,5,4,207,5,5,190,6,2,170,6,3,224,7,1,245,7,2,255,7,3,255,7,4,255,7,5,255,7,6,255,7,7,255,7,8,255],\"secondary\":false},{\"width\":8,\"bonus\":110,\"chr\":\"N\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,2,255,2,3,221,3,4,187,3,5,187,4,6,221,5,7,255,6,1,204,6,2,221,6,3,221,6,4,221,6,5,221,6,6,221,6,7,221,6,8,204],\"secondary\":false},{\"width\":10,\"bonus\":110,\"chr\":\"O\",\"pixels\":[0,4,187,0,5,170,1,2,204,1,3,153,1,6,170,1,7,204,2,1,153,2,8,153,3,1,255,3,8,255,4,1,255,4,8,255,5,1,255,5,8,255,6,1,153,6,8,153,7,2,204,7,3,153,7,6,170,7,7,204,8,4,187,8,5,170],\"secondary\":false},{\"width\":7,\"bonus\":85,\"chr\":\"P\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,1,255,1,5,255,2,1,255,2,5,255,3,1,255,3,5,255,4,1,187,4,5,187,5,3,221],\"secondary\":false},{\"width\":9,\"bonus\":100,\"chr\":\"Q\",\"pixels\":[0,4,187,0,5,187,1,2,221,1,6,153,1,7,221,2,1,187,2,8,170,3,1,255,3,8,255,4,1,255,4,8,255,5,1,238,5,8,238,6,2,204,6,7,255,7,3,255,7,4,204,7,5,221,7,6,255,7,8,204],\"secondary\":false},{\"width\":7,\"bonus\":100,\"chr\":\"R\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,1,255,1,5,255,2,1,255,2,5,255,3,1,255,3,5,255,3,6,187,4,2,238,4,3,204,4,4,255,4,7,238,4,8,170],\"secondary\":false},{\"width\":6,\"bonus\":70,\"chr\":\"S\",\"pixels\":[0,2,153,0,3,170,1,1,204,1,4,221,1,8,238,2,1,255,2,4,170,2,8,255,3,1,255,3,5,255,3,8,255,4,1,170,4,6,221,4,7,238],\"secondary\":false},{\"width\":8,\"bonus\":65,\"chr\":\"T\",\"pixels\":[0,1,255,1,1,255,2,1,255,3,1,255,3,2,221,3,3,221,3,4,221,3,5,221,3,6,221,3,7,221,3,8,204,4,1,255,5,1,255],\"secondary\":false},{\"width\":8,\"bonus\":85,\"chr\":\"U\",\"pixels\":[0,1,204,0,2,221,0,3,221,0,4,221,0,5,221,0,6,187,1,7,170,2,8,255,3,8,255,4,8,221,5,1,204,5,2,221,5,3,221,5,4,221,5,5,221,5,6,255,5,7,238],\"secondary\":false},{\"width\":7,\"bonus\":70,\"chr\":\"V\",\"pixels\":[0,1,255,0,2,187,1,3,153,1,4,255,1,5,153,2,6,187,2,7,238,3,7,255,3,8,204,4,4,204,4,5,238,5,1,170,5,2,255,5,3,153],\"secondary\":false},{\"width\":10,\"bonus\":125,\"chr\":\"W\",\"pixels\":[0,1,255,0,2,221,1,4,187,1,5,255,1,6,204,2,7,255,2,8,255,3,3,153,3,4,238,3,5,221,4,1,255,4,2,255,4,3,153,5,3,170,5,4,238,5,5,204,6,7,255,6,8,255,7,4,153,7,5,238,7,6,238,7,7,153,8,1,238,8,2,238,8,3,153],\"secondary\":false},{\"width\":7,\"bonus\":75,\"chr\":\"X\",\"pixels\":[0,8,170,1,1,187,1,2,204,1,7,238,2,3,221,2,4,153,2,5,255,2,6,153,3,4,255,3,5,238,4,2,238,4,6,204,4,7,170,5,1,204,5,8,255],\"secondary\":false},{\"width\":7,\"bonus\":55,\"chr\":\"Y\",\"pixels\":[0,1,170,1,2,238,2,3,153,2,4,255,3,4,221,3,5,204,3,6,221,3,7,221,3,8,204,4,3,255,5,1,238],\"secondary\":false},{\"width\":7,\"bonus\":75,\"chr\":\"Z\",\"pixels\":[0,8,187,1,1,255,1,7,221,1,8,255,2,1,255,2,5,204,2,8,255,3,1,255,3,4,204,3,8,255,4,1,255,4,2,221,4,8,255,5,1,187,5,8,153],\"secondary\":false},{\"width\":7,\"bonus\":90,\"chr\":\"0\",\"pixels\":[0,2,153,0,3,221,0,4,255,0,5,255,0,6,238,0,7,170,1,1,187,1,8,204,2,1,187,2,8,187,3,1,221,3,8,204,4,2,170,4,3,255,4,4,187,4,5,187,4,6,238,4,7,170],\"secondary\":false},{\"width\":7,\"bonus\":50,\"chr\":\"1\",\"pixels\":[1,8,187,2,1,204,2,2,204,2,3,187,2,4,187,2,5,187,2,6,187,2,7,187,2,8,238,3,8,204],\"secondary\":false},{\"width\":7,\"bonus\":55,\"chr\":\"2\",\"pixels\":[1,8,255,2,1,187,2,6,153,2,8,187,3,1,204,3,5,153,3,8,187,4,1,187,4,2,153,4,4,204,4,8,187],\"secondary\":false},{\"width\":7,\"bonus\":50,\"chr\":\"3\",\"pixels\":[0,8,204,1,1,187,1,8,187,2,1,187,2,4,187,2,8,204,3,2,221,3,3,204,3,5,204,3,7,170],\"secondary\":false},{\"width\":7,\"bonus\":80,\"chr\":\"4\",\"pixels\":[0,6,238,1,4,187,1,6,187,2,3,170,2,6,187,3,1,187,3,2,153,3,6,204,4,1,187,4,2,187,4,3,187,4,4,187,4,5,187,4,6,238,4,7,187,4,8,187],\"secondary\":false},{\"width\":7,\"bonus\":70,\"chr\":\"5\",\"pixels\":[1,1,238,1,2,187,1,3,187,1,4,187,1,8,204,2,1,187,2,4,187,2,8,187,3,1,187,3,4,204,3,8,204,4,5,238,4,6,187,4,7,221],\"secondary\":false},{\"width\":7,\"bonus\":80,\"chr\":\"6\",\"pixels\":[0,3,170,0,4,255,0,5,255,0,6,238,0,7,153,1,2,187,1,8,187,2,1,204,2,4,187,2,8,187,3,1,187,3,4,204,3,8,187,4,5,221,4,6,255,4,7,187],\"secondary\":false},{\"width\":7,\"bonus\":55,\"chr\":\"7\",\"pixels\":[0,1,187,1,1,187,1,8,204,2,1,187,2,6,238,2,7,153,3,1,187,3,3,153,3,4,221,4,1,255,4,2,187],\"secondary\":false},{\"width\":7,\"bonus\":95,\"chr\":\"8\",\"pixels\":[1,2,238,1,3,221,1,6,204,1,7,221,2,1,204,2,4,204,2,5,170,2,8,221,3,1,187,3,4,170,3,8,187,4,1,221,4,4,170,4,5,204,4,8,187,5,2,170,5,3,153,5,6,238,5,7,238],\"secondary\":false},{\"width\":7,\"bonus\":85,\"chr\":\"9\",\"pixels\":[1,2,221,1,3,187,1,4,238,1,8,153,2,1,204,2,5,221,2,8,187,3,1,187,3,5,187,3,8,204,4,1,187,4,7,170,5,2,153,5,3,238,5,4,255,5,5,255,5,6,187],\"secondary\":false},{\"width\":8,\"bonus\":75,\"chr\":\"%\",\"pixels\":[0,3,255,0,8,255,1,2,255,1,4,255,1,7,255,2,3,255,2,6,255,3,5,255,4,4,255,4,7,255,5,3,255,5,6,255,5,8,255,6,2,255,6,7,255],\"secondary\":false},{\"width\":4,\"bonus\":40,\"chr\":\"/\",\"pixels\":[0,7,153,0,8,238,0,9,221,1,4,187,1,5,238,1,6,170,2,1,221,2,2,221],\"secondary\":false},{\"width\":7,\"bonus\":60,\"chr\":\"+\",\"pixels\":[0,5,221,1,5,255,2,5,255,3,2,153,3,3,221,3,4,221,3,5,255,3,6,221,3,7,221,3,8,204,4,5,255,5,5,255],\"secondary\":false},{\"width\":5,\"bonus\":40,\"chr\":\"?\",\"pixels\":[0,1,170,1,1,255,1,6,221,1,8,255,2,1,255,2,5,170,3,2,255,3,3,221],\"secondary\":false},{\"width\":2,\"bonus\":35,\"chr\":\"!\",\"pixels\":[0,1,170,0,2,187,0,3,187,0,4,187,0,5,187,0,6,170,0,8,255],\"secondary\":false},{\"width\":8,\"bonus\":130,\"chr\":\"@\",\"pixels\":[0,4,255,0,5,255,0,6,221,0,7,255,0,8,187,1,3,221,1,9,238,2,2,221,2,5,255,2,6,238,2,7,255,2,10,153,3,2,255,3,4,255,3,8,204,3,10,187,4,2,238,4,4,255,4,8,255,5,3,238,5,4,255,5,5,221,5,6,221,5,7,221,5,8,238,6,8,221],\"secondary\":false},{\"width\":8,\"bonus\":120,\"chr\":\"#\",\"pixels\":[0,6,255,1,3,255,1,6,255,1,7,170,1,8,238,2,1,170,2,2,238,2,3,255,2,4,221,2,5,170,2,6,255,3,3,255,3,6,255,4,3,255,4,4,153,4,5,204,4,6,255,4,7,238,4,8,187,5,1,255,5,2,187,5,3,255,5,6,255,6,3,255],\"secondary\":false},{\"width\":6,\"bonus\":70,\"chr\":\"$\",\"pixels\":[0,2,153,0,3,170,1,1,204,1,4,221,1,8,238,2,0,204,2,1,238,2,8,238,2,9,204,3,1,238,3,5,238,3,8,255,4,6,170,4,7,170],\"secondary\":false},{\"width\":6,\"bonus\":40,\"chr\":\"^\",\"pixels\":[0,4,153,0,5,238,1,2,204,1,3,221,2,1,221,2,2,221,3,3,187,3,4,221],\"secondary\":false},{\"width\":6,\"bonus\":20,\"chr\":\"~\",\"pixels\":[1,5,255,2,5,221,3,6,221,4,5,204],\"secondary\":false},{\"width\":7,\"bonus\":95,\"chr\":\"&\",\"pixels\":[0,6,187,1,2,238,1,3,255,1,4,187,1,5,187,1,8,187,2,1,255,2,4,255,2,8,255,3,1,255,3,4,255,3,8,255,4,4,255,4,8,187,5,3,204,5,4,255,5,5,221,5,6,187,6,4,153],\"secondary\":false},{\"width\":6,\"bonus\":45,\"chr\":\"*\",\"pixels\":[0,2,170,1,2,170,1,3,204,1,4,255,2,1,204,2,2,238,2,3,255,3,2,170,3,4,153],\"secondary\":false},{\"width\":4,\"bonus\":55,\"chr\":\"(\",\"pixels\":[0,3,173,0,4,239,0,5,253,0,6,230,0,7,171,1,1,194,1,2,204,1,8,204,1,9,191,2,0,210,2,10,216],\"secondary\":false},{\"width\":4,\"bonus\":55,\"chr\":\")\",\"pixels\":[1,0,211,1,10,216,2,1,194,2,2,203,2,8,203,2,9,191,3,3,174,3,4,240,3,5,253,3,6,229,3,7,171],\"secondary\":false},{\"width\":7,\"bonus\":30,\"chr\":\"_\",\"pixels\":[0,9,153,1,9,255,2,9,255,3,9,255,4,9,255,5,9,255],\"secondary\":false},{\"width\":4,\"bonus\":15,\"chr\":\"-\",\"pixels\":[0,5,255,1,5,255,2,5,255],\"secondary\":true},{\"width\":8,\"bonus\":50,\"chr\":\"=\",\"pixels\":[0,4,255,0,6,255,1,4,255,1,6,255,2,4,255,2,6,255,3,4,255,3,6,255,4,4,255,4,6,255],\"secondary\":false},{\"width\":3,\"bonus\":55,\"chr\":\"[\",\"pixels\":[0,0,204,0,1,221,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,204,1,0,238,1,8,238],\"secondary\":false},{\"width\":3,\"bonus\":55,\"chr\":\"]\",\"pixels\":[0,0,238,0,8,238,1,0,204,1,1,221,1,2,221,1,3,221,1,4,221,1,5,221,1,6,221,1,7,221,1,8,204],\"secondary\":false},{\"width\":5,\"bonus\":50,\"chr\":\"{\",\"pixels\":[0,5,153,1,2,170,1,3,221,1,4,221,1,5,204,1,6,255,1,7,221,1,8,170,2,1,238,2,9,238],\"secondary\":false},{\"width\":5,\"bonus\":50,\"chr\":\"}\",\"pixels\":[1,1,238,1,9,238,2,2,170,2,3,221,2,4,221,2,5,204,2,6,255,2,7,221,2,8,170,3,5,153],\"secondary\":false},{\"width\":3,\"bonus\":10,\"chr\":\":\",\"pixels\":[1,3,255,1,7,255],\"secondary\":true},{\"width\":3,\"bonus\":20,\"chr\":\";\",\"pixels\":[0,9,201,1,3,255,1,7,241,1,8,255],\"secondary\":true},{\"width\":3,\"bonus\":20,\"chr\":\"\\\\\"\",\"pixels\":[0,1,255,0,2,255,2,1,255,2,2,255],\"secondary\":true},{\"width\":2,\"bonus\":10,\"chr\":\"\\'\",\"pixels\":[0,1,255,0,2,177],\"secondary\":true},{\"width\":7,\"bonus\":40,\"chr\":\"<\",\"pixels\":[0,5,204,1,5,255,2,4,238,2,6,238,3,4,170,3,6,170,4,3,221,4,7,221],\"secondary\":false},{\"width\":7,\"bonus\":45,\"chr\":\">\",\"pixels\":[0,3,204,0,7,204,1,7,187,2,4,238,2,6,255,3,4,170,3,5,153,3,6,204,4,5,255],\"secondary\":false},{\"width\":5,\"bonus\":35,\"chr\":\"\\\\\\\\\",\"pixels\":[1,1,153,1,2,255,1,3,204,2,5,255,2,6,204,3,8,255,3,9,204],\"secondary\":false},{\"width\":2,\"bonus\":5,\"chr\":\".\",\"pixels\":[0,8,255],\"secondary\":true},{\"width\":3,\"bonus\":15,\"chr\":\",\",\"pixels\":[0,9,205,1,7,205,1,8,255],\"secondary\":true},{\"width\":3,\"bonus\":50,\"chr\":\"|\",\"pixels\":[0,1,221,0,2,221,0,3,221,0,4,221,0,5,221,0,6,221,0,7,221,0,8,221,0,9,221,0,10,204],\"secondary\":false}],\"width\":10,\"spacewidth\":3,\"shadow\":false,\"height\":12,\"basey\":8}');\n\n/***/ }),\n\n/***/ \"./src/fonts/aa_8px_mono_allcaps.fontmeta.json\":\n/*!*****************************************************!*\\\n  !*** ./src/fonts/aa_8px_mono_allcaps.fontmeta.json ***!\n  \\*****************************************************/\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = JSON.parse('{\"chars\":[{\"width\":3,\"bonus\":35,\"chr\":\"!\",\"pixels\":[0,2,170,1,1,221,1,2,255,1,3,221,1,4,187,1,5,170,1,9,204],\"secondary\":false},{\"width\":6,\"bonus\":20,\"chr\":\"\\\\\"\",\"pixels\":[1,2,221,1,3,255,3,2,221,3,3,255],\"secondary\":true},{\"width\":8,\"bonus\":125,\"chr\":\"#\",\"pixels\":[0,7,187,1,4,255,1,7,255,1,10,170,2,3,170,2,4,255,2,5,255,2,6,221,2,7,255,2,8,170,3,4,255,3,7,255,4,4,255,4,5,153,4,7,255,4,8,238,4,9,255,4,10,204,5,2,238,5,3,204,5,4,255,5,5,153,5,7,255,6,4,255,6,7,153],\"secondary\":false},{\"width\":7,\"bonus\":115,\"chr\":\"$\",\"pixels\":[0,8,187,1,2,255,1,3,255,1,4,221,1,9,238,2,1,187,2,4,255,2,5,204,2,8,170,2,9,255,2,10,221,3,0,187,3,1,238,3,2,187,3,3,170,3,4,153,3,5,255,3,6,221,3,9,221,4,1,221,4,6,255,4,7,255,4,8,255],\"secondary\":false},{\"width\":12,\"bonus\":135,\"chr\":\"%\",\"pixels\":[1,2,255,1,3,255,1,4,221,2,5,153,3,1,153,3,9,187,4,1,170,4,2,255,4,3,255,4,4,221,4,7,238,4,8,204,5,4,153,5,5,238,5,6,153,6,1,153,6,2,187,6,3,204,6,6,221,6,7,255,6,8,255,7,1,153,7,9,187,8,9,187,9,6,221,9,7,255,9,8,255],\"secondary\":false},{\"width\":11,\"bonus\":190,\"chr\":\"&\",\"pixels\":[0,6,187,0,7,255,0,8,170,1,2,204,1,3,255,1,4,153,1,5,238,1,6,170,1,7,187,1,8,255,1,9,153,2,1,170,2,2,153,2,3,153,2,4,255,2,5,187,2,9,238,3,1,221,3,5,238,3,6,170,3,9,255,4,1,238,4,6,238,4,7,153,4,9,204,5,1,187,5,2,187,5,7,255,5,8,204,6,7,170,6,8,255,7,5,238,7,6,255,7,7,170,7,8,170,7,9,221,8,9,238,9,9,153],\"secondary\":false},{\"width\":4,\"bonus\":10,\"chr\":\"\\'\",\"pixels\":[1,2,204,1,3,255],\"secondary\":true},{\"width\":4,\"bonus\":50,\"chr\":\"(\",\"pixels\":[0,3,170,0,4,238,0,5,255,0,6,221,0,7,153,1,1,153,1,2,221,1,3,153,1,7,170,1,8,238],\"secondary\":false},{\"width\":4,\"bonus\":40,\"chr\":\")\",\"pixels\":[1,1,170,1,2,221,1,7,170,1,8,238,2,3,187,2,4,238,2,5,255,2,6,204],\"secondary\":false},{\"width\":5,\"bonus\":25,\"chr\":\"*\",\"pixels\":[1,1,170,1,2,221,1,3,153,2,2,255,2,3,204],\"secondary\":false},{\"width\":8,\"bonus\":45,\"chr\":\"+\",\"pixels\":[1,6,255,2,6,255,3,4,255,3,5,255,3,6,255,3,7,255,3,8,255,4,6,255,5,6,255],\"secondary\":false},{\"width\":3,\"bonus\":10,\"chr\":\",\",\"pixels\":[1,8,187,1,9,221],\"secondary\":true},{\"width\":5,\"bonus\":20,\"chr\":\"-\",\"pixels\":[0,7,204,1,7,255,2,7,238,3,7,187],\"secondary\":true},{\"width\":3,\"bonus\":5,\"chr\":\".\",\"pixels\":[0,9,204],\"secondary\":true},{\"width\":7,\"bonus\":40,\"chr\":\"/\",\"pixels\":[0,9,221,1,7,187,1,8,187,2,6,221,3,4,221,4,2,170,4,3,187,5,1,187],\"secondary\":false},{\"width\":8,\"bonus\":105,\"chr\":\"0\",\"pixels\":[0,6,153,1,3,221,1,4,255,1,5,255,1,6,255,1,7,255,1,8,238,2,2,187,2,8,153,2,9,204,3,2,187,3,9,204,4,2,221,4,9,187,5,3,238,5,4,255,5,5,255,5,6,255,5,7,255,5,8,221,6,5,153],\"secondary\":false},{\"width\":6,\"bonus\":85,\"chr\":\"1\",\"pixels\":[1,3,170,1,9,153,2,3,255,2,4,255,2,5,255,2,6,255,2,7,255,2,8,255,2,9,255,3,2,153,3,3,153,3,4,153,3,5,153,3,6,153,3,7,153,3,8,153,3,9,221],\"secondary\":false},{\"width\":8,\"bonus\":100,\"chr\":\"2\",\"pixels\":[1,2,187,1,3,153,1,9,255,2,2,187,2,8,221,2,9,255,3,2,221,3,7,221,3,9,255,4,2,187,4,3,238,4,4,187,4,5,238,4,6,238,4,9,255,5,3,221,5,4,255,5,5,170,5,8,153,5,9,238],\"secondary\":false},{\"width\":7,\"bonus\":100,\"chr\":\"3\",\"pixels\":[0,2,170,0,8,170,0,9,204,1,2,221,1,9,238,2,2,238,2,5,221,2,9,221,3,2,221,3,3,187,3,4,204,3,5,255,3,6,153,3,9,187,4,3,238,4,4,153,4,6,255,4,7,255,4,8,255,5,7,153],\"secondary\":false},{\"width\":8,\"bonus\":85,\"chr\":\"4\",\"pixels\":[0,7,153,1,6,187,1,7,255,2,5,187,2,7,255,3,4,187,3,7,255,4,3,255,4,4,255,4,5,255,4,6,255,4,7,255,4,8,255,4,9,255,5,7,255,5,9,204,6,7,221],\"secondary\":false},{\"width\":7,\"bonus\":95,\"chr\":\"5\",\"pixels\":[0,8,153,0,9,221,1,2,255,1,3,187,1,4,238,1,9,221,2,2,255,2,4,187,2,5,170,2,9,204,3,2,255,3,5,255,3,9,170,4,2,255,4,5,204,4,6,255,4,7,255,4,8,238,5,7,153],\"secondary\":false},{\"width\":8,\"bonus\":105,\"chr\":\"6\",\"pixels\":[0,7,153,1,4,153,1,5,255,1,6,255,1,7,255,1,8,255,2,4,204,2,9,221,3,3,170,3,5,153,3,9,204,4,2,153,4,5,187,4,9,204,5,6,238,5,7,170,5,8,187,5,9,153,6,6,187,6,7,255,6,8,170],\"secondary\":false},{\"width\":7,\"bonus\":75,\"chr\":\"7\",\"pixels\":[0,2,204,0,3,187,1,2,255,1,9,187,2,2,255,2,7,238,2,8,255,2,9,170,3,2,255,3,5,221,3,6,204,4,2,255,4,3,204,4,4,170,5,2,204],\"secondary\":false},{\"width\":8,\"bonus\":120,\"chr\":\"8\",\"pixels\":[1,3,221,1,4,204,1,6,187,1,7,255,1,8,255,2,2,187,2,4,204,2,5,221,2,6,153,2,9,221,3,2,153,3,5,255,3,9,187,4,2,187,4,5,238,4,6,204,4,9,204,5,2,170,5,3,255,5,4,238,5,6,238,5,7,255,5,8,255,6,7,153],\"secondary\":false},{\"width\":8,\"bonus\":95,\"chr\":\"9\",\"pixels\":[0,4,153,1,3,255,1,4,255,1,5,255,2,2,187,2,6,153,3,2,204,3,6,153,3,9,153,4,2,221,4,7,153,4,8,204,5,3,255,5,4,255,5,5,255,5,6,255,5,7,187,6,4,153,6,5,153],\"secondary\":false},{\"width\":3,\"bonus\":10,\"chr\":\":\",\"pixels\":[0,3,204,0,7,204],\"secondary\":true},{\"width\":3,\"bonus\":20,\"chr\":\";\",\"pixels\":[0,2,204,0,6,153,0,7,187,0,8,153],\"secondary\":true},{\"width\":7,\"bonus\":55,\"chr\":\"<\",\"pixels\":[0,6,187,0,7,153,1,6,221,1,7,238,2,5,153,3,5,238,3,8,238,4,5,153,4,8,187,5,4,187,5,9,153],\"secondary\":false},{\"width\":7,\"bonus\":60,\"chr\":\"=\",\"pixels\":[0,5,255,0,8,255,1,5,255,1,8,255,2,5,255,2,8,255,3,5,255,3,8,255,4,5,255,4,8,255,5,5,221,5,8,221],\"secondary\":false},{\"width\":7,\"bonus\":50,\"chr\":\">\",\"pixels\":[0,4,204,0,9,170,1,5,170,1,8,187,2,5,238,2,8,221,3,7,153,4,6,238,4,7,238,5,6,153],\"secondary\":false},{\"width\":6,\"bonus\":65,\"chr\":\"?\",\"pixels\":[0,2,153,0,3,187,1,2,221,1,7,221,2,2,238,2,6,238,2,10,204,3,2,204,3,3,221,3,4,204,3,5,255,4,3,238,4,4,221],\"secondary\":false},{\"width\":11,\"bonus\":180,\"chr\":\"@\",\"pixels\":[0,4,187,0,5,255,0,6,255,0,7,238,1,3,170,1,8,204,2,5,187,2,6,238,2,7,187,2,9,204,3,4,204,3,5,153,3,6,153,3,7,204,3,9,204,4,3,153,4,6,153,4,9,187,5,0,153,5,3,221,5,4,170,5,5,238,5,6,255,5,7,187,5,9,170,6,3,221,6,4,153,6,7,238,7,1,153,7,7,170,8,1,170,8,2,153,8,6,170,9,3,187,9,4,221,9,5,170],\"secondary\":false},{\"width\":9,\"bonus\":110,\"chr\":\"A\",\"pixels\":[1,9,238,2,6,153,2,7,255,2,8,170,2,9,170,3,4,187,3,5,238,3,7,221,4,2,187,4,3,255,4,4,238,4,7,221,5,4,221,5,5,255,5,6,238,5,7,238,6,6,187,6,7,255,6,8,255,6,9,187,7,8,170,7,9,255],\"secondary\":false},{\"width\":7,\"bonus\":150,\"chr\":\"B\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,153,2,9,255,3,2,221,3,5,221,3,9,204,4,2,187,4,3,255,4,4,255,4,5,170,4,6,255,4,7,170,4,8,187,4,9,187,5,6,153,5,7,255,5,8,204],\"secondary\":false},{\"width\":8,\"bonus\":120,\"chr\":\"C\",\"pixels\":[0,4,170,0,5,238,0,6,238,0,7,170,1,3,238,1,4,255,1,5,221,1,6,238,1,7,255,1,8,238,2,2,153,2,3,153,2,8,221,2,9,153,3,2,221,3,9,221,4,2,221,4,9,221,5,2,221,5,9,221,6,2,187,6,3,187,6,8,153,6,9,170],\"secondary\":false},{\"width\":10,\"bonus\":165,\"chr\":\"D\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,153,2,6,153,2,7,153,2,8,170,2,9,255,3,2,221,3,9,221,4,2,238,4,9,221,5,2,221,5,9,204,6,2,153,6,3,238,6,8,187,7,3,221,7,4,255,7,5,255,7,6,255,7,7,255,7,8,170,8,5,187,8,6,170],\"secondary\":false},{\"width\":7,\"bonus\":110,\"chr\":\"E\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,170,2,9,239,3,2,214,3,5,221,3,9,212,4,2,212,4,5,226,4,9,238],\"secondary\":false},{\"width\":7,\"bonus\":100,\"chr\":\"F\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,153,2,9,221,3,2,221,3,5,221,4,2,238,4,5,238],\"secondary\":false},{\"width\":9,\"bonus\":135,\"chr\":\"G\",\"pixels\":[0,4,170,0,5,238,0,6,255,0,7,187,1,3,238,1,4,238,1,5,187,1,6,204,1,7,255,1,8,238,2,2,153,2,8,221,2,9,153,3,2,221,3,9,221,4,2,221,4,9,238,5,2,238,5,9,221,6,2,204,6,6,255,6,7,255,6,8,255,6,9,204,7,6,204,7,7,153,7,8,153],\"secondary\":false},{\"width\":10,\"bonus\":175,\"chr\":\"H\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,153,2,9,221,3,5,221,4,5,221,5,5,221,6,2,204,6,3,153,6,4,153,6,5,238,6,6,153,6,7,153,6,8,153,6,9,221,7,2,255,7,3,255,7,4,255,7,5,255,7,6,255,7,7,255,7,8,255,7,9,255],\"secondary\":false},{\"width\":5,\"bonus\":80,\"chr\":\"I\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,153,2,6,153,2,7,153,2,8,153,2,9,221],\"secondary\":false},{\"width\":6,\"bonus\":90,\"chr\":\"J\",\"pixels\":[2,2,255,2,3,255,2,4,255,2,5,255,2,6,255,2,7,255,2,8,255,2,9,255,2,10,255,2,11,187,3,2,204,3,3,153,3,4,153,3,5,153,3,6,153,3,7,153,3,8,153,3,9,153],\"secondary\":false},{\"width\":10,\"bonus\":140,\"chr\":\"K\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,238,2,6,187,2,7,153,2,8,153,2,9,204,3,5,238,3,6,238,4,6,170,4,7,255,5,2,238,5,3,153,5,7,170,5,8,255,6,2,204,6,8,170,6,9,238,7,9,204],\"secondary\":false},{\"width\":7,\"bonus\":95,\"chr\":\"L\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,153,2,6,153,2,7,153,2,8,170,2,9,255,3,9,221,4,9,221,5,9,204],\"secondary\":false},{\"width\":12,\"bonus\":150,\"chr\":\"M\",\"pixels\":[1,6,170,1,7,221,1,8,255,1,9,255,2,2,170,2,3,255,2,4,255,2,5,221,3,4,204,3,5,255,3,6,238,4,6,204,4,7,255,4,8,221,5,7,187,5,8,255,6,6,221,7,4,238,7,5,204,8,2,187,8,3,255,8,4,255,8,5,255,8,6,255,8,7,238,8,8,204,8,9,187,9,7,170,9,8,204,9,9,255],\"secondary\":false},{\"width\":10,\"bonus\":130,\"chr\":\"N\",\"pixels\":[1,2,204,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,3,221,2,4,238,3,4,221,3,5,238,4,5,238,4,6,238,5,6,238,5,7,238,6,7,238,6,8,238,7,2,255,7,3,255,7,4,255,7,5,255,7,6,255,7,7,255,7,8,255,7,9,204],\"secondary\":false},{\"width\":10,\"bonus\":155,\"chr\":\"O\",\"pixels\":[0,4,170,0,5,238,0,6,238,0,7,170,1,3,238,1,4,238,1,5,187,1,6,204,1,7,255,1,8,238,2,2,170,2,8,204,2,9,170,3,2,221,3,9,238,4,2,221,4,9,221,5,2,238,5,9,204,6,2,153,6,3,238,6,8,170,7,3,238,7,4,255,7,5,255,7,6,255,7,7,255,7,8,187,8,4,153,8,5,221,8,6,204],\"secondary\":false},{\"width\":8,\"bonus\":130,\"chr\":\"P\",\"pixels\":[1,1,255,1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,1,238,2,2,153,2,3,153,2,4,153,2,5,170,2,6,153,2,7,153,2,8,153,2,9,221,3,1,204,4,1,238,4,5,187,5,1,153,5,2,255,5,3,255,5,4,255,6,3,153],\"secondary\":false},{\"width\":10,\"bonus\":180,\"chr\":\"Q\",\"pixels\":[0,4,153,0,5,238,0,6,238,0,7,170,1,3,221,1,4,255,1,5,221,1,6,238,1,7,255,1,8,238,2,2,153,2,8,221,2,9,170,3,2,221,3,9,238,4,2,221,4,9,221,5,2,238,5,9,204,6,2,153,6,3,221,6,8,153,6,9,238,7,3,221,7,4,255,7,5,255,7,6,255,7,7,255,7,8,170,7,9,187,7,10,153,8,4,153,8,5,204,8,6,204,8,10,255,9,10,204],\"secondary\":false},{\"width\":7,\"bonus\":140,\"chr\":\"R\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,153,2,6,238,2,7,153,2,8,153,2,9,221,3,2,238,3,6,238,4,2,204,4,3,204,4,4,153,4,5,204,4,6,204,4,7,255,5,3,221,5,4,221,5,8,255,6,9,238],\"secondary\":false},{\"width\":6,\"bonus\":115,\"chr\":\"S\",\"pixels\":[0,3,221,0,4,238,0,8,187,0,9,187,1,2,187,1,4,204,1,5,255,1,9,238,2,2,187,2,5,255,2,6,187,2,9,221,3,2,204,3,5,153,3,6,255,3,7,170,3,8,153,3,9,170,4,2,204,4,3,153,4,6,170,4,7,255,4,8,187],\"secondary\":false},{\"width\":9,\"bonus\":105,\"chr\":\"T\",\"pixels\":[1,2,238,2,2,221,3,2,238,3,3,153,3,4,153,3,5,153,3,6,153,3,7,153,3,8,153,3,9,221,4,2,255,4,3,255,4,4,255,4,5,255,4,6,255,4,7,255,4,8,255,4,9,255,5,2,221,6,2,221,7,2,255],\"secondary\":false},{\"width\":10,\"bonus\":120,\"chr\":\"U\",\"pixels\":[1,2,204,1,3,153,1,4,153,1,5,153,1,6,153,2,2,255,2,3,255,2,4,255,2,5,255,2,6,255,2,7,255,2,8,255,3,9,221,4,9,238,5,9,221,6,9,170,7,2,255,7,3,255,7,4,255,7,5,255,7,6,255,7,7,255,7,8,204,8,2,153],\"secondary\":false},{\"width\":10,\"bonus\":90,\"chr\":\"V\",\"pixels\":[1,2,255,1,3,153,2,2,238,2,3,255,2,4,255,2,5,187,3,5,238,3,6,255,3,7,221,4,7,221,4,8,255,4,9,187,5,6,187,5,7,204,6,4,221,6,5,187,7,2,255,7,3,170],\"secondary\":false},{\"width\":13,\"bonus\":165,\"chr\":\"W\",\"pixels\":[1,2,255,1,3,221,2,2,204,2,3,221,2,4,255,2,5,255,2,6,221,3,6,187,3,7,255,3,8,255,3,9,187,4,6,153,4,7,221,5,4,221,5,5,187,6,2,187,6,3,255,6,4,255,6,5,153,7,4,170,7,5,255,7,6,255,7,7,187,8,7,255,8,8,255,8,9,187,9,5,153,9,6,221,9,7,170,10,2,221,10,3,238,10,4,187,11,2,187],\"secondary\":false},{\"width\":9,\"bonus\":115,\"chr\":\"X\",\"pixels\":[1,2,221,1,9,238,2,2,255,2,3,255,2,7,153,2,8,221,2,9,153,3,3,153,3,4,255,3,5,221,3,6,204,4,5,255,4,6,255,4,7,170,5,3,187,5,4,170,5,7,255,5,8,255,5,9,153,6,2,255,6,8,204,6,9,255,7,9,170],\"secondary\":false},{\"width\":8,\"bonus\":95,\"chr\":\"Y\",\"pixels\":[0,2,187,1,2,255,1,3,221,2,3,221,2,4,255,2,5,153,3,5,238,3,6,255,3,7,255,3,8,255,3,9,255,4,5,204,4,6,170,4,7,153,4,8,153,4,9,204,5,3,187,5,4,187,6,2,238],\"secondary\":false},{\"width\":8,\"bonus\":105,\"chr\":\"Z\",\"pixels\":[0,9,204,1,2,238,1,7,153,1,8,255,1,9,255,2,2,221,2,6,221,2,7,255,2,9,221,3,2,221,3,4,153,3,5,255,3,6,221,3,9,221,4,2,238,4,3,221,4,4,255,4,9,221,5,2,255,5,3,204,5,9,255],\"secondary\":false},{\"width\":4,\"bonus\":65,\"chr\":\"[\",\"pixels\":[0,0,255,0,1,255,0,2,255,0,3,255,0,4,255,0,5,255,0,6,255,0,7,255,0,8,255,0,9,255,0,10,187,1,0,187,1,10,170],\"secondary\":false},{\"width\":8,\"bonus\":40,\"chr\":\"\\\\\\\\\",\"pixels\":[1,1,170,1,2,187,2,3,221,3,5,221,4,6,187,4,7,187,5,8,221,6,9,153],\"secondary\":false},{\"width\":5,\"bonus\":65,\"chr\":\"]\",\"pixels\":[1,0,153,1,10,153,2,0,255,2,1,255,2,2,255,2,3,255,2,4,255,2,5,255,2,6,255,2,7,255,2,8,255,2,9,255,2,10,187],\"secondary\":false},{\"width\":7,\"bonus\":40,\"chr\":\"^\",\"pixels\":[0,5,204,1,3,238,1,4,170,2,1,238,3,1,221,3,2,204,4,3,187,4,4,238],\"secondary\":false},{\"width\":7,\"bonus\":30,\"chr\":\"_\",\"pixels\":[0,10,221,1,10,221,2,10,221,3,10,221,4,10,221,5,10,221],\"secondary\":false},{\"width\":9,\"bonus\":110,\"chr\":\"a\",\"pixels\":[1,9,238,2,6,153,2,7,255,2,8,170,2,9,170,3,4,187,3,5,238,3,7,221,4,2,187,4,3,255,4,4,238,4,7,221,5,4,221,5,5,255,5,6,238,5,7,238,6,6,187,6,7,255,6,8,255,6,9,187,7,8,170,7,9,255],\"secondary\":false},{\"width\":7,\"bonus\":150,\"chr\":\"b\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,153,2,9,255,3,2,221,3,5,221,3,9,204,4,2,187,4,3,255,4,4,255,4,5,170,4,6,255,4,7,170,4,8,187,4,9,187,5,6,153,5,7,255,5,8,204],\"secondary\":false},{\"width\":8,\"bonus\":120,\"chr\":\"c\",\"pixels\":[0,4,170,0,5,238,0,6,238,0,7,170,1,3,238,1,4,255,1,5,221,1,6,238,1,7,255,1,8,238,2,2,153,2,3,153,2,8,221,2,9,153,3,2,221,3,9,221,4,2,221,4,9,221,5,2,221,5,9,221,6,2,187,6,3,187,6,8,153,6,9,170],\"secondary\":false},{\"width\":10,\"bonus\":165,\"chr\":\"d\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,153,2,6,153,2,7,153,2,8,170,2,9,255,3,2,221,3,9,221,4,2,238,4,9,221,5,2,221,5,9,204,6,2,153,6,3,238,6,8,187,7,3,221,7,4,255,7,5,255,7,6,255,7,7,255,7,8,170,8,5,187,8,6,170],\"secondary\":false},{\"width\":7,\"bonus\":110,\"chr\":\"e\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,170,2,9,255,3,2,221,3,5,221,3,9,221,4,2,238,4,5,238,4,9,238],\"secondary\":false},{\"width\":7,\"bonus\":100,\"chr\":\"f\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,153,2,9,221,3,2,221,3,5,221,4,2,238,4,5,238],\"secondary\":false},{\"width\":10,\"bonus\":135,\"chr\":\"g\",\"pixels\":[0,4,170,0,5,238,0,6,255,0,7,187,1,3,238,1,4,238,1,5,187,1,6,204,1,7,255,1,8,238,2,2,153,2,8,221,2,9,153,3,2,221,3,9,221,4,2,221,4,9,238,5,2,238,5,9,221,6,2,204,6,6,255,6,7,255,6,8,255,6,9,204,7,6,204,7,7,153,7,8,153],\"secondary\":false},{\"width\":10,\"bonus\":175,\"chr\":\"h\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,238,2,6,153,2,7,153,2,8,153,2,9,221,3,5,221,4,5,221,5,5,221,6,2,204,6,3,153,6,4,153,6,5,238,6,6,153,6,7,153,6,8,153,6,9,221,7,2,255,7,3,255,7,4,255,7,5,255,7,6,255,7,7,255,7,8,255,7,9,255],\"secondary\":false},{\"width\":5,\"bonus\":80,\"chr\":\"i\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,153,2,6,153,2,7,153,2,8,153,2,9,221],\"secondary\":false},{\"width\":5,\"bonus\":90,\"chr\":\"j\",\"pixels\":[2,2,255,2,3,255,2,4,255,2,5,255,2,6,255,2,7,255,2,8,255,2,9,255,2,10,255,2,11,187,3,2,204,3,3,153,3,4,153,3,5,153,3,6,153,3,7,153,3,8,153,3,9,153],\"secondary\":false},{\"width\":9,\"bonus\":140,\"chr\":\"k\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,238,2,6,187,2,7,153,2,8,153,2,9,204,3,5,238,3,6,238,4,6,170,4,7,255,5,2,238,5,3,153,5,7,170,5,8,255,6,2,204,6,8,170,6,9,238,7,9,204],\"secondary\":false},{\"width\":7,\"bonus\":95,\"chr\":\"l\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,204,2,3,153,2,4,153,2,5,153,2,6,153,2,7,153,2,8,170,2,9,255,3,9,221,4,9,221,5,9,204],\"secondary\":false},{\"width\":12,\"bonus\":150,\"chr\":\"m\",\"pixels\":[1,6,170,1,7,221,1,8,255,1,9,255,2,2,170,2,3,255,2,4,255,2,5,221,3,4,204,3,5,255,3,6,238,4,6,204,4,7,255,4,8,221,5,7,187,5,8,255,6,6,221,7,4,238,7,5,204,8,2,187,8,3,255,8,4,255,8,5,255,8,6,255,8,7,238,8,8,204,8,9,187,9,7,170,9,8,204,9,9,255],\"secondary\":false},{\"width\":10,\"bonus\":130,\"chr\":\"n\",\"pixels\":[1,2,204,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,3,221,2,4,238,3,4,221,3,5,238,4,5,238,4,6,238,5,6,238,5,7,238,6,7,238,6,8,238,7,2,255,7,3,255,7,4,255,7,5,255,7,6,255,7,7,255,7,8,255,7,9,204],\"secondary\":false},{\"width\":10,\"bonus\":155,\"chr\":\"o\",\"pixels\":[0,4,170,0,5,238,0,6,238,0,7,170,1,3,238,1,4,238,1,5,187,1,6,204,1,7,255,1,8,238,2,2,170,2,8,204,2,9,170,3,2,221,3,9,238,4,2,221,4,9,221,5,2,238,5,9,204,6,2,153,6,3,238,6,8,170,7,3,238,7,4,255,7,5,255,7,6,255,7,7,255,7,8,187,8,4,153,8,5,221,8,6,204],\"secondary\":false},{\"width\":7,\"bonus\":115,\"chr\":\"p\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,153,2,6,170,2,7,153,2,8,153,2,9,221,3,2,221,4,2,221,4,3,204,4,4,153,4,5,221,5,3,221,5,4,221],\"secondary\":false},{\"width\":10,\"bonus\":180,\"chr\":\"q\",\"pixels\":[0,4,153,0,5,238,0,6,238,0,7,170,1,3,221,1,4,255,1,5,221,1,6,238,1,7,255,1,8,238,2,2,153,2,8,221,2,9,170,3,2,221,3,9,238,4,2,221,4,9,221,5,2,238,5,9,204,6,2,153,6,3,221,6,8,153,6,9,238,7,3,221,7,4,255,7,5,255,7,6,255,7,7,255,7,8,170,7,9,187,7,10,153,8,4,153,8,5,204,8,6,204,8,10,255,9,10,204],\"secondary\":false},{\"width\":9,\"bonus\":145,\"chr\":\"r\",\"pixels\":[1,2,255,1,3,255,1,4,255,1,5,255,1,6,255,1,7,255,1,8,255,1,9,255,2,2,238,2,3,153,2,4,153,2,5,153,2,6,238,2,7,153,2,8,153,2,9,221,3,2,238,3,6,238,4,2,204,4,3,204,4,4,153,4,5,204,4,6,204,4,7,255,5,3,221,5,4,221,5,8,255,6,9,238,7,9,153],\"secondary\":false},{\"width\":6,\"bonus\":115,\"chr\":\"s\",\"pixels\":[0,3,221,0,4,238,0,8,187,0,9,187,1,2,187,1,4,204,1,5,255,1,9,238,2,2,187,2,5,255,2,6,187,2,9,221,3,2,204,3,5,153,3,6,255,3,7,170,3,8,153,3,9,170,4,2,204,4,3,153,4,6,170,4,7,255,4,8,187],\"secondary\":false},{\"width\":9,\"bonus\":105,\"chr\":\"t\",\"pixels\":[1,2,238,2,2,221,3,2,238,3,3,153,3,4,153,3,5,153,3,6,153,3,7,153,3,8,153,3,9,221,4,2,255,4,3,255,4,4,255,4,5,255,4,6,255,4,7,255,4,8,255,4,9,255,5,2,221,6,2,221,7,2,255],\"secondary\":false},{\"width\":10,\"bonus\":120,\"chr\":\"u\",\"pixels\":[1,2,204,1,3,153,1,4,153,1,5,153,1,6,153,2,2,255,2,3,255,2,4,255,2,5,255,2,6,255,2,7,255,2,8,255,3,9,221,4,9,238,5,9,221,6,9,170,7,2,255,7,3,255,7,4,255,7,5,255,7,6,255,7,7,255,7,8,204,8,2,153],\"secondary\":false},{\"width\":10,\"bonus\":90,\"chr\":\"v\",\"pixels\":[1,2,255,1,3,153,2,2,238,2,3,255,2,4,255,2,5,187,3,5,238,3,6,255,3,7,221,4,7,221,4,8,255,4,9,187,5,6,187,5,7,204,6,4,221,6,5,187,7,2,255,7,3,170],\"secondary\":false},{\"width\":13,\"bonus\":165,\"chr\":\"w\",\"pixels\":[1,2,255,1,3,221,2,2,204,2,3,221,2,4,255,2,5,255,2,6,221,3,6,187,3,7,255,3,8,255,3,9,187,4,6,153,4,7,221,5,4,221,5,5,187,6,2,187,6,3,255,6,4,255,6,5,153,7,4,170,7,5,255,7,6,255,7,7,187,8,7,255,8,8,255,8,9,187,9,5,153,9,6,221,9,7,170,10,2,221,10,3,238,10,4,187,11,2,187],\"secondary\":false},{\"width\":9,\"bonus\":115,\"chr\":\"x\",\"pixels\":[1,2,221,1,9,238,2,2,255,2,3,255,2,7,153,2,8,221,2,9,153,3,3,153,3,4,255,3,5,221,3,6,204,4,5,255,4,6,255,4,7,170,5,3,187,5,4,170,5,7,255,5,8,255,5,9,153,6,2,255,6,8,204,6,9,255,7,9,170],\"secondary\":false},{\"width\":8,\"bonus\":95,\"chr\":\"y\",\"pixels\":[0,2,187,1,2,255,1,3,221,2,3,221,2,4,255,2,5,153,3,5,238,3,6,255,3,7,255,3,8,255,3,9,255,4,5,204,4,6,170,4,7,153,4,8,153,4,9,204,5,3,187,5,4,187,6,2,238],\"secondary\":false},{\"width\":8,\"bonus\":105,\"chr\":\"z\",\"pixels\":[0,9,204,1,2,238,1,7,153,1,8,255,1,9,255,2,2,221,2,6,221,2,7,255,2,9,221,3,2,221,3,4,153,3,5,255,3,6,221,3,9,221,4,2,238,4,3,221,4,4,255,4,9,221,5,2,255,5,3,204,5,9,255],\"secondary\":false},{\"width\":4,\"bonus\":45,\"chr\":\"{\",\"pixels\":[1,1,255,1,2,255,1,3,255,1,5,187,1,6,255,1,7,255,1,8,255,1,9,221,2,0,153],\"secondary\":false},{\"width\":2,\"bonus\":60,\"chr\":\"|\",\"pixels\":[0,0,255,0,1,255,0,2,255,0,3,255,0,4,255,0,5,255,0,6,255,0,7,255,0,8,255,0,9,255,0,10,255,0,11,255],\"secondary\":true},{\"width\":4,\"bonus\":45,\"chr\":\"}\",\"pixels\":[0,0,153,1,1,255,1,2,255,1,3,255,1,5,187,1,6,255,1,7,255,1,8,255,1,9,221],\"secondary\":false},{\"width\":7,\"bonus\":30,\"chr\":\"~\",\"pixels\":[0,5,221,1,4,255,2,4,187,3,5,187,4,5,255,5,4,204],\"secondary\":false}],\"width\":13,\"spacewidth\":3,\"shadow\":false,\"height\":12,\"basey\":9}');\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(\"./src/dialog/index.ts\");\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"alt1/base\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"alt1/base\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ocr\"] = factory(require(\"alt1/base\"));\n\telse\n\t\troot[\"OCR\"] = factory(root[\"A1lib\"]);\n})(globalThis, (__WEBPACK_EXTERNAL_MODULE_alt1_base__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./src/ocr/index.ts\":\n/*!**************************!*\\\n  !*** ./src/ocr/index.ts ***!\n  \\**************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.generatefont = exports.readChar = exports.readSmallCapsBackwards = exports.readLine = exports.getChatColor = exports.GetChatColorMono = exports.findReadLine = exports.findChar = exports.decompose3col = exports.decomposeblack = exports.decompose2col = exports.canblend = exports.unblendTrans = exports.unblendKnownBg = exports.unblendBlackBackground = exports.debugFont = exports.debugout = exports.debug = void 0;\nconst base_1 = __webpack_require__(/*! alt1/base */ \"alt1/base\");\nexports.debug = {\n    printcharscores: false,\n    trackread: false\n};\nexports.debugout = {};\n/**\n * draws the font definition to a buffer and displays it in the dom for debugging purposes\n * @param font\n */\nfunction debugFont(font) {\n    var spacing = font.width + 2;\n    var buf = new base_1.ImageData(spacing * font.chars.length, font.height + 1);\n    for (var a = 0; a < buf.data.length; a += 4) {\n        buf.data[a] = buf.data[a + 1] = buf.data[a + 2] = 0;\n        buf.data[a + 3] = 255;\n    }\n    for (var a = 0; a < font.chars.length; a++) {\n        var bx = a * spacing;\n        var chr = font.chars[a];\n        for (var b = 0; b < chr.pixels.length; b += (font.shadow ? 4 : 3)) {\n            buf.setPixel(bx + chr.pixels[b], chr.pixels[b + 1], [chr.pixels[b + 2], chr.pixels[b + 2], chr.pixels[b + 2], 255]);\n            if (font.shadow) {\n                buf.setPixel(bx + chr.pixels[b], chr.pixels[b + 1], [chr.pixels[b + 3], 0, 0, 255]);\n            }\n        }\n    }\n    buf.show();\n}\nexports.debugFont = debugFont;\nfunction unblendBlackBackground(img, r, g, b) {\n    var rimg = new base_1.ImageData(img.width, img.height);\n    for (var i = 0; i < img.data.length; i += 4) {\n        var col = decomposeblack(img.data[i], img.data[i + 1], img.data[i + 2], r, g, b);\n        rimg.data[i + 0] = col[0] * 255;\n        rimg.data[i + 1] = rimg.data[i + 0];\n        rimg.data[i + 2] = rimg.data[i + 0];\n        rimg.data[i + 3] = 255;\n    }\n    return rimg;\n}\nexports.unblendBlackBackground = unblendBlackBackground;\n/**\n * unblends a imagebuffer into match strength with given color\n * the bgimg argument should contain a second image with pixel occluded by the font visible.\n * @param img\n * @param shadow detect black as second color\n * @param bgimg optional second image to\n */\nfunction unblendKnownBg(img, bgimg, shadow, r, g, b) {\n    if (bgimg && (img.width != bgimg.width || img.height != bgimg.height)) {\n        throw \"bgimg size doesn't match\";\n    }\n    var rimg = new base_1.ImageData(img.width, img.height);\n    var totalerror = 0;\n    for (var i = 0; i < img.data.length; i += 4) {\n        var col = decompose2col(img.data[i], img.data[i + 1], img.data[i + 2], r, g, b, bgimg.data[i + 0], bgimg.data[i + 1], bgimg.data[i + 2]);\n        if (shadow) {\n            if (col[2] > 0.01) {\n                console.log(\"high error component: \" + (col[2] * 100).toFixed(1) + \"%\");\n            }\n            totalerror += col[2];\n            var m = 1 - col[1] - Math.abs(col[2]); //main color+black=100%-bg-error\n            rimg.data[i + 0] = m * 255;\n            rimg.data[i + 1] = col[0] / m * 255;\n            rimg.data[i + 2] = rimg.data[i + 0];\n        }\n        else {\n            rimg.data[i + 0] = col[0] * 255;\n            rimg.data[i + 1] = rimg.data[i + 0];\n            rimg.data[i + 2] = rimg.data[i + 0];\n        }\n        rimg.data[i + 3] = 255;\n    }\n    return rimg;\n}\nexports.unblendKnownBg = unblendKnownBg;\n/**\n * Unblends a font image that is already conpletely isolated to the raw image used ingame. This is the easiest mode for pixel fonts where alpha is 0 or 255, or for extracted font files.\n * @param img\n * @param r\n * @param g\n * @param b\n * @param shadow whether the font has a black shadow\n */\nfunction unblendTrans(img, shadow, r, g, b) {\n    var rimg = new base_1.ImageData(img.width, img.height);\n    var pxlum = r + g + b;\n    for (var i = 0; i < img.data.length; i += 4) {\n        if (shadow) {\n            var lum = img.data[i + 0] + img.data[i + 1] + img.data[i + 2];\n            rimg.data[i + 0] = img.data[i + 3];\n            rimg.data[i + 1] = lum / pxlum * 255;\n            rimg.data[i + 2] = rimg.data[i + 0];\n        }\n        else {\n            rimg.data[i + 0] = img.data[i + 3];\n            rimg.data[i + 1] = rimg.data[i + 0];\n            rimg.data[i + 2] = rimg.data[i + 0];\n        }\n        rimg.data[i + 3] = 255;\n    }\n    return rimg;\n}\nexports.unblendTrans = unblendTrans;\n/**\n * Determised wether color [rgb]m can be a result of a blend with color [rgb]1 that is p (0-1) of the mix\n * It returns the number that the second color has to lie outside of the possible color ranges\n * @param rm resulting color\n * @param r1 first color of the mix (the other color is unknown)\n * @param p the portion of the [rgb]1 in the mix (0-1)\n */\nfunction canblend(rm, gm, bm, r1, g1, b1, p) {\n    var m = Math.min(50, p / (1 - p));\n    var r = rm + (rm - r1) * m;\n    var g = gm + (gm - g1) * m;\n    var b = bm + (bm - b1) * m;\n    return Math.max(0, -r, -g, -b, r - 255, g - 255, b - 255);\n}\nexports.canblend = canblend;\n/**\n * decomposes a color in 2 given component colors and returns the amount of each color present\n * also return a third (noise) component which is the the amount leftover orthagonal from the 2 given colors\n */\nfunction decompose2col(rp, gp, bp, r1, g1, b1, r2, g2, b2) {\n    //get the normal of the error (cross-product of both colors)\n    var r3 = g1 * b2 - g2 * b1;\n    var g3 = b1 * r2 - b2 * r1;\n    var b3 = r1 * g2 - r2 * g1;\n    //normalize to length 255\n    var norm = 255 / Math.sqrt(r3 * r3 + g3 * g3 + b3 * b3);\n    r3 *= norm;\n    g3 *= norm;\n    b3 *= norm;\n    return decompose3col(rp, gp, bp, r1, g1, b1, r2, g2, b2, r3, g3, b3);\n}\nexports.decompose2col = decompose2col;\n/**\n * decomposes a pixel in a given color component and black and returns what proportion of the second color it contains\n * this is not as formal as decompose 2/3 and only give a \"good enough\" number\n */\nfunction decomposeblack(rp, gp, bp, r1, g1, b1) {\n    var dr = Math.abs(rp - r1);\n    var dg = Math.abs(gp - g1);\n    var db = Math.abs(bp - b1);\n    var maxdif = Math.max(dr, dg, db);\n    return [1 - maxdif / 255];\n}\nexports.decomposeblack = decomposeblack;\n/**\n * decomposes a color in 3 given component colors and returns the amount of each color present\n */\nfunction decompose3col(rp, gp, bp, r1, g1, b1, r2, g2, b2, r3, g3, b3) {\n    //P=x*C1+y*C2+z*C3\n    //assemble as matrix \n    //M*w=p\n    //get inverse of M\n    //dirty written out version of cramer's rule\n    var A = g2 * b3 - b2 * g3;\n    var B = g3 * b1 - b3 * g1;\n    var C = g1 * b2 - b1 * g2;\n    var D = b2 * r3 - r2 * b3;\n    var E = b3 * r1 - r3 * b1;\n    var F = b1 * r2 - r1 * b2;\n    var G = r2 * g3 - g2 * r3;\n    var H = r3 * g1 - g3 * r1;\n    var I = r1 * g2 - g1 * r2;\n    var det = r1 * A + g1 * D + b1 * G;\n    //M^-1*p=w\n    var x = (A * rp + D * gp + G * bp) / det;\n    var y = (B * rp + E * gp + H * bp) / det;\n    var z = (C * rp + F * gp + I * bp) / det;\n    return [x, y, z];\n}\nexports.decompose3col = decompose3col;\n/**\n * brute force to the exact position of the text\n */\nfunction findChar(buffer, font, col, x, y, w, h) {\n    if (x < 0) {\n        return null;\n    }\n    if (y - font.basey < 0) {\n        return null;\n    }\n    if (x + w + font.width > buffer.width) {\n        return null;\n    }\n    if (y + h - font.basey + font.height > buffer.height) {\n        return null;\n    }\n    var best = 1000; //TODO finetune score constants\n    var bestchar = null;\n    for (var cx = x; cx < x + w; cx++) {\n        for (var cy = y; cy < y + h; cy++) {\n            var chr = readChar(buffer, font, col, cx, cy, false, false);\n            if (chr != null && chr.sizescore < best) {\n                best = chr.sizescore;\n                bestchar = chr;\n            }\n        }\n    }\n    return bestchar;\n}\nexports.findChar = findChar;\n/**\n * reads text with unknown exact coord or color. The given coord should be inside the text\n * color selection not implemented yet\n */\nfunction findReadLine(buffer, font, cols, x, y, w = -1, h = -1) {\n    if (w == -1) {\n        w = font.width + font.spacewidth;\n        x -= Math.ceil(w / 2);\n    }\n    if (h == -1) {\n        h = 7;\n        y -= 1;\n    }\n    var chr = null;\n    if (cols.length > 1) {\n        //TODO use getChatColor() instead for non-mono?\n        var sorted = GetChatColorMono(buffer, new base_1.Rect(x, y - font.basey, w, h), cols);\n        //loop until we have a match (max 2 cols)\n        for (var a = 0; a < 2 && a < sorted.length && chr == null; a++) {\n            chr = findChar(buffer, font, sorted[a].col, x, y, w, h);\n        }\n    }\n    else {\n        chr = findChar(buffer, font, cols[0], x, y, w, h);\n    }\n    if (chr == null) {\n        return { debugArea: { x, y, w, h }, text: \"\", fragments: [] };\n    }\n    return readLine(buffer, font, cols, chr.x, chr.y, true, true);\n}\nexports.findReadLine = findReadLine;\nfunction GetChatColorMono(buf, rect, colors) {\n    var colormap = colors.map(c => ({ col: c, score: 0 }));\n    if (rect.x < 0 || rect.y < 0 || rect.x + rect.width > buf.width || rect.y + rect.height > buf.height) {\n        return colormap;\n    }\n    var data = buf.data;\n    var maxd = 50;\n    for (var colobj of colormap) {\n        var score = 0;\n        var col = colobj.col;\n        for (var y = rect.y; y < rect.y + rect.height; y++) {\n            for (var x = rect.x; x < rect.x + rect.width; x++) {\n                var i = x * 4 + y * 4 * buf.width;\n                var d = Math.abs(data[i] - col[0]) + Math.abs(data[i + 1] - col[1]) + Math.abs(data[i + 2] - col[2]);\n                if (d < maxd) {\n                    score += maxd - d;\n                }\n            }\n        }\n        colobj.score = score;\n    }\n    return colormap.sort((a, b) => b.score - a.score);\n}\nexports.GetChatColorMono = GetChatColorMono;\nfunction unblend(r, g, b, R, G, B) {\n    var m = Math.sqrt(r * r + g * g + b * b);\n    var n = Math.sqrt(R * R + G * G + B * B);\n    var x = (r * R + g * G + b * B) / n;\n    var y = Math.sqrt(Math.max(0, m * m - x * x));\n    var r1 = Math.max(0, (63.75 - y) * 4);\n    var r2 = x / n * 255;\n    if (r2 > 255) //brighter than refcol\n     {\n        r1 = Math.max(0, r1 - r2 + 255);\n        r2 = 255;\n    }\n    return [r1, r2];\n}\nfunction getChatColor(buf, rect, colors) {\n    var bestscore = -1.0;\n    var best = null;\n    var b2 = 0.0;\n    var data = buf.data;\n    for (let col of colors) {\n        var score = 0.0;\n        for (var y = rect.y; y < rect.y + rect.height; y++) {\n            for (var x = rect.x; x < rect.x + rect.width; x++) {\n                if (x < 0 || x + 1 >= buf.width) {\n                    continue;\n                }\n                if (y < 0 || y + 1 >= buf.width) {\n                    continue;\n                }\n                let i1 = buf.pixelOffset(x, y);\n                let i2 = buf.pixelOffset(x + 1, y + 1);\n                var pixel1 = unblend(data[i1 + 0], data[i1 + 1], data[i1 + 2], col[0], col[1], col[2]);\n                var pixel2 = unblend(data[i2 + 0], data[i2 + 1], data[i2 + 2], col[0], col[1], col[2]);\n                //TODO this is from c# can simplify a bit\n                var s = (pixel1[0] / 255 * pixel1[1] / 255) * (pixel2[0] / 255 * (255.0 - pixel2[1]) / 255);\n                score += s;\n            }\n        }\n        if (score > bestscore) {\n            b2 = bestscore;\n            bestscore = score;\n            best = col;\n        }\n        else if (score > b2) {\n            b2 = score;\n        }\n    }\n    //Console.WriteLine(\"color: \" + bestcol + \" - \" + (bestscore - b2));\n    //bestscore /= rect.width * rect.height;\n    return best;\n}\nexports.getChatColor = getChatColor;\n/**\n * reads a line of text with exactly known position and color. y should be the y coord of the text base line, x should be the first pixel of a new character\n */\nfunction readLine(buffer, font, colors, x, y, forward, backward = false) {\n    if (typeof colors[0] != \"number\" && colors.length == 1) {\n        colors = colors[0];\n    }\n    var multicol = typeof colors[0] != \"number\";\n    var allcolors = multicol ? colors : [colors];\n    var detectcolor = function (sx, sy, backward) {\n        var w = Math.floor(font.width * 1.5);\n        if (backward) {\n            sx -= w;\n        }\n        sy -= font.basey;\n        return getChatColor(buffer, { x: sx, y: sy, width: w, height: font.height }, allcolors);\n    };\n    var fragments = [];\n    var x1 = x;\n    var x2 = x;\n    var maxspaces = (typeof font.maxspaces == \"number\" ? font.maxspaces : 1);\n    let fragtext = \"\";\n    let fraghadprimary = false;\n    var lastcol = null;\n    let addfrag = (forward) => {\n        if (!fragtext) {\n            return;\n        }\n        let frag = {\n            text: fragtext,\n            color: lastcol,\n            index: 0,\n            xstart: x + (forward ? fragstartdx : fragenddx),\n            xend: x + (forward ? fragenddx : fragstartdx)\n        };\n        if (forward) {\n            fragments.push(frag);\n        }\n        else {\n            fragments.unshift(frag);\n        }\n        fragtext = \"\";\n        fragstartdx = dx;\n        fraghadprimary = false;\n    };\n    for (var dirforward of [true, false]) {\n        //init vars\n        if (dirforward && !forward) {\n            continue;\n        }\n        if (!dirforward && !backward) {\n            continue;\n        }\n        var dx = 0;\n        var fragstartdx = dx;\n        var fragenddx = dx;\n        var triedspaces = 0;\n        var triedrecol = false;\n        var col = multicol ? null : colors;\n        while (true) {\n            col = col || detectcolor(x + dx, y, !dirforward);\n            var chr = (col ? readChar(buffer, font, col, x + dx, y, !dirforward, true) : null);\n            if (col == null || chr == null) {\n                if (triedspaces < maxspaces) {\n                    dx += (dirforward ? 1 : -1) * font.spacewidth;\n                    triedspaces++;\n                    continue;\n                }\n                if (multicol && !triedrecol && fraghadprimary) {\n                    dx -= (dirforward ? 1 : -1) * triedspaces * font.spacewidth;\n                    triedspaces = 0;\n                    col = null;\n                    triedrecol = true;\n                    continue;\n                }\n                if (dirforward) {\n                    x2 = x + dx - font.spacewidth;\n                }\n                else {\n                    x1 = x + dx + font.spacewidth;\n                }\n                break;\n            }\n            else {\n                if (lastcol && (col[0] != lastcol[0] || col[1] != lastcol[1] || col[2] != lastcol[2])) {\n                    addfrag(dirforward);\n                }\n                var spaces = \"\";\n                for (var a = 0; a < triedspaces; a++) {\n                    spaces += \" \";\n                }\n                if (dirforward) {\n                    fragtext += spaces + chr.chr;\n                }\n                else {\n                    fragtext = chr.chr + spaces + fragtext;\n                }\n                if (!chr.basechar.secondary) {\n                    fraghadprimary = true;\n                }\n                triedspaces = 0;\n                triedrecol = false;\n                dx += (dirforward ? 1 : -1) * chr.basechar.width;\n                fragenddx = dx;\n                lastcol = col;\n            }\n        }\n        if (lastcol && fraghadprimary) {\n            addfrag(dirforward);\n        }\n    }\n    fragments.forEach((f, i) => f.index = i);\n    return {\n        debugArea: { x: x1, y: y - 9, w: x2 - x1, h: 10 },\n        text: fragments.map(f => f.text).join(\"\"),\n        fragments\n    };\n}\nexports.readLine = readLine;\n/**\n * Reads a line of text that uses a smallcaps font, these fonts can have duplicate chars that only have a different amount of\n * empty space after the char before the next char starts.\n * The coordinates should be near the end of the string, or a rectangle with high 1 containing all points where the string can end.\n */\nfunction readSmallCapsBackwards(buffer, font, cols, x, y, w = -1, h = -1) {\n    if (w == -1) {\n        w = font.width + font.spacewidth;\n        x -= Math.ceil(w / 2);\n    }\n    if (h == -1) {\n        h = 7;\n        y -= 1;\n    }\n    var matchedchar = null;\n    var sorted = (cols.length == 1 ? [{ col: cols[0], score: 1 }] : GetChatColorMono(buffer, new base_1.Rect(x, y - font.basey, w, h), cols));\n    //loop until we have a match (max 2 cols)\n    for (var a = 0; a < 2 && a < sorted.length && matchedchar == null; a++) {\n        for (var cx = x + w - 1; cx >= x; cx--) {\n            var best = 1000; //TODO finetune score constants\n            var bestchar = null;\n            for (var cy = y; cy < y + h; cy++) {\n                var chr = readChar(buffer, font, sorted[a].col, cx, cy, true, false);\n                if (chr != null && chr.sizescore < best) {\n                    best = chr.sizescore;\n                    bestchar = chr;\n                }\n            }\n            if (bestchar) {\n                matchedchar = bestchar;\n                break;\n            }\n        }\n    }\n    if (matchedchar == null) {\n        return { text: \"\", debugArea: { x, y, w, h } };\n    }\n    return readLine(buffer, font, cols, matchedchar.x, matchedchar.y, false, true);\n}\nexports.readSmallCapsBackwards = readSmallCapsBackwards;\n/**\n * Reads a single character at the exact given location\n * @param x exact x location of the start of the character domain (includes part of the spacing between characters)\n * @param y exact y location of the baseline pixel of the character\n * @param backwards read in backwards direction, the x location should be the first pixel after the character domain in that case\n */\nfunction readChar(buffer, font, col, x, y, backwards, allowSecondary) {\n    y -= font.basey;\n    var shiftx = 0;\n    var shifty = font.basey;\n    var shadow = font.shadow;\n    var debugobj = null;\n    var debugimg = null;\n    if (exports.debug.trackread) {\n        var name = x + \";\" + y + \" \" + JSON.stringify(col);\n        if (!exports.debugout[name]) {\n            exports.debugout[name] = [];\n        }\n        debugobj = exports.debugout[name];\n    }\n    //===== make sure the full domain is inside the bitmap/buffer ======\n    if (y < 0 || y + font.height >= buffer.height) {\n        return null;\n    }\n    if (!backwards) {\n        if (x < 0 || x + font.width > buffer.width) {\n            return null;\n        }\n    }\n    else {\n        if (x - font.width < 0 || x > buffer.width) {\n            return null;\n        }\n    }\n    //====== start reading the char ======\n    var scores = [];\n    for (var chr = 0; chr < font.chars.length; chr++) {\n        var chrobj = font.chars[chr];\n        if (chrobj.secondary && !allowSecondary) {\n            continue;\n        }\n        scores[chr] = { score: 0, sizescore: 0, chr: chrobj };\n        var chrx = (backwards ? x - chrobj.width : x);\n        if (exports.debug.trackread) {\n            debugimg = new base_1.ImageData(font.width, font.height);\n        }\n        for (var a = 0; a < chrobj.pixels.length;) {\n            var i = (chrx + chrobj.pixels[a]) * 4 + (y + chrobj.pixels[a + 1]) * buffer.width * 4;\n            var penalty = 0;\n            if (!shadow) {\n                penalty = canblend(buffer.data[i], buffer.data[i + 1], buffer.data[i + 2], col[0], col[1], col[2], chrobj.pixels[a + 2] / 255);\n                a += 3;\n            }\n            else {\n                var lum = chrobj.pixels[a + 3] / 255;\n                penalty = canblend(buffer.data[i], buffer.data[i + 1], buffer.data[i + 2], col[0] * lum, col[1] * lum, col[2] * lum, chrobj.pixels[a + 2] / 255);\n                a += 4;\n            }\n            scores[chr].score += Math.max(0, penalty);\n            //TODO add compiler flag to this to remove it for performance\n            if (debugimg) {\n                debugimg.setPixel(chrobj.pixels[a], chrobj.pixels[a + 1], [penalty, penalty, penalty, 255]);\n            }\n        }\n        scores[chr].sizescore = scores[chr].score - chrobj.bonus;\n        if (debugobj) {\n            debugobj.push({ chr: chrobj.chr, score: scores[chr].sizescore, rawscore: scores[chr].score, img: debugimg });\n        }\n    }\n    scores.sort((a, b) => a.sizescore - b.sizescore);\n    if (exports.debug.printcharscores) {\n        scores.slice(0, 5).forEach(q => console.log(q.chr.chr, q.score.toFixed(3), q.sizescore.toFixed(3)));\n    }\n    var winchr = scores[0];\n    if (!winchr || winchr.score > 400) {\n        return null;\n    }\n    return { chr: winchr.chr.chr, basechar: winchr.chr, x: x + shiftx, y: y + shifty, score: winchr.score, sizescore: winchr.sizescore };\n}\nexports.readChar = readChar;\n/**\n * Generates a font json description to use in reader functions\n * @param unblended A source image with all characters lined up. The image should be unblended into components using the unblend functions\n * The lowest pixel line of this image is used to mark the location and size of the charecters if the red component is 255 it means there is a character on that pixel column\n * @param chars A string containing all the characters of the image in the same order\n * @param seconds A string with characters that are considered unlikely and should only be detected if no other character is possible.\n * For example the period (.) character matches positive inside many other characters and should be marked as secondary\n * @param bonusses An object that contains bonus scores for certain difficult characters to make the more likely to be red.\n * @param basey The y position of the baseline pixel of the font\n * @param spacewidth the number of pixels a space takes\n * @param treshold minimal color match proportion (0-1) before a pixel is used for the font\n * @param shadow whether this font also uses the black shadow some fonts have. The \"unblended\" image should be unblended correspondingly\n * @returns a javascript object describing the font which is used as input for the different read functions\n */\nfunction generatefont(unblended, chars, seconds, bonusses, basey, spacewidth, treshold, shadow) {\n    //settings vars\n    treshold *= 255;\n    //initial vars\n    var miny = unblended.height - 1;\n    var maxy = 0;\n    var font = { chars: [], width: 0, spacewidth: spacewidth, shadow: shadow, height: 0, basey: 0 };\n    var ds = false;\n    var chardata = [];\n    //index all chars\n    for (var dx = 0; dx < unblended.width; dx++) {\n        var i = 4 * dx + 4 * unblended.width * (unblended.height - 1);\n        if (unblended.data[i] == 255 && unblended.data[i + 3] == 255) {\n            if (ds === false) {\n                ds = dx;\n            }\n        }\n        else {\n            if (ds !== false) {\n                //char found, start detection\n                var de = dx;\n                var char = chars[chardata.length];\n                var chr = {\n                    ds: ds,\n                    de: de,\n                    width: de - ds,\n                    chr: char,\n                    bonus: (bonusses && bonusses[char]) || 0,\n                    secondary: seconds.indexOf(chars[chardata.length]) != -1,\n                    pixels: []\n                };\n                chardata.push(chr);\n                font.width = Math.max(font.width, chr.width);\n                for (x = 0; x < de - ds; x++) {\n                    for (y = 0; y < unblended.height - 1; y++) {\n                        var i = (x + ds) * 4 + y * unblended.width * 4;\n                        if (unblended.data[i] >= treshold) {\n                            miny = Math.min(miny, y);\n                            maxy = Math.max(maxy, y);\n                        }\n                    }\n                }\n                ds = false;\n            }\n        }\n    }\n    font.height = maxy + 1 - miny;\n    font.basey = basey - miny;\n    //detect all pixels\n    for (var a in chardata) {\n        var chr = chardata[a];\n        for (var x = 0; x < chr.width; x++) {\n            for (var y = 0; y < maxy + 1 - miny; y++) {\n                var i = (x + chr.ds) * 4 + (y + miny) * unblended.width * 4;\n                if (unblended.data[i] >= treshold) {\n                    chr.pixels.push(x, y);\n                    chr.pixels.push(unblended.data[i]);\n                    if (shadow) {\n                        chr.pixels.push(unblended.data[i + 1]);\n                    }\n                    chr.bonus += 5;\n                }\n            }\n        }\n        //prevent js from doing the thing with unnecessary output precision\n        chr.bonus = +chr.bonus.toFixed(3);\n        font.chars.push({ width: chr.width, bonus: chr.bonus, chr: chr.chr, pixels: chr.pixels, secondary: chr.secondary });\n    }\n    return font;\n}\nexports.generatefont = generatefont;\n\n\n/***/ }),\n\n/***/ \"alt1/base\":\n/*!**************************************************************************************************!*\\\n  !*** external {\"root\":\"A1lib\",\"commonjs2\":\"alt1/base\",\"commonjs\":\"alt1/base\",\"amd\":\"alt1/base\"} ***!\n  \\**************************************************************************************************/\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_alt1_base__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(\"./src/ocr/index.ts\");\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n    return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport * as dochandler from \"./modules/dochandler\";\nimport * as settings from \"./modules/settings\";\nimport * as slayer from \"./modules/slayer\";\nimport * as logger from \"./modules/logger\";\nimport \"./index.html\";\nimport \"./appconfig.json\";\n/* COPYRIGHT NOTICE - DO NOT REMOVE\n    2021 @ Unlishema Dragonsworn\n    I have programmed this enitre app myself; however, I must give credit where credit is due.\n    \n    The credits have been moved into their own file @ https://slayer.unlishema.org/pages/credits.html\n*/\n/*\n    ~~~ Slayer Assistant App ~~~\n    Features coming in the near future (Also my current TODO List)\n\n    ~ Before Release for Sure ~\n    Update the about page. (Will need updated again on next release)\n    Update the changelog page. (Will need updated again on next release)\n    Update the credits page. (Will need updated again on next release)\n\n    ~ Coming Next Release ~\n    Add Revo Bar to Reapers (and Assignments later on)\n    Redesign the Reaper UI (I have an idea already but wanna add Revo bar too now)\n\n    Add ability to load the database through a php file instead of the json (Done, except for reapers.json)\n    - Add other features to the database query php even if the app don't use them yet (Coming in the future)\n    -- Example: http://slayer.unlishema.org/data/creatures.php?q=Dragon&l=10\n    -- l=100 could limit results, d could have it give extra details, q could also be setup for seaching, and so on\n\n    ~ Coming Very Soon Maybe even next Release ~\n    Add in a status tracking area to keep track of xp/hr, kills/hr, and more (Needs finished)\n    Adjust histories to use sessionStorage (Is this needed, It is only for navigating back and forth now)\n\n    ~ Near future Release ~\n    Add support for Ushubti\n\n    ~ Settings Still needed for the app ~\n    Settings:\n    - Ability to toggle on and off Debug and Verbose mode\n\n    - Ability to select default loading\n    -- Default Task(s) on open and adjust doc based on it (Done, Partially)\n    -- Load previous task(s) and adjust doc based on it\n\n    - Ability to select defaults for everything (Later On)\n    -- Select default creature per task\n    -- Select default variant per creature\n\n    - Ability to customize the Look N Feel of the Slayer Assistant UI (Style added just need color selectors later on now)\n    - Ability to select the type of search algo for the app (Maybe Later On)\n*/\nif (window.alt1)\n    alt1.identifyAppUrl(\"./appconfig.json\");\n// Initialize the JavaScript for the app\ndocument.addEventListener(\"DOMContentLoaded\", function () { return __awaiter(void 0, void 0, void 0, function () {\n    var url, error_1;\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0:\n                _a.trys.push([0, 3, , 4]);\n                url = new URL(window.location.href);\n                if (!url.searchParams.has(\"cache_bust\")) {\n                    url.searchParams.set(\"cache_bust\", \"\".concat(Date.now()));\n                    window.location.href = url.toString();\n                }\n                // Setup the main document and load assignment index\n                return [4 /*yield*/, dochandler.main.setup.documentMain()];\n            case 1:\n                // Setup the main document and load assignment index\n                _a.sent();\n                // Run the Config Setup Process\n                return [4 /*yield*/, settings.controller.load()];\n            case 2:\n                // Run the Config Setup Process\n                _a.sent();\n                // Start the capture loop at the configured interval\n                setInterval(function () {\n                    slayer.findTask();\n                }, settings.controller.autoCapture.loopTimer);\n                return [3 /*break*/, 4];\n            case 3:\n                error_1 = _a.sent();\n                logger.error(\"Initialization error:\", error_1);\n                return [3 /*break*/, 4];\n            case 4: return [2 /*return*/];\n        }\n    });\n}); });\n// Save settings before closing the app\ndocument.addEventListener(\"beforeunload\", function () { return __awaiter(void 0, void 0, void 0, function () {\n    var error_2;\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0:\n                _a.trys.push([0, 2, , 3]);\n                return [4 /*yield*/, settings.controller.save()];\n            case 1:\n                _a.sent();\n                return [3 /*break*/, 3];\n            case 2:\n                error_2 = _a.sent();\n                logger.error(\"Error saving settings:\", error_2);\n                return [3 /*break*/, 3];\n            case 3: return [2 /*return*/];\n        }\n    });\n}); });\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
index d2b8bf5767be53cce2eef2cb6bb282702a5d4f00..85193d9ba48e5c64cc55b74c734ae0d0c2033fc5 100644 (file)
@@ -25,6 +25,9 @@ ErrorDocument 504 /pages/error.html?code=504
     Header set Referrer-Policy "strict-origin-when-cross-origin"
     Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; frame-ancestors http://unlishema.local https://unlishema.org https://*.unlishema.org"
     Header set Permissions-Policy "geolocation=(), microphone=(), camera=()"
+    
+    # Set the Host header to ensure requests target slayer.unlishema.org
+    Header set Host "slayer.unlishema.org"
 </IfModule>
 
 # Prevent Directory Listing
index eea0b568fb80d3e432e9e2eaf9aa4105f24ee0ce..537256633c4ac875caad13e696611fd46ff2ad60 100644 (file)
@@ -27,7 +27,7 @@ async function fetchAssignments(index = "all", list = false) { // Default to "al
 
     // Fetch new data
     const urlBuild = `./data/assignments.json?q=${encodeURIComponent(index)}${list ? `&list` : ''}&cache_bust=${Date.now()}`;
-    const data = await fetchData(`https://slayer.unlishema.org` + urlBuild);
+    const data = await fetchData(urlBuild);
     if (index === "all") {
         cachedData = data; // Cache data if fetching all
         cacheTimestamp = Date.now(); // Update timestamp
index 307374656f967fa70b16448799730447dad3faed..973fd9efebbc054d16436d874de3aac91ae3f60b 100644 (file)
@@ -28,7 +28,7 @@ export async function fetchCreatures(name = "all") {
 
     // Fetch new data
     const urlBuild = `./data/creatures.json?q=${encodeURIComponent(name)}&cache_bust=${Date.now()}`;
-    const data = await fetchData(`https://slayer.unlishema.org` + urlBuild);
+    const data = await fetchData(urlBuild);
     if (name === "all") {
         cachedCreaturesData = data; // Cache data if fetching all
         creaturesCacheTimestamp = Date.now(); // Update timestamp
index 74fb9ead6119ed169c3284251fe01ec6ceba6920..f14d6d9481501d342c2d945bdf4c5b2baf598f6a 100644 (file)
@@ -28,7 +28,7 @@ export async function fetchMasters(name = "all") {
 
     // Fetch new data
     const urlBuild = `./data/masters.json?q=${encodeURIComponent(name)}&cache_bust=${Date.now()}`;
-    const data = await fetchData(`https://slayer.unlishema.org` + urlBuild);
+    const data = await fetchData(urlBuild);
     if (name === "all") {
         cachedMastersData = data; // Cache data if fetching all
         mastersCacheTimestamp = Date.now(); // Update timestamp
index 6d63857fd55f60eeb9bd792ff85e7141414def43..b2e248fe8fb301bb48690dbfc916143ddf58df41 100644 (file)
@@ -27,7 +27,7 @@ async function fetchReapers(index = "all", list = false) {
 
     // Fetch new data
     const urlBuild = `./data/reapers.json?q=${encodeURIComponent(index)}${list ? `&list` : ''}&cache_bust=${Date.now()}`;
-    const data = await fetchData(`https://slayer.unlishema.org` + urlBuild);
+    const data = await fetchData(urlBuild);
     if (index === "all") {
         cachedReapersData = data; // Cache data if fetching all
         reapersCacheTimestamp = Date.now(); // Update timestamp