landmarks and map with Minimap for Bloxd.io
// ==UserScript==
// @name ExpMap
// @namespace Bloxd-Minimap
// @version 1.5.8
// @description landmarks and map with Minimap for Bloxd.io
// @author jack_19987/Jhonny-The
// @icon https://static.thenounproject.com/png/location-icon-6049812-512.png
// @match https://bloxd.io/*
// @license GNU AGPLv3
// @grant none
// @run-at document-start
// ==/UserScript==
!function(){"use strict";let e=!1,n={},a=null,o=null,t=null,l=!1,r=[],i=!1,s=0,c=!1,d=[],p=null,k=null;let u=64,g=30,h=40,b=!0,m=!1,B=!0,y=!1,f="high",S=100,x=null,P=!0;let C=new Set,w=(new Map,new Map,null),v=null;const M="bloxd_minimap_settings";function L(){try{const e={scanRangeDown:g,scanRangeUp:h,expandedMapRange:u,autoRefreshWhenStationary:b,distanceBasedDetail:m,showOtherPlayers:B,showMobs:y,renderIntervalMode:f};localStorage.setItem(M,JSON.stringify(e))}catch(e){console.error("[Bloxd Minimap] Failed to save settings:",e)}}const G={keys(e){const n=[];let a=0;for(const o in e)null!=e&&(n[a]=o,a++);return n},values(e){const n=this.keys(e),a=[];let o=0;for(let t=0;t<n.length;t++){const l=e[n[t]];a[o]=l,o++}return a},distanceBetweenSqrt(e,n){const a=n[0]-e[0],o=n[1]-e[1],t=n[2]-e[2];return Math.sqrt(a*a+o*o+t*t)}},E={wpRequire:null,o:null,get noa(){return this.o||(this.o=G.values(this.bloxdProps).find(e=>e?.entities)),this.o},init(){const e=Object.getOwnPropertyDescriptors(window),n=Object.keys(e).find(n=>e[n]?.set?.toString().includes("++")),a=window[n]=window[n],o=Math.floor(9999999*Math.random()+1);a.push([[o],{},e=>this.wpRequire=e]),this.bloxdProps=G.values(this.findModule("nonBlocksClient:")).find(e=>"object"==typeof e)},findModule(e){const n=this.wpRequire.m;for(const a in n){const o=n[a];if(o&&o.toString().includes(e))return this.wpRequire(a)}return null}},D={getPosition:e=>n.noa?.entities?.getState?.(e,"position")?.position,get getMoveState(){return G.values(n.noa?.entities)?.[36]},get registry(){return G.values(n.noa)?.[17]},get getBlockSolidity(){return G.values(this.registry)?.[5]},get getBlockID(){const e=n.noa?.bloxd;if(!e)return null;return e[Object.getOwnPropertyNames(e.constructor.prototype)[3]].bind(e)},get playerList(){const e=n.noa?.bloxd?.getPlayerIds?.();return e?G.values(e).filter(e=>1!==e&&this.safeGetHeldItem(e)).map(e=>parseInt(e)):[]},safeGetHeldItem(e){try{return this.getHeldItem(e)}catch{}},get getHeldItem(){return Object.values(n.noa?.entities||{}).find(e=>{if("function"!=typeof e)return!1;if(1!==e.length)return!1;const n=e.toString();return n.includes(").")&&n.length<30&&!n.includes(").op")})}},F={Unloaded:[244,0,255],Dirt:[142,100,78],"Messy Dirt":[133,91,70],"Grass Block":[111,174,83],Sand:[217,201,158],Clay:[161,171,181],Gravel:[106,107,109],Snow:[230,235,235],"Maple Log":[124,90,55],"Pine Log":[62,40,22],"Plum Log":[87,79,71],"Cedar Log":[53,40,22],"Aspen Log":[233,230,200],"Jungle Log":[93,73,23],"Maple Wood Planks":[175,143,85],"Aspen Wood Planks":[199,180,128],"Plum Wood Planks":[174,97,49],"Jungle Wood Planks":[165,124,86],"Pine Wood Planks":[122,91,52],"Cedar Wood Planks":[81,52,25],"Barkless Maple Log":[156,120,74],"Barkless Aspen Log":[174,150,107],"Barkless Plum Log":[146,74,37],"Barkless Jungle Log":[146,97,68],"Barkless Pine Log":[103,72,42],"Barkless Cedar Log":[61,37,18],Stone:[146,142,142],"Messy Stone":[146,142,142],"Smooth Stone":[163,161,161],Diorite:[202,197,192],"Smooth Diorite":[246,245,240],Andesite:[128,132,137],"Smooth Andesite":[162,164,166],Granite:[159,107,88],"Smooth Granite":[189,135,108],Sandstone:[230,222,177],Yellowstone:[221,215,149],"Coal Ore":[146,142,142],"Iron Ore":[146,142,142],"Gold Ore":[146,142,142],"Lapis Lazuli Ore":[146,142,142],"Emerald Ore":[146,142,142],"Diamond Ore":[146,142,142],"Block of Coal":[19,19,19],"Block of Iron":[214,209,202],"Block of Gold":[243,170,36],"Block of Lapis Lazuli":[34,91,174],"Block of Emerald":[11,197,85],"White Wool":[250,250,250],"Orange Wool":[252,133,33],"Magenta Wool":[203,74,189],"Light Blue Wool":[59,194,230],"Yellow Wool":[255,211,64],"Lime Wool":[134,202,29],"Pink Wool":[254,155,188],"Gray Wool":[73,79,83],"Light Gray Wool":[154,154,149],"Cyan Wool":[25,153,154],"Purple Wool":[136,45,183],"Blue Wool":[58,68,166],"Brown Wool":[125,81,44],"Green Wool":[95,119,32],"Red Wool":[176,44,37],"Black Wool":[29,31,36],"Baked Clay":[150,93,67],"White Baked Clay":[210,177,161],"Orange Baked Clay":[162,83,38],"Magenta Baked Clay":[149,87,108],"Light Blue Baked Clay":[112,108,138],"Yellow Baked Clay":[186,133,36],"Lime Baked Clay":[103,117,53],"Pink Baked Clay":[162,78,79],"Gray Baked Clay":[58,42,36],"Light Gray Baked Clay":[135,107,98],"Cyan Baked Clay":[85,90,90],"Purple Baked Clay":[118,70,86],"Blue Baked Clay":[73,59,91],"Brown Baked Clay":[77,50,35],"Green Baked Clay":[75,82,40],"Red Baked Clay":[142,61,47],"Black Baked Clay":[36,21,15],"Gray Concrete":[55,58,62],"Light Gray Concrete":[125,125,115],"Black Concrete":[9,11,16],"Blue Concrete":[45,47,144],"Brown Concrete":[97,60,32],"Cyan Concrete":[21,119,135],"Light Blue Concrete":[37,138,200],"Lime Concrete":[95,170,25],"Magenta Concrete":[169,48,159],"Orange Concrete":[225,97,0],"Pink Concrete":[214,101,143],"Purple Concrete":[101,32,157],"Red Concrete":[143,33,33],"White Concrete":[208,214,215],"Green Concrete":[73,91,36],"Yellow Concrete":[242,176,21],"Pine Leaves":[22,41,12],"Aspen Leaves":[50,128,22],"Maple Leaves":[56,105,31],"Jungle Leaves":[45,151,13],Watermelon:[93,141,32],Glass:[198,230,229],"Black Glass":[23,26,32],"Blue Glass":[101,134,207],"Brown Glass":[154,118,91],"Cyan Glass":[31,145,164],"Gray Glass":[86,90,93],"Light Gray Glass":[179,183,187],"Green Glass":[105,125,62],"Light Blue Glass":[135,187,242],"Lime Glass":[188,226,152],"Magenta Glass":[193,73,183],"Orange Glass":[242,151,82],"Pink Glass":[242,157,188],"Purple Glass":[126,63,177],"Red Glass":[182,56,56],"White Glass":[245,246,246],"Yellow Glass":[248,214,135],Bricks:[143,80,63],"Stone Bricks":[146,142,142],"Dark Red Brick":[78,40,47],"Dark Red Stone":[117,56,51],"Block of Quartz":[251,248,239],"Chiseled Block of Quartz":[237,229,217],"Engraved Stone":[113,109,109],"Mossy Stone Bricks":[146,142,142],"Cracked Stone Bricks":[146,142,142],"Smooth Sandstone":[230,222,177],"Engraved Sandstone":[230,222,177],Ice:[134,207,254],Obsidian:[19,12,32],"Hay Bale":[169,132,25],Sponge:[166,150,46],Beacon:[255,255,255],"Golden Decoration":[150,101,53],"Moonstone Explosive":[152,173,217],Bedrock:[21,21,22],Cactus:[81,146,43],Grass:[126,177,75],Dandelion:[255,236,79],Poppy:[237,48,44],"Red Tulip":[237,48,44],"Pink Tulip":[235,197,253],"White Tulip":[247,247,247],"Orange Tulip":[241,157,37],Daisy:[247,247,247],Bluebell:[42,191,253],"Forget-me-not":[72,115,238],Allium:[160,107,215],"Azure Bluet":[252,252,252],"Lily of the Valley":[215,22,22],"Shadow Rose":[42,33,29],Furnace:[79,75,75],Workbench:[100,63,45],"Block of Diamond":[37,171,193],"Maple Door":[175,143,85],t:[175,143,85],"Maple Trapdoor":[132,97,61],"Aspen Sapling":[124,165,61],"Maple Sapling":[113,80,47],"Jungle Sapling":[57,58,14],"Plum Sapling":[126,152,33],"Pine Sapling":[61,94,61],"Cedar Sapling":[55,143,47],"Maple Log|TreeBase|Maple":[124,90,55],Chest:[183,125,45],"Pine Leaves|TreeCanopy":[22,41,12],"Aspen Leaves|TreeCanopy":[50,128,22],"Maple Leaves|TreeCanopy":[56,105,31],"Jungle Leaves|TreeCanopy":[45,151,13],Protector:[146,142,142],"Fat Cactus":[81,146,43],"Dry Fat Cactus":[124,78,31],"Maple Ladder":[156,120,74],Vines:[78,114,46],"Dirt|GrassRoots":[142,100,78],"Iron Ladder":[173,180,182],"White Planks":[250,242,227],"Orange Planks":[209,125,65],"Magenta Planks":[156,78,126],"Light Blue Planks":[85,156,173],"Yellow Planks":[219,182,81],"Lime Planks":[154,173,85],"Pink Planks":[196,122,149],"Gray Planks":[82,78,72],"Light Gray Planks":[153,147,138],"Cyan Planks":[103,171,171],"Purple Planks":[149,113,171],"Blue Planks":[85,94,173],"Brown Planks":[130,94,65],"Green Planks":[103,117,59],"Red Planks":[171,72,68],"Black Planks":[41,38,33],"Artisan Bench":[100,63,45],"White Ceramic":[254,220,86],"Wheat Seeds":[9,164,18],Wheat:[220,187,101],"White Bed":[205,199,199],l:[205,199,199],"Pine Log|TreeBase|Pine":[62,40,22],"Plum Log|TreeBase|Plum":[87,79,71],"Cedar Log|TreeBase|Cedar":[53,40,22],"Aspen Log|TreeBase|Aspen":[233,230,200],"Jungle Log|TreeBase|Jungle":[93,73,23],"Palm Sapling":[38,128,11],"Pine Door":[122,91,52],i:[122,91,52],"Plum Door":[174,97,49],p:[174,97,49],"Cedar Door":[81,52,25],k:[81,52,25],"Aspen Door":[199,180,128],u:[199,180,128],"Jungle Door":[165,124,86],h:[165,124,86],"Palm Door":[214,153,73],B:[214,153,73],"Pine Trapdoor":[97,67,39],"Plum Trapdoor":[174,97,49],"Cedar Trapdoor":[61,37,18],"Aspen Trapdoor":[199,180,128],"Jungle Trapdoor":[124,78,58],"Palm Trapdoor":[182,129,62],"Smooth Sandstone Slab":[230,222,177],"Cactus|Growing":[81,146,43],"Fat Cactus|Growing":[81,146,43],"Pear Door":[141,110,99],S:[141,110,99],"Pear Trapdoor":[141,110,99],"Pear Sapling":[242,248,234],Board:[175,143,85],Net:[149,83,50],Cobweb:[219,214,194],"Watermelon Seeds":[72,99,4],"Jack o'Lantern":[196,104,19],"Melon Seeds":[72,99,4],"Potion Table":[1,1,1],"Pine Ladder":[97,67,39],"Plum Ladder":[149,75,38],"Cedar Ladder":[81,52,25],"Aspen Ladder":[174,150,107],"Jungle Ladder":[165,124,86],"Palm Ladder":[196,139,66],"Pear Ladder":[141,110,99],"Black Carpet":[29,31,36],"Blue Carpet":[58,68,166],"Brown Carpet":[125,81,44],"Cyan Carpet":[25,153,154],"Gray Carpet":[73,79,83],"Light Gray Carpet":[154,154,149],"Green Carpet":[95,119,32],"Light Blue Carpet":[59,194,230],"Lime Carpet":[134,202,29],"Magenta Carpet":[203,74,189],"Orange Carpet":[252,133,33],"Pink Carpet":[254,155,188],"Purple Carpet":[136,45,183],"Red Carpet":[176,44,37],"White Carpet":[250,250,250],"Yellow Carpet":[255,211,64],Rice:[94,176,99],"Rice|FreshlyGrown":[209,207,118],Cranberries:[30,77,51],"Red Mushroom":[226,61,48],"Brown Mushroom":[193,151,119],"Cotton Seeds":[40,133,34],"Tall Grass":[126,177,75],"Tall Grass|Top":[109,160,58],"Barkless Maple Log|TreeBase|Maple":[156,120,74],"Barkless Plum Log|TreeBase|Plum":[146,74,37],"Barkless Cedar Log|TreeBase|Cedar":[61,37,18],"Barkless Aspen Log|TreeBase|Aspen":[174,150,107],"Barkless Jungle Log|TreeBase|Jungle":[146,97,68],"Barkless Pine Log|TreeBase|Pine":[103,72,42],"Yellow Concrete Slab":[242,176,21],"White Concrete Slab":[208,214,215],"Red Concrete Slab":[143,33,33],"Purple Concrete Slab":[101,32,157],"Pink Concrete Slab":[214,101,143],"Orange Concrete Slab":[225,97,0],"Magenta Concrete Slab":[169,48,159],"Lime Concrete Slab":[95,170,25],"Light Gray Concrete Slab":[125,125,115],"Light Blue Concrete Slab":[37,138,200],"Green Concrete Slab":[73,91,36],"Gray Concrete Slab":[55,58,62],"Cyan Concrete Slab":[21,119,135],"Brown Concrete Slab":[97,60,32],"Blue Concrete Slab":[45,47,144],"Black Concrete Slab":[9,11,16],"Cherry Door":[233,192,187],P:[233,192,187],"Cherry Trapdoor":[218,170,170],"Cherry Sapling":[249,194,225],"Cherry Ladder":[211,159,159],"Wood Spikes":[0,0,0],"Stone Spikes":[0,0,0],"Iron Spikes":[0,0,0],"Gold Spikes":[0,0,0],"Diamond Spikes":[0,0,0],"Kill Spikes":[0,0,0],"Corn Seeds":[59,101,0],"Corn Plant":[36,84,0],"Loot Chest":[183,125,45],"Melting Ice":[134,207,254],"Timed Spike Bomb Block":[0,0,0],"Fat Brown Mushroom":[167,124,97],"Fat Red Mushroom":[237,232,202],"Spectral Grass":[30,175,136],"Spectral Door":[54,157,145],C:[54,157,145],"Spectral Trapdoor":[31,105,107],"Spectral Sapling":[22,136,139],"Spectral Ladder":[31,105,107],"Wood Enchanting Table":[1,1,1],"Stone Enchanting Table":[1,1,1],"Iron Enchanting Table":[1,1,1],"Gold Enchanting Table":[1,1,1],"Diamond Enchanting Table":[1,1,1],"Pine Grass":[93,161,125],"Pine Fern":[71,147,107],"Fallen Pine Cone":[176,127,73],"Bone Antlers":[247,239,225],"Gold Antlers":[236,224,87],"Salvaging Table":[0,0,0],"Leaf Bed":[56,105,31],v:[56,105,31],"Jungle Tall Grass":[45,151,13],"Jungle Tall Grass|Top":[45,151,13],Catnip:[45,151,13],"Mango Door":[197,183,95],M:[197,183,95],"Mango Trapdoor":[163,147,53],"Mango Sapling":[69,134,78],"Mango Ladder":[197,183,95],"Banana Seeds":[137,175,37],"Attached Banana Stem":[160,201,53],"Dangling Rope":[197,162,115],"Dangling Vine":[82,106,28],"Tomato Plant":[88,113,44],"Tomato Plant|FreshlyGrown":[88,113,44],"Tomato Plant|Top|FreshlyGrown":[107,132,45],"Carrot Plant":[107,132,45],"Carrot Plant|FreshlyGrown":[107,132,45],"Potato Plant":[88,113,44],"Potato Plant|FreshlyGrown":[88,113,44],"Strawberry Bush":[120,158,36],"Sugar Cane Plant":[180,170,51],"Sugar Cane Plant|FreshlyGrown":[150,154,38],"Sugar Cane Plant|Top|FreshlyGrown":[180,170,51],"Lettuce Plant":[120,158,36],"Lettuce Plant|FreshlyGrown":[120,158,36],"Coffee Plant":[124,131,30],"Coffee Plant|FreshlyGrown":[97,115,8],"Cauliflower Plant":[154,180,81],"Cauliflower Plant|FreshlyGrown":[255,243,214],"Parsnip Plant":[88,113,44],"Parsnip Plant|FreshlyGrown":[88,113,44],"Blueberry Bush":[107,132,45],"Red Cabbage Plant":[133,144,74],"Red Cabbage Plant|FreshlyGrown":[169,100,186],"Beetroot Plant":[107,132,45],"Beetroot Plant|FreshlyGrown":[107,132,45],"Autumn Fern":[227,205,82],"Carrot Seeds":[107,132,45],"Potato Seeds":[88,113,44],"Beetroot Seeds":[107,132,45],"White Banner":[124,75,71],L:[124,75,71],"Orange Banner":[124,75,71],G:[124,75,71],"Magenta Banner":[124,75,71],D:[124,75,71],"Light Blue Banner":[124,75,71],F:[124,75,71],"Yellow Banner":[124,75,71],T:[124,75,71],"Lime Banner":[124,75,71],A:[124,75,71],"Pink Banner":[124,75,71],R:[124,75,71],"Gray Banner":[124,75,71],O:[124,75,71],"Light Gray Banner":[124,75,71],W:[124,75,71],"Cyan Banner":[124,75,71],I:[124,75,71],"Purple Banner":[124,75,71],_:[124,75,71],"Blue Banner":[124,75,71],N:[124,75,71],"Brown Banner":[124,75,71],Y:[124,75,71],"Green Banner":[124,75,71],$:[124,75,71],"Red Banner":[124,75,71],X:[124,75,71],"Black Banner":[124,75,71],J:[124,75,71],"Draugr Banner":[124,75,71],U:[124,75,71],"Orange Ceramic":[22,163,163],"Magenta Ceramic":[199,78,189],"Light Blue Ceramic":[41,44,133],"Yellow Ceramic":[255,236,157],"Lime Ceramic":[94,169,24],"Pink Ceramic":[184,183,173],"Gray Ceramic":[54,57,61],"Light Gray Ceramic":[96,114,119],"Cyan Ceramic":[21,119,136],"Purple Ceramic":[162,84,224],"Blue Ceramic":[35,30,67],"Brown Ceramic":[131,84,50],"Green Ceramic":[208,214,215],"Red Ceramic":[142,32,32],"Black Ceramic":[153,34,34],"Tilled Soil":[148,96,63],"Bread Block":[198,144,41],"Mossy Messy Stone":[146,142,142],"Apple Block":[167,21,28],"Moonstone Ore":[146,142,142],"Moonstone Chest":[201,210,241],"Block of Moonstone":[152,173,217],Magma:[247,136,24],"Useless Soil":[101,65,25],"Marked Sandstone":[230,222,177],"Red Sandstone":[203,110,36],"Smooth Red Sandstone":[203,110,36],"Engraved Red Sandstone":[203,110,36],"Marked Red Sandstone":[203,110,36],"Green Stone":[121,183,165],"Green Bricks":[74,145,127],"Dark Green Bricks":[59,130,104],"Sandstone Bricks":[230,222,177],"Engraved Diorite":[246,245,240],"Diorite Bricks":[246,245,240],"Engraved Andesite":[105,109,115],"Andesite Bricks":[128,132,137],"Engraved Granite":[159,107,88],"Granite Bricks":[159,107,88],"Ice Bricks":[134,207,254],"Plum Leaves":[58,112,50],"Cedar Leaves":[37,67,20],"Palm Leaves":[88,174,62],"Plum Leaves|TreeCanopy":[58,112,50],"Cedar Leaves|TreeCanopy":[37,67,20],"Palm Leaves|TreeCanopy":[88,174,62],"Palm Log":[91,85,44],"Palm Log|TreeBase|Palm":[91,85,44],"Palm Wood Planks":[214,153,73],"Red Sand":[203,110,36],"Red Sandstone Bricks":[203,110,36],"Rocky Dirt":[142,100,78],"Autumn Maple Leaves":[204,120,31],"Autumn Maple Leaves|TreeCanopy":[204,120,31],"Fallen Maple Leaves":[204,120,31],"Maple Slab":[156,120,74],"Pine Slab":[97,67,39],"Plum Slab":[149,75,38],"Cedar Slab":[61,37,18],"Aspen Slab":[174,150,107],"Jungle Slab":[143,99,71],"Palm Slab":[196,139,66],"Dirt Slab":[129,88,70],"Grass Slab":[103,161,77],"Messy Stone Slab":[128,124,124],"Stone Slab":[146,142,142],"Smooth Stone Slab":[146,142,142],"Engraved Stone Slab":[146,142,142],"Stone Bricks Slab":[113,109,109],"Mossy Stone Slab":[128,124,124],"Mossy Stone Bricks Slab":[113,109,109],"Andesite Slab":[128,132,137],"Smooth Andesite Slab":[128,132,137],"Engraved Andesite Slab":[128,132,137],"Andesite Bricks Slab":[105,109,115],"Diorite Slab":[246,245,240],"Smooth Diorite Slab":[202,197,192],"Engraved Diorite Slab":[202,197,192],"Diorite Bricks Slab":[202,197,192],"Granite Slab":[159,107,88],"Smooth Granite Slab":[159,107,88],"Engraved Granite Slab":[159,107,88],"Granite Bricks Slab":[128,80,65],"Sandstone Slab":[217,201,158],"Engraved Sandstone Slab":[230,222,177],"Marked Sandstone Slab":[230,222,177],"Sandstone Bricks Slab":[211,190,147],"Red Sandstone Slab":[192,92,30],"Smooth Red Sandstone Slab":[203,110,36],"Engraved Red Sandstone Slab":[203,110,36],"Marked Red Sandstone Slab":[203,110,36],"Red Sandstone Bricks Slab":[186,89,29],"Bricks Slab":[162,134,125],"Ice Bricks Slab":[230,235,235],"Plum Block":[143,16,143],"Coconut Block":[117,88,39],"Pear Log":[97,97,97],"Pear Wood Planks":[141,110,99],"Pear Leaves":[242,248,234],"Pear Log|TreeBase|Pear":[97,97,97],"Pear Leaves|TreeCanopy":[242,248,234],"Pear Slab":[109,76,65],"Pear Block":[248,215,72],"Compressed Messy Stone":[117,117,117],"Extra Compressed Messy Stone":[107,107,107],"Super Compressed Messy Stone":[87,87,87],"Hyper Compressed Messy Stone":[77,77,77],"Ultra Compressed Messy Stone":[68,68,68],"Mega Compressed Messy Stone":[62,62,62],"Brown Mushroom Block":[193,151,119],"Red Mushroom Block":[226,61,48],"Mushroom Stem":[211,206,196],"Fireball Block":[236,63,49],"Iceball Block":[49,123,235],Pumpkin:[196,104,19],"Carved Pumpkin":[196,104,19],Melon:[245,220,0],"Iron Watermelon":[214,209,202],"Patterned Black Glass":[0,0,0],"Patterned Blue Glass":[32,59,118],"Patterned Brown Glass":[124,82,51],"Patterned Cyan Glass":[98,179,193],"Patterned Gray Glass":[86,90,93],"Patterned Light Gray Glass":[190,194,198],"Patterned Green Glass":[105,125,62],"Patterned Light Blue Glass":[135,187,242],"Patterned Lime Glass":[125,199,55],"Patterned Magenta Glass":[193,73,183],"Patterned Orange Glass":[242,151,82],"Patterned Pink Glass":[238,116,161],"Patterned Purple Glass":[126,63,177],"Patterned Red Glass":[143,33,33],"Patterned White Glass":[255,255,255],"Patterned Yellow Glass":[248,214,135],Bookshelf:[175,143,85],"Empty Bookshelf":[175,143,85],Mailbox:[100,63,45],"Tribe Protector":[146,142,142],"Faction Protector":[217,87,99],"Barkless Palm Log":[196,139,66],"Barkless Pear Log":[109,76,65],"Barkless Palm Log|TreeBase|Palm":[196,139,66],"Barkless Pear Log|TreeBase|Pear":[109,76,65],"Mystery Block":[238,202,78],Rocket:[52,81,51],"Super Rocket":[80,58,32],Grenade:[61,49,97],"Cherry Log":[54,34,46],"Barkless Cherry Log":[218,170,170],"Barkless Cherry Log|TreeBase|Cherry":[218,170,170],"Cherry Wood Planks":[233,192,187],"Cherry Leaves":[249,194,225],"Fallen Cherry Leaves":[249,194,225],"Cherry Log|TreeBase|Cherry":[54,34,46],"Cherry Leaves|TreeCanopy":[249,194,225],"Cherry Slab":[218,170,170],"Cherry Block":[228,54,139],"Bouncy Bomb Block":[183,45,183],"Obby Rocket":[52,81,51],"Corn Block":[236,207,17],"Melting Ice|Breaking":[64,137,254],"Yellow Paintball Explosive":[242,176,21],"White Paintball Explosive":[208,214,215],"Red Paintball Explosive":[143,33,33],"Purple Paintball Explosive":[101,32,157],"Pink Paintball Explosive":[214,101,143],"Orange Paintball Explosive":[225,97,0],"Magenta Paintball Explosive":[169,48,159],"Lime Paintball Explosive":[95,170,25],"Light Gray Paintball Explosive":[125,125,115],"Light Blue Paintball Explosive":[37,138,200],"Green Paintball Explosive":[73,91,36],"Gray Paintball Explosive":[55,58,62],"Cyan Paintball Explosive":[21,119,135],"Brown Paintball Explosive":[97,60,32],"Blue Paintball Explosive":[45,47,144],"Black Paintball Explosive":[9,11,16],"Yellow Quick Paintball Explosive":[255,211,64],"White Quick Paintball Explosive":[250,250,250],"Red Quick Paintball Explosive":[176,44,37],"Purple Quick Paintball Explosive":[136,45,183],"Pink Quick Paintball Explosive":[254,155,188],"Orange Quick Paintball Explosive":[252,133,33],"Magenta Quick Paintball Explosive":[203,74,189],"Lime Quick Paintball Explosive":[134,202,29],"Light Gray Quick Paintball Explosive":[154,154,149],"Light Blue Quick Paintball Explosive":[59,194,230],"Green Quick Paintball Explosive":[95,119,32],"Gray Quick Paintball Explosive":[73,79,83],"Cyan Quick Paintball Explosive":[25,153,154],"Brown Quick Paintball Explosive":[125,81,44],"Blue Quick Paintball Explosive":[58,68,166],"Black Quick Paintball Explosive":[29,31,36],"Yellow Seeking Paintball Explosive":[242,176,21],"White Seeking Paintball Explosive":[208,214,215],"Red Seeking Paintball Explosive":[143,33,33],"Purple Seeking Paintball Explosive":[101,32,157],"Pink Seeking Paintball Explosive":[214,101,143],"Orange Seeking Paintball Explosive":[225,97,0],"Magenta Seeking Paintball Explosive":[169,48,159],"Lime Seeking Paintball Explosive":[95,170,25],"Light Gray Seeking Paintball Explosive":[125,125,115],"Light Blue Seeking Paintball Explosive":[37,138,200],"Green Seeking Paintball Explosive":[73,91,36],"Gray Seeking Paintball Explosive":[55,58,62],"Cyan Seeking Paintball Explosive":[21,119,135],"Brown Seeking Paintball Explosive":[97,60,32],"Blue Seeking Paintball Explosive":[45,47,144],"Black Seeking Paintball Explosive":[9,11,16],"Yellow Sticky Paintball Explosive":[242,176,21],"White Sticky Paintball Explosive":[208,214,215],"Red Sticky Paintball Explosive":[143,33,33],"Purple Sticky Paintball Explosive":[101,32,157],"Pink Sticky Paintball Explosive":[214,101,143],"Orange Sticky Paintball Explosive":[225,97,0],"Magenta Sticky Paintball Explosive":[169,48,159],"Lime Sticky Paintball Explosive":[95,170,25],"Light Gray Sticky Paintball Explosive":[125,125,115],"Light Blue Sticky Paintball Explosive":[37,138,200],"Green Sticky Paintball Explosive":[73,91,36],"Gray Sticky Paintball Explosive":[55,58,62],"Cyan Sticky Paintball Explosive":[21,119,135],"Brown Sticky Paintball Explosive":[97,60,32],"Blue Sticky Paintball Explosive":[45,47,144],"Black Sticky Paintball Explosive":[9,11,16],"Chili Pepper Block":[216,0,7],"Code Block":[227,158,100],"Toxin Ball Block":[8,94,53],"Spawn Block (Yellow)":[255,211,64],"Spawn Block (White)":[250,250,250],"Spawn Block (Red)":[176,44,37],"Spawn Block (Purple)":[136,45,183],"Spawn Block (Pink)":[254,155,188],"Spawn Block (Orange)":[252,133,33],"Spawn Block (Magenta)":[203,74,189],"Spawn Block (Lime)":[134,202,29],"Spawn Block (Light Gray)":[154,154,149],"Spawn Block (Light Blue)":[59,194,230],"Spawn Block (Green)":[95,119,32],"Spawn Block (Gray)":[73,79,83],"Spawn Block (Cyan)":[25,153,154],"Spawn Block (Brown)":[125,81,44],"Spawn Block (Blue)":[58,68,166],"Spawn Block (Black)":[29,31,36],"Checkpoint Block":[62,230,27],"Custom Lobby Block":[0,0,0],"Generator Spawn Block (Red)":[176,44,37],"Generator Spawn Block (Blue)":[58,68,166],"Generator Spawn Block (Lime)":[134,202,29],"Generator Spawn Block (Yellow)":[255,211,64],"Generator Spawn Block (Cyan)":[25,153,154],"Generator Spawn Block (White)":[250,250,250],"Generator Spawn Block (Pink)":[254,155,188],"Generator Spawn Block (Gray)":[73,79,83],"Trader Shop Spawn Block":[45,45,45],"Wizard Shop Spawn Block":[42,122,194],"Generator Spawn Block (Diamond)":[37,171,193],"Generator Spawn Block (Moonstone)":[152,173,217],"Generator Spawn Block (Ore)":[146,142,142],"Finish Block":[255,255,255],"Drop Location Block":[51,51,109],"Obby Death Block":[172,50,50],"Obby Absorb Block":[75,75,75],"Obby Absorb Death Block":[75,47,171],"Bone Block":[224,228,223],"Pig Spawner Block":[60,83,101],"Cow Spawner Block":[60,83,101],"Sheep Spawner Block":[60,83,101],"Cave Golem Spawner Block":[60,83,101],"Draugr Zombie Spawner Block":[60,83,101],"Draugr Skeleton Spawner Block":[60,83,101],"Empty Spawner Block":[60,83,101],"Frost Golem Spawner Block":[60,83,101],"Frost Zombie Spawner Block":[60,83,101],"Frost Skeleton Spawner Block":[60,83,101],"Snowy Messy Stone":[146,142,142],"Snowy Stone Slab":[128,124,124],"Draugr Knight Spawner Block":[60,83,101],"Packed Snow":[188,219,219],"Carved Messy Stone":[146,142,142],"Spectral Log":[29,123,107],"Barkless Spectral Log":[43,132,128],"Barkless Spectral Log|TreeBase|Spectral":[43,132,128],"Spectral Wood Planks":[54,157,145],"Spectral Leaves":[22,136,139],"Spectral Log|TreeBase|Spectral":[29,123,107],"Spectral Leaves|TreeCanopy":[22,136,139],"Spectral Slab":[43,132,128],"Pine Grass Block":[89,151,104],"Pine Grass Slab":[89,151,104],"Pine Cone Block":[133,88,38],"Wolf Spawner Block":[60,83,101],"Bear Spawner Block":[60,83,101],"Deer Spawner Block":[60,83,101],"Stag Spawner Block":[60,83,101],"Gold Watermelon Stag Spawner Block":[60,83,101],Chalk:[249,251,251],"Yellow Chalk":[252,244,180],"White Chalk":[225,247,248],"Red Chalk":[242,133,135],"Purple Chalk":[192,155,200],"Pink Chalk":[247,173,198],"Orange Chalk":[242,160,133],"Magenta Chalk":[230,163,224],"Lime Chalk":[172,210,149],"Light Gray Chalk":[182,206,204],"Light Blue Chalk":[160,196,231],"Green Chalk":[158,179,147],"Gray Chalk":[111,128,138],"Cyan Chalk":[172,219,210],"Brown Chalk":[182,164,151],"Blue Chalk":[131,167,222],"Black Chalk":[43,57,67],"Yellow Chalk Bricks":[252,244,180],"White Chalk Bricks":[225,247,248],"Red Chalk Bricks":[242,133,135],"Purple Chalk Bricks":[192,155,200],"Pink Chalk Bricks":[247,173,198],"Orange Chalk Bricks":[242,160,133],"Magenta Chalk Bricks":[230,163,224],"Lime Chalk Bricks":[172,210,149],"Light Gray Chalk Bricks":[182,206,204],"Light Blue Chalk Bricks":[160,196,231],"Green Chalk Bricks":[158,179,147],"Gray Chalk Bricks":[111,128,138],"Cyan Chalk Bricks":[172,219,210],"Brown Chalk Bricks":[182,164,151],"Blue Chalk Bricks":[131,167,222],"Black Chalk Bricks":[43,57,67],"Yellow Chalk Slab":[252,244,180],"White Chalk Slab":[225,247,248],"Red Chalk Slab":[242,133,135],"Purple Chalk Slab":[192,155,200],"Pink Chalk Slab":[247,173,198],"Orange Chalk Slab":[242,160,133],"Magenta Chalk Slab":[230,163,224],"Lime Chalk Slab":[172,210,149],"Light Gray Chalk Slab":[182,206,204],"Light Blue Chalk Slab":[160,196,231],"Green Chalk Slab":[158,179,147],"Gray Chalk Slab":[111,128,138],"Cyan Chalk Slab":[172,219,210],"Brown Chalk Slab":[182,164,151],"Blue Chalk Slab":[131,167,222],"Black Chalk Slab":[43,57,67],"Yellow Chalk Bricks Slab":[227,214,113],"White Chalk Bricks Slab":[178,212,214],"Red Chalk Bricks Slab":[233,84,86],"Purple Chalk Bricks Slab":[160,112,170],"Pink Chalk Bricks Slab":[236,125,163],"Orange Chalk Bricks Slab":[233,119,82],"Magenta Chalk Bricks Slab":[212,114,204],"Lime Chalk Bricks Slab":[137,190,106],"Light Gray Chalk Bricks Slab":[145,168,166],"Light Blue Chalk Bricks Slab":[109,164,218],"Green Chalk Bricks Slab":[121,151,106],"Gray Chalk Bricks Slab":[83,97,106],"Cyan Chalk Bricks Slab":[116,201,184],"Brown Chalk Bricks Slab":[154,124,102],"Blue Chalk Bricks Slab":[79,129,206],"Black Chalk Bricks Slab":[26,37,44],"Jungle Grass Block":[15,146,8],"Jungle Grass Slab":[15,146,8],"Mango Log":[81,73,71],"Barkless Mango Log":[197,183,95],"Barkless Mango Log|TreeBase|Mango":[197,183,95],"Mango Wood Planks":[210,196,113],"Mango Leaves":[34,109,53],"Mango Log|TreeBase|Mango":[81,73,71],"Mango Leaves|TreeCanopy":[34,109,53],"Mango Slab":[197,183,95],"Mango Block":[250,126,4],"Banana Block":[234,217,113],"Fruity Maple Leaves":[56,105,31],"Pine Cone Leaves":[19,36,9],"Fruity Plum Leaves":[58,112,50],"Fruity Palm Leaves":[88,174,62],"Fruity Pear Leaves":[242,248,234],"Fruity Cherry Leaves":[249,194,225],"Fruity Mango Leaves":[29,98,46],"Leather Block":[129,95,72],"Autumn Aspen Leaves":[252,215,11],"Autumn Aspen Leaves|TreeCanopy":[252,215,11],"Iron Chest":[228,224,218],Crate:[183,151,93],"Carrot Block":[200,101,13],"Potato Block":[175,132,68],"Beetroot Block":[110,36,52],Water:[66,105,245],Lava:[227,105,54]},T=new Map;function A(e){if(!Number.isFinite(e))return null;if(T.has(e))return T.get(e);let a=null;try{const o=n?.Props?.blocksClient;if(o){const n=o[e]??o[String(e)];"string"==typeof n?.name&&(a=n.name)}}catch{}return T.set(e,a),a}function R(e){if(0===e)return"#00000000";const n=A(e);if(!n)return"#BEBEBE";const a=n.split("|")[0],o=F[a];return!o||o.length<3?"#BEBEBE":"#"+o.map(e=>{const n=e.toString(16);return 1===n.length?"0"+n:n}).join("")}function O(e,n){const a=parseInt(e.slice(1),16),o=n<0?0:255,t=n<0?-1*n:n,l=a>>16,r=a>>8&255,i=255&a;return"#"+(16777216+65536*(Math.round(t/100*(o-l))+l)+256*(Math.round(t/100*(o-r))+r)+(Math.round(t/100*(o-i))+i)).toString(16).slice(1)}const W=180,I=2.8125;function _(e){for(const n of Object.keys(e)){const a=e[n];if(a&&"object"==typeof a&&Array.isArray(a.stride)&&3===a.stride.length&&(Array.isArray(a.data)||ArrayBuffer.isView(a.data)))return n}return null}function N(e,n,a,o,t){switch(e.save(),n){case"pickaxe":!function(e,n,a,o){const t=.8*o;e.beginPath(),e.moveTo(n-t,a-.5*t),e.lineTo(n-.3*t,a),e.lineTo(n-.3*t,a+.3*t),e.lineTo(n+.3*t,a+.3*t),e.lineTo(n+.3*t,a),e.lineTo(n+t,a-.5*t),e.lineTo(n+.7*t,a+.2*t),e.lineTo(n+.3*t,a+.5*t),e.lineTo(n+.3*t,a+t),e.lineTo(n-.3*t,a+t),e.lineTo(n-.3*t,a+.5*t),e.lineTo(n-.7*t,a+.2*t),e.closePath(),e.fill(),e.stroke()}(e,a,o,t);break;case"sword":!function(e,n,a,o){const t=.8*o;e.beginPath(),e.moveTo(n,a-t),e.lineTo(n+.3*t,a+.3*t),e.lineTo(n+.15*t,a+.3*t),e.lineTo(n+.15*t,a+.6*t),e.lineTo(n+.4*t,a+.8*t),e.lineTo(n+.4*t,a+t),e.lineTo(n,a+.85*t),e.lineTo(n-.4*t,a+t),e.lineTo(n-.4*t,a+.8*t),e.lineTo(n-.15*t,a+.6*t),e.lineTo(n-.15*t,a+.3*t),e.lineTo(n-.3*t,a+.3*t),e.closePath(),e.fill(),e.stroke()}(e,a,o,t);break;case"house":!function(e,n,a,o){const t=.8*o;e.beginPath(),e.moveTo(n,a-t),e.lineTo(n+t,a),e.lineTo(n+.7*t,a),e.lineTo(n+.7*t,a+t),e.lineTo(n-.7*t,a+t),e.lineTo(n-.7*t,a),e.lineTo(n-t,a),e.closePath(),e.fill(),e.stroke(),e.fillStyle="#000",e.fillRect(n-.25*t,a+.3*t,.5*t,.7*t)}(e,a,o,t);break;case"star":!function(e,n,a,o){const t=o,l=.4*o;e.beginPath();for(let o=0;o<10;o++){const r=o%2==0?t:l,i=Math.PI/5*o-Math.PI/2,s=n+Math.cos(i)*r,c=a+Math.sin(i)*r;0===o?e.moveTo(s,c):e.lineTo(s,c)}e.closePath(),e.fill(),e.stroke()}(e,a,o,t);break;case"pin":!function(e,n,a,o){const t=o;e.beginPath(),e.arc(n,a-.3*t,.5*t,0,2*Math.PI),e.fill(),e.stroke(),e.beginPath(),e.moveTo(n,a+.2*t),e.lineTo(n-.3*t,a+t),e.lineTo(n+.3*t,a+t),e.closePath(),e.fill(),e.stroke()}(e,a,o,t);break;default:!function(e,n,a,o){e.beginPath(),e.moveTo(n,a-o),e.lineTo(n+o,a),e.lineTo(n,a+o),e.lineTo(n-o,a),e.closePath(),e.fill(),e.stroke()}(e,a,o,t)}e.restore()}function Y(e,n,a,o,t,l,r){const i=n.x-a[0],s=n.z-a[2],c=(Math.sqrt(i*i+s*s),r?32:u);if(Math.abs(i)<=c&&Math.abs(s)<=c){const a=o+i*l,c=t-s*l;e.fillStyle=n.color,e.strokeStyle="#fff",e.lineWidth=r?1:2;const d=r?4:8;N(e,n.icon,a,c,d),r||(e.font="bold 12px 'Courier New', monospace",e.textAlign="center",e.strokeStyle="#000",e.lineWidth=3,e.strokeText(n.name,a,c+20),e.fillStyle="#fff",e.fillText(n.name,a,c+20))}else{const a=Math.atan2(s,i),l=r?85:e.canvas.width/2-15,c=o+Math.cos(a)*l,d=t-Math.sin(a)*l;if(e.save(),e.translate(c,d),e.rotate(-a),e.fillStyle=n.color,e.strokeStyle="#fff",e.lineWidth=r?1:3,r?(e.beginPath(),e.moveTo(0,0),e.lineTo(-6,-4),e.lineTo(-6,4),e.closePath()):(e.beginPath(),e.moveTo(0,0),e.lineTo(-12,-8),e.lineTo(-12,8),e.closePath()),e.fill(),e.stroke(),e.restore(),r){e.fillStyle="#fff",e.font="bold 10px 'Courier New', monospace",e.textAlign="center",e.textBaseline="middle";const r=l-12,i=o+Math.cos(a)*r,s=t-Math.sin(a)*r;e.fillText(n.name.charAt(0).toUpperCase(),i,s)}else{e.font="bold 11px 'Courier New', monospace",e.textAlign="center",e.textBaseline="middle";const r=l-20,i=o+Math.cos(a)*r,s=t-Math.sin(a)*r;e.strokeStyle="#000",e.lineWidth=3,e.strokeText(n.name,i,s),e.fillStyle="#fff",e.fillText(n.name,i,s)}}}function z(){if(!e||!a)return;const o=D.getPosition(1);if(!o)return;if(x){const e=Math.abs(o[0]-x[0]),n=Math.abs(o[1]-x[1]),a=Math.abs(o[2]-x[2]);if(e<.5&&n<.5&&a<.5){if(!b)return void(P=!1)}else P=!0}if(x=[...o],function(){if(!e||!n.world?.[n.impKey]?.hash)return;const a=D.getPosition(1);if(!a)return;const o=Date.now();if(o-s>1e3){s=o;const e=Math.floor(a[0]),n=Math.floor(a[2]);let t=!1;for(let o=Math.floor(a[1])+2;o<256;o++){const a=D.getBlockID(e,o,n);if(0!==a){const e=A(a);if(e&&!e.toLowerCase().includes("leave")){t=!0;break}}}i=t}}(),t&&!l&&P){l=!0;const e=n.world[n.impKey].hash;let a=null;for(const n in e){const o=e[n];if(o&&(a=_(o),a))break}const r={};let s=!1;if(a)for(const n in e){const o=e[n];if(o[a]){const e=o[a].data,t=e.length>0?e[0]+e[Math.floor(e.length/2)]+e[e.length-1]:0,l=`${n}_${e.length}_${t}`;C.has(l)||(s=!0,C.add(l)),r[n]={data:e,stride:o[a].stride,pos:o.pos}}}s||P?t.postMessage({chunkHash:r,myPos:o,MINIMAP_RANGE:u,isUnderground:i,scanRangeDown:g,scanRangeUp:h}):l=!1}const c=a.getContext("2d");if(c.fillStyle=i?"rgba(50, 45, 60, 0.7)":"rgba(26, 29, 33, 0.7)",c.fillRect(0,0,W,W),r.length>0)for(const e of r){let n;const a=e.worldX-o[0],t=e.worldZ-o[2],l=Math.sqrt(a*a+t*t);n=m&&l>22.4?R(e.blockId):O(R(e.blockId),e.brightness),c.fillStyle=n,c.fillRect(90+a*I,90-t*I,3.8125,3.8125)}if(d.forEach(e=>{Y(c,e,o,90,90,I,!0)}),B){c.fillStyle="#FF4500",c.strokeStyle="#1a1d21",c.lineWidth=1;const e=D.playerList;for(const n of e){if(1===n)continue;const e=D.getPosition(n);if(!e)continue;const a=e[0]-o[0],t=e[2]-o[2];if(Math.abs(a)<=32&&Math.abs(t)<=32){const e=90+a*I-2.5,n=90-t*I-2.5;c.fillRect(e,n,5,5),c.strokeRect(e,n,5,5)}}}if(y){c.fillStyle="#00FF00",c.strokeStyle="#1a1d21",c.lineWidth=1;const e=n.noa?.bloxd?.getMobIds?.();if(e)for(const n of e){const e=D.getPosition(n);if(!e)continue;const a=e[0]-o[0],t=e[2]-o[2];if(Math.abs(a)<=32&&Math.abs(t)<=32){const e=90+a*I-3,n=90-t*I-3;c.fillRect(e,n,6,6),c.strokeRect(e,n,6,6)}}}const p=n.camera?.heading||0;c.save(),c.translate(90,90),c.rotate(p),c.beginPath(),c.moveTo(0,-5),c.lineTo(4,5),c.lineTo(-4,5),c.closePath(),c.fillStyle="#FFFFFF",c.fill(),c.strokeStyle="#1a1d21",c.lineWidth=1.5,c.stroke(),c.restore()}function $(){const e=window.location.pathname;if(e.startsWith("/play/")){const n=e.split("/");if(n.length>=4)return decodeURIComponent(n[3])}const n=new URLSearchParams(window.location.search);return n.has("lobby")?decodeURIComponent(n.get("lobby")):null}function X(){const e=`bloxd_minimap_landmarks_${$()}`;localStorage.setItem(e,JSON.stringify(d))}function J(){const e=`bloxd_minimap_landmarks_${$()}`,n=localStorage.getItem(e);if(n)try{d=JSON.parse(n)}catch(e){d=[]}else d=[]}function U(e,n,a,o,t,l="diamond"){const r={id:Date.now(),name:e||"Unnamed",x:parseInt(n),y:parseInt(a),z:parseInt(o),color:t||"#FFD700",icon:l||"diamond"};return d.push(r),X(),j(),r}function j(){const e=document.getElementById("landmark-list");e&&(e.innerHTML="",d.forEach(n=>{const a=document.createElement("div");a.className="landmark-item",a.innerHTML=`\n <div class="landmark-color" style="background: ${n.color}"></div>\n <div class="landmark-info">\n <div class="landmark-name">${n.name}</div>\n <div class="landmark-coords">${n.x}, ${n.y}, ${n.z}</div>\n </div>\n <button class="landmark-delete" data-id="${n.id}">X</button>\n `,a.querySelector(".landmark-delete").addEventListener("click",()=>{return e=n.id,d=d.filter(n=>n.id!==e),X(),void j();var e}),e.appendChild(a)}))}function Z(){c?function(){c=!1,p&&(p.remove(),p=null);k=null}():function(){c=!0,p=document.createElement("div"),p.id="bloxd-expanded-map",p.style.cssText="\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.95);\n z-index: 999999;\n display: flex;\n font-family: 'Courier New', monospace;\n image-rendering: pixelated;\n image-rendering: crisp-edges;\n ",k=document.createElement("div"),k.id="eye-of-god-menu",k.style.cssText="\n width: 320px;\n height: 100%;\n background: #1a1a2e;\n border-right: 4px solid #4a4a6a;\n padding: 20px;\n box-sizing: border-box;\n overflow-y: auto;\n color: #fff;\n ";const e="\n font-family: 'Courier New', 'Lucida Console', monospace;\n image-rendering: pixelated;\n letter-spacing: 1px;\n ";k.innerHTML=`\n <h1 style="\n font-size: 32px;\n text-align: center;\n margin-bottom: 20px;\n text-shadow: 4px 4px 0 #4a4a6a;\n font-family: 'Courier New', 'Lucida Console', monospace;\n font-weight: 900;\n letter-spacing: 2px;\n image-rendering: pixelated;\n "><span style="color: #FFD700;">Exp</span><span style="color: #00BFFF;">Map</span></h1>\n\n <div class="menu-section" style="margin-bottom: 25px;">\n <h3 style="color: #4ecdc4; margin-bottom: 15px; ${e}">➕ ADD LANDMARK</h3>\n\n <div style="margin-bottom: 10px;">\n <label style="display: block; color: #aaa; margin-bottom: 5px; ${e}">Name:</label>\n <input type="text" id="landmark-name" placeholder="Base, Home, etc..." style="\n width: 100%;\n padding: 8px;\n background: #0f0f1a;\n border: 2px solid #4a4a6a;\n color: #fff;\n font-size: 14px;\n ${e}\n box-sizing: border-box;\n ">\n </div>\n\n<div class="menu-section" style="margin-bottom: 25px;">\n <h3 style="color: #4ecdc4; margin-bottom: 15px;">🔭 MAP RANGE</h3>\n\n <div style="margin-bottom: 15px;">\n <label style="display: block; color: #aaa; margin-bottom: 5px;">View Range: <span id="expanded-range-val">64</span> blocks</label>\n <input type="range" id="expanded-range" min="16" max="128" value="64" style="width: 55%;">\n <input type="number" id="expanded-range-num" min="16" max="128" value="64" style="width: 40%; padding: 5px;">\n </div>\n</div>\n\n<div class="menu-section" style="margin-bottom: 25px;">\n <h3 style="color: #4ecdc4; margin-bottom: 15px;">📊 VERTICAL SCAN RANGE</h3>\n\n <div style="margin-bottom: 10px;">\n <label style="display: block; color: #aaa; margin-bottom: 5px;">Scan Down (blocks):</label>\n <input type="number" id="scan-range-down" value="30" min="10" max="100" style="width: 100%; padding: 8px; background: #0f0f1a; border: 2px solid #4a4a6a; color: #fff; font-size: 14px; box-sizing: border-box;">\n </div>\n\n <div style="margin-bottom: 10px;">\n <label style="display: block; color: #aaa; margin-bottom: 5px;">Scan Up (blocks):</label>\n <input type="number" id="scan-range-up" value="40" min="10" max="100" style="width: 100%; padding: 8px; background: #0f0f1a; border: 2px solid #4a4a6a; color: #fff; font-size: 14px; box-sizing: border-box;">\n </div>\n</div>\n\n <div style="margin-bottom: 10px;">\n <label style="display: block; color: #aaa; margin-bottom: 5px; ${e}">Icon:</label>\n <select id="landmark-icon" style="\n width: 100%;\n padding: 8px;\n background: #0f0f1a;\n border: 2px solid #4a4a6a;\n color: #fff;\n font-size: 14px;\n ${e}\n box-sizing: border-box;\n cursor: pointer;\n ">\n <option value="diamond">💎 Diamond</option>\n <option value="house">🏠 House</option>\n <option value="star">⭐ Star</option>\n <option value="pin">📍 Pin</option>\n </select>\n </div>\n\n <div style="margin-bottom: 10px;">\n <label style="display: block; color: #aaa; margin-bottom: 5px; ${e}">Color:</label>\n <input type="color" id="landmark-color" value="#FFD700" style="\n width: 100%;\n height: 40px;\n background: #0f0f1a;\n border: 2px solid #4a4a6a;\n cursor: pointer;\n ">\n </div>\n\n <div style="margin-bottom: 10px;">\n <label style="display: block; color: #aaa; margin-bottom: 5px; ${e}">Coordinates (X Y Z):</label>\n <div style="display: flex; gap: 5px;">\n <input type="number" id="landmark-x" placeholder="X" style="\n width: 30%;\n padding: 8px;\n background: #0f0f1a;\n border: 2px solid #4a4a6a;\n color: #fff;\n font-size: 14px;\n ${e}\n box-sizing: border-box;\n ">\n <input type="number" id="landmark-y" placeholder="Y" style="\n width: 30%;\n padding: 8px;\n background: #0f0f1a;\n border: 2px solid #4a4a6a;\n color: #fff;\n font-size: 14px;\n ${e}\n box-sizing: border-box;\n ">\n <input type="number" id="landmark-z" placeholder="Z" style="\n width: 30%;\n padding: 8px;\n background: #0f0f1a;\n border: 2px solid #4a4a6a;\n color: #fff;\n font-size: 14px;\n ${e}\n box-sizing: border-box;\n ">\n </div>\n </div>\n\n <button id="add-landmark-btn" style="\n width: 100%;\n padding: 12px;\n background: #4ecdc4;\n border: none;\n color: #000;\n font-size: 16px;\n font-weight: bold;\n cursor: pointer;\n ${e}\n margin-bottom: 10px;\n box-shadow: 4px 4px 0 #2a9d8f;\n transition: transform 0.1s;\n " onmousedown="this.style.transform='translate(2px, 2px)'" onmouseup="this.style.transform='translate(0, 0)'">📍 ADD LANDMARK</button>\n\n <button id="add-current-pos-btn" style="\n width: 100%;\n padding: 12px;\n background: #ff6b6b;\n border: none;\n color: #fff;\n font-size: 16px;\n font-weight: bold;\n cursor: pointer;\n ${e}\n box-shadow: 4px 4px 0 #c92a2a;\n transition: transform 0.1s;\n margin-bottom: 10px;\n " onmousedown="this.style.transform='translate(2px, 2px)'" onmouseup="this.style.transform='translate(0, 0)'">📌 AT MY POSITION</button>\n\n <button id="find-ruin-btn" style="\n width: 100%;\n padding: 12px;\n background: #9b59b6;\n border: none;\n color: #fff;\n font-size: 16px;\n font-weight: bold;\n cursor: pointer;\n ${e}\n box-shadow: 4px 4px 0 #8e44ad;\n transition: transform 0.1s;\n " onmousedown="this.style.transform='translate(2px, 2px)'" onmouseup="this.style.transform='translate(0, 0)'">🏛️ FIND NEAREST RUIN</button>\n </div>\n\n <div class="menu-section" style="margin-bottom: 25px;">\n <h3 style="color: #4ecdc4; margin-bottom: 15px; ${e}">⚡ PERFORMANCE OPTIONS</h3>\n\n <div style="margin-bottom: 12px;">\n <label style="display: block; color: #aaa; margin-bottom: 5px; ${e}">Render Speed:</label>\n <select id="render-interval-mode" style="\n width: 100%;\n padding: 8px;\n background: #0f0f1a;\n border: 2px solid #4a4a6a;\n color: #fff;\n font-size: 14px;\n ${e}\n box-sizing: border-box;\n cursor: pointer;\n ">\n <option value="high">High (100ms - 10fps)</option>\n <option value="medium">Medium (250ms - 4fps)</option>\n <option value="slow">Slow (500ms - 2fps)</option>\n <option value="manual">Manual (on movement only)</option>\n </select>\n </div>\n\n <div style="margin-bottom: 12px; display: flex; align-items: center; gap: 10px;">\n <input type="checkbox" id="show-players-checkbox" checked style="width: 18px; height: 18px; cursor: pointer;">\n <label for="show-players-checkbox" style="color: #aaa; font-size: 13px; cursor: pointer; ${e}">\n Show other players\n </label>\n </div>\n\n <div style="margin-bottom: 12px; display: flex; align-items: center; gap: 10px;">\n <input type="checkbox" id="show-mobs-checkbox" style="width: 18px; height: 18px; cursor: pointer;">\n <label for="show-mobs-checkbox" style="color: #aaa; font-size: 13px; cursor: pointer; ${e}">\n Show mobs (green)\n </label>\n </div>\n\n <div style="margin-bottom: 12px; display: flex; align-items: center; gap: 10px;">\n <input type="checkbox" id="auto-refresh-checkbox" checked style="width: 18px; height: 18px; cursor: pointer;">\n <label for="auto-refresh-checkbox" style="color: #aaa; font-size: 13px; cursor: pointer; ${e}">\n Auto-refresh when stationary\n </label>\n </div>\n\n <div style="display: flex; align-items: center; gap: 10px;">\n <input type="checkbox" id="distance-detail-checkbox" style="width: 18px; height: 18px; cursor: pointer;">\n <label for="distance-detail-checkbox" style="color: #aaa; font-size: 13px; cursor: pointer; ${e}">\n Distance-based detail (saves FPS)\n </label>\n </div>\n </div>\n\n <div class="menu-section">\n <h3 style="color: #4ecdc4; margin-bottom: 15px; ${e}">📍 MY LANDMARKS</h3>\n <div id="landmark-list" style="\n max-height: 300px;\n overflow-y: auto;\n "></div>\n </div>\n\n <div style="margin-top: 30px; padding-top: 20px; border-top: 2px solid #4a4a6a;">\n <p style="color: #666; font-size: 12px; ${e} text-align: center;">\n Press [M] to close\n </p>\n <p style="color: #00BFFF; font-size: 11px; ${e} text-align: center; margin-top: 10px;">\n Discord: jack_19987\n </p>\n <p style="color: #9b59b6; font-size: 10px; ${e} text-align: center; margin-top: 5px;">\n v1.5.6\n </p>\n </div>\n `;const n=document.createElement("div");n.style.cssText="\n flex: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 20px;\n position: relative;\n ";const a=document.createElement("canvas");a.id="bloxd-expanded-canvas",a.width=window.innerHeight-40,a.height=window.innerHeight-40,a.style.cssText="\n border: 4px solid #4a4a6a;\n background: rgba(26, 29, 33, 0.9);\n image-rendering: pixelated;\n ",n.appendChild(a),p.appendChild(k),p.appendChild(n),document.body.appendChild(p),document.getElementById("add-landmark-btn").addEventListener("click",()=>{const e=document.getElementById("landmark-name").value,n=document.getElementById("landmark-x").value,a=document.getElementById("landmark-y").value,o=document.getElementById("landmark-z").value,t=document.getElementById("landmark-color").value,l=document.getElementById("landmark-icon").value;""!==n&&""!==a&&""!==o&&(U(e,n,a,o,t,l),document.getElementById("landmark-name").value="",document.getElementById("landmark-x").value="",document.getElementById("landmark-y").value="",document.getElementById("landmark-z").value="")}),document.getElementById("add-current-pos-btn").addEventListener("click",()=>{const e=D.getPosition(1);if(e){const n=document.getElementById("landmark-name").value||"My Position",a=document.getElementById("landmark-color").value,o=document.getElementById("landmark-icon").value;U(n,Math.floor(e[0]),Math.floor(e[1]),Math.floor(e[2]),a,o),document.getElementById("landmark-name").value=""}}),document.getElementById("find-ruin-btn")?.addEventListener("click",()=>{alert("Coming Soon")});const t=D.getPosition(1);t&&(document.getElementById("landmark-x").value=Math.floor(t[0]),document.getElementById("landmark-y").value=Math.floor(t[1]),document.getElementById("landmark-z").value=Math.floor(t[2]));j();const r=document.getElementById("expanded-range"),i=document.getElementById("expanded-range-num"),s=document.getElementById("expanded-range-val"),d=document.getElementById("scan-range-down"),x=document.getElementById("scan-range-up"),C=document.getElementById("auto-refresh-checkbox"),w=document.getElementById("distance-detail-checkbox"),v=document.getElementById("render-interval-mode"),M=document.getElementById("show-players-checkbox"),G=document.getElementById("show-mobs-checkbox");function E(e){const n=Math.max(16,Math.min(1e3,parseInt(e)||64));u=n,r.value=n,i.value=n,s.textContent=n,L(),l=!1}r.value=u,i.value=u,s.textContent=u,d.value=g,x.value=h,C.checked=b,w.checked=m,v.value=f,M.checked=B,G.checked=y,r.addEventListener("input",e=>E(e.target.value)),i.addEventListener("change",e=>E(e.target.value)),d.addEventListener("change",e=>{const n=parseInt(e.target.value)||30;g=Math.max(10,Math.min(100,n)),e.target.value=g,L(),l=!1}),x.addEventListener("change",e=>{const n=parseInt(e.target.value)||40;h=Math.max(10,Math.min(100,n)),e.target.value=h,L(),l=!1}),C.addEventListener("change",e=>{b=e.target.checked,L(),P=!0}),w.addEventListener("change",e=>{m=e.target.checked,L(),l=!1}),v.addEventListener("change",e=>{switch(f=e.target.value,f){case"high":case"manual":S=100;break;case"medium":S=250;break;case"slow":S=500}L(),o&&(clearInterval(o),o=setInterval(z,S))}),M.addEventListener("change",e=>{B=e.target.checked,L(),P=!0}),G.addEventListener("change",e=>{y=e.target.checked,L(),P=!0}),Q()}()}function Q(){if(!c)return;const e=document.getElementById("bloxd-expanded-canvas");if(!e)return;const a=e.getContext("2d"),o=D.getPosition(1);if(!o)return void requestAnimationFrame(Q);const t=e.width,l=t/2,s=t/(2*u);if(a.fillStyle=i?"rgba(50, 45, 60, 0.9)":"rgba(26, 29, 33, 0.9)",a.fillRect(0,0,t,t),r.length>0)for(const e of r){const n=O(R(e.blockId),e.brightness);a.fillStyle=n;const t=e.worldX-o[0],r=e.worldZ-o[2];a.fillRect(l+t*s,l-r*s,s+.5,s+.5)}d.forEach(e=>{Y(a,e,o,l,l,s,!1)}),a.fillStyle="#FF4500",a.strokeStyle="#1a1d21",a.lineWidth=2;const p=D.playerList;for(const e of p){if(1===e)continue;const n=D.getPosition(e);if(!n)continue;const t=n[0]-o[0],r=n[2]-o[2];if(Math.abs(t)<=u&&Math.abs(r)<=u){const e=l+t*s,n=l-r*s;a.fillRect(e-6,n-6,12,12),a.strokeRect(e-6,n-6,12,12)}}const k=n.camera?.heading||0;a.save(),a.translate(l,l),a.rotate(k),a.beginPath(),a.moveTo(0,-12),a.lineTo(8,10),a.lineTo(-8,10),a.closePath(),a.fillStyle="#FFFFFF",a.fill(),a.strokeStyle="#1a1d21",a.lineWidth=2,a.stroke(),a.restore(),a.strokeStyle="#4a4a6a",a.lineWidth=4,a.strokeRect(0,0,t,t),requestAnimationFrame(Q)}function K(e){"m"!==e.key&&"M"!==e.key||(e.preventDefault(),Z())}function H(){const e=document.createElement("style");e.textContent="\n .landmark-item {\n display: flex;\n align-items: center;\n padding: 8px;\n background: #0f0f1a;\n border: 2px solid #4a4a6a;\n margin-bottom: 8px;\n border-radius: 4px;\n }\n .landmark-color {\n width: 20px;\n height: 20px;\n border-radius: 3px;\n margin-right: 10px;\n border: 2px solid #fff;\n }\n .landmark-info {\n flex: 1;\n }\n .landmark-name {\n font-weight: bold;\n color: #fff;\n font-size: 14px;\n }\n .landmark-coords {\n color: #888;\n font-size: 11px;\n }\n .landmark-delete {\n background: #ff6b6b;\n border: none;\n color: #fff;\n padding: 4px 8px;\n cursor: pointer;\n font-weight: bold;\n border-radius: 3px;.\n }\n .landmark-delete:hover {\n background: #c92a2a;\n }\n ",document.head.appendChild(e),a=document.createElement("canvas"),a.id="bloxd-minimap",a.width=W,a.height=W,a.style.cssText="\n position: fixed;\n top: 20px;\n right: 20px;\n border: 3px solid #333;\n border-radius: 3px;\n z-index: 999990;\n background: rgba(26, 29, 33, 0.7);\n cursor: pointer;\n image-rendering: pixelated;\n ",a.title="Click or press M to expand",a.addEventListener("click",Z),document.body.appendChild(a),document.addEventListener("keydown",K);try{const e=new Blob(['\n self.onmessage = function(e) {\n const { chunkHash, myPos, MINIMAP_RANGE, isUnderground, scanRangeDown, scanRangeUp } = e.data;\n let processedData = [];\n const surfaceMap = new Map();\n\n if (isUnderground) {\n const myY = Math.floor(myPos[1]);\n const Y_SCAN_UP = 4;\n const Y_SCAN_DOWN = 10;\n\n for (const chunkKey in chunkHash) {\n const chunk = chunkHash[chunkKey];\n if (!chunk.data || !chunk.stride || !chunk.pos) continue;\n const { data, stride, pos: chunkOriginPos } = chunk;\n\n for (let i = 0; i < data.length; i++) {\n const blockID = data[i];\n if (blockID === 0) continue;\n\n const x = Math.floor(i / stride[0]);\n const remX = i % stride[0];\n const y = Math.floor(remX / stride[1]);\n const z = remX % stride[1];\n\n const worldY = chunkOriginPos[1] + y;\n\n if (worldY > myY + Y_SCAN_UP || worldY < myY - Y_SCAN_DOWN) {\n continue;\n }\n\n const worldX = chunkOriginPos[0] + x;\n const worldZ = chunkOriginPos[2] + z;\n\n if (Math.abs(worldX - myPos[0]) > MINIMAP_RANGE || Math.abs(worldZ - myPos[2]) > MINIMAP_RANGE) {\n continue;\n }\n\n const mapKey = worldX + "|" + worldZ;\n\n if (!surfaceMap.has(mapKey) || worldY > surfaceMap.get(mapKey).y) {\n surfaceMap.set(mapKey, { y: worldY, blockId: blockID, worldX: worldX, worldZ: worldZ });\n }\n }\n }\n } else {\n // SURFACE MODE: Scan vertical column around player (configurable)\n const myY = Math.floor(myPos[1]);\n const Y_SCAN_UP = scanRangeUp || 40; // Use passed value or default\n const Y_SCAN_DOWN = scanRangeDown || 30; // Use passed value or default\n\n for (const chunkKey in chunkHash) {\n const chunk = chunkHash[chunkKey];\n if (!chunk.data || !chunk.stride || !chunk.pos) continue;\n const { data, stride, pos: chunkOriginPos } = chunk;\n\n for (let i = 0; i < data.length; i++) {\n const blockID = data[i];\n if (blockID === 0 || blockID === 150) continue;\n\n const x = Math.floor(i / stride[0]);\n const remX = i % stride[0];\n const y = Math.floor(remX / stride[1]);\n const z = remX % stride[1];\n\n const worldY = chunkOriginPos[1] + y;\n\n // Only process blocks within Y range of player\n if (worldY > myY + Y_SCAN_UP || worldY < myY - Y_SCAN_DOWN) {\n continue;\n }\n\n const worldX = chunkOriginPos[0] + x;\n const worldZ = chunkOriginPos[2] + z;\n\n if (Math.abs(worldX - myPos[0]) > MINIMAP_RANGE || Math.abs(worldZ - myPos[2]) > MINIMAP_RANGE) {\n continue;\n }\n\n const mapKey = worldX + "|" + worldZ;\n\n if (!surfaceMap.has(mapKey) || worldY > surfaceMap.get(mapKey).y) {\n surfaceMap.set(mapKey, { y: worldY, blockId: blockID, worldX: worldX, worldZ: worldZ });\n }\n }\n }\n }\n\n const heightLookupMap = new Map(Array.from(surfaceMap.values()).map(d => [d.worldX + "|" + d.worldZ, d.y]));\n\n processedData = Array.from(surfaceMap.values()).map(data => {\n let brightnessOffset = 0;\n const topNeighborY = heightLookupMap.get(data.worldX + "|" + (data.worldZ + 1));\n const bottomNeighborY = heightLookupMap.get(data.worldX + "|" + (data.worldZ - 1));\n const leftNeighborY = heightLookupMap.get((data.worldX - 1) + "|" + data.worldZ);\n const rightNeighborY = heightLookupMap.get((data.worldX + 1) + "|" + data.worldZ);\n\n if (topNeighborY !== undefined && data.y < topNeighborY) {\n brightnessOffset = -0.25;\n } else if (bottomNeighborY !== undefined && data.y < bottomNeighborY) {\n brightnessOffset = 0.15;\n } else if ((leftNeighborY !== undefined && data.y < leftNeighborY) || (rightNeighborY !== undefined && data.y < rightNeighborY)) {\n brightnessOffset = -0.10;\n }\n\n return {\n blockId: data.blockId,\n worldX: data.worldX,\n worldZ: data.worldZ,\n brightness: brightnessOffset * 100\n };\n });\n\n self.postMessage({ surfaceData: processedData });\n };\n '],{type:"application/javascript"});t=new Worker(URL.createObjectURL(e)),t.onmessage=e=>{r=e.data.surfaceData,l=!1}}catch(e){console.error("Minimap worker failed:",e),t=null}}function V(){E.init();const e=Object.getOwnPropertyDescriptors(window),a=Object.keys(e).find(n=>e[n]?.set?.toString().includes("++"));if((window[a]=window[a]).push([[Math.floor(9e4*Math.random())+1e4],{},function(e){n.findModule=n=>e(Object.keys(e.m)[Object.values(e.m).findIndex(e=>e.toString().includes(n))]),n.Props=Object.values(n.findModule("nonBlocksClient:")).find(e=>"object"==typeof e),n.noa=Object.values(n.Props).find(e=>e?.entities)}]),!n.noa)return!1;let o=null;Object.defineProperty(n.noa,"playerdata",{get:function(){if(o)return o;for(const e in this)try{const n=this[e];if(n&&"object"==typeof n&&n.hasOwnProperty("crouchingSpeed")&&n.hasOwnProperty("walkingSpeed"))return o=n,o}catch{}return null},configurable:!0});const t=G.values(n.noa.entities)[2],l=Object.entries(n.noa.entities);n.impKey=l.find(([e,n])=>n===t)?.[0],n.registry=G.values(n.noa)[17],n.rendering=G.values(n.noa)[12],n.entities=n.noa.entities,n.world=G.values(n.noa)[11],n.camera=n.noa.camera,n.bloxd=n.noa.bloxd,n.physics=n.noa.physics,n.entityList=G.values(n.noa)[30];const r=G.values(n.rendering).find(e=>e?.meshes?.[0]),i=r?.meshes[0];return i&&(n.Lion={scene:r,Mesh:i.constructor,StandardMaterial:i.material.constructor,Color3:i.material.diffuseColor.constructor}),!0}function q(){const e=$();null===w?(w=e,J(),console.log("[Bloxd Minimap] Joined lobby:",w,"Landmarks loaded:",d.length)):w!==e&&(console.log("[Bloxd Minimap] Lobby changed from",w,"to",e),X(),d=[],w=e,J(),j(),console.log("[Bloxd Minimap] New lobby landmarks loaded:",d.length))}function ee(){v=setInterval(q,2e3)}function ne(){try{if(function(){try{const e=localStorage.getItem(M);if(e){const n=JSON.parse(e);if(void 0!==n.scanRangeDown&&(g=n.scanRangeDown),void 0!==n.scanRangeUp&&(h=n.scanRangeUp),void 0!==n.expandedMapRange&&(u=n.expandedMapRange),void 0!==n.autoRefreshWhenStationary&&(b=n.autoRefreshWhenStationary),void 0!==n.distanceBasedDetail&&(m=n.distanceBasedDetail),void 0!==n.showOtherPlayers&&(B=n.showOtherPlayers),void 0!==n.showMobs&&(y=n.showMobs),void 0!==n.renderIntervalMode)switch(f=n.renderIntervalMode,f){case"high":case"manual":S=100;break;case"medium":S=250;break;case"slow":S=500}console.log("[Bloxd Minimap] Settings loaded:",n)}}catch(e){console.error("[Bloxd Minimap] Failed to load settings:",e)}}(),e=V(),e)w=$(),J(),H(),o=setInterval(z,S),ee(),console.log("[Bloxd Minimap] Injection successful! Lobby:",w,"Landmarks:",d.length);else{console.log("[Bloxd Minimap] Waiting for game to load...");const n=setInterval(()=>{e||(e=V(),e&&(clearInterval(n),w=$(),J(),H(),o=setInterval(z,S),ee(),console.log("[Bloxd Minimap] Injection successful! Lobby:",w)))},1e3);setTimeout(()=>{e||(clearInterval(n),console.error("[Bloxd Minimap] Failed to inject after 30 seconds"))},3e4)}}catch(e){console.error("[Bloxd Minimap] Initialization error:",e)}}function ae(){const e=new MutationObserver(n=>{for(const a of n)for(const n of a.addedNodes)if(1===n.nodeType&&n.matches("div.MainLoadingState.FullyFancyText"))return e.disconnect(),void setTimeout(ne,1e3)});e.observe(document.body,{childList:!0,subtree:!0})}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",ae):ae()}();