diff --git a/Crawler/Crawler.cpp b/Crawler/Crawler.cpp index 8270c3fd..af889341 100644 --- a/Crawler/Crawler.cpp +++ b/Crawler/Crawler.cpp @@ -285,7 +285,7 @@ void Crawler::HandleUserInput(float fElapsedTime){ } } - if(player->GetState()!=State::NORMAL){ + if(player->GetState()!=State::NORMAL&&player->GetState()!=State::PREP_CAST){ setIdleAnimation=false; } @@ -313,8 +313,9 @@ void Crawler::HandleUserInput(float fElapsedTime){ void Crawler::UpdateCamera(float fElapsedTime){ lastWorldShakeAdjust=std::max(0.f,lastWorldShakeAdjust-fElapsedTime); if(worldShakeTime-fElapsedTime>0){ + worldShakeVel={1000,-1000}; if(lastWorldShakeAdjust==0){ - lastWorldShakeAdjust=0.02; + lastWorldShakeAdjust=0.04; worldShakeVel.x*=-1; worldShakeVel.y*=-1; } @@ -375,8 +376,8 @@ void Crawler::UpdateBullets(float fElapsedTime){ if(!b->deactivated){ if(b->friendly){ for(Monster&m:MONSTER_LIST){ - if(b->OnUpperLevel()==m.OnUpperLevel()&&geom2d::overlaps(geom2d::circle(m.GetPos(),12*m.GetSizeMult()),geom2d::circle(b->pos,b->radius))){ - if(b->hitList.find(&m)==b->hitList.end()&&m.Hurt(b->damage)){ + if(geom2d::overlaps(geom2d::circle(m.GetPos(),12*m.GetSizeMult()),geom2d::circle(b->pos,b->radius))){ + if(b->hitList.find(&m)==b->hitList.end()&&m.Hurt(b->damage,b->OnUpperLevel())){ if(!b->hitsMultiple){ if(b->MonsterHit(m)){ it=BULLET_LIST.erase(it); @@ -391,8 +392,8 @@ void Crawler::UpdateBullets(float fElapsedTime){ } } } else { - if(b->OnUpperLevel()==player->OnUpperLevel()&&geom2d::overlaps(geom2d::circle(player->GetPos(),12*player->GetSizeMult()/2),geom2d::circle(b->pos,b->radius))){ - if(player->Hurt(b->damage)){ + if(geom2d::overlaps(geom2d::circle(player->GetPos(),12*player->GetSizeMult()/2),geom2d::circle(b->pos,b->radius))){ + if(player->Hurt(b->damage,b->OnUpperLevel())){ if(b->PlayerHit(GetPlayer())){ it=BULLET_LIST.erase(it); if(it==BULLET_LIST.end()){ @@ -427,8 +428,8 @@ void Crawler::UpdateBullets(float fElapsedTime){ } void Crawler::HurtEnemies(vf2d pos,float radius,int damage,bool upperLevel){ for(Monster&m:MONSTER_LIST){ - if(m.OnUpperLevel()==upperLevel&&geom2d::overlaps(geom2d::circle(pos,radius),geom2d::circle(m.GetPos(),12*m.GetSizeMult()))){ - m.Hurt(damage); + if(geom2d::overlaps(geom2d::circle(pos,radius),geom2d::circle(m.GetPos(),12*m.GetSizeMult()))){ + m.Hurt(damage,upperLevel); } } } @@ -575,11 +576,25 @@ void Crawler::RenderWorld(float fElapsedTime){ for(Bullet*b:bulletsLower){ b->Draw(); } - if(player->GetState()==State::PREP_CAST){ - float precastSize=GetPlayer()->castPrepAbility->precastInfo.size; - vf2d scale=vf2d{precastSize,precastSize}/3.f; - vf2d centerPoint=GetWorldMousePos()-vf2d{game->GFX_Circle.Sprite()->width*scale.x/2,game->GFX_Circle.Sprite()->height*scale.y/2}; - view.DrawDecal(centerPoint,GFX_Circle.Decal(),scale,{255,0,0,96}); + auto RenderPrecastTargetingIndicator=[&](){ + if(player->GetState()==State::PREP_CAST){ + float precastSize=GetPlayer()->castPrepAbility->precastInfo.size; + float precastRange=GetPlayer()->castPrepAbility->precastInfo.range; + vf2d scale=vf2d{precastSize,precastSize}*2/3.f; + vf2d centerPoint=GetWorldMousePos()-vf2d{game->GFX_Circle.Sprite()->width*scale.x/2,game->GFX_Circle.Sprite()->height*scale.y/2}; + float distance=sqrt(pow(player->GetX()-GetWorldMousePos().x,2)+pow(player->GetY()-GetWorldMousePos().y,2)); + if(distance>precastRange){//Clamp the distance. + vf2d pointToCursor = {GetWorldMousePos().x-player->GetX(),GetWorldMousePos().y-player->GetY()}; + pointToCursor=pointToCursor.norm()*precastRange; + vf2d centerPoint=player->GetPos()+pointToCursor-vf2d{game->GFX_Circle.Sprite()->width*scale.x/2,game->GFX_Circle.Sprite()->height*scale.y/2}; + view.DrawDecal(centerPoint,GFX_Circle.Decal(),scale,{255,0,0,96}); + } else { + view.DrawDecal(centerPoint,GFX_Circle.Decal(),scale,{255,0,0,96}); + } + } + }; + if(!player->OnUpperLevel()){ + RenderPrecastTargetingIndicator(); } #pragma region Foreground Rendering for(TileGroup&group:foregroundTileGroups){ @@ -642,6 +657,9 @@ void Crawler::RenderWorld(float fElapsedTime){ for(Bullet*b:bulletsUpper){ b->Draw(); } + if(player->OnUpperLevel()){ + RenderPrecastTargetingIndicator(); + } #pragma region Upper Foreground Rendering for(TileGroup&group:upperForegroundTileGroups){ if(geom2d::overlaps(group.GetFadeRange(),player->pos)){ diff --git a/Crawler/Effect.h b/Crawler/Effect.h index d3ceafc6..92bb9ee3 100644 --- a/Crawler/Effect.h +++ b/Crawler/Effect.h @@ -39,6 +39,7 @@ struct PulsatingFire:Effect{ PulsatingFire(vf2d pos,float lifetime,AnimationState animation,bool upperLevel,vf2d size={1,1},float fadeout=0.0f,vf2d spd={},Pixel col=WHITE,float rotation=0,float rotationSpd=0,bool additiveBlending=false); std::vectorpulsatingFireValues; float lastParticleTimer=0; + float lastDamageTimer=0; bool Update(float fElapsedTime)override; void Draw()override; }; \ No newline at end of file diff --git a/Crawler/FireBolt.cpp b/Crawler/FireBolt.cpp index bcfb0d69..6ab437a5 100644 --- a/Crawler/FireBolt.cpp +++ b/Crawler/FireBolt.cpp @@ -34,11 +34,7 @@ bool FireBolt::MonsterHit(Monster& monster) game->AddEffect(std::make_unique(monster.GetPos(),util::random(0.5),AnimationState::DOT_PARTICLE,upperLevel,util::random(2),util::random(0.4),vf2d{util::random(300)-150,util::random(300)-150},Pixel{255,uint8_t(util::random(190)+60),60})); } game->SetupWorldShake(0.25); - for(Monster&m:MONSTER_LIST){ - if(geom2d::line(monster.GetPos(),m.GetPos()).length()<=2.5*24){ - m.Hurt(3*damage); - } - } + game->HurtEnemies(monster.GetPos(),2.5*24,3*damage,OnUpperLevel()); game->AddEffect(std::make_unique(monster.GetPos(),0,AnimationState::SPLASH_EFFECT,upperLevel,5,0.25,vf2d{},Pixel{240,120,60})); return false; } diff --git a/Crawler/LightningBolt.cpp b/Crawler/LightningBolt.cpp index b4b04cfe..b6430001 100644 --- a/Crawler/LightningBolt.cpp +++ b/Crawler/LightningBolt.cpp @@ -52,10 +52,8 @@ bool LightningBolt::MonsterHit(Monster& monster) if(&m==&monster||monster.OnUpperLevel()!=m.OnUpperLevel())continue; geom2d::linelineToTarget=geom2d::line(monster.GetPos(),m.GetPos()); float dist=lineToTarget.length(); - vf2d vec; - vec.norm(); if(dist<=72){ - if(m.Hurt(game->GetPlayer()->GetAttack()*2)){ + if(m.Hurt(game->GetPlayer()->GetAttack()*2,OnUpperLevel())){ EMITTER_LIST.push_back(std::make_unique(LightningBoltEmitter(monster.GetPos(),m.GetPos(),0.05,0.25,upperLevel))); game->AddEffect(std::make_unique(m.GetPos(),0.5,AnimationState::LIGHTNING_SPLASH,upperLevel,monster.GetSizeMult(),0.25,vf2d{},WHITE,util::random(PI))); targetsHit++; diff --git a/Crawler/Meteor.cpp b/Crawler/Meteor.cpp index dbf1f49e..86cc2546 100644 --- a/Crawler/Meteor.cpp +++ b/Crawler/Meteor.cpp @@ -24,12 +24,7 @@ bool Meteor::Update(float fElapsedTime){ vf2d effectPos=vf2d{cos(randomAngle),sin(randomAngle)}*randomRange+meteorOffset; game->AddEffect(std::make_unique(effectPos,0,AnimationState::DOT_PARTICLE,OnUpperLevel(),vf2d{util::random(2)+1,util::random(3)+1},util::random(3)+1,vf2d{util::random(10)-5,-util::random(20)-5},Pixel{255,uint8_t(randomColorTintG),uint8_t(randomColorTint),uint8_t(util::random(128)+128)},0,0,true),effectPos.yGetPlayer()->GetAttack()*9); - } - } + game->HurtEnemies(pos,4*24,game->GetPlayer()->GetAttack()*9,OnUpperLevel()); game->AddEffect(std::make_unique(pos,3,AnimationState::FIRE_RING1,OnUpperLevel(),vf2d{8,8},1),true); } return Effect::Update(fElapsedTime); diff --git a/Crawler/Monster.cpp b/Crawler/Monster.cpp index 252b4831..a14cc71f 100644 --- a/Crawler/Monster.cpp +++ b/Crawler/Monster.cpp @@ -288,7 +288,7 @@ void Monster::Draw(){ void Monster::Collision(Player*p){ if(MONSTER_DATA[type].GetCollisionDmg()>0&&!hasHitPlayer){ hasHitPlayer=true; - p->Hurt(MONSTER_DATA[type].GetCollisionDmg()); + p->Hurt(MONSTER_DATA[type].GetCollisionDmg(),OnUpperLevel()); } Collision(); } @@ -327,8 +327,8 @@ void Monster::Moved(){ AnimationState Monster::GetDeathAnimationName(){ return MONSTER_DATA[type].GetDeathAnimation(); } -bool Monster::Hurt(int damage){ - if(hp<=0) return false; +bool Monster::Hurt(int damage,bool onUpperLevel){ + if(hp<=0||onUpperLevel!=OnUpperLevel()) return false; float mod_dmg=damage; for(Buff&b:GetBuffs(BuffType::DAMAGE_REDUCTION)){ mod_dmg-=damage*b.intensity; diff --git a/Crawler/Monster.h b/Crawler/Monster.h index 37a81c11..043a0e91 100644 --- a/Crawler/Monster.h +++ b/Crawler/Monster.h @@ -97,8 +97,9 @@ protected: Animate2D::Frame GetFrame(); void UpdateAnimation(AnimationState state); bool Update(float fElapsedTime); - //Returns true when damage is actually dealt (there is a death check here.) - bool Hurt(int damage); + //Returns true when damage is actually dealt. Provide whether or not the attack is on the upper level or not. Monsters must be on the same level to get hit by it. (there is a death check and level check here.) + //If you need to hurt multiple enemies try Crawler::HurtEnemies() + bool Hurt(int damage,bool onUpperLevel); bool IsAlive(); vf2d&GetTargetPos(); Key GetFacingDirection(); diff --git a/Crawler/Player.cpp b/Crawler/Player.cpp index 3999fcf8..fe782da1 100644 --- a/Crawler/Player.cpp +++ b/Crawler/Player.cpp @@ -304,15 +304,16 @@ void Player::Update(float fElapsedTime){ auto AllowedToCast=[&](Ability&ability){return !ability.precastInfo.precastTargetingRequired;}; + //If pressed is set to false, uses held instead. auto CheckAndPerformAbility=[&](Ability&ability,HWButton key){ if(ability.name!="???"){ if(ability.cooldown==0&&GetMana()>=ability.manaCost){ - if(key.bPressed||key.bReleased&&&ability==castPrepAbility&&GetState()==State::PREP_CAST){ + if(key.bHeld||key.bReleased&&&ability==castPrepAbility&&GetState()==State::PREP_CAST){ if(AllowedToCast(ability)&&ability.action({})){ ability.cooldown=ability.COOLDOWN_TIME; mana-=ability.manaCost; }else - if(ability.precastInfo.precastTargetingRequired&&GetState()!=State::PREP_CAST){ + if(ability.precastInfo.precastTargetingRequired&&GetState()==State::NORMAL){ PrepareCast(ability); } } @@ -392,8 +393,8 @@ bool Player::HasIframes(){ return iframe_time>0; } -bool Player::Hurt(int damage){ - if(hp<=0||iframe_time!=0) return false; +bool Player::Hurt(int damage,bool onUpperLevel){ + if(hp<=0||iframe_time!=0||OnUpperLevel()!=onUpperLevel) return false; if(state==State::BLOCK)damage=0; float mod_dmg=damage; for(Buff&b:GetBuffs(BuffType::DAMAGE_REDUCTION)){ @@ -497,7 +498,14 @@ std::vectorPlayer::GetBuffs(BuffType buff){ } void Player::CastSpell(Ability&ability){ - castInfo={ability.name,ability.precastInfo.castTime,ability.precastInfo.castTime,game->GetWorldMousePos()}; + vf2d castPosition=game->GetWorldMousePos(); + float distance=sqrt(pow(GetX()-game->GetWorldMousePos().x,2)+pow(GetY()-game->GetWorldMousePos().y,2)); + if(distance>ability.precastInfo.range){//Clamp the distance. + vf2d pointToCursor = {game->GetWorldMousePos().x-GetX(),game->GetWorldMousePos().y-GetY()}; + pointToCursor=pointToCursor.norm()*ability.precastInfo.range; + castPosition=GetPos()+pointToCursor; + } + castInfo={ability.name,ability.precastInfo.castTime,ability.precastInfo.castTime,castPosition}; SetState(State::CASTING); } diff --git a/Crawler/Player.h b/Crawler/Player.h index 8ac68b3b..b9710195 100644 --- a/Crawler/Player.h +++ b/Crawler/Player.h @@ -106,7 +106,7 @@ public: void AddBuff(BuffType type,float duration,float intensity); std::vectorGetBuffs(BuffType buff); - bool Hurt(int damage); + bool Hurt(int damage,bool onUpperLevel); //specificClass is a bitwise-combination of classes from the Class enum. It makes sure certain animations only play if you are a certain class. void UpdateAnimation(AnimationState animState,int specificClass=ANY); Animate2D::Frame GetFrame(); diff --git a/Crawler/PulsatingFire.cpp b/Crawler/PulsatingFire.cpp index 5f88d406..0e308ebf 100644 --- a/Crawler/PulsatingFire.cpp +++ b/Crawler/PulsatingFire.cpp @@ -5,9 +5,10 @@ INCLUDE_game INCLUDE_ANIMATION_DATA +INCLUDE_MONSTER_LIST PulsatingFire::PulsatingFire(vf2d pos, float lifetime, AnimationState animation, bool upperLevel, vf2d size, float fadeout, vf2d spd, Pixel col, float rotation, float rotationSpd, bool additiveBlending) - :Effect(pos,lifetime,animation,upperLevel,size,fadeout,spd,col,rotation,rotationSpd,additiveBlending),lastParticleTimer(lifetime){ + :Effect(pos,lifetime,animation,upperLevel,size,fadeout,spd,col,rotation,rotationSpd,additiveBlending){ for(int i=0;i<8;i++){ pulsatingFireValues.push_back(util::random(1)); } @@ -15,17 +16,22 @@ PulsatingFire::PulsatingFire(vf2d pos, float lifetime, AnimationState animation, bool PulsatingFire::Update(float fElapsedTime){ lastParticleTimer-=fElapsedTime; + lastDamageTimer-=fElapsedTime; if(lastParticleTimer<=0){ - int particleCount=rand()%10+1; + int particleCount=rand()%5+1; for(int i=0;iAddEffect(std::make_unique(pos+vf2d{cos(randomAngle),sin(randomAngle)}*randomRange,0,AnimationState::DOT_PARTICLE,OnUpperLevel(),vf2d{util::random(2)+1,1},util::random(4)+2,vf2d{util::random(20)-5,-util::random(30)-10},Pixel{255,uint8_t(randomColorTintG),uint8_t(randomColorTint),uint8_t(util::random(128)+128)},0,0,true)); + float randomRange=12*size.x*(1-util::random(0.25))*(1-util::random(0.25)); + float randomColorTintG=128-(util::random(64)+util::random(64)); + float randomColorTint=util::random(16); + game->AddEffect(std::make_unique(pos+vf2d{cos(randomAngle),sin(randomAngle)}*randomRange,0,AnimationState::DOT_PARTICLE,OnUpperLevel(),vf2d{util::random(2)+1,1},util::random(4)+2,vf2d{util::random(10)-5,-util::random(15)-5},Pixel{128,uint8_t(randomColorTintG),uint8_t(randomColorTint),uint8_t(util::random(128)+128)})); } lastParticleTimer=util::random(0.2)+0.025; } + if(lastDamageTimer<=0){ + lastDamageTimer=0.99; + game->HurtEnemies(pos,4*24,game->GetPlayer()->GetAttack()*1,OnUpperLevel()); + } return Effect::Update(fElapsedTime); } @@ -52,6 +58,6 @@ void PulsatingFire::Draw(){ effectSpr=&ANIMATION_DATA[AnimationState::FIRE_RING1]; } const Renderable*img=effectSpr->GetFrame(0).GetSourceImage(); - game->view.DrawPartialDecal(pos-effectSpr->GetFrame(0).GetSourceRect().size/2*size,img->Decal(),effectSpr->GetFrame(0).GetSourceRect().pos,effectSpr->GetFrame(0).GetSourceRect().size,size,{255,uint8_t(pulsatingFireValues[i]*256),0,uint8_t(63*(sin(3*lifetime+PI*pulsatingFireValues[i]))+64)}); + game->view.DrawPartialDecal(pos-effectSpr->GetFrame(0).GetSourceRect().size/2*size,img->Decal(),effectSpr->GetFrame(0).GetSourceRect().pos,effectSpr->GetFrame(0).GetSourceRect().size,size,{255,uint8_t(pulsatingFireValues[i]*256),0,uint8_t((63*(sin(3*lifetime+PI*pulsatingFireValues[i]))+64)*(fadeout/original_fadeoutTime))}); } } \ No newline at end of file diff --git a/Crawler/Version.h b/Crawler/Version.h index 7a705924..46bda7ea 100644 --- a/Crawler/Version.h +++ b/Crawler/Version.h @@ -2,7 +2,7 @@ #define VERSION_MAJOR 0 #define VERSION_MINOR 2 #define VERSION_PATCH 0 -#define VERSION_BUILD 712 +#define VERSION_BUILD 747 #define stringify(a) stringify_(a) #define stringify_(a) #a diff --git a/Crawler/Warrior.cpp b/Crawler/Warrior.cpp index 5058f43c..d0d95ecf 100644 --- a/Crawler/Warrior.cpp +++ b/Crawler/Warrior.cpp @@ -45,7 +45,7 @@ bool Warrior::AutoAttack(){ closest=&m; } } - if(closest!=nullptr&&closest->Hurt(GetAttack())){ + if(closest!=nullptr&&closest->Hurt(GetAttack(),OnUpperLevel())){ attack_cooldown_timer=ATTACK_COOLDOWN; swordSwingTimer=0.2; SetState(State::SWING_SWORD); diff --git a/Crawler/Wizard.cpp b/Crawler/Wizard.cpp index 19cb133f..69077baf 100644 --- a/Crawler/Wizard.cpp +++ b/Crawler/Wizard.cpp @@ -15,7 +15,7 @@ Class Wizard::cl=WIZARD; Ability Wizard::rightClickAbility={"Teleport",8,5,VERY_DARK_BLUE,DARK_BLUE}; Ability Wizard::ability1={"Firebolt",6,30}; Ability Wizard::ability2={"Lightning Bolt",6,25}; -Ability Wizard::ability3={"Meteor",40,75,VERY_DARK_RED,VERY_DARK_RED,{1.5,900,400}}; +Ability Wizard::ability3={"Meteor",40,75,VERY_DARK_RED,VERY_DARK_RED,PrecastData(1.5,9*24,4*24)}; Ability Wizard::ability4={"???",0,0}; AnimationState Wizard::idle_n=WIZARD_IDLE_N; AnimationState Wizard::idle_e=WIZARD_IDLE_E; diff --git a/Crawler/pge.data b/Crawler/pge.data index 43ed746d..6dbf6b77 100644 --- a/Crawler/pge.data +++ b/Crawler/pge.data @@ -687,11 +687,11 @@ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,86,0,0,339,340,341,342,343,344,0,0,0,0,0,0,0,397,398,399,400,401,402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,426,427,428,429,430,431,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,166,167,168,169,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,455,456,457,458,459,460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,195,196,197,198,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,484,485,486,487,488,489,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,397,398,399,400,401,402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,166,167,168,169,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,224,225,226,227,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,513,514,515,516,517,518,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,426,427,428,429,430,431,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,195,196,197,198,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,253,254,255,256,257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,542,543,544,545,546,547,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,455,456,457,458,459,460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,224,225,226,227,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,281,282,283,284,285,286,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,571,572,573,574,575,576,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,484,485,486,487,488,489,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,253,254,255,256,257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,310,311,312,313,314,315,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,513,514,515,516,517,518,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,281,282,283,284,285,286,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,195,196,197,198,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,484,485,486,487,488,489,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,397,398,399,400,401,402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,397,398,399,400,401,402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,224,225,226,227,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,513,514,515,516,517,518,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,426,427,428,429,430,431,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,426,427,428,429,430,431,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,253,254,255,256,257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,542,543,544,545,546,547,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,455,456,457,458,459,460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,455,456,457,458,459,460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,281,282,283,284,285,286,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,571,572,573,574,575,576,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,484,485,486,487,488,489,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,484,485,486,487,488,489,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,310,311,312,313,314,315,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,513,514,515,516,517,518,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,513,514,515,516,517,518,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,339,340,341,342,343,344,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,397,398,399,400,401,402,0,0,0,0,0,0,542,543,544,545,546,547,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,310,311,312,313,314,315,0,0,0,0,397,398,399,400,401,402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,397,398,399,400,401,402,0,0,0,0,0,0,0,0,0,0,0,426,427,428,429,430,431,0,0,0,0,0,0,571,572,573,574,575,576,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,166,167,168,169,170,0,339,340,341,342,343,344,0,0,0,0,426,427,428,429,430,431,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,166,167,168,169,170,0,0,0,0,0,0,0,0,0,426,427,428,429,430,431,0,0,0,0,0,0,0,0,0,0,0,455,456,457,458,459,460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,397,398,399,400,401,402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,195,196,197,198,199,0,0,0,397,398,399,400,401,402,0,0,455,456,457,458,459,460,397,398,399,400,401,402,397,398,399,400,401,402,0,0,0, @@ -7433,6 +7433,427 @@ i ?.κ: "ƃ~{e〪YF*1.1az"wQ}ѫMDY:s'XIRω #e8LȤbrOGU|eg\e{r4"HB*6P()&R9$drmc?,LNIb#@phlض'@ZJ$"G@6pq=r|%CrM7[g C]-h<ۿg\drTobKGDQb pHYs  tIME )]VyIDATHcd ?6qKNAFBz5kd~Y8b,cg82l0Rj8!Ka8>Ke8.Ki86KpJYL 4L253Q;xЃA4<,@/)r(q@`B6>]kT8t2RSx$RIENDB`PNG  + IHDRLD>zTXtRaw profile type exifxڥW$9vE +.X繈dc7'*CyO\xRu3O?? >g}}wDJLӟ~o+ۅO +7@ҿIo ׯ?3?SV?~V__lߏ|߅:WY5C߽7gf1jԏg7.C3_W8E}FU/JaSʓzvWX 1bI+fK5nY\/9ﱄw{Wk\yQ/ܫVX1l/pZ^&2XeH'sY"AzNXx`K k!`kcqPJ 2攌ܴKޡDvBUr Y9F J.X^%V̬@qTZ^GK-ҬZoǞҭzcp0ƌ3<6lϱ(WYjNضnq¡N>ة~ƥnr7rn;k_id-|e-L5ޭ)(g$,xU +lʙo!)gDY12OsQe?ʛoR3{=!u种؆G+Xޱܜlzk4w%B1_Ogs +s6}M(v4Z# V)k["xvy˪w B>Q/6kĮ2)iMWZ鎃ynXgL'Dl6!#4D[K2̃WjJi qZe5=q+' +ݹs!5;5r9~RLeڋ g|\ҴS0"ڪlpJmqE9C<'*Z;JBIΝ,뀺f̅Pyfڂ̥͊l]m@11yq̛XZ=1aEbā=ߚr}Iz1@E:M̥JbK~̓*,&83Hݞ^f|Xz򛲨g.Qwt} :Pqw>5*XNoB>jIJ J7+&K*jI1= 5-kTp,d +j #D=~uZ*V5@Wk(z2h͕L ҮJ$5AD 2W6(ˑkc()e. P*)ĚiU4jʀiDab@ A9Y^q?> K&#~gj@XL7TDBL}7LSEad +-Z{/˷L 4>vL|ʎP˵N ΄> +iXn͈'Ob¹thbq:n2j81wb',=^'$*c_*9yPN5J|Ljo2Ӓ&5Ы!GU_X7J-Lx+*_x"w-;عA`-^75Lr\*ѴJtAROkP1I}# nhV-4C '#ʉ(б)xE"A4(Cg;gXqP3ޖVՔHØAql:RED ;,[iu=bfJЛqBrN45%YOW#X|+F-ue!bJk%G()]4Tz ȧr<1((, Ɛ|[i +>.G&CBGL 5g!gzT8 0"6 Uhpew訡K@}]_TuS L@c9 ?bRD6ŊDº2$!#a.X%˨E:AFuDXb@fU H(I$jO琄<襸PI&OxfRURbVga. +2x5x`mtzqKHۛL0i1:W"\SQxB\$? H!^e7S`雖29-@Bq4Bm'`L?ZZL@@B)&Ci  ZjAi%4{R4L_(hwĠW zrVPΎb|*x-L7Lp"`v>X>LFᶷn%A"xͣʰ}@.oBP/VQkRo]jZ=d)?kUu%AVkT>|Au;Wsbrh-(3JP6LD eԕԇg,O%&~&jMZ:5Vةzr#) McP67[k>"~ƌpHC(#WigoC4hioG@UFb6=@W)3B4P (ާX bHVt Pk7 ;:i">}!j;]8fS ]zxo+ %U b@01zX1M/Dצ], F2\ +!6>J5`jN]c5#Bh}VC@붣oAY-WǕɯX0) v H,jᶃgUIrS ?Zf@E&#HT|-4j[PU〒vh,fLSu6F'!8TǣpUUZ!cԖI #p*a@;\_hDBwPzOCs89b"B 3>V.T\ >$G ҤXI08S +ӣr7htZY)ftbM4JprZ8B {@p84@^uQ;;z DW9Q eB玐ѵq DiفE-$HdLC3I?+#)vb-}4c'{zOѡ 00_u@n Z}/NubW,ںHa]E%CnvXFыrLS5 ИѵWi;9/xDDL@j88Ƌ=r: viTXtXML:com.adobe.xmp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +xbKGD?H$ pHYs  tIME 2 IDATxpպY]{;A!.( ,BX!X2 C,8'ge,cPX`60& ac,02\/do߽׻1c{fNֻz~dAdAd_Df 2yJ+~ P*wwwXrn~54]>{i@.YT%*֦mm +Myݏ-OgW#_;s&?SD_dLV;ϛ*;=0a=T;k3o4/jYs"Ýy߳ {O1j_6+?zk87r|tãM|Mݍ;$gJw{/Ͽ\d3ϒEAFd;.:toVGxoʧ\{H鰚y垆졐ʝtL]PTO5c|U>!rxt8m\[L"8wb1Ӏkl J#>ypv'J2ܬJ7יYeY7 9"J[.mWy&Ww# Qyw݀ 77>kq`O/wLԎO!^~>2r0_,e>vn$nԤk]?9l9`a} F_uF:?CaJ +SosXwSM<Y/E_Y7c]5Gf 3ukvnq}=|>o4yP?5A˷j$lO9LԜN>Q.SdGzH88UW7⊃J&q?y5͘\ZZBA'n}` +9\ "e 2 cdg95G"E;Hl̸ꙃ(mTFpQxCw!KDʜl Z&M7t2OFv$]pxWG$U_Ggp +%"&kQ%DM3$@|&gsH`6uY<&Mܽum7]/g%gMvŋRVfZ8Mi ]ުK/Wqe?/'qZrČzmqb +8*"}CzAW֋bљ"79&zoat|_Lf3eZ~: motGÀƁ3\G2[牙"[ĚOL~zY>zC\3mbXȪ޶#^Ayȩu\\CCҌ,Pb +:9wUCmiij[i2omxT@%9K3vkzA7;m#5< x6yM,3?7RtHe$gYKkyUsvUPY#v 9[Y :u8 ȞEξ)uYj9$Njpty%q/ wr"#i)WjׁcrGC7l汬vM#S?$S ~,\'hc؍GcbbiƓ?m!B<сEUJlۥxSt{lS@O}b5^g{ X.ubb` g5 4*w v{#Yq&UD\@XKvN;7c0LSh&:D-ċ=bz(b41Z]&ø=#[T3MHT?.Jķ^I#| ^IRI=y(v[%wƒ98Ɨe]#Бu/qV695Y23Q46pW[X(qX_JF^;s{EӀ:oś8g "PIܙ% ꞑkE:@L!5kXv@-\%piG//ei^HEL؈nRjA۽VƾZM~-A|&;'!nZ3_'2AL*Cu",WV2k|2%H.sΉ>oeyލ-M,LՙJP⋩B3+1]peh'WݛvQ6x _CpC#"b;A]:x=v)="ZHȣ:QkD} ϶؋4gJGSGz.՜4PHT44(b /J b.]QP R; [N?V obёݐwgma:Q]T?n!n5N<G~޿i/F;soqRL5ΕV+k@e FM}j7z*ݧ +!ܤ8M`6^-*So7ws]<(VR + +Xljׯg9/RL.LI'b.`rwʌ߬yi.Hxx7ѻ+~wDU6p-rŴ,AyB-v.R,mOnMi#ʧW~I7~{tr(m2?3dbdA  rfͤƓm6㩹m!) h?EDI'Lj**ҋHGh_{m#:D"M6R-lUzJT24yExĐӏPmF([ow8vp۝tBmGPVYeֹyx> .{&3n4&1hn6'wl)MJx qVqV-o_.MxAGc(@{6l=Fnh.{ᥚ~`[6"KOf9u$3.^T kĜ'L.yT~lx.Y4чFr W f)P}esM6c4*9G9e 崫k7wD]@Do%nP/Z Zb!.{!՛+ 3 +-[+9i #uaNs3eLJBy̵=l_g㦞Q =B1JFD7R=r/1^ EdGN3=Є@!t7t( OaV\Ӟ0&N=g֥gcv-a\ P+@clGDm7m!dUf:%ZQ. b!DT֐lˡcW'5't_^&@]V=t.$L^HWz<2 ~-#kRY +J!qvB1ѩc{rcp'-!Сl/9.0ɥnj}C2h +bUzl7=1zS#VR(xk2Ԃ-bo:=1}X]~n5?_l,&}?N m>G=仌6)cx lu&ɳG6$YGNCj"|W?OpL 2 SXˡ6>,IB5M J1Q[BpPwnQC O~+FNjӢ5j%({Al|]v#ϩ!!y xhy"f?-%^,cJJpxϝ_=V\'/W zW"O /Ȣ@w̝< <;f?>4fPQhYM"wΈ~3KBsVTs fpYO3!߿X!p]dZ0.e!3/=6^;n4F(A9#[q!<}"z9^xI-KkH6ۋ䚮C"7stYSs +WH&uͳ_*ʳӌR['?Ln\b$#.11>xwJ?^NaXA0o\_hs\7q]xI+OL?:UQJمMe鴷ոhz.g)Wd+- 冈Q춝%7Ї3{@Q[l>#= We-.NĽr1Mxh#*L ~U̱sUe.x-bc xQ*T(hORg.xHKfJ2l 8:%ԷU;?/_Nٗ-?O_nO\x[qe\@dAd,:625kndDaLv2uSU{) +}yU Mj{6˶o{{1\yi=C$(GR+zz&p@po;; *D1{z|.ȶ)(FRY'첀&0t, $d?n}K`Y<+D>ig2}M<=B7 ARfI@ b8?fpӢFpM2ݏ+T|o"/To-xvW5I\Nky&{NJ #Dhcmby8\#E\|8F\aw#R(N׬Dj- bhڶ؁sUړ6Zǖ]Cb m_i4șxsKsEkDjvXo:.O}%.XoxJqjP&v؀%ivYۺ\lfAr*Ío20ߥ3x[۴1yn0T&p + +l/q=-C)E? ԊV Z`5rQ᫢ٳ,|0iQ!aHlQI͊IgV(Z}w!b< .ML+n6Ya庅d=g 5e؈ VN? +7Z:i u sDzLbhs@4(y?edy1)]A ȯQjsB\Upcx,Գ4K!X?n5Uh<#f/ ȣFvbpHW3DoL>x':\znܞvD+5sR b\t;W@oΛ>Jle7Ϙ ƣdU:B1^[\apjwH#H|vyyiFMVlF'ϪyNG 'e~ IDATٯk%k8y4KnqA1 G1<#i""M_nl ̗NL@<ω"S+Κ@XZ/F"GDnj='~T[1\;~EȧJYEf/-GN,P"Vn}0Ld*NIV6kGE󍕑Rg(U[@n*!txG4T +D ?Znnh2ծ߷t^fZ 41/u( +hδF9FV:H IS`[quIZ("5^΍@n +:(U,gA"P62~ ݶ԰ *P^Y)S11LTڭKFRSpy\x=<_&5 rSR!rXMl@e|6A;M  BEvFpi2&W^*ԋpSbl>*u1KY4 +tf)#AToqFγg9Q𜩪_tۥ q\ȶbg=QRex\JIVf%  +y^\IplGMi˙\(3Tc0{K\UCraۙx.=l7P|#b6c1v5_9]H @-/tC::Gxbjxȴr,pVw%ju-[kpgҶzu_oC=2,Ogv^g韨lz|昚/Do;nD\fz1+VB)&gfM l)&Qh\(Y#o[}q|.$ +…rVޥd T'-h3ll=J;>x /D_iQny\BOL4b+6$ӎ9N\Qm8grY`b9Sk(.@,;˶"D@eGdD<OR3&. 6CN 4:)?Alw˜Oqpkh5F"MG k: Y)3x\8uLh`Zr/ʯO!\|@v +ծVxUl7= pǝ"v.ˠ#ޚnPg1pOL,2ĉ;Ÿ[(jsW9N>/MUS?L6fg]:qSM~ 6ܑK{+5I+&@D1 +7 k* Ieцvn&OT+c(Ψ/4"qyEЌe sRl7\e(M7yr'S('bQ %L^9}}z#?q{\a [ĒYyufjTw k;> +Wʣ,7l1|Q%qC9kBGKvmf hF).9᪂KK-lX%m3qpNJH\ӇCvhk@ol XvӢ\N(  Y]cΣr3d3Q81Q^@juj1M珲*A7CN>/ݢăj^$"J1\sV^DQFsNvJq"5ۼm +m2A[,!`j'KAl#`v}Z4hq);Qk13 Y'(Dh|MEYp~:ﴂyY< !ThwYJC/u!:6\"ʱB2[OFTQr 9`dPr!vL]wmA@07Lao!s"X(l[l*쪣T\` rbW P=6PW`7]4me'DOzwSv6Z!A!^' 0߬Ej_4sk21 2 L ͪ.g;UޟvέozJ1Td!\RlE#"ј)Fp4BMi5Nmu+NQu4ʩr&VMI|Nojn`F9atNو678MQoBd5YnȀsZEf6,R@Ekk<'}tE9lvu2<.jv޳mz" ' X +\%`Uԏ)pT4W2(*pS ϧ9v%fQ:~^7$Ջl7D[2NНxwSU&O!d _씍(5U.wsC~ 8(@єsZݮT/C(<^ +h +q'F'؇Q,?b gG۔~BHJ |/E][stݸsqH'rL@ϴl%vQk{~H7E~ Ga;3q+ݗ +4ox n/L?N)dm-'AYP +o؄S/0:=A >!^%Rф::aCLmpzΧrv ]!I^(gB(Fqjb, 0ܐxYo8wD<:Y-NZ]a6ShiۃU}1@X6rrx8prͰ]Ԩ>z?͞i)`B( qxjBf((pMU2pQI\)Q?OL$klqTluX?Ͼ>KT󑌠&N.S"L9c +ۊw؜l3pv--aCUj,T8/N]LEasճr:,;PO VQ$!k^h}:x*da@xΈ\!+AM,劉Kmx!ҟ󍛧%5#{0|3͐wƗ{M~?.V3쐮Xk;JXRc\}\n{'^WiMK?:s)e@Zxgt;xCID;y xYgTp T~"뉁PbTH SvǽT ]ş(g瑃UN|wU[ۓ]HXl޵_L}?[\gm[}{VEh&!9H9hn˗eRO1sl8N4r%E\ʥޯ%,- 8G³jY?5\<uY KHzȲAxɼowebdA?zp{MLu7C<F>vƨV:ebi?g{e{ԧ)q[щPE !C\uF[alg@m8S?nr^ĥN&(iʹZ4&H=n%;a{`^^уdopQȠv7'ԈY%e܃}Vڭv\o|fG)xSP/6*; < @pA9{?I"r kcٛw]7 >/Ue N =ث|5 d-is>g!My7`kզEV-/}JMexz\{Ѻ*1ޢ+c&H,^aVjuZEIjK'u(QJ 7զK4nkQw|x8s}y 2x8W]2 -,FC Q""ZK62n@iC3)FzY!/؛`ς<" DC+}0coaw-1SrvE_Kwv3 +RÖ# X+~fgxi_N%Nk\=d{3W#D-c i[;ۍg uEJx[|*Ṟ7(]38hߪXWж:WٌpW|wcm ^̠P;>yy4QAhA'Tl!MWӋ Ӄe ǡUP.+!aerQO(R'񫬇9)+7bd~P~.w~|{E{ @} kkSqp\Q\Қ%,,vpsf&&YPsi[. vKQn]mZ2q.Z[UI1E}0yze]#O4o,:BL5'ұ|5Qfv"&yf?C*qPRpٔqƼkiKjFm ?+' DGb|0!' {/҄ ׃fit]]U5A+X)Y&vx ׮b 4Wr^Z ,B{H,Q"K5aq+ +/e7aPpfbtl|@σ +IPqO-ROO̮Љwc}wU,']2\եv2qJ>dXnM0!Oo$"fUzMtCloMUF<=A&6˃܌\)SUQ{X|@޴a} } Wl1ʃ ;]\OT 3xOnO[^MEFyWdz*-wWv!yc]ewb86 S:d\9&ړ}oe.??ౙLg47E+0:m|Bpn8A~R2AN^ @ZVް h6`eT/D,JT˳迬 IDAT$/D3P,#^` +qgىIZx;O!c!1KZ܅b|O'^:Q)*ip;IRthr]O>N҂ y~3!|?8y:N+\vQQGUyߋf:Pbx(..;Rt&? ȩ‹W''Q7rh-pA2_+ܷM(GCn(*j,aet|X!n6Qs6On\ͳEdϮCz]?B;Iչ;>4=vrh =$m{ȇO.tB ~-ta*qB>!ry݃N[`N7~?^2wCr\.թyG%.\Nfց{OdBP?i~ߺdLoh*L(wZD}h8D0nN&z7L[ȕ&,i9 +@5\{Ξ{T2k ].t?8 ]#}q\` ggiUo +͍ g#ZPvا2'RE%]3u-6Ah -jE^a8.R3dL>󃏡:湟j`-Zhs m-tIR\Mq]D9 ܶ۽ql¨ n-&Tcb\enOzd{MFbEķ|\{.@ϑ>Af*YɣJW==[~y.r1vWt-#)h^ГrTpˢA\37cD\~o|VЉ֫"\ E:󹝏״>/u8(!:Uj!ve>q7XbFg"^Y+Ϟs 7Poȭ2σ4Kˊ沸EB`vkV*z\C(VjmpL:Wcb,=2L[rm {u!{. E"_Bwʶu>Ow[6)WuqTC~D 0B\$E(fɷ8~R7d{c]?eP +a8=!fy)X HF9W-D]lO3Znk.(zŦ`&6k@Eˢ$S9qpB*(F6OxХlFsív4v{l}*Q!oD! `J(frkQ:1n^_B^0^eL"RswǙLi0"ϣPs٢=L|SiYjwBnZ7GK-c-s8=59Pzornz6%9ȮCnJ |{o[V D CuUɜ;f> C$ftF@kԗj>E'`uЫPxu)l i1;~<v-3Qn&z\r)TtH;rgH;ZsD;G]+{S.z07[c g2M-Dn;ϫcNra-2b*U؉,p ܄l kmGS<0>W}9D${Bn,]D?%o2; AXj9/'|M}A p=yi/rYD!+m29Sx$d9 e"fnY>b8{eM4I 1le"-]!t[rSlر.A%Z$wlR-PbQƺ6gqV +GqG5tm;۽󩻍^ծy6z=xC஫oHhNCtv?XbCv,9Gtq%Źryf~oϱb MF^P?q|}7 +h2r?Do{R-7ƖC6?7׽6ovϽ-p5%yڽKCP #oJ^g5X9h0d67{ѧ;L0rjBhC ~43BAp%sN;zhx<)|21l*>ɉ\yϔ{ +**IWr8sx"%h>el(Fȉ,{/'QXV[Oȥ2BpAgHyvr ~%ޣnBm>n +9ּQ +cAa^y􃂠Sn* %wO:{F[)7"*d) =I2<W~ bBqɴ9j.Q7@R|GhqTLhQq_[~ tM|bb&=cfq-T>xh3Eh&W$rO~&bD|$3d+*]+2s o(.\Avn]Aq@\'t"ez.wFys<&Aw!V.ۀQʵtMvo^e0h-'r Bɾckm;Iѕ0ѷs`w(o}i1 # C(a,؍#?^~m+Zp:0UًQ{ۯY5#1tl+z;n}`&&Z#׈RWoAtѦ47"x +Tl?'th&ݖ7K!Qs͸+(ʚipG)Wrovgtz6a蹉v;Vaqd琢pjTL,*2Zl,^TemBuATҍ/iCiW)'YR Y,~XtTlB1Rtբ@& &wI[?AlvW(j?0FF>fĖz xx*O<ߖWP9M #;$oOZOMɶl"j%"LMc8|;B:$=u>Qi/_9)oS%H5 xbh9W UFCi^ LCork )>qt6Znk cnˡe+Ej $,CS%rw$:i] lj@fVoyJA)[i[ Cʁ)^ɘ !ȶgِ6*=^XFLMD&-.c:ƫb:YUZ^"m~;U(j4yPWKD۞0t_ 77xOA I[C[pPA=PAKdBp#76w34@l\B@N+ɏ픗,\)vd@] #*].Gyh[붓@~+YO(Os\> q@T"w DZhvT b(tсDxl?Cn;5W{m M -=(.j(.+7 r]1Ff徢9JYN%zھ!y ˭E7]+?@bn6IwJ#5v-o %I஡08/*"=x@rhšpjv &(>v<'keTp2C:smG +N%;%Yz u6;7*#O*Hՠ_h[E3eA@e}ˣ|wen{Uz1LM\=aŦsyz[lt%fr_}n7JpqH#wS}ib،E>9v"g4&0S-[]ψl?d_($WB{C6OH^{d'nx-+׹TCnx$E `2RF ECGG]-qſvF6AO +@=];v{{+d')Fdy,$n%*&xgOn1͛(M +=TSW +STz̸ nHiˇbfA6b n=(>۟j٥P q^XoO1{.gkkWD|q]W~rypA!뀤v%5) V*%˕Uܔt6LrryP~b-8~;dF=BWyq<(D%FTw>l} ܇9MT5 ~u+b)/r?(&jxPa+9+FQBnjI)LGH2 IzML!Z,1}$b\MÍIPr^`Z2[b*ET`쥨lBҚֈv>QBhb d9$֨ry OuMv!Ƽdϻ4v-B9/~H!L V13*_N\MQ+:w78c/?~ꂫ(ךk1;!%j^uAF20vP~}6Nd7dg3;AC>H4I/-2w%Zf2mGK3\tKX/Y(y*:mF/;./ ʝkhk>WN 2N/>2El~#Ր^ &aD=:Tj= oUirӐ]jG Ay04(Vd.Cj`!Zj̈?E#DztnExsl1M7cwm'k؈U.h$}Qфqށ/ (Pn]#ZvNƜ$5 >y#ȳC6kXYl)Q`GyWŗ{:> +D#6 n&]#]C +1~VMwIUQ^o]D)GPfrg`َq^BP%lp|KՁL^[Lk+H5pUL}ngՇ(Xl|[\nbճ$;EkD8 *Q\jLv7]gi8"6TU;7\ m+%Jx9ցBbQH:!(N r]0.8/Acy+Hxm3Lahκ*lp^֘4}|E*Z'1$Gu<8jϕEz\apRqG9嵘+FT(wv:dO|b|WZW*]P:>+Z{"b; S?0nZ7=)˞!xՓhSyêſifJ?{Pi h!7ۨ5ցI:ѬD>IHh9>U@'e vϿBaG)O&hwQRhB5tn'lMƍj"+I-]h۞ӝc7rnslЦE@z5 `Sbcˑ9 +PIvA1tE"; Ey h;=5(oNY%zQHо{cWv>m6 p0ʧc_ +6@l+|{)L(ݐUjM5Bl7G~gM]tgk0W'%mZEZ}r)4MC_ l]`LC Ҁ`KlSrW3"Dbaו +Ba",h=ef][f?X j\kCйfBJ`DOW\ :v^p`(pe e(>7n0HA6C.yqRCTmk@Gktr0~>z!1> Ũ-9ۄxh 7P +% G} +UAHf<>if +ƭ_ىn[y)oE7фn lfJ3ƒbD7od/)wڽOk[QN:h{Hr[t6+QXZNHTB|H즜X;&xp%v` +t\`Zp&Wm@T˩g|nD?DDӣۀq͙Mh\1d-R$s"m*|(|[hb!a|UBz5L|:o3ًE]cwk킰.fb{"(r9⦘}! .@_F¨ްFAm#ax5A$LҔ/-Xj ТW Qy1#`X +/-ZLa4 y' -]"E,! FPo{xHgvgwҧkt .~;wGX2JB["Z]lr`Otس~߀̬ǦOfr}A8)vm >.@v\Ea2FzQA`șoI]e_=v<ߏ5Ö> 6-H|LO#x(2N%+(:0aq +l퇨Լg';y'j&OR-2r*/n7 R@ yI4AlӇv-nqDcp|BQV j2s(ct0!l ELH%ħ$W3ш.2-)u^򾸉} +b2+I7neO2r&=`dK J7 .gѱ:-tT nN &,c^e-(gfN]tp;$nW?E Ѯ_$t1ԿDRG2sNs:r㣗h-YwB ILې[4xf1ǢK%v0:'A6FeE(e=RAQ- +8/p+"7@#SA| l8,t>`7ʛcFq3 q f޴@F.#oWe=흓Q `(pIq (%.p =L|-̛y :Wx$7gA6=ټu:rvD[ )֏]kU _L}B}Bu7 ąT*L{{W-W@vۉmG:9Gݒܫʩp)c7aDhQy硺=\&s%~ ZqgY5KÛ)~7q Y3=>4TSy*OcʫVbdIHPUZ[ +jU*/AP*NB.5@lz(AQ\we| K\hwM@3uՄZ6D;6w.!zI+:i[h#dPMj|qҕEo'LVp:y&0OA@FIԠ~yWz <b]̒;v;D5Fm+q*ASn&^cOUWDFsbqEb@XWQwWTS5az&1B -nERS5f1﹏hhGtʭ.:4ZEUv nSB׋q۾w6\A%9G>:ɳL#TtzݦL2d6&4LTd ao}0|DF9Q.f] qA\+$;5Ty=1 gYQ*zwh@n 3S:Q-x7MAte(ItڮȽl &H>FJ ~D=ٷ D]n{+'0ݠlA +1n!-mp)i4Ƌ8&ubDo,mvGxL7tиSU'<؛'{[e~xǜ,sz^K5+`"zJY5֬j5@Xbk(˱ m1xǸx wrs&o߾s3}裂s"N{ʯwaB*nAtXgF~'z;n%tzj]oN01;GZANkN]C3- bXCb#Bo@Mc/r+.ApQX~O]wEL#kT٠=-S 8@(fW]{tתr_7C8#Q +eOub*=;1  "X6cF]#)r;tcc\#)~SGI)ӿۣEf! X>{TGQn2B!>#si=,K0k'O5Cȕq1ս'}-W:MQQEŧfL4$wJLԩL U3Ud1:3&/b͊l1^LiG?#tXX +XAK _9:h!fa<s(^m!/J.~¶ +V؟ɰ4%%AlwFd+:8BiT%Y 3돍-}o{xiWݟNv?L͞6UV^#lS0Z4('6W(v]4OE *Xz1wZuQ7 bv /"uu?m49`;@tFͶ-j8O v;ehZBA_8UJDON΃si<6k#Dmv:\OPJh.h/L`ȉT}BW~%:kPbFc!Ghco6 w r#ԃcvzM.7-Y P/N:7PߗHѰ:؈+r9iFqP!CG9yp]VtT>gPUvIn0J})GC>v[3a ~oBNL5zQ.db,a6蠔L+yV* CT\V ^.<܋^`J| ~#7wnZD/x2X+I$_#ivwEsgخ6CK|D WQ9~ψM\#Cf͢sI_ۆ^B1IOD>e &+j~ϗtjX.@lzCtMP/*G f>3͝\# o'O| ^@n5Wt=1WU +Do],53m`rZT[(1고67X.ӿ|[HxSFm9:}>&LziΘ'䷉^P/D\Ifk+iJFcQuTNۭ`&wNԃ0211Gvz͎fy_ס)yJ?oCumaѕ.s{?-  owzg|.WlHw ۆ6ZVy1Ffy%| .%2nHGAEUCmjCv/ƻP2ѷ)ݟAlۛ7AwRQ;؍>7! QluBR>u`]!5NR8-˷ +^08nO0@5$b9J|2 ŶzT})YqsVJZ1;2EKf?"OG=|u~?W26GŬdF})|TP рC+)rҴhFy"Q]µQHR Ҡn@^w /Q_WE/1a^o0f:Pg'fw1z-2il=E#>c1ږv`FΈB dX7nX x˧ .ьף3y7wAslWq?)Q{:\,V dX(F%햹Wd9U?S U櫢13HlBXfAg`;kj ]}}Ƙwa%-yF 9O2"^gGg'IBC6vy c@I'̖ge6OFzҐ=vGsSLs.juEh(XN>V-.X"6V!PUA3<.?`P3nq{*W794`;oBt^d6|\tku^D nk▷qgbJtɺFqH^A>vgS*0aeߥAkPKYۍt N%lTGhQg֘[[؆b% (y1v Mr YIK|q$)%7Iפw]4EcߍPlm1=H% yN)}Lr9CT{{ʽ%[d a-z=45y17[#1to~ ɠ4"y~I@kEaЦ wѪ]Jo>Yuޕȕ`~9W%zVsA^تM ߝDFBy1v ֈ'E D3(/؍&+U7J +v2.mюsMwɾ^^ew`ewn7A*F!*ցmŌx4sM-p#tћqf& 3ZN/vm(cYQKrzR[K L`.a0^}s IDAT7{y0~S|>4 LB#2leiq[+(S;?;Q-@|@v~4en(R4J~{MPV{%SAt^=H/Xbfӂ3A3%Js̋!x':qE@bm} +.bS>a|o$}d{(Ć-`2zvCAP}-Rb +Ao=et@\Act}9&v@4T~ѝO7~EGyF_ac ɾ$9KS* Qo>VXt[сq+ +E[Vvnr{uJ Xq[{\Tl)T*Ы:a OUXm _ĜB(NH8-@D%xS +PYQDZ/0B<(JAȏ$Ѷ~ūLF9TnJdW'SGlań_Xz>4q;(N‚; ?SB$<;(_Ybr Cffɪ^GͳSWNh׸"C-2Qv,D/DB7VKw@u'fj^XGVIFMTAlhs8% BrՄ[('Q=H8T +!W1x A64%uFFF!^SQcxX\?[%VAlf7vGW*X"6]!.4*>9G+RU'!7 dJ~,*P7aJbP]A?C%حuQaJpLZIW(!;6LMI/Vw>ƞ]0?@FXPH&Q\N]#) .K&okbo-5>0sj!&J atTTm;T}@-IDqyRc%?΋ ̖|:~=plv!Oڝh?dܦUHƏi,;ĆudOb))2b#:ɋo8>GVG F6 PH P &.OxQ=!E"q/ɡ[S >I~W_]5?/GO `fVm:)D!Q%cU}&jE +zu_0'Ӭ#4"u;TqW#*QfkuMEU|ܭrv%SA_v;CB pPMbhY:mˤEb+ `Iܕ (9\]˂;= WT]F3.NәO[-o7:> cwn=d{Qp'/LehqV,<:qЂ +ۢ{ \Ev[/ng=5?L'v4S59"+*F%F4UVau.odÿt\w^B^EM`īLo:=':wnHƾN^+`d3T$3/ߏ>y5Fl6];\"띧8?aD)J=rb0q +g61dk2Q 鷣3wcbZ' ?oշjw3wcwvmwcF"J սA/J˫b>:1?-6 ԭnSC( U:KyrߘS1kl˥a~ b+Ku QuXf բ-i\4Ao=hwއ'c;M>jCAV{&j+L4{]EnƈO$HƞL(婋ʆ[5ž7S^w}sx㮋*^/E*x I y5Lq]`ˮMLvp^HVTsDF!089{΍om><}>@2y&BҞQ]r+Y=hqF߁;] ZLc{ϣH.eD`(VyOG˷OL>%=Eth}Ss} ͋5yKy+.xtOb.Jl 2`bk@9+iEɈ (|pz|MI2Xano^3~UP$D0v)Kք Usƒ;;۟X,DUGtk3<_G*RWE kuG-޻5\/'(c q#F!Hƚ767 wk c P4[!|R*9]n 蔏3`SkyZ\A`ՠ()U>GK;)6z&?`Jn2!#EqFm]@pAޣ<*M>hs +KZ"oA)P0-WG0.īcr:^"Z0fuucu: F[mqf z Te +#aFL=FvkXL֭qu u]Ql#=;B9>(%[7@7a4{U2,{ TRA,&Q!ccl?aA] E+i``g-;M1}#hu4YB'.M H5u5oTc@Fm'v MvFAQ"KtN|/ǖ|!((c =bFonG?:ajjD k}6w- A~:PA=|ET ܙDmMAߝVڝ$c?L §^A&*R+1YI5HOd[ƽyK"bg!Sm:!{΍Q\Sh1l]. +_ϵ}w!n+P.6U~#>4I33^N „>5Kƣ ý@'GTHxܣfػA +btkT%1A2kT:"@B]s!8B_e vb#ʶI_k;1f{AEտ^/pTG$q>c8de{10O]ܞj{G|ߎ}HbD|Wݹi++A+Ю-p5EdWaQ=:t6;] y\Sh;K}O!j-$l#duч \!xE -ȍ4*Sd{8Z#b&I$mYzv^.%,ä1\?/Xf/D,f& 7h?V¨u2SxEAH!H<6AV̸W(V{OZ09 щ I'^T2alClXilf|{rE(+Q=iwP-TnըVC~='(f?iZŘkAS<# > y֓k̪ ^]7d; MvneWGM5f(7EˉA/):vUh/LvP-t,>];1NjsC$Sr-Ag8\2[ɱ3w\!$Jos`cD%:C<Ǟ 'q֣ԇYO+6jʒ 1\H-\sc$dZG_itEfѸeewdvy~%{Ŷً'e ୯' C'&X<k`lxt:;D[0޵Un,z1dvQ-KQɑ@UqecM[l?Vq/)w}l(%-u<{H(6>kmhMHAa| |Z!OWȢÓ׻!3I}dY<y6[hݘ/q @1$[i*VɡQs]6w"Tn4㪼ĭ Dd6:7/&- dج cQ[U7;)rԑ YҞa cU\wp-P0i`.?$Be6cϙJpDͫ&U ust|c0n OG!V> :; 9|{tēQߔ4&KhAgQ[@3\r$ՉO +cv!:b% WǼ2QC@&@;& e^[Ț~! +7pcÅzisWWroD&w7BE+SETe=g:?pV,b]sƖBm'mv}lTb'aNH$Tv $o.w=ygc\Q~v `W1Z]Q_+v3aID3QwM枍uyiOщkIXǀ|5ZU]ĕD` f ы:-;3Q4q=Bɿ0%~M-]+: +p-N1nؾD yo(AWsKIF0J^0 cv)@+]J?-&s t`fb8 j*pSm9 ob}$] :QC%âbc?Ip"ܘbb&{09Iŝ/HhpsQ;).a 6*wz:3񨼟u^`Y~;{t5\7hz~Vl\ XE q +OhWKb8M| :\?a; +ZbA ʛH/XO(6êL:/+nPTpr鵙S[bX<3 +#QO-@Q +ׁ.8,Np_4ͮ'}"]A71O=wֹ0JGm +~BVy2߹9ˎ„7^+ *x0Wk܏`gХJ0S9&Z 1 G`%ؐKH'x'i~;NL|tѾmrW| a=)(n uвإ o-ܠv$IWL2b8 +:(^ZjN0u4avFY4i}@aȂG?I+@ E!PI1)dƸbl/Eńm(̳v|KR-rxrb1Ia%fr*Ǩ`')cG!?ⱱ2S"XWR˳tcp 1:a/M#1kȃ +߲]ZBnAǞFU[//.S; #{āKƬ'k]:u^^ 6C0ZС$#Ԣso8MU>GjKh2!;C^lK /-̭ ccIyP5yr.9le S#$+r0a@p=ˠr[L*+rps%]2a]%˜g(\DeWNG-\=k'>ӟbl6Q<)䋢R0!E8OAA/EP`|0DyNeh7@%J,ηJTn R1Т#C+_0((w#??emF}I团M ΖyR(x(vJx$ϓD3s/\SY\r ~Զ ThIpsɖ_h|}*PBOx h\-V`:Zf#D+'te`w4LgRn˖?vc Bj<@햚^vlwb2Z=|x(b\B!uW'wǀHUvOk`gd2Ѕ(0{\#3כD-{DO\[Av0&UBSd +:n$`%If;lop@a%0^`ědM( CT2B(ж~n. Y7B)6 "#}XN*i*`)tc|JJQu;1;7Z{4g\ ʕ+~0;JPY֐+@eh'E+[Gy 8B4)tT!^/7ot؋E7ɨ+ |xm5BA79F~ 's/234ZMr +V$zt)7 IDAT|9KAX\P g\kWeC)Zķ{!Y~/ EϢ޾9l~H?-L/ !z_ovf0+DOM\FhF|?sB>  sdo/^rw=އWV!y!@y}T"ESQ) hn$Lhvڤ)a&|%Q#^ FhGe<ֹk_'LmOmV^ݑ{埦ڵ%_ h46bDT5%jγAW w-о%0DlRBC(vX޵~ r;M\AwSӱAñI=صD=`qJB7ջo76˪[y繟"eYXeQr7Xc%@"ʱDkƮX#F`y!D%/˱jPc PcPu[||]2]9k?Jo9u]ٍuv;cg-Yq._BK w#6`k:.bY'&cD]}୯ZYb ']bwROto1]7Z~_N܃^tr6q481J!5WTKgb>9&AFd| h#)G1FQ 2 & cAbʀ<Ü질QbQO?|C/{BAaXn[rb0}$Q*1In`?Qk2=~}:v3|e%>,μB3zRqIu +ַ}% :nzn=7;ƂO4GP..fȻi(@~/r n_£.L Ekt}~8pCя"bDKu/I $/b`:+~s$h+ 5*Qa¢=M sEjspg3(Kt5n3d&ML +ΫQCfC dOlo}% =P吏5h,4Z6 +<~_JS|а(dnToE"8i0#\6ù$;]'v|鷞 +2T0=(l[yxB[jx7ÆFn8jXv:ջn*;5;vc37@)_ {sǻEw=7Kt]<3P!:@~VƢ@|G&q}e ]|e(7π~GE ɓc2 }8ZjDe F%QKIh|p~]AUDK*j8DL9K w@}h>w7a[4-R(ImH? _BqW[URrU|0eh-}`&e!ږNF@eO)vS@/SC=cT70Z4P ~# db8%ߣ0!:oP*,Pr:ab"oRd3ETz2D,2 Q?J+F)n& +Er-6 +#{7Eהǜ?nX0sv/d!oklF's }u͟se0.8&0e-1/1OJJ@q49-ChOu̐{VsO?o|@LD8O]kԩ U;=6j"2Nje?2^AZv i".7J5;`NO镅*Q?!ߎA0@~9MDO\ɩA*di* %H1þ7XOJ\>#̭A]JWȟsp<7U}SI@%AW/VġI:ON`,\f_2WCjT~&@MΙ|*ЮN@t@n2J~̟ a.6 /éwe3k?rAOoO[,aV{=wIO住.4q8 +g WC܋m Hʥt0ٕɽn +I&E=&\' ӓv/Bо rS 6j%&=:Yꮸ@h~gb|2}c +*0;ekģ]hnr*XgYiPEhH[n)(Gy7z> Us)$n˭`lT쒤LA+ٔՐ0qz#T?#׆~܍r}O}#Y[ c"3vb=/Lc$HTPI-e!]gp%Wp"H]b42?}KAgPQTQRz nJ7ls|8 mhyWFp&L=e>MT6dnQ -m>+@Ms2D?LD­6ufۯEzƗP= I%Zu}<*dalg=;<{6O~2/L8!nDg3e_->Nًyb}>{q^a_A~r6-c}=:f!|m0S]k_H$A􏼐r7n%Q?Ny}&LJ:yj̔h&ch8 F@l +rmIf`d`,7d?tQ& rLG7/Mw-N/!p!aD i|HSJ[*]!JB8'rKsкٕijdⱌ d&^3_tσ(a,SN.'kO'_Puz`b[{A&ݔgNI շdgC_!tU{ȷCTd+BdX<:73G6|[]1EĶ +w0J7K;8$A'X0JN3/ (3b1{(d>&%u3L;ڞ7wZ }oQ%5,$zDYt:)tšZfwJ<_3t‡ 7/E+*-3(5U)F>(&ى2`ʛ.Bqᄌ?PTjfV,P LEMAPn}&|0tǎ%\ Υ EOƈēvNOLI|M]D_eND!+߀h_ku}mF=x#2cz~< }_{nuuq6l^qSj{TOnukɭ8,TN ݱ;v,1ģ}Ȭ$.)l xN%\(G #]'Իe?sz\C+;hĻhTqۏܛ$L"F('AvG~h;pDvf] dwnl°5:+;WB~?fx!@;=:}3 7ý Ik2lk1I{{$ĦpIRbU. ĹSvXn˅ǜ6k&x}t%P0G5Rq_!<k`>QZPKɝbw2X˟DCӊqG姓O!!Ch9BCL#Kms/d~GZt:IJC։'!%h/gRr@wLxyF 9#Bf|TOPD]P0~/"?ﱜ~ߜ ~-a-ybU=h)ؽ]b0My3Uϣ>k.A7TQ-],E*!ּd[vk b1䗣vH?*nr2GS G^ JF.`7 +{@OթAl}m'?~-#)C^Ԁ~u]ulOu(Ͻ!Rfč`񟈃nl ^[AM4uZKDFNC$M4*NGF%7%WPOXj r%hR`|[aўWC~t>Q۟'gFj +Jk1{hr~ݛ.3e袕:ղR#QC 4#ۿהao[wl55WbMRrbqeB@y#(.rͮ[­_r?ة[sÁgRWF]x-nωhu{8btn#}wFt s~FGlk`,y*iQf\)GJ,Ϲhl7 r %Xxd -<aPzn)(J~H﬌A|LL%~U+6S|?*%?:+nRL%jVG dRE^GJ205QTDPߠ`l$[C \.GA/$(/P"D~ +j< +ɢafW  +@|G'h[FvzATFM{0Q z|o(gmޥAbILу2O!qȭc&zJ&5ݣm^e 2{} :}&Ģ+9(?jޕ3ɗv! ?s¼k BJ۟ D*7D'+1%N5c(LզM!{D5J-YGua(ǒHn5.5=ҋr*i fmthZ+rtAJs]1-i07Ѻ$w!\& hO:#[NJēN?D7l#!yՃ,dD*)Eh)KEn kGLKg:>Eo2_mn.z8ט[rP-M]?*wm6$"ycETM-NU1(3˙qwŠ'4њ 'NY16B#xvGn2SDixr4E>Clޗhu1X+s}? :ŮՑ?֐{}N}*3"`H^Omkmڕ]dZ _8$`Af&(zG'ֻ`v 8!f)@t;]rpՉrh@46=:C:!{~D]@)D5qR10 + +9@W , ׅDPH.yEus(T8Wl%c'ǗZ}jF}F:ňs@ʷ m-nQ=@! T=<~ډ@hJFv/)EOc}7%4(jفk|-u8Q$Vp 37aEbYHA!z4D8A?ڵ4}eЇ7i0錘G]=wɀaj_Km?7Tݙܗ 0!+wʠ133^ q Z/bOIҁ/Kd'dOgIvր\% f:u0l=;lž#C坂q3v`V厚?}5qʨl]@ӽx7C-|_v)_H1H] buQ +QuBQ#خ)gATF֦F k&_ˆo9"Kxv ĮsݹZײr߃ޝ9y͓qgFtr-ܜ 5 c@o?uUgߙ2C;5;vS6GBͺ_ͥu*߻ݐ!\UI+w_1f{ӯ R(у5xے\Y ryFU-%`vsa|8 "xN;#"ڛzvUnE,D`>㿧Z`F>{ F>FXK~TԈӌYM͍<(ֺQCjA  EM (~b E#:ݟR*'Qvg D!p0[U:knu%W\.as{ҳE/* *E#Z+ +(IoNԒ5sp#zo@v"dq+YyYl@9|O FL&vtS4SJ7ш&F1~~ގ'~~jbX{b%2h̽H*7~f)J@~B~?۬MN]o?K[??^`/m򃼌G7W\;H +LF6. 6_-Q FRmWR`! "yZlpI5EX}z6@'%s[vv:ֶ6K94qܐ=㏡l`/d=|%='(y~DX\,B"vE6#JE*},ESTwP3,Ψs~cQ/dEurEVT~p{_ɢ'\뇛;h8M  o"_]&N\mhv74RB|Oeks~6ֆ\}oh +aE+:]:&h #"#n~~WlwWyr'~mFlo1+);ߍQ3'KtB&&X. +Ģ@F]} 'na>'S7 9[X=,7D@(?l/|p- } >FX]h%gv^ +(jRtH / ^#A*& wσ.kB]\w( +{O~֋$ oޠl2Qff`%շ1|E[~&~>ch3 ݏ~- +lmGZ:!h&% #^-bPIWۋd87}VrRtta]=k|+Dh x1NQJiFQ%Ul<)_R5s|&ԭ5N<~PG&1Y,S .T@`]t#.X<*~0_f72ϵBtQ| 9˘=M+D ۟ RyB|!|޽q~ xwDGA41 +.UBU= ˈ1II.'؍~ZNj2#Ճdyy Po|:_\we I;Xh: PcQXh*(٧^@= Of2Q{5$A-j~S}V_1+ eRkQ Ճ4G/g&ai_`vh`ș`,al[(rW`"t:+͘.ΑeBQ﫾u'䔛ȻWJWAbysŴ?UOG܋ļpA-FT ]Q-&!mVoRCt(I y_trg_0^&ttV{7w+Sgw"EE/#NQp{ha2uw\ናl'/xpcwj}/Y !9T5yӣX9v8|jp!5r~zgcEzV &aľT OT*9뮊~R/^ b1? "_%m(Q-N@3Z},AnaDLT=7׀{͐` bHf} C +ڟhS\VB@Eq։ )hjK@jW(@ S|(GDPDV"V?UkQo*:*a|ˍ[_G@8'I?X\Y6 c hCQzD֎ɗ087sjZ5hb!oC>kYB' +-qC>;6ŊY +I$| APJAp?u A)h8N0Ůh!_;h!ߍPM*);W%(|!E.vh`Rgde^kD7827=L󢏇!:7dfG?$A*F`!pVPt $VR)_uI@1a`M\ UMQt|G|Y";ՈQkjx>}&ef|K O._A yB\ؠJ 0~_$? \7e~DǤ85WyaOT +\bs=0M;N):A4ؖk[A?n_ˀGucve~%ExQX ЏV箙7/{ÿ1į#;@o-$bf[Ǣ(\w k7H.'m?nN6w? RQPz#K}#.GkAhԉ%_1 /SB]x 9놫Ҩ?cD?#=Z`}Q'Q\ũr2a܋ khļ{AEޏˆ_;]sG|D~MŢЮա\.[#D /`>X0JKM,)Fbge$F Z+RM<(ڌr@~5#APMa5K-~%1t2X%dQG-4QCTv1k^NOtFٳ;P3f"E2$~ ;f f@roV*3TgEvund|$7+hN؞׸n{jq*pB]~EQq#l4rvg4۸mt z|GĴ6)|ҟN(% OF_rT#"(Wb^@GGe:pzeA2WQzDlA_!6} Ϲn]B'9' +8-&,]bc,o؏e, N͍Έ^)]P &W=(Ls~]>I1ۑ"=Lb/q4|&?D;ne%qH9K1zAlqsQawW?V4ByX>N n+2OЩ}j+KSp?-p0vzcf8KVVKG׊l__MYBSjN+v n=f[Cl ωf0&_Qv)ʕ+RsCoC{#b[ҏwWGNqsOp;ڞf,x9!~Ov_I?/XM F^EXOȧ`8(dzB ;Q.SCe>,R53yXh"NdicnZA|R(s?MJ:hˆ뾏5kk-R5/sv9_5HXu{o/OfS.|-b9(X&`^r1GLQjl&OL RNe5^d9)O2HD?O>UWGɏ +r!D哾-aw3XGg?كN٩ y?;8ɥ;rwݱ;{_{oo̜"9A5LU]+RFQe-ָ/Fx_?j1Zsak/5XC %BX5Xc5րԈ#0bXcw%/%@(ˡ^ kk=\k,Z6]vܜ{{uc֜sg<>oyuu2~EF!So*Շdg}~: +XEK7 +` ³}PJſM-ՙ*/]0׭O?Tz4PZaFV}G~TprO,D_M<s^g!xM JRRSK\c3'w@{Y7@lcYAttK0:~2eJn?'`pwm,S DLH?\7Wo ];l/0>la[CI ]Cr\j%#4S22rC + zDmϺU-jg1ESGCe,5Dwh|r GԀ.V;EAré)nf:9 h֘X7O{R:O#)r̟RnR`zUtL=V뽃bY<G~?7A%QlKqQ_,R4|d.VTwsN˒0Qz%N5Lmt f-^TQJ4E#whhhk4O ϖv*8E٬no76:h/ea]ޭƨ~YLVIF6'2QW,6WٕPb:S!j3u*ȴSׂ[|+N}k ߐd Qq$.j!1XӇ)a3MR 0T! b>G)5OR 1L5V I=YzsTc#\[gLCj_89bw/L`I#Ӯa}m~-Lw> IDATf&0xJpG#vo:dA@Scݾd%6*ªwр85,u{2O@&UcɘΨ# +\GS0&5_A>dSG3 4 *6;Z0(/&PWK/qA@4nbb/ iryP @&'XTrobHZ8 돆:O::׍++!VlσZ^bӢR{L_o&Pkںk=}E!5ТhZMOQ !\tPե'K%$+} u^ٓTYT Esg-2wGh~+-WG)* +׻ ; `e{c`F *w%U@1}cT>%ԧDFl)sz"Ͽ\\ &׻8P{aυǒ"_B&󝲝imd;q0Y0%d0> +;So2 MgXd=KB,-Yv)F!%d'S(ul>~9&`A0u!F0I?9rQ={#C%C6e18og0пc~0q1L]Pz:b +C\Xq1V1 ^[WE}ZC籙U UX\%^&NA4njQL@vVkzz XLt$e@*jIh$6Gi}Q<є^nֱ$ O>Θ!?'1enOǤ_2 ~ڽTbϑǣj&Vɜ$0}Uv*/v%Bs!.lH2,"Η 3 MBݥ/Mf2Ŀs]@lzq0FmaA8f{5a[ק +!/|S_,Ma*/F ndWs?c&3V kZp&@,{,(Ӓ7qP;;)8T?l5]?'@Un!.4'%(;d.>H=ZLR+wIPdBoyVYMdo(73M?5%Mf70$H|gmNrw`Y!)OJgBY4C'.yڡ}V#B%zut83A˯.nծ +[|n'.,Pk{ +kҏ@g_L-gl=B r 0j4  P z#?A1g@6>BR㠪 GeK)uIJC?n)R2c,ٍu 2H싹Aoa7u0@0'F"P闩z_gVKe8,fؗURM^Ow'm2A-b'cb ЖϽ `{s:oÂ^x3 K@7n7BjKT3VF~(J-Up eɉ48AHEK~Ǹ1eԟ\d^N(TsSrAKdD2w$2ӀGLq"q]l'ƣA)LC4NI4>.qnIv^RSpVz.ICaYv]&9rNA}*8nS "O̧j1TRCLM[ꨧ0Xu(vSȶMxrI7-op;| dzpGOSB=POXʈM ƌzC,&@?#pU3!G$V& =sB_2Hg~bL[V뎲XהTS9:ABcUOA^d~0U;$hzE:N?(ϛ .dd22  ޝ+a{W9ɢX{*ɱ kŽ+"-ߦ1 FTS5uAЛLYfdHX&q?Jg8d}QZ'ef>LRH[x2Nʈs.W\h *r;,/~H/ 2ͨkF_I$/$=@֤Sa85 SHӧW}Qi4gC6}X9*$+doߩ֥J- ڡK6J +AT/Eg|KfT-6}4fb=p/ ҚzK!6<6o=/e (Az q4_e*aPR&Mnd#?۝IRXݬ6\dAI' h CA5vF!Uzv%Gv>~b_# +kgܑ$(g j}A.bs{A:?F!3#iU$[A@؏PTؘs}Ai?vcP% .1VT{@̖RbT]7ao84Vu$ͮ" {_boWRqC$6ZHmƤ >>h^tԄ]id,yC:MM 'dm*%N46Yو u?%X]A F0Q^!YD5˰CYK Ka=@J9!uF{ 6͗zD#I A5LRL!⨄ @>gC,RLUXSC5N ,6L3@?*(#V8 C F2j0d݌~J(|N HoJj%ҝ~_~MobXȏRǩeU>p4+quFΎ!p7 b9sS逞,ȯz-W.姨$ ȩGbv^qZM/%hzK*SP8w'q>5zs_|ԛgjITY3A9pY%`tY]AjY&nU}vҿ;CU"C ?ըĨEf^w:?>&xȀoȁ.hU筬g8ySZpO$@ݕ]'`[N6j?@_+@VBpê:\G~b C+} qTޗX]jU3Oy&߫岝X7rQ ˟pcpz L(u8DT2nO(oQ-&z['d@Ų}_֪%VgL Bǭ|uɋ3Įe"ֿ+-5V cyd[w0h7k'gl݄-.͟dG0. Y>`'!ȩͳ"v5I| l}[ zFtR`3} +/ @VZC 9\g }c'Ϩ&g:P;XPÜI˪*̰ cR&ؤ)9L-WcP@eѐaX|eȑhEްHX*{JY ~;qcSpoe2 닩e;0Ĕ,*Nr<ϏeXX'( 'e&bcr`F'YėejA1CXl25udVIPݭH*um&LvYYژ^EQr@jVh2%#4QC,fl4Y6*8 {(_s~/$|p.<$oSzH*SAqܟjoQX/A)42r]9Y>ߘT1ԕ8ݣJU_ AŒZںke̟.niXV1A. IA!e?,KX\iZ5T\ɢ&9d"u*@/ev:LsGN:`>'U qoduqSn7]d?a *n0"!~_?(O'o&unHJlPƬRjS ٪vctR+g|Os[C3='T措%SM=:b|WW_Oc%2&@9dѰו"viULs+gV5^ :6 zHmb$x6cU% ]Ү6c2gǤN,0nO&UK_q q>SoHKRЫv)rS K:+,Kyt(;K\cjlu3@>erz6,M +yu<HJ-?,8[\#P3t|`H7}TZT%f]_w;]eP808Ogqd,l yʲWFѫ:.ݣ'`f{`rɷYbUnם#|@K{*3+7n_ _4VC5XO7Qh[fsQK~ϖŸd9ԁèشZ ?I3!(/q u1iY7s+=TtLHNPd%UU!(^oHr&CrXYK@w-~V3wŭtG *X''{SQXbZ?ʘ)?0X8!_iMWf|. +['ɀ=rj qTL P,NcbC `_LACB}D2APMgN@I+Ӹ$KW}* Ld +̛RnnJE/fUd@o1U!d jF2 Wਧ/I~39~IJ1\)/~v20 ~`UGH?aҷ:J!=Ãh+hja +LzFUҍS//UE$$Zp?U8MAsU4I0nŏb]rlJ?K@]Ej:-QQ3Ȅhr ս ,Q[2u&HrbΌ& r&=["L6CJAo[q7+;w/gҝ~LpPN+SE}si +&AP3W2^bH?LD}B5H6]u+ʓIkȓRJzP$+Գ<#6ݺuAZLh^oǪ#ѓ<q{rTղ[&Aʘ, =f 3hcݦ/lŗ|Դ(yXUhjd=uo žדM_ІFpKds\NFESDA3^%.L.&wŦ"uNѷ@V˳zZF~SucN-5:ϔ܅QzBWj.ltՐM'ԗS;}ȴ۠h_LCԔ> +?%-lQUI1Cr(L88@7 G9Vi EfWoWh6VaYV6B4:CCt$?C4N-Ƅ:tRF2Z, d9j'E,"G,r+70JUpd2F%FbXarj "@9pUwUd} s!:rp_9G撥cP|Nof-WQp% p,4J徂ݐ֝LaSU50=Nh,kg3dg@mtIγZ,/GU8paP!u'eTMWédtt$H>f؟1uSW~  iK}J +b] 角%&!V1Yf6P%lƻ;Hn9l^$)Ok|Y+_\[ֵum]keoR0ca](bZU# zBg +NY%=^i\l,Ը1NS Y%)Ʀq!=iPBUȗ>"͕$eXy$xvvyw0MVMa#vfWMo IDAT'[6GJ kG0Ve X( djJ2c5Vf3JQt 7>p Nӊ;S[8Z:Y .';!J^'=%'[xJ~oaR7ŷ+ΨP>G[hLbFb{.8E9+߇hf )#:cw@U= !6#ng KUӑN9(N%.{ɰbsP42H?'cKd힜KU75"l41\7 "p3 lE(f`R1zA&Éf}9&%CIy Sg_=W04:B?Caup3EDX2e&&$00i +#At;rI꤅bP2JmO|5# YQgT;aY@LĮLb]5Ua._( yn-SdH/B=H% ֛,߃&<(&Ϩz  &w%A|i5`#BYgށ9_Հ>$^ Q&K,mI`7jwqHém^MJy +$:}[3 ˓ ɞi\_W +z2RVjP4GhfxF^(FWH+b\Teo +KO(QK36ai*B6MjvKTx_X'vO7(N{Qz?rPCK +Fm y}]%9S{!zL"t>KxX* +xEmaColC.,nM%xV +ȥAIݙlvkoWG (/$"4YGl|~\ޅP]]B^[dXPgUy(%|!Xh%0sSϦ 6HƩ Hsiw>[ojn1"a5emGډCzl3?IDs$u?ՌC,E(2ʨ1 ŪJ7Nz +|ݲ_&鑍63I/zSCJ+YI.),6bFA7w&MrbIKFR ˯1#PxPT31OeZ v4'Taj>$6nWua&pG'-f/ rZh!רA%i [O T_X}&'#8o_|xNAݑ0{"q>#objht=<_a g Ak$wG%c]vm۝o;\NFdBՂzgfWrʾ>0OV;/O?8t3MlJlnT_U?Swi5+eX*(:~[OGސkVr @>Mz3.2u:KdL]9!RL-m2J|, ޣ(ƺ饪D#j`o$ a!uĹʆϼ.uCVߖymZ)z"xd_ѣ67?J7d?U ~Dס+8Nls;2 j9Eͮ1|6P8fV1ep:FʮwW!R(q@uO5=eN>r8[R~Ɵb[u.z*4q_A1mP}G!h]vVr nVrxPvHucIoĪ)CX9N5fFjrrc.er3m ye2zA*ɀK`1~dP{( d&RƯ;)6QI9D+pMrd 1~Lf8</dH@ IP̿?!&+˩"RMsuǨu51( @%-"[A|;XNSh`#$d>ɳ1M^PXJ`_V-KzՃq-iN0[MEpSɯLv)ߪ~bηAT#{& =j&A90[^ug#jXd3&IBꜪ`-uê _M?u_:Z RIf?&'*Hw N2Hlʓ2h ac몲=gy1"Fe38JPHF0 %#`KR\p 2"5iD8"Q`ř %L<{|kHlz:^_{~.7k5 P DML6SI"E-ћt~ SH" 12Kh#5 )`5͗v@E F}<P]Zϓ ֣Ylʀb; 03%Nb{!NZE6i8_A319mX۵{>fHdZ ffn`I%=B-ԗ>.dcv9p~WrTYLަ8wXu`(/A~=K&BFNl- A&@Wuy4wH[ ?߆foih4bҝ~ ɢeCnu 6Kdhb"Ӡ9ٶ`;G/KȫZ8ST߀a:JqzV¸ZQ 3 ,3@q\F߁pCDl 3F 8ݜcH!61rA$ѥcJKjDPOA0M, Cz=4Ӵ:q د2,NT,Py= GF-U> +._sh#92Ff  CEFH!'^$[2iK]vI)& 2ggՒ s$Iff̺ϐGՙ$fw9PXNFE b_(HҜI?р $0umSD?\vծU_Žb1`_c: :G->&b61vh2c*[ RMR,iC6gM#&z$WHaޢ8 7R.zM2Ef|C!r$ҨVV\9N̢uPTO2 ;-MWB|vط865M$洩֑hПH$+$ֽz 0s12]:4QI.-їc6{E;np1%mSHrMk?k'pO.<66I>}!Ei5滴!g_E.Grȼ$cb=Q;c-I#A=FO]mAmvʉmodфi18諗WN%2xЫ(GQz(`eA.ifCN}n` 4a6|I8Fȱ QHka4C 0+( 0uc?IT8=E)m̲}ff?Lk-Tj?HlcUtH30%k%Oeh%A5ۈYF  Q2_2IN7TjA(`fKLۛ62M%Z`K232Laf٢Li6 A2οM +vRGw=__3z}h6Mڕ؞j'6Oq]]z/ߨל (~ WW#m*߯$7pyICLn:*c]D9Jׄ"HjvBLH}Ct:\:֌KP/P˴1 ߯ο ,8d> x4{e/ۜH!G'|[MmvHRJvGi/q=|m@}~Mdat]f^7r1SߕMt efP;zH=4Z,g>OQl[W$*7f5&=?`s~>Y󬔃l47G!}&SsY?;ߜ~7pdmf P"bb!xAXw Vcn]!B]v]+9:z_L,qEO/Z@-osZu#h2_x(*2#Q%8} JI y5wm+(&r}%Fl`tME g(f[ː$pĦ4L mZ>z0f| SD֞c ,3{.JɁ,cCtSSAnd<)%1ezIhZqAW)hl&m"b G5bLMz6N&!zQO>ѵ|=4dus=tPIVW6$< a-'1#ނޡFQP$%.,> +]~B'}]h%ЯfqZzN_ QoS$ˌGAnMs$iSku,~w 93c5;QΓ/W!vծU_~ŭ>>IA6l2L)Abmԑol_sCK̲G7Mݙ*D}*zW1 : XdIJ#rE +IubqG^s2Z,AvO=__)d@z{X +W]i I.j.a{MycvrdIZpJwbѡM*;OeEe?뢦O+|}+_,9N|m٢CyLKtV>&Ʃ/d͌;l]r4Q$1b__G*JZ, Vjq)6 Bi~Nbvi=8\`mZ-iCMZG):rikl,ǿN {f:Mk'Q -ՙP#;FgN0A9q%  HKR v/].SO rHea퇴&ZIc$O[@ES#6!1̄("BYFj>9&>V2D?-ഘSzLO{@>_[#4ˎ` =(A0 f_: +9f)Oh!O$˟)XzH1(1 +:L#Rjj=_2o>ԓUBȕ-<Ӭ$&@>0g53fV:Ei {>) $w ?Ff,:kӺ7^?>A$j'[fd&ȕoGVq)ľEKgO(A +| IߠAASVb IDATnگd-I6`|fǂJ=j p'iPt,G2o׌%G;Z_!jz[k/lj .a;`^%< ]p_꫱NAZZy6qĶ]-,lLQPSi))]-בLG<HUa;,b9;2,g@H8?q-o!ݝA[S/ݾVy!ܽlj45I0u60@/7ENs)g Z\kK5e$?iV8۟?`Z2LK̠Oп.(c=$ȬZ i aDou{=H90J)|;tI\MI!+&wRDȫIFi!N{š԰U,NfH743f?챖zn&]ڇ. 7k+ +'/ WO `]<~ 0oӭ-tfF eR-ԇ |M'Iw/( +)-nNP|b[ 5Hܑv-=J*3=8B*]7͂~ +L8T$jBLEo^(R #0)Ha|^krI]P´re>2=_86(NIHv^?>p~e~BA[*[F)N +I +:s.̕/v SڈnPw5fĿ6ŭפpK29h}%P+q$C{DZJ^|=~x%y9"$Q~$Z\&N6Z?M|CRW;_K9rs?r5H!I7@>idMgx!x>bNIJL;ȇL-(;5nK$dwhg$-ċȞ 0 t:20.۵j+6Zt:$I94e,c3I 10& -V@?Itu(”0Mϱ"bwi +H SaH2D9:jJf3Ȥl#6QDbi/ӌ_Z*ImfɁRC)mpѮKr-h C2}0b},5RNVgkmb`3.Mb)r G qQK*!(ʌ_Yo|/yӜ;>/R+A@sg/H +OڪLT0EVC==J#ɚbʵ+X/KN'cZsg3l# G-BMҠwC]_ v2obIn3MeĺB[5PI7W?JXQ4?9 l2#kC}v~EbS`n& UXbI8!cbYQ-85l%Nri)@6o?UX!Kj$"68q%`f8~Q{|FKGZ*; +=ai(Ob/jANNvA &=&Y>}DKAKky0O#Ih{ReQKb $ɥ޾? +.q) ɐ4 eZORma=aj? 9?&=@K_.gb&Ny*Cm%# X且jE *]']Gkq($j q$rHXMN-fyܤ +@5bIpzJ!Z+h\ޓAtަ} rIŸf7~Fڬom'<InrTlA:7Rq>F +2YGd+6D&4#+F!/ʥi w}?M5n4?;wj"a),\ KkBZYM1[y ~T0u$l&5iNqfkԑ3Pf5:iٴңş|ԑ kg_QI@:/SP5Լ?o#dGlwhk|.:|6ĕ--zž%[d\5g=aA&S%O_f6SFAVε 㷉}5~?j$:o`~5:LT :m`:$ex⹮Iv;HW` }]ր?ύiʲ]6QyZ)*(QA=AZ:]!qjlBQ(fzOڜ%k[F^"ГL<@+rsipf(LQLf# +^h5%8,`uÔR\Q顒rpRAZzPXd~F*I,486t81Ք1Qԅ l4b.k"('SCٴEtQbSJv<58>_&|yfN +}Kw=D3ȱ6sR!$25GaIL6S$Ej6dXv|+o] 3HWmE!H;IM |_˨r0ȍ=8&{CܔJ) }0 +[> +7COPN2X0OͷaaWnN/KW9vծU#sڗ9O +vNs%;7(89 0 8QGq뉯) ػ<VդV&yE3I HqY~!tiuX kUN2F.}YGܭ!l~=<𠾰E-`J%PnI$rA>aȺGf>K+}:ڈm"/#yr^(ZB~ZE?b *_KN/!vic16Si/H[AiHd2*0|-8KgIn?RHpe}fqX-tܤO!hPoNW +0w-kH##k6SW;#ѕ/>}u=0^2z0K,gdc-8 .MT:&1$9 +2ΓRʸA[X6ф%6 )3Jgr2#+cԂt_Nb,-Q Z _Hc. +[}Nwh=tpXmJ6O +fTHg%ȋ75iٔQ,i#JT:齴 )̳Ǥ[v⢧d.t?.:"}ZnS\ jHEԠQc\r<"= K-n| CDVP +BY$~ mCGռJ=mR)AëwA`8a)B̷;V/&6#W+~3ϼ䇍c΅X5))I;8'CQ6Km㯻t7!H :F?mS`YD\`*(54?wOm: pV˙%fa &5}{~_ ~Sv'q¼!oFs#`plt1D1I~[J H/= ߭۩6RXIbW!4E (?3&]m1~dRh Ka}ǜb,_C"F(&ᷬeX9JUK 2@$\G#ԛ2OFaYK|EW~&NJ  ʝX{+\3 siyQ֒0kH9og TȧfP@PXATSOŒ2?Z'NP@ɼ/aY)Uhc#A RkHt-6K5'@J5ƙ هC2auᴅDi 2 +zӝJjȺ%*>ǂsLc:L;䷚:r>AR$o?z{Fߌ-2yO'#1?6k@B`5 +mgXztۂq%qm2l$^PYVQs~@r +TVIn&IG5OyU9@y7KeC5$zҌQGH4p]{m`.(= -W4,Po7 wd8Ҝ`n 7|4`!(4f#G/dW9vծUk7geGZT?'=k(&BpmN!oTHf@ir`wQ딬$J߽@metSzQNL> pe:y><\qtԔ`QTĆ{__D&)"R%$~Cқ 1o}Hzsk=ZJV;ӻckonfd+h|R|gEG[s)xHO;q^u3x^`׶nxPw=r4=TJ!iYܬ0@4gui3$-S6~Yߏ@߃̐tq;u5AAE>Ga Nװ#,gVq SI-SXW/=GmRAh>NQȝb)떦~$-Nc)&NE%Qd!*^ 8Uw6I +yҕBRk$'u}dL>*Ĺ!9 ;=!s8:a$q4i?dm~FU!N@䷻ +q-9wr]lt]M"Vqvf ۈ`jAjM2O?2NBy,w 3QI'E-U`6IAE`y Dq)Ȭ}.cnq2-)S$e&֧#D^7`+D!:&j{N-Z 6LA̱'ľ=rկ)VFysV:|i,rH'6Gr-|!,T$ˇW#/I+1zAIYDC诃C9,qvk+G˹d~Jd0gѫ+hEuMieiF镓T-jpEzL@[v Ff} Mad?{Z{%Ie2GRM1^d2Vb߄•aB^a/YKvNDJWJ S,IJ-f +L ǒK2FmԐ 0V\Br {Rp1[ 7x(S5/%.h[Tjy1v|Fb_Dg;VnZ +Iߢz)] G%`KǏFh]jn%q-ܢ8Ӝ4?:SXWiЬypok]GG +ӗ:bCr,3_ z(O0 'V /:s?+1E٣x135r矐":$&O@1ޏ@sNzH;\~>WCa/;C5?[5Ы7MIԟ1TG荡h:FY4qI2O,`T)bO4.-$A0ך̺0T⒂tP(~w mKu(Q/)ry~H8KҊ3OBco +VB PPdd QoB]<]eנ1뤜@o z\k5Ȅi@g4F=7Ù ԙT>.Org䔬Ʀ \ג~o]-~D_zxk]_vgftť#NS8KlE(V/3:HAn<\UjWcl:,g]_/i_jb+Bs/eW@ lc(N* $", v3Ibrci$҈%A2N6!F= +6)!> kZRNV <|jIBvm$=Բ9oYFc&Ot~5L=?[uNpaQňv_g1KP0Ybf1vx[8",A#̐\pY̶{p#H.F8gqrʧ}d;3=|qNzY>߉yZf2&]4axk݂CϓYĢ7g[G6/ki X~TK s+"e:e=ʰϾیrӐly_{(ljr+]'sHw9F`j[J%4>O~&kTWrم$C?.] IDATd{rxAyK r7xնдAI9L HG/ʴ檴eь'a"!)ƧG&(L78`b18h7^u1#C# +7 Pbq_|$oZV5ctOdP50؟M# -b9He`OO1w9qij:8 7H&L-mr Z[ͨ +'y;Lx^W}UvҢ4 _k sdW:I]"vfa¦g:ϷBCA߻X6z -2D2hV0 άhgUPDhcHn2525%Hz 8AqMbbM(.JbZ)6G:R=~3ߙ\ǃED $S:|Nl܎+`{eLVHޗ!}y{^ W+ Yeʃk ݗbM~Dvy̍JݹY)*8͠w4Kf[$k&݄f 05>y޼]U ,6}RQ_@]ko1|;+f#f}$Vk1ap@AvEr\l3K O-.m-J-fD#9z-a]41>e ?Ml'iϽA#U"]"s +_nO@X 4-Q)3gdE iےZgJ C.kAi__1OI-!:U`d;`6+>f +:V/o7m.!4 +ssܰn!٨#Z vN/%5mvkPFԂY-%QJy᪙}z(L8ܢ7p=DEv:$kZsG_%2q:E ᆸS!?|&!y/u#~M3xЦu`A ~KɅ8;gNVKKX[CI)!ԗIٹ^n&Md!H\ v<8>{=8~\#Wz#R>9,L0 _tXNH(+n7svNk<__vjsrԶ8i0}̯! T3!NB\1o. a\ed.ΤM?f|glKvDNSuP#Zi u&:)B7e.gE+>ې$MhddrDA_Yv:[kqp ЯO`/F9Y1CVN +ҫ2Q}ByJM( ҭB\7sRpKōR.+qFGV{]8vtuMQxn_yiO)*]g`wqzeO$#'~]$KrP@B2.<Ϟܞٶ2Ld:NmLBYx^FID("L>H[EwkdlL>1Cx||&Iʇ2GHy[՛bDB{[pG%dEjc,颳S$.#L&I; aOz!`5ASneK%W3JT$;1.&mqJvs'xS bWl3_f8:9Bsf[.̫$6z r1ǫ![x]{(g$}gqX=M m℔rUHH- : +3OogF@۵T:2>Pʱ,B}uG ^G@r\ _ +E;L$q|ĻP{%#]^o3/uf{C!Yf8o&};y'*3-<$+ND0_ÀY z"$Zuq! +"da`Tf4mqb>AպU Z5&X*7Mq )!1G"׫ ؆|G/t@`PwN>&&![Ag٭`S9zJKa"&Xڦi9^Fy/:\(;d#$i|Ѵo}rr"ݱþ-G KӹVHvvifBL8}>aϓ*̴B! ivBMz!=مL r]݄8;B|N$Vk1%xd>^J}$fe~=d\Ah{u_;1@xL[v zLuޛvnY 9mɀA\ʝuPEgv9&ϮH)2Eߨ7OVQgD!H132 +}9*t+7K=*j[*JZqxg=C. o9p)M(tTBiw;fPoR ?b!N6/ꁀ6m33G|",eRO@."2ZA ՎRB@b1$X#[3(KtjCHe,@$-k2slD.ZH|lqԔ<i60MZߩ*2cro: ד=;"| EoјXG S%'H.&C9O{|cZ ]V(gr翽 < ~]C9cc:Ux^g6nfH.poEЋsKGN䎀y'ޫsrPnB ?1[d #qbo/{M`_gqިr0!.CL@nGb »gTkӱ[Asz9aT*lt_1L<#o0u2o3/BMy \ЬkJ=xn%8q4J +Xz6Զ۴Gj76f!)VwQXݶ*;U}_ +^!0C&M nRL]l.Z"؝1,2^-8m2jU_=gǓqD٪eK<5Ɨax}'8s!=|Lh_0s~%.HaQ!\{^|ߎrb4&mA#d~, yٓզWLșU{/. s}vw *STq<"S^V& 뒻'%R1L4?I)op ~E;\e= zs-^iAK3ޠތBtEo#'}Yd o3M> 2<&dNGnm/^l[=H뱳֭PtKzaB1Lf +D3ARVGga,~YyBtF{ l {Rc_KuEH=ua-iy:.G<7}y3Z} MNSG9$nKLx 3nH8OG; +yQ!Bz\JoX(ҔvV_\h6^锗 ykZy917OC$)2ɿ§GC4Y=kudtL}Ҷ2vRtP K] 1 C3TCw}Vf3gR{t32E c߾J xdC=۽o5~%4)}F~-f40#a9,x-\&nsut;){3AD= 06:i7uK"t@#ytBw&tY@wLEAid,ڭιg*Y$=kix-+])* +(5_WܖG qJ(?%3+Zϑ:&*MkG|K}ŅR_c%YСd}w,^5?qa|iٖn1zfn{Co {M)\~%6Or_ߤşD{ ,3ӺLr[Cs>/Hnt(ޱcY-&0/٧!^ɡng j O,K"qC2dF& 7sp~BΡ "8z`x88SrpgIҴ|K&Q^Zg Fi^>.1a~frx4?賐=̮^6ǿ|w$ڣ5K#zBT3+8|;h;A{]`)?O|+Nr"s!j]*(t#?m1|QAY+?__# +?-=Z_q|S\y vPgs*Թ_abUl'ݭ*J^C(Qo[0 o .6i;s A˵pGNJU_54$~;2Ddg RTx0 }c{ѪyKnp;-gN-v(ӐJ DW)H>I6ڗxL4zi/tz-ar84N2WSgz 6j;l* V_hsڀ;,ANy &H1 iHs\Dq4 vK qIɕ͐s'ɮϽqSc;M%3uz`N4>%3d&3 wWJ 3yyt *&m/uD!G`6uIސC!#\/oot^;zvl j"Q{!君VL1W(\^B ,$]6u!\HۧwmdxU+t+ķM~{/Js967ݤ0+#:M,ĝWN֢@ax,|w(ެuDY;n]^ةL~֭|yp&N_ +9 +(B_#N-۶<m?9υ_;`m?dH(/4HK{Por!Y-REg6qb%`bk"\B!=z;lw%0ywz{4N̛^h a|쑟2~,r R4AB :eԚ 2n/m +Nw^mBf)="Ŧk1ǝ*]wmwչ{o,X.Skj%҃˹+9E%M#i^K|5O:~j#+sr=q >u.$1|U_f (B;˧MZO`r2!QW{q&EW0.&m& O8zTAXk/IȽigu۴ t3I \C HZf\Gh$X ޜ߼+ܠ-V< i1|;тJapp$&}"O; ϳۺ;"-9G34gc9$pxBtAM@&NUr^IArLj(!v){\oz3Ol1Ȭ:z%"\/%7AQw]2H\?Dnk3$xtCHwq(/7w 8|6/;|!Y.U;b}:ީG 7I9HRD^_jntBvIl&-7D>?>dX 3R+@kEӜ/3Pԟ\0MxmR4 +\ׄ!ݎy>Ҭ_N&Tw̓n'Zܲҗ0 zdz^pb&er M:ZgǴL|\!.Bc9S>j灛@9ZO&PGߞ,ZX^9RԓG_+(el7rcVVCݎt]L;s;3iژd U§d>Y69bNQ^P{%/S?S~"2q%^4Oi`L(&H)0j.IDATL˿\%]*Fd&җܲ,0|? U;>o@g +oq蠽2qygz;ف:>l}^vi9"\,ì'mպg~/Ń?jw3*͐q(*J#r})0ӳ8\_ctn"Dddʷ9LaSN8jfkRAyw3gr= ovO"Ľ>KWį@ϴ+j봎i\ޥHL,=`'tdzeYe}rDڼ'NjhViNk -QQ[GvSK%sRMaԪULD:l3CfɒJȘґσCZ0L@,q:_:/ȬB +(Lp \yu||iC6+-4GN[nz=$:Y#bu4L$KD4OlsmmCCF8UnN6[l9ѝ"W\`;ma8Pg×F#%vl/F;K0荔9)U3/% LQKhm: 7K10fuBbEy f LjiP~ YX]ZA`6Q*0; R +=lX5oVg4s +oq~aOQFu趥G?,F +ј q6FFD3S~7Ita°5޵8$`nJf:Cң mSNu+$c+an5QlfdP"Kt)/2Nz[U!/yOΏǹL mfr@bO AK)ENB>tMYstpH|h.AOY \z::b_%K$^=L#[WFt7oG!,7e4-2Nttrg4v{^Qzr41ϙnX>HUh&d@%+/\>vS ^ROj/Pܷ3K+|%ori:7I[!"&z]vF l6k{TwA-C*2@ N7UMmIwLa]2bR&:b ZwSamnsKw%<@ Ì6حZfgn(ĭ&iN7!p6q [D5dQAQ+zGv?R O0ew(MH,I<3dH'2C Nk~,7'K[9DX)=N{mm ߫>tiS9uta2+ρ,=l۴Y픖f+b*!u +2iA "Z!|)&z_>(WL?i l#8C%b3~l LLKvڜ.ݍO& +QC/ѥ_6_o_#P5( +( +@xl}9)h-Wo D@gn"~3=ϟ!'LB)!w_5PMK<$'_/MsZM`;ˢȤy{d%-r4C} Q~zRJH9[LsjzhuNhn:,u\+S.@ fQfime܋uiabJ)!Fv尷6h#i}9-:bg݄v@.`U4}_Na)ۦ=-̻L=T0C۬'wնN2sϱ_]xmEA_ .^'Jk )9EJ)"G@#) H\?1 λ|Ũ +Y_jA1ڤ/7۴T *jAw?d!YjSA-t{AβB(DU4rvICn (b*=LVFf +JW(QS[^?4HSC1xRExM@vPGs}ڢc*Vf)V|Wp!,̑6'ܙ=/]R~ES}qRN9#(! +W.ۨ+ ~]6ECܪO/$w +_#ޙObu? ?"ȏ#6cM~M *tH~Tx?؝ h| y{8"01R5{;Z qKVSJ +tQM`_ƕ_/Gu V\_˥ {Ž2 QqdV 6?jp'M(L7l"BA*!9._QsPz) gќ|);Z2{\r=%<)`Hl2RZxI"M;)^q}T:$ SA +dbE)bg +m+, 0mw +G|o̵ 'g^{jO4ysE@oU2N)RdgJ+ tBqGpyVA90!uKrm@gsk0t;}~KTgn Js62J+DǺ U˿3"[K:4RJ9=RqGcNOSt(( +( +@7ynk+o~X.g}߳pzd;nӊOkJ=D$ YmQG,]>"L>o3D^l}%tv\a ûs]$]ۡCr>r, xЬg3H3YR$\=tG2 1鄀t3YKmfr3G+ dA?&z:K$G Wng-Hv5J?:ZNn.Jו2_w,;?~x}o bAgs/\q~H1"Ѐz2ÃA'LɨxJAG!k1FS4MD# +m.2`# +k]T"J%r SO v3(Z@c&'Y\@?1? ݻr:fjXU@!T@P@U{<ߥO/{N"%g?x֔'&|;Gd(d?.i29߬7rͱ0ȾmG x +MOmY R*.t!lm!ȍh6 +f*I_tS +4Q yc7Cيg('f;)-;飅縷IQF x^Kk?Vrϟ>w_- +q0jzeۍW<5~IR8^x"DsSN$MSzq9,Cfiܠe7i۩ڵ|EQ*2UM;i;-y E`Jt#S,me[c#M,Ex&C&Cn_JeM+:jII[e> +2c9bЧ G\GY* i7anQ ݩNn-<@7yE5Oe-oyeJXdr ?BxI%U`N`kbPWt;Xt7%: 3 0 1ByUNC~.uGi-R~졌м*۩yXJhp<.A#K#h0F@pYǤ%P)eҡnhh#d{96Oo''(<[P@P +(D:߽ wyGC~Z<6S)5yӓ}uFjxDn\?neRy=Rw,~s["G5lj6ެza=62A[9Hk]8,# +k! +Z6k + +i*hRP޹oY.>{yf.[Si :ĢFl*M3a}ik8i/~6xgH^{Z+m)(KThZ1ohk{7NTMΖ^Ր+}N,u|%^xwϴ1rN%bKGD?H$ pHYs  tIME b#8IDAT-a N4%8mdIENDB`PNG + IHDRV(iCCPICC profile(}=H@_S";qP,8J`Zu0 4$).kŪ "%/)=BTkP5Hcb6*^у0DDbH/f9]gys+y>xEAj88Ɗ=rrض bKGDQb pHYs  tIME22*IDATc````F`G yYIENDB`PNG @@ -7628,6 +8049,203 @@ k  IHDR@YX%PLTE7_'07O0h׸bRA_!GO'/'//O .wV$NO^u~y)>6~gY@m}ߘw@ %(d߁RϲVy>T?{Do^L1>@I>s 8tft5-+?VI~ug/W,b{woͬbd#]ԯ%g|nr S3__[֨Eֶ_~r[ȵoan8qs<.Vĸ^l )n]/9şw{Wk\y>o~^BӋ1*LC=##~Z^Q^,ZbH^,<~%qd,c @64:h'$cNM4_}4ˎ32Qs s~jn(RZZeXl̪ GM5ZZ[ur+Zm6z ,z><c8̳i6Yye;m'JSzg\J&w-n;~MA7keJ?YZ 'E9#a@ƫR@AG̷sT3߁T",'rïܹɨ2ʛ6sNϼ]ֶhhO; T>?d8 ~mXŁca0s?;ԥiݩ=c +&?j~rVAM~>2W!WJog=y7ڞ.l+ ,)*$e]kgJagk,gmLjUż' }\D|ʈu:aewE20IivS,uԼ1ܜZ$@RFAeYTgv^*y hR?dw"{Ria +2Ɉ֠bj⭐"yR(smU4&Osd~~[5>T:&@@ +r#5LlM~f| tmQb=TD/52|uz}LҚ{t޻]+4et~zjUyiāɮϞ.7*N2Cces?n ) Kz(AK\S'*Gy:Ke\A82!J9hL~23P(mu{J3)U0sK~G:=iЭmVzNFESxYd`epyRC"$W$M" ́pU +!>!}qS0iy{]0 +S)hg(!*/fISWЫ*JZ 08gSK늜@ 4H(i@"ьH0M*2@`3FUa`*J6h3z1Po ejdT&^Y9GnT.h)4qc +V^aċɞf-~Ei  Ǿ+s*No&Jd|h]o+|7RQ<@Հ2!{"> I2`h)L/X6b{X$!zޘk-+V&^`Aj|=h{9]"+4eȕu3᪆laBw_(lIOU҅ i +2 t#E>ـ8JړYr &!k ԕh@;h8 E"GQɩQ8Jveri'kQ9qĹ5=u;d!T#pXC},y6m{CC/~@5_+}iR?WLVkfRT]@vПa83yKr-==Ki V"}( E?m0IZdw#\ƕO9#E%;eVNIHQ.rw>iTbme܎轶d4kKL\94FZGEFdHg/~;7>@\kg _X>X;42 ( ZYF5:3Cwa{qVCҠ1)gLI\̌L})i[)II)ri&~ x%(p 門BЪ)H02^ZEN+@AzOT--c暂TŷWZ4P%N;v>!h +DGpzYS^5JK>kJ HH$$X,`@cM"hb:_ "GP.@gG + 7BR4l%֯6v*`[EdnHtwȴaKOb.V(!5 X %x݌  )ҖG"["zpW +q}RCrdM T-HJpSj/ 6x4wS%3ݐe2 nɢfj'|!65EI;24!cRAtQ(E{7mv5)*Ӌ))mUi ֩㘌6??2Cv#rO zE+($y4, TQy+ˮἰ0‰\*zVhP 3\,H+Y@d湴O>ߪȍ?-&D8 +x@'`l'\|ЎQK(D3b*H"F5RX]>;;V>û1A46Anک&:#%hǷs>W0> 䳄VC~N " U4\'i^k $A>2$q@B<#1&t\ghFHh>PDvOE}I]w:=`Iގl[q) +t62U6`Hxc8Ȅ{1ڔEC %LK1%l]Hk1{jD CfaaXЏ6JA6]D};:őeX>\,Xv&L!dJ7_ARggbю ^{Js\tAqxֆnuno ڷ#3,&AH JFv^ƵIӡڦ0YtX־&f!*ܮN~Od7N"ɭTنY IpG" WHޏwS&8tJw~icHiR6qqK~QpS;ލe(ڥ*cxv&l 9Q$Rꕬ7m'>/ +i=Nymy TatOnjr>K[P:&YAFkԡ402a2BT%*v-U$-&n E +޼p +=KqH2]["w> !Fu#>:auj`KE7 cw-y0H^ rf AmŃRKHgC(|ROsD: t0g!~(Bщ@ɹv\FS>uD V +PQ$)'.khd@d݀eSR + 2obFԁەTpp# Rj+4kS@Ęo6O!;)f}5߮w4Ӯnpx @ +#A +Je1kk + U$G3*SIRِKoy)wXbH #Vs4mazs*(Q8E +Y#|0蓗u8  E ڡN:þ:i <^R8`&ldy6 h"eG + ~.}P}ҁDl;26|~t((u_ІZ,Ȑ?4aB.yMDrl'P)2e 3oPkVW_jRsC~w +uS5AE`BЄe I٬|B艂Dt)+.ƁK*N \Vmf5M.D\A(k8 r}t#%E= +RtQ4Ij4?}D1}hp +rm|BՂb:IBA3Xp˦$F<锴D!O R8 +5O) "$-YuІ5n`J@Rzjم"?z +Dޠ74 cJ$0B}fj{yMA|S;rh\NgNՎ/-_xu7" SiCCPICC profilex}=H@_SE*vqX,8J+Bi+`r4iHR\ׂUg]\AIEJ_Rhq?{ܽff$jN\~U "1*1SOf_.ʳ9HN,u|%^xwϴ1rH viTXtXML:com.adobe.xmp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +bKGD/@O pHYs  tIME  +aIDAThٱ0`]^%PgWg:0YTNGW!u`l)k$sFk]`{}...1R |I$|sW _]=9a%͆o|᫚} { .5/ےfߏ 5!H _G<#Sߡ?Z ur;,n3KwX H=d#ʩd+zy/6[b#g}d}&+k5 ʾ4lZ_EW'_-RgPzjIENDB`PNG + + IHDRo&iCCPICC profile(}=H@_SE*vqX,8J+Bi+`r4iHR\ׂUg]\AIEJ_Rhq?{ܽff$jN\~U "1*1SOf_.ʳ9HN,u|%^xwϴ1rN%bKGD/@O pHYs  tIME o>L IDATc_g` +PЍ`ĦZIENDB`PNG + + IHDRo&iCCPICC profile(}=H@_SE*vqX,8J+Bi+`r4iHR\ׂUg]\AIEJ_Rhq?{ܽff$jN\~U "1*1SOf_.ʳ9HN,u|%^xwϴ1rN%bKGD/@O pHYs  tIME 8KIDATc` /c * d,IENDB`PNG + + IHDRo&iCCPICC profile(}=H@_SE*vqX,8J+Bi+`r4iHR\ׂUg]\AIEJ_Rhq?{ܽff$jN\~U "1*1SOf_.ʳ9HN,u|%^xwϴ1rN%bKGD/@O pHYs  tIME |RIDATc`J \ ;dIENDB`PNG + + IHDRo&iCCPICC profile(}=H@_SE*vqX,8J+Bi+`r4iHR\ׂUg]\AIEJ_Rhq?{ܽff$jN\~U "1*1SOf_.ʳ9HN,u|%^xwϴ1rN%bKGD/@O pHYs  tIME &3IDATc`_g@DUWIENDB`PNG + + IHDRx19zTXtRaw profile type exifxڭirl+v3 +vá <|L5U(,+Nr`7_yQ,fKm</|5."r)=}~{ps~E*b;`l;>O@)~g??}r^jϩF+jkVnJ<&zWo n)kJ3ˤ) WnH%5_=d +̴4o0?b?|+<~[[ݤײZ-i^g_??V~ +'FJݷhV1 .gMEUxg/&{v󾯰b'VǸFz\EP nMQĴ^ c{ܢ_;pk x7ޫ^ +ALŊQ,| m oP ?D scObGqč$"] J0fTc!FS)IB)q3ɘS2CwlSû5 hV$+BܨQRɥ+˰d+lV_cǝ6 mvC)|ʱSO;Kt-nu~o־iE7keJ7߬q֟!(gd,@+Y#cr[9*s|DW$2F o\?ys7sN3ygYb?6TP}iL'aD֏Qjk>1aJuZ 030ooV qON n "Pngt!a^)n|UTA61T8`@OΪ1P_T{ܙN{;%[maqj_+wh'ՐoeA-eV^4c`E`5ߛ=TЭiHg^7W;{yC_78=+V8S]gC1̻kf͠Lfmr:k:&-@0jK#O#giuy-ڜhSڑʡ: IHVy.KDlj+irm9uor'#zR ֤4zr-AJo` ^H`rR0^itH[QXPH}TQk0:{Ur%(iQDD ?zٽ4kuʛʂA(D a T_zrdCT;TR< + :Rv[PbƢ]ֹ1gcho#~HLFmWz"BP1ˎr_0 + R擴߲ r۫xq\KNp+] ~nDRm d0*f WVR}7h?Tn!bHy&]8k +dLC<6w*N=JQr6Ij.F3pd’_<s"Ӫ{sIb}` +4/zVpD7X&WY©IRvjB:} j>١K@8/S1${x ^FBn(y0F=#0胧VM/T5T1dXqYZx|NQ2Ax ϾX&D1pϤ_C-U +d92:1$C|2=&/.j{\H'l,*˙[ze'(#< ˃/X#G G&% ϒdhIvcWȂ)*{!ak QMcS$0UQhr30 NRbĐYSJqDtMn<I4}}ąqGXEx_<=:6Ba?=@G;:!3z&4(f<~ϡRBC/%Pgx9r+h5SG 2־5cG) j-ouh8z49}t:Z?0GQvuۇ'&>aԯ2[_/ c|?Tp ]67LwϢKױ.۠GO/td4s4GmbK$r (&GvAh&E'=[]Kpl;LSQ%oue!&-@.VO]|]A G@5eB"Rd&V; 6А*,L!wcX8aҠ6Z\F)I۝rhUWg-'cz^kf^֐<LK׮K@@{>R J8ۼ[C +Ħt"a,~GxMx)J#3 A8jWD8P1[;D`b5!ɓO\p<**!jb>D6 ?,ՂD!C\m \Ǣ DlL E␽YV~3,9 + 9)G0z{RhCõ&NzPxTZJ %%mF&w$+sbjEٙ4$'?njT+%/([\F2J6ƀƸRgh3=de8F1e׆{T6 +"T$b} +unm`x|w蕾c-CI +$mKmb8(N )(NefoAbMhV܉'~D X⛥XQ +\I+)-b/I<Kz0ʠAm8z~RJ7%\ +NTFP5bJ>,)ƩmC@:ә6 L} bv7h)_/m+ڇv݈=i#Y[.Y;Tm||l:rBV&4}K5Dz%ch^Q+()z5mFX9@:LGLH2mRx Dt\GRf/F2)5F/ G캡lڦsJ8EQo"?tvQI@-( RG\2~ %15[Fzc X.Iz9i1B iRv_93ZofAA܁B[dka9m i"IM@DO^\T!b: t4G#1hW'Ŧ]{@dJ"5XEjؔ2ZӶ%QeOTOi/QX.wZ PXKW9C i1\ aJ, 7گʰ|h: =пdm־|hk퉞IQؗ<=*e7Ljy^AiT0S<^B!TƍnaTbM:(nsCSf9 +.@kqrKpp@¢J\:JS&nbOɤPV1, [wlt(곁 Lq<dl-k&:u*5l!VMil~`M3y 8^_ER,>#LΜ: AC4?1E wGXX ]+*r(5V8RS PgvYW1c @qw<>FZ ׈-4- ew:nl9(TQgY"Q bPT3Gy`iư_q&B S"$9^ e Ff# 1rM=c0{4&c$ҽw Z`ʎiCCPICC profilex}=H@_SE*vqX,8J+Bi+`r4iHR\ׂUg]\AIEJ_Rhq?{ܽff$jN\~U "1*1SOf_.ʳ9HN,u|%^xwϴ1rH viTXtXML:com.adobe.xmp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ZbKGD?H$ pHYs.#.#x?vtIME :-\PtEXtCommentCreated with GIMPWIDAThZK m;:wq$aZ"8=/oP)Sߕ:ց ^[e9ܹ3#bGG @@ -12048,6 +12666,514 @@ s ѩ>O;)̞4ZU~4w%|~Z^feB`G=ɖ>Z~ժGYmiDiJ*9V >hX%za)@"<2<_gUw|K;?QF4F$2UnMX垰/,V͙P4,tSlbWF4*:~{ Vڧ-s(?2Tѳ%ۓD9Y&߅a_}/l1'1mrw`ǘ 0&ا%®/됓 *Sdſs 3%[>\&{dYuۋڧ=L܌?Z].|+,3 0Xi hgA kMRFAф#xiq\.E\@6f:/n8gݻȊ?wxԾ/q=Ԫx Yw:&:qOރ^ I5~#@ZH[- 1w_xMK㟵U:fPttvG:0l\^xe M$dكfZ[ޫll;_4s?ϑj {P uag'=XgaD[&_f$6ED,Da psǒ) E,Y4Y:7ޚ'?+5Us6[Y3Gu+#ZQuT;Dڳ `K/Z¶bÆDdp4.KI=k,vtri|PN]垎zS,RZ3b9MuIENDB`PNG  + IHDRq4=zTXtRaw profile type exifxڥY7s߱ +/S`Xs/E[~&Ev*;eReǿ+}R';Y@ҟ߁7TZb󫳢|Y. 멄Yߢ?v3#B]Qwor ݺ9V|q~w~7zQ +R^Hnan8 +%x\|R=.e,e7N$Z»m˽5oQWo?b]1*,C߼ _k"(E:KL !AzNP[ ,k5H`18@0EƜR!7-|hfdBUMOdlO͍,YjͺJ.VJE8jUjjkcOko1ʃO0ƌ3<2lϱ(jNevC)|SO;Knv˭~O־i"kᛵ27֟j.'r U))g2%,Ҕ12Ovïܹɨ2ʛkR/3y4 TO1g3kFzM&xqG)ù%VYH,c:ꜙ+/0Vݭ<O^i@AN +Ry:Nj~[0 +%EHՔ(YkGKgv:mU➫kҗXKkPqˍ޹0g/m.j&jDw{صNn7}X̨.sd9yImR<\WV( Ҝ֙dju װHBt=%۱4R=1K؉_!TFm}><(2|Lɠ!wlH <&{5rIa'QĖ7BGr^զ`UJ5{'q7cH䎺/ +rI7~ +6Nq^5Dw!iif6j'}jJU)DP'Q~F TGOއ7F$ϠT l4Ӳ@_ )A!eMTqx&R:x}~ +e[x (v+MV96id;</;CNctI$(@20OguA>ȝfA;7 {o*P@vQGs|閺#J1Q x@#tuVAfPWԂLq׎}mDFF- +4GE:x+ %Abs@ʫ6:f_bҌ\m[&?%J] ɤ懶I:S jV鍴%UJ_~RO#`ż u*,s ~oHZ5ڳA>Qxvv".8ynRFWI aKTzˡKj9U4.t1ز"E%mE0c4 ukt{1UѤ"@SvT_)VCDeb&6 m*PTf[TSq~όuQ] XZzY_&R1!BnW?nUمdn{0 +{wkoݷ_Kޤ۬=З!;HzP|H]\`V +Œ2Z$LPh "i:+p5HYDD^o"cqc!Ӂȃ҂xD>|P@x$80]!شea'CAD%$2խApieS–A'^:֞]Εb Fa=tFb iLBXRbDxo !EaU!U?h>n,`6a8x虘ĀC|_Ji$9!:P1y ]uɤ&q=P pLjMj|38G*9S)vePEQ-۲?4K%͐y/OI4@<7 #.*?j́{$@dZ .u+A +QF@.77=_KZ P(n;7DFk0Z2}LZ^*DY<3YnU4RweT8tz 5P+N׳s9 duJ,!t+",$MJdd*p j,d귕Pr倝?!eJoCmaj5w@Pyy%|' +L^(/z!"ޓh`б D)Q1 +DR]K˵(U%W;![^ 铻Obw.v(nws,@Xvh$_DW` `5 1@pJѠNp` 6TNx)ڤ{$@@%]2K!eb=EަyqǓfHp`Oy~h`@਎*14 ZxXn`QU#w 76R]S׌ +'`G<4PryAlN[\"n#wplW"䵜/XdC,ߐۯop9P chQ.~MmCq"@A[ eMd;><XR'I7 4DD0hDOw~Y}RiR<)( 6$5ǫbOݺԈl%BZ1D0B1her}eO% ZZMyrB9;k Ru>Ir x0И! cG`Lu3|GJ m/ + @8/C+UomdU(hubwޠ?ǭީd&W&*.,iT{doϣ/ =,CxMRh_=M( $?ںjbB*h0N!.Jt벥M|#b?鏔řr-ci5H(]ܧ#h7nt0T(.uҬ2G\rgOq͵-tR,3h48D2 졡+>SqB,(@7EZ ܾcPYnQZʲ05#fJ؄QmdU)Vrw@FZ:t.1"5#;ߗ_E9SEZBwqqu, PH^|+ ̪,־85] @ ؤQt>6RGB[S*4բ'eI;BH:]0`H FfXG`;!梨 ^7uf|*>h{s;,<ڲ{4m!\h=b)̊0 aY뮥- E"'bůy+, +K$*§m.\ޒ9Rs`4_whP LM[NMDa%1[Q&sh ~yں$`RhK5$H"kkAGXXCY2Çk$'W d(e ,mbKJ.` $ehڥN@<JdiyQEP.j[&ɠ( +/P7jߍ8Ah_҃$Rp6kM"Jt'梠=5<gfS# \;A(:t\{ Q>`,i&*%2Ȁ<37V؂;L%{f۳|PiBN(Q~&rуHXCM?kOi $rg=NHK!x *L0w4oa`DYJj=\ SPy5>8Hk_oi[^"&r45db.3R<Š4ǡK>4>^/HDa4l)tq"Jy(T5dfs+= ް_![F`^lH?i B1BU`zm]Lϧr71tAG3*|Q SN=0PD_5XNeEn \ +/j"܉;G^c=m/m>qHiW5g" +a7է)M CL)GIzطKv%u#]@`߳魐aq FOcE$ +KU 0[ + G,R#* +QGBv飰ByX xM0mpYYDNiL3iB]nM; 8GcxSΡgL͏S: -_#凣i=%1VDaEW)jP"{‹myWt>0 +-/@HP l7o=b_&_h`O5C[r +M M*P6lN7Dnݢ'PLaFs׆.-:KH8<!s2B^{{QX D r=@0(5ejCo6CQmi`i|ڝA *t8Tup4+K>2mumq@U]H@)T  U^R(ԂFiQc)A28X.ڔFDX6HL xO](LGCmp>5ܥ-!b*^lګ1Vd9EDTD3 K@"%o׈e$"t; |r(*_@iT`<+pSҙ +ЭDis?~5y͒ݓM9a1X@ k g!D"MeOkR]jZhE/DhXM\PȞ F J SlELCj[@84ۛÖ &聻P9*Ƶ`N@Iqf8H(+0q -@kR/q6G'v& )wQUDQlE ~tlT Q9Ž] vbxů܉znEvh5:`z54s`"57Cn:K%AdfgM>+͂OZH1^C +k#Q'6FtGhu-і.'HDƢgUR.ȿDgqW46MQ_riSW^5QE M#|6 N+ču @fjV!I\$y]Xt9w + cE!eaA?g;I;`k?hi_e7t^h_Lfis!jȮ|atA~˘\94^{Ġ-^~H"x `Ӌh0Euqȣ\/s$p$jR`Į/3S7)TS6ZRl^3?.퀩FҎd<D+j= #vԐ:[Q]犮ӆ㖱ѧ-:=2 V^udjޫetEƲYg#wO|P}Ɗ#"IvU@c(yӱkM|.D{ +Fީ +1U&.._ +FyI%&GYat$|}le-I}*cqU@>K) Ŧ^\@ ZT}u@Djw!gC|^ұ7Lr9#M5,RQMPHڻũ|DP.~%AfEnxd^uk(?/_老5r`!0GGTC Y:O9%k_!ie ڪY)5ߝ?^F'Ɓ:(&63@bxm&1hR'`xB݁VN1bgmW/2L)IKDpq<Ɛ㦴AKěo7Ђh>`bwcQn_k*)C{IJG ^cɈ6xA{nI%dxKthOmgmsm@tT;A;\bp͢imfXEktTDlNKj@C1%(ġQΚaUa% kݩ:]-%FpC't٣;ЙPZD# KuDGRT"%uèT7͈Âxi D( :6 e}; mLk! ` KHj@FFYsRj88Ƌ=r: viTXtXML:com.adobe.xmp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4f'PLTE'O'_G7_!/wAAw_!GG8JtRNS@fbKGDH pHYs  tIME 8^~IDATx휿kHǗ#n"Fk1WFIs&Ej 2+bpsݑ-t'?u[3h4.2Ů^yfbs6vwܟKoA? Y6o~=>x8؝r#PB}Rs1 VVؘtEd" -X[OwizMbg4˔!R !rVk?` ^ouM\A0 `.9)]5D]s XWv}7ʅ;KgՂ_:`{h0K9!O<&$>( @8##`f,_h# 6HXx_Ady x @C*^HVHDDhqMHTB_,^g!Jwp.V[fpE#Y ++֢h:= s`"5+yg#K$dEa7AW$6oZ4l$`VڦW +@^'ؒ[eI.㞶0j]cZ HR^ؙL!Όg0c9ˑ{PػeDy!0\Ͳ2v&l#xi 4W؄xY Ky  GK v#R7ޅ#1ncCj%$?ۖ{ ZSa' y 'P@,(}@^LxΤ΄ l:e*#ΘˆԼo(%PtI(i'{7wNj2yss{||T:V0kg{= X8Vх@&J떦^u4@e%z= e3%Ra,N3ZiU:-OBz*B+|l4xcP"  46`TUZm{w$N(Ԣ0% t{R1g{ +e>jڝYy\'H|Q\M[Iǽvf6"سDIQp,6|b;$N"l»`@#<D(<PXلZ + + 8 8 8 + 192 + 192 + 1 + 2 + 300/1 + 300/1 + 1 + 1 + +|u +StaffBack!? " +    %$#uu +/ ?J/Xh) + , . / 1 2 3 5 6 7 8 9 : ; < =     +  +  +     + +    + +   +   +   +   + !   + "   + ##! + + #"   + -+)'&#!  330.-*('%#" 75420.,+('%$! + 7632/-+*('$"  + 97531/-+)'&$"  + =<97531.-*)'%$#  + @=;:7520.,+('%$#! @=;97430.,*('%$"" + C?=;8642/--+)(%$"!! + CA?<:85310-,*(('$#"!  + CA>=:7531/-,*)'&%%"!  + KIGEB@>;97531/.,**('%$#"!!  +  RQOMJHFEB?=;98531/.,+*('&%$#"  +  !! TRPNLJHECA?<:775310.-,**('&%#"!  +  !!""! SRPMKHGEA@><:875320/-,+*)(&%$#""   !""#""!ZXUSQOLJHFDB?><:875321/.--+*)'&%$#"!  + !"#"![YVURPNKIGECA?=<:8754310/.-+*)('&%$#"!  +  !#$#" ^[YVSQOMJHFECA?=<::7652210/-,+*)('&&%#"! +  "$$%%$#" ][XVRPOLJHFCBA?><:98644321/.-,+*))'&&$#" + !"$%&&%$" b_]ZWURONKIHFDBB?><;987654210/.-,,*)('&%$# !#%&%$#eca_\YWTROMJIGFCBA?>=;9987543220/.-,+**('&&% + !#%&''&%$"fc_^ZWVSPOMKIGFCC@??=<;:986543210/.-,,**)(&% + !#%'(('&$# db`]YXTSQNMKIHFDCB@?>=<:9876543120/.-,++)('& !#&'('%ljfea_\YWURPNMJIHFECBA@?><;:9876543210/.-,+*)(( +  #%'()('&nlhgc`^\YWTQPNMJJGGFDBBA?>=<;:9876543210/.-,,**( "%'())('qnlhfc`^[WVTRPNMKJHGFEDCA@>>=<;:9876543220/.-,+*) !$')(&pmkhdb`\[XUSRPOMLKIGFFECBA@?>=<;:9877543211/.-,+* #&(*)'spnjgda_]ZWVTRQNNMKJIHGFECBA@?>=<;:88765432200.-,+!%'*6(&sqmigda^\YXVTSQPNMLKJIHGECBBA@?>=<;:9876543210/.-, #&)*+*)wuspljgca_\ZXVTRRPONMLKJHGFDCCBA?>==<;:98765432100.-"%(*++*)xuspmheda^[ZXWUTRQPNMMLJIHGFEDCBA??>=<;:9876543210/. #')+,+*(yusokifca_\[YWVTSRQPNNLJJIHFFECCBA@?>=<;:9876543210/"%)*,,+*{xvsolifda^][YXUUSRRQONLLKJIHGFECCBA@?>=<;:9876543210 #'*,-,+){xurolieda_]\YYVVTTSPPONMLJJIHGFEDCBA@>>=<;:877654321"&)+-.-+(|xuqnlheda_^\ZYWWVTTQQPNNMLJJHHGFEDCB@@?>=<;:98765432!$(+-..-+}yuroligda_^\ZZXXVUTSRQPNMMLKJIHGFDDCBA@>>=<;:9876542 $'*-//.-*}yvsoljfeba_^\[ZYWVTTSRQPOMLKKJIHGEEDCBA@?>><;:987654$'*,/00/-*|zvroljhdca`]]\[ZXWVTTSQQPONMKJJIHGEEDCBA@?>=<;:98765(*-/011/-*}yvroljhfcb`_]]\ZYWWUUTSQPPOMMKJJIHGEEDCBA@?>=<;:9876,.123220-)}ywrpmjhedc`__]]ZYYWVVUTSRPPONMLKJIHGEEDCBA@?>=<;:87702445430-}ywtqnjhgedaa`^]\ZZYWVUUTSRPPONMLKJIHGFDDCBA@?>=<;99856753/,~zvspmkigeecba`]]\[ZXWWVUTSRQPONMLJJIHGEDDCBA@?>=<;:9:;9740+~zwspnkihgedcba_]]\[ZYXWVUTSQQPONMLJJIHGFEDBBA@?>><;:?=;74}{xsromkhgfdcca`^]][ZZXXWVUTRRPOOMMLKJIHFEDDCAA@?==<:EDB?<94~{xuqonkiigeeca`__^\\[ZYXVVUTRRPPONLLKJIHGFEDBBA@?>=94zwuspnljhhgedcba`_^][[YYWVVUTRRPPNNLKJJIHGFECCBA@>==OLHD?:{wurpolliigfddcb``^^\\[YYXVVUTSRPPONLLKJIHGFECCBA@?>TOKF@9~{xusqonljihgeedbba_^^\\[YXXWVUTRRQPOMMKKJIHGFEDCBA@?XRMGA|ywsqqomkjihgeddcaa`_^][[YYXWVTSSRQPONLKJJIHFFEDCBA@[UOHA|xvurponlljhhgeecbaa`^]\\[ZXWVUUSSQQOONMKKJHHGFEDCBA]WPI|yxusqoonlljhhgfdccb``^]\\[ZYXWUUTRQQPONLLJJIHGFDCCB  ! ! # $ % & & ' ) * * , - . . 0 1 1 2 4 +5 6 7 8 8  +       !  " & % % & ' ( ) * + , - . / 0 1 2 3 4 +5 6 7 8 9 : ; < = >    +    +  +    +     +    +    +    +    +    + +  + +   +  +  + + ! + % + * + , * ) + ( ' + +& +% + $ + $ + # + !   ! +!  "!  +#"!  +$##!  %$#"!  + +&%#"!  + + '&%%#"!  ('&%$#"!  + )('&%$##!  *('&%$#"!  + +*)('&%$#"!  + +*)('&%$#"!  + -,+*)('&%$#"!  + .-,++)('&%$#"!  + /.-,,*)('&%$$"!! + 0/.-,+**('&&$#"!  + 1/.-,,*)('&%$#"!  +  210/.-,++)('&%$#"!  +  3220/.-,,+*)'&%%#"!   43220/.-,,+)('&&$$"!   +542210/.-,++)('&%$#"!   6543210/.-,,*)((&%$$"!  + 76543211/.-,,+)('&%%#"!  + 876543210/.-,+**('&%%#"!!  + 9876543220/.-,+*)('&%%$"!  +:9876542211/.-,++)('&%%#"!  + + ;:8876543210/.-,++)('&%$#"!  + <;:9876643210/.-,+*)('&&%##!  + =<;:9886543210/.-,+**('&%$$#!  + >=<;:9876542210/.-,,+)('&&$#"!  + >==<;:98765432100/-,++)('&&$$#!  + @?==<;:9876543110/.-,,*)('&&$#"!  + A??>=<;98876543220/.-+)('&&$#"!  @ > @ ?  ? ? > > = "  "  >> +W`XQH|zwuurpponmkiihgfddbb``_^][[ZYWVVTTSRQOONMLJJIHGEEDCaZQI}zywutqpoomljiihffedbb``^]]\[YXXVVUTSQPPOMMLKJIHGEDDbZRH}|ywusrqppnlljiigffeccba_^^]\[ZYXWVUTSQQPOMMKKJIHFFEc[RH~{zxvttrqpomlljiihgedcbb`__]]\[YYXWVUTRRPPONMKKJIHGFd[|zywvusrronmlkjjhhgeddbba`^]\\ZYYXWVUSSRQOONMKJJHHGe[}|yxvvutrponnmljihhgfeccb``^^\[[ZYXVVUSSQQPOMMLJJIGd[|{ywwuusqpoommlkjhgfedccba_^^\\[ZYXVVUTSRQPONLKKJIe[}{yxwvusrrponnllkihggfeccaa_^]\\[ZYWWVUTRQQPNMLLKIe\~}zyyxvutsqponmlkkjhhgfdcbba__^\\[ZXWWVUTSRQOONMLKf\~{{yxwuusrrponnlkjjihgeecba``_]\[[YYWVVUSSRPPOMMLf\~}|zzywvutsrqoommkjiiggfdccaa`^]\\ZZYWWUUTSRQPONLf\~|{zzwvutsrrponnllkjihgeedbba`_]\\[YXWVVTTSRQPONg]}||zxwvutssqpoommljjigfeedbba__]\\[ZXWVUUTSQPPOh]~}|{yywwuutrqqponlkkihhgfdcbb``_]]\[YYWWUUTRQQPh^~}|{zywvuussrqonmllkjhhgfddbb`_^^\\[ZXWWVUTSQQi^SH~}|zyxxwuttrqqonmmkjjhhffecbb``^]]\[ZXXWVTTSRj_TI~}{zzxwvuussqppnmmkjihhfeecba`_^]\\[YYWWVTTSk`UJ~|{{zywvuttsqqoomlkkihhgfdcbaa__]][ZZYXVUUTlaVK~~}{{zxwwvttrqqonmmkkihhgfddba`__]\[ZZYWWVUmc}|{{yxxvutssrpoommljjigfeedbb``_]\\ZZYWWVnd~}|{zzywwuutrrppnnlkkjhhgeedba`__^\\[ZYXWoe~}}{zyxxvuusrrponmmkjihhgedcbb`__^]\ZZYXpg}||zzywwutsrqponmmkkjhggeedbb``_^\[ZZYsh~}|{{yxxvuussrponnmljihggfedba``^]]\ZZuj_T~}|{{yxxvvusrqppnnmkjiigffdcbaa__]\\[vkaU~}||{yxwvvtssrpoomlkjjhggeddcaa`^^]\xmbW~}|{zzxwwuttsrqonnmljihgffedbba__]\zodY~}|{zzxwvvttrrppnnlljihhffedcb`__^|qg[O}}{zzxxwutsrqpoommljjigffedbb`__~si]Q~~|{zzxxwutssrqonmmljihhffecbb``uj_S}|{zyxwvvttsqponmlljihhgfedbbavl`T~}}{zzywvuutsrqoonmlkihgfedcbaxmbV~~||{zxwwuutsqponnlljihggfecczocW~}||{yxwvvutrqppnnmkjihhffec{odX~~|{zyxwvvusrrqonmlkkihgffe|qeY~~||zyywvvtsrrppnnlljihgge|rfZ}|{zyxwwutssqponmllkiihg}rfZ}|{{yxwvuussrqpnmlkjiig}rg[~}}{zzxwvuusrqqpnmlkkih}rg\~}||zzxwvuttrqqonnmlji|rg\~}|{{yxwvuutrqponmmlj{rg\~}|{zyxwvuusrqponnlkzpg[½}|{{zxwvuutrrpoomlwoe[þ~}|{zyxwvvttrqqonn{une[ÿ~~}{zyxxvuutsrponxrkcY~~|{{yxwvvussqppsohaYO}}{zzywvvussrpnje^WO~}|{{yxwvuusrqhfb\UM¾~~||zzxxwuttsba]YSL¿~}}|zyywvutt\[ZVQKÿ~}}{{zxwvuuWWVTPKD~}|{{zywvuQRRQOJE}|{zzyxvKNOOMJD~}|{zyyxFJLMLIE~}|{{yxBFIJJIE~}|{{y>CFIIHE~}|{z:@DGIHFB=¾~|{8>BEHHGC>~}|5;@DGHGD@~~28>CFGGEA06-4:@DGHGD?+28>CFGGEA¿ BA@>>=<;:9876543210/.-,+*)('&%$##!  +CBA@>>=<;:8876543220/.-,+**('&%$#""  + DCBA?>>=<;:98765432200.-,++)('&&%#"!! + DDBBA??>=<;:9886543210/.-,++)('&&$$#!  +EDDCAA??>=<;:9876543110/.-,+*)('&&%#"!  GFEDCBA@?>=<;:9876643221/.-,++)('&%$#"!  +GFEDDCAA@?>=<;:8876543211/.-,+*)('&%$$"!  IHFFDCCBA@>>=<;:9876543210/.-,,*)('&&%#"!  +JIHGEEDCBA??==<;:98765432200.-,+*)('&&%#"!  KJIHGFDDCBA@>==<;:9876543221/.-,++)((&%$#"!  KJJIHGFEDCBA@?>=<;:9876543220/.-,++)('&&$$"! LKKJIHGFDCCBA@?>=<;:98775432110.-,+*)('&%$##!! NLLKJIHGEEDBBA@?>=<;:88775432100.-,,+)('&%%#"! ONMKKJIGGFEDCBA@?>=<;99876543210/.-,+*)('&%$#"" PONMLKJIHGFEDCBA@?>=<;99876543220/.-,+*)('&%$#"! QPONMKJIHHGFEDCB@@?==<;:8876543210/.-,+*)('&%$$"! RPPONLKKJIHGFEDCBA@?>=<;98876543210/.-,+*))'&%$#"! SRPPNNMLKJIHGFECCBA@>>=<;:9776543211/.-,+*)('&&$$#! TSRPPONLKKJIHGFEDCBA@?>=<::9876543210/.-++*)('&%%#"! TTSRPPOMMLJJIHFFDDCBA@>>=<;:9876543210/.-,,*))'&&$#"! UUSSRPPNNMKKJHGGEEDCA@@?==<;:97765432110.-,+*)('&&$#"! WVUTSRQPNNMKKJIHFFDDCBA@?>=<;:9876543210/.-,+*)('&%%#"! WWVUTSRPPONMLJJIHGFEDCB@@?>=<;:9876542210/.-,+*)(''%$#"! XXWVTTSRQPONMLKJIHFEDCCBA@>>=<;:9776543210/.-,+*))'&%$#"" YYWWVUTRQQPONMLKJIHGFECCBA@?>=<;:9886642120/.-,+*)('&&$#"" XWVUUTSRPPONMKJJHHGFEDCBA@?==<;:9876543210/.-,+*)('&%$#"!! \[YYXVVTSSQPPONLKKJHHGFDDCBA@> `<;:9876543210/.-,+*)('&%$#"! \\[YYXVUUTRQQPONMLJJIHGFEDCBA@>==<;99876543210/.-,++)('&%$#"! ]]\[ZXWVVUTSQQPNNMKJJIHGFDDCBA@>==<;:9776543210/.-,,+)('&%$#"! ^]\[ZZYXVVTTRQQPONMLJJIHGEECCB@@?>=<;:9876543211//-,+*)('&%%#"! __^\\[ZYXVVTTSRQPOMMLJJIHGFECCBA@>>=<;:9776543210//-,+*))'&&$##!a`_^\\[ZXXVVTSRRPPONMLKJIHFFEDCBA@?>=<;:9876543210/.-,+*)('&&$#"ba_^^][ZYXXVVUSRQQPNNLLJJIHFFEDCB@@?>=<;:9876543211/.-,+*)('&%$#bba_^^]\[YYXVVUSSQQPONLLJJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%%dcb`_^]\\ZZYXVVUTSQQOOMMKKJIHGFDDCBA@?>=<;:9876543210/.-,+**('&%ecbba`_]][[YXWVVUSRQQOONMLJJIHGEEDCBA@>==<:99886543110/.-,+*)('&fdcba``_]\\[ZXWWUUTSQPPONLLKJIHGFEDBBA@?>=<;99876542210/.-,+*)('feedcaa`_]\\[ZXWVVUTSRQPONMLJJIHFFEDCBA@?>=<;:9876543211/.-,+*)(gffddbaa`_^\\[YYXWVUSSRQPOMMLKJIHGFECCBA@?>=<;:9776543210/.-,,*)hgfeeccba`_^]\ZZYXWVUSRRQPONMKJJIHGFEDCBA@?>=<;:9876543120/.-,++ihgfedcbb`_^]\\[ZYWVUTTSQQPNNMKKJIHGFEDCB@@?==<;:9876543220/.-,,kihggfedcba__^\\ZYYXWUUTRQPPONLLKJIHGFEDCBA@?>=<;:9876543220/.-,kkiiggfdccb``_]\\[YXXWVUSSRQPOMMLKJIHGFEDCBA@?>=<;:9876543211/.-mkjihhffdcbaa_^]\\[YYXWVTTSRPPOMMKKJIHGEEDCB@@?>=<;:9876543220/.mlljiiggeecbba`^^]\ZZXXVVTTSRPPNMLLKJIHFFDCCBA@?>=<;:9876543110/nmllkihhffdcba`__^\\[ZYXVVUSSQPPONMKJJIHFFEDCBA@>>=<;:9886543120oonlkkihhffdcbaa`^^\\[YYWWVUTRRQPONLLKJIHGFEDCBA??==<;:987654311ppnnmkjihhgeecbba`_^\\ZYXWWVTSSRPPONMLJJIGGFEDCBA@?>=<;:88765432qqonnllkihgffdcbba`^]\\ZYXXWVUTSRQPONLLKJIGGFDCCBA@?>=<;:9876543rqpoomlkjjiggeedbb``_^\\[YXXWUUTRRQPOMLKJJIHFFEDCBA@?>=<;:987654srrqpnmlkkiihgedcbb``_^][ZZXXVVUSSQPPONMKJJIHGEEDCBA@?>><;:98775ttsrponnmljihggeddbaa`^]][[ZXXWVUSSQQPONMKKJIHGFEDCBA@?>=<;:9876uttrqqpnnlkkihgfedcbba_^]]\ZZYXWVTTSRQPOMMLKJIHGFEDCBA@?>=<;:887wuusrrponmlljjhhfeecca`_^]\\[YYWWVUSSQQPONMKJJIHFFECCBA@?==<;988wvuussrppnnllkjhhgedcbaa`^]]\ZZXXWVTSSQQPONMLKJIGGEEDCBA@?>=<:99yxvutsrqponmmlkiiggedccaa`_]][[ZYXWVUTSQQPONMLJJIHGFDDCBA@?==<;:yxwvuussqponmmkjihhgfdcbba`^^]\ZZXXWVUTRRPPONMLJJIHGEDDCBA@?>=<;zzxwvvusrrqpnmlkkjihgeddbb``_]]\[YXXVVUTRQPPONMLJJIHGFEDCAA@?>=<{{zywvvtsrrqoommljjhggeddbb``^]]\[ZYWWVUSRQQPONMKKJIHGFDCCBA??>=}|{yxwvvttsqponnlkkihhfeedbb`_^]\[ZZYXVVUTSQPPONMLKJIHGEDDCBA@>>}}{zzxwvvttrqponmlkkihhgfecbb``^^\\[YXWVVUTSRQPNNLKKJIHGEEDCBA@?~~||{yxwvvusrqqpnmmkjihhgeddba``^]]\[YYWWVUSSQQOONMKJJIHGFEDCB@?~}}{zzxwwuutsqqonmmljihggfdcbba`_^]\[ZYWWVUTRRQPONLLKJIGFFECCBA~}||zzywvuttrqponmlljihhgfddbb`_^]]\ZZYWVVTTSQQPONLKKJIHGFECCB                 +          +   +   +               + +  +               !  " >  <;;997 6 + 5 +5 3  +2 + 2 0 + + / + / + - + , + + * +* + ( + ' & + +% + % $ " +   +   +"  + + +"!  + + #"!  + $#"!   &%##!  +  +&$#"!! + + '&%%#"!  ('&&$##!  )('&&%$#!  + + *)('&%%$#!  + ++*)('&&$$#!  ,+)('&&$#"!  -,+*)('&%$#""  .-,+*)('&&%#"!  + /.-,+*)('&&%##!  + 0/.-,+*))'&&$#"!   10/.-,+*)('&&%#"!   +210/.-,++)('&&%$"!   + 3210/.-,+*)('&&$$""  +   +43210/.-++**)'&%$$"!     +5431/.-,+*)('&%%#"!! +  +6543120/.-,,**('&%%#"!  +   + +77543220/.-,+**('&%$$#"   + +   + +876543220/.-,,**('&&$#"!    + + + + +9876543110/.-,,*)((&&$#""   + +:9876543211/.-,+*)('&&$##!  +  +;:9876543210/.-,,*)('&%$$"!    +<;:9776543210/.-,+*)(''%$$""  +   +=<;99876543210/.-,+*)('&%$#"!    + >=<;:9876543211/.-+)('&%$##!    + ><;:9876533210/.-,+*)('&&$$"!  + +@>==<;:9876543210/.-,+*)('&%$#""! + A@?==<;:9876542210/.-,++)('&&%#"!  +  > > = < ; : 9 9 8 7 6 5 +4 3 2 0 / . - , + ) ( ' & $ # " p)06CGHGEA#*07=BEHHFB¿!(/6CGIIGD¿#)07=BGIIHE '.5;AEHIIG%,39@DHJJH¿Y#)07>CGIKJHC!'.4;AFIKJIF%+28>DHJKJIE"(/5BGJLMLKIF¿ + "(.39?CGJKMLKIF #)/4:>CFIKLLKIG + $*/4:?BFIKLLKIGD? + $*/4:?BFIKLLKJGE +  %*/49>BEHKLLKJHE¿ +  %*/49>BEHJLKIF +  $*/38=ADHJKLLKJGDA + $).37<@DGIKLIHE + #(-27;?CFIKKLKJIGD + #',16:>BEHJKLLKIGEB + "&+059=ADGIKLLKJIFDA + "&*.38<@CFHJKKLKJHE +  $).26:>BEGIJKLKKIG + #',058<@CFHIKKLJJHFDA + "%*.27;>BDFIJKLKJIHFDA> +  $(-148ADFGIJJKJIIGFCA@=  "&)-159ACEGHIIJJIHHFECA !$(+/258;>ACEFHIIJIGED + "%),/258;>@CDFGIJIIHG "&),/258;>?BDEGHHI + "%(+.2479<>ACEFGHHI "%(+.0379;>@BDFGH + "%'*-0358:=?ACE + "$'*,/247:<>@ !$&),.1469; !#&(+-025 +  #%'*,/ +  "$&( +  " +  ~~|{zzxwvvutsqpoonlkkihhgfedbaa`_^\\[ZYXWVTSSRQPONLLJJIHFFEDC~~}{zzxwvuutrqpoonmljihhgeeccba__]\[[YYWWVUTSQPPNNMKJJIHFEEC~}||zzywwvusrqponnllkjihgedccba`_]\\[YYWWVUTRQPPNNMLKJIHGFD~~|{zyxwvuussqqonmmkjihggfdcbba`_^\[[ZYWWVTTSRPPNNMKKJIHGF~~||zyyxvutssqponmlkjiihgeeccaa`_^][[ZYXWVUSRRPPONMLKJHGG~}|{{zxwvuussqponmmlkihhffdccaa`_]\[[ZYWVVTTSQQPOMMLJJIH~}|{zzywwuusrrqonnlljjhhgeedbba`^]]\ZYYXVVUSSRQPONMKKJI~}}{{yxwvuutsqponnmkkjhhgfedba``^^\\[ZYWVVTTSRPPONMLKJ~~|{{zxxvuutrqponnmkkihhffddbba`_]\\[ZYXVVUTRRQPOMMLK~}|{zzxwvutssrqoomllkihhffddca``_]\\ZZYXVVUSSRQPNNML~}|{{yxxwutsrrqonmlljiihffdcbba_^]\\[ZYXVVUTSRPPOMM~}}{zyxwvvusrrponmlljiihffecbb`__]\\ZZXXVVUTRQQPON~}}{zyywvuttsrqoonmkkjihgfecbba`^]\\[ZXXVUUSRRPPO~}}|zyywvuttrrqpnmmkkiiggeddbba`^^][[ZXXWUUSSQPP~|{{zxwwuussrqpnnllkiigfeecbb``_]\\ZZXWWVTTSRQ~}|{zyxxwutsrrppnnllkiihgfdccb`__^\\[YYXVVUTSR~}|{zyxxvuttrqpponmkjiihfeeccba__]]\[YYXWVUTR~}}{zyxxvuttrqponmlkjjiggedccba__]]\[ZYXWUUT~~|{zyxwvuusrqponnlljjihgeddbba`^]\\ZYXWWVU~}|{{zxwvuusrqponmmkjihggfddbba`^^\\ZZYXWV3~~|{zzxwwutssrqonnlkkjhgfedccb`__]]\[ZYXW~}|{{yxwwutsrrqpommkjjhggedcba``_^\\[YYX~}||{zxwvvusrrponmmkjihgfedcbaa__^]\[ZY~}}{{yywvvutsqqoonlljihhgfdcbba`_]][[Y~}|{{yywvuusrrqonmlkjjhggedccb``_^]\Z}|{{yywvuutsrponmllkjhgffdccba`^]\\~}|{zyxxvuttrqqonnlkkihgfeddbb`_^^]~}|{{yxxvuutrrqonnllkiihfeedbba`_]}|{{yxwvvusrrppnmlljihhfedcba``^~|{{zxxvuusrrppnmllkihggedcbaa`~}|{zyxwwuussrqoomllkihggeddbcb~}||{zxwvvussrppnnmljjhhfgfecc~}|{{yyxwvttsqponnmlkigfdc~~|{zzxwwuusrqponlkjiigged~}|{zyxwvutssrqpoommljiiggf}|{zyxxwuuttrqpoonlljkjhg~}|{zyywvwvusrqqononmkjji}|{zxwvuttsqqpponmmkl~}}|{{yxxwuuttrqoonmm~~|{zyxvuvtrqrppo~}|{z{yyxxwwvuttstsr~}}|{|{zzxyxwvwuv~}|{yx~}~}|}{|ڴӺ̆()**Ύ*+,--..//0./01210B@¿З0223433220FECA?=ƚ013344543320/HGFECA45654320.-IHGEDCA67788765310.,)HIHGFEDBA@?>=<;78986541/,+(&FGHHIIHHGFEDCCBA@?>>=;:9:;<;<;:987531.,)'$"BCEFGGHGFEDCCBA@A@@@A@@?>><<;97530-+(%# =?ABDEEFE DEFGHܳHGFEDCB@>=;97530-*'$!79;=>@AABBCDEFFGHIJLMNNOPONMKIGECA><:742/,)&# 1467:;<<>?@ABCDEGHJKNOQSTVVWVUTQOLIFC@>:741.+(%"*-013457889:;<=>>@ABDFHJMORUWZ\]^^_^][YVROKGC?;741.*&# $')+,.002334556789:;=?ACFIMPTX[^acdeecb`]YUPKFA<940-)&#  !#$&()*+,--//0123468;=ADGLPUZ^behijjigd`\WQKE@:51,(%!  = < ; : 9 7 6 5 4 +3 1 0 . , + ) ' % # !    ! " #BA@?>=<;99876533210/.-,+*)('&%$$#!   + CBA@?==<;:97765432100.-,+*)('&%$#"!  + DCBA?>>=<;99776543210/.-,++))'&&%##"  + EDCBA@?=><;:9876543210/.-,+*)('&%$#"!  +FEDCBA?>>=<;:9876543210/.-,+*))'&&%#""!!  +GFEDCB@@?>=<;:9776543220/.-,++)('&&$##"!    !!  HGEDDCBA@?==<;:86543210/.-,+*)((&&%$$"! !"## IHFEECCBA@?>=<;:9876543210/.-,+*)('&$##"#"#$% + JIHGFDDCBA@?==<;:97765432100.-,,*)(('&%%$$#$#$%$%& + KJHHGFDCCBA@>>=<;:87543110/.-,+**)(''&&%&'( + LKJIHGFDDCBA@>>=<;:9876543210/.-,++**(('('('(() +MKKJIGFFEDCBA@>>=<;:9876543211/.--,+**))()* +NMLKJHGFFEDCBA@?==<;:98765432100/.-,,+*+**++,,- ONMKKJIHGFEDCBA??>=<;:988654322100.-.,+,-,--./. PONMLKJIHGEEDCBA@?>=<;9987655432110/.-./0 +PPNMMLKJIHFFEDCBA?>==<;:8765432310/012211 +QQONMMLKJIHGFEDCBA@?>=<:;:887655343221234 SRPOONMLKJIHGFEDCBA@?>>=<;:98876554434545 +TSRPPONLKKIIHGEDDCBBA@?>=<;;:9887765767 +UTRQPPONMKJJIHGGFEDCBA@??>=<<;:97898:9::9 VTTRRPPONLLKIJIHGFEDCBBA@??=<;:9:;< +WVTSSQQPONMKJIHGFFEDCBBAA@??>=>==<<=> XVVUTSQQPONMLKKJIIGGEFEDDCBBA@?@ +YXVVUSRQQPPNNMLKKIIHHGGFFEDC +B ZXWWUUSSRRQOONLKIJJIIHGFEFE +ZZYXWVTUSSRQPPNMLKLLKKJHIIHG \[ZXWUTSRRQPONMLKJI ]\[ZZYXWVUSTSSRQPQQPNONNML +]\ZYWWVVUUSTTSTSSTSRQ _^]]\ZZXWVUUVVUVWVWW a_^^\[Z[ZXYXWXXYZYZY +ba__]^]\[Z[\] +cb``_^]\]\\]^_` !  +dcbb`_^_^__`aabbc!!"!  +fddbcbba`bbccdede!!"#"!  +fedcdccddcdeeffggh"##$$##"!  iggfggefeffgihiji#$$%$"!  + kjihijjkklkm$%%&&%$#! mklmnnono&%$#"  + onnonmmnonoppqpp%'&%$" + + rqqrpqrqqrrsst&''('&$"  + tutuv')('$"  + ywxwxwxxyxx)*('%#! +  |{z{()**+**)'%#! +  ~~~)*+*)(&#!  )*++,+)(&$! +,-,+)'&$! + +,-.--,+)'&#! + .-+*)'%"  + /.-,,*)'&$! +0//.-,,*)(&$#  +/-,+*)(&%#! +.,+*('%$"! +)(&%#!  + '&$"! +#"  +   ! " $ + % + & + +( + ) *``00 c30010.png!? " +    %$#vv>JVwwy/zUz]}``&.6  0 )  +" + + + +   +    +  +    +  0)"##(()). 2 +4 +4 578 44 + . +) + % + % + "+( +      +4 +4.)%%" !!#')),-.  };;87664222/.--,, * * * ) ) , +***(''' % %%$$# # " "" " "   + +  + +      +   +  +  +" +" +" +"     };;87664 +2 2 2 /.--,,***)))((((('''%%%$$##"""""           """"  + +   +              +       +   + +  + +  +    + + +  +      +   +  +  +  +  +            +  +89::                        + +     $!!#&    # +    + +  # # 1 !**'                 .1 3 3 6788:;<<== 001,+0//-.--,,--//(('% % $ $$--/.--.,++( + + + + + + + + +00/,++**(( ' ' +& +& +& +& +& % % % % # #"""!!!           """"# # #  #  # # #  ##### # # # # # # $ $ $ $$ %%%%%%'' ' ' ( ( ( ( ) ) ) ) )* * **,,-.//1 1 2 2     """"##################$$$$$%%%%%%''''(((()))))****,,-.//1 1 2 2     +  +                +                     +   +  +   +            +        +         +                      +        +    + +           + +  + +                       + +            "" $ + +$ +" +  +         " " !   + +  ! !     + + +       !!!"##    !!!" # #3 4 +4 +4 +67789;;<= 3 4 +4 +4 +67789;;<=       +                 $$'0::@>>=<997 5 3 3 2.++)$$! $$'0:: +  +            +  +  +   00.,++('$$$&&)*--. 277y{:65 3 3 2 1 00.,++('$$$&&)*--. 277y%& ' '(**+ + % +& ' '(**+ +y<A PNG + IHDR`-zTXtRaw profile type exifxڥi7Es 1wsdaG[%!#;?_ >rV{r=|~CqW>P|j-hE3"s F 3BQS|CfE\,77W['s #r}Qۂ"BՠOT?= ӭF7kL; @@ -13021,36 +14147,40 @@ O *9;w'%%%&&&                      ` ` ` `yx<<PNG  - IHDR`zTXtRaw profile type exifxڥir9sqXsTRu[׌X"d2-(w翯/˥:j#8ϟ>g,uW^_m~//qbB_7JZQ.4??kWϿKx~}!7 J1sJs)MV>ǔy+ *=?%oE-}c[ꏯ?^w /+K`=+Q_F#0Z}{_$d协FdⲀffs<5{G\/3YƖFک2S,erֹ5.o{BK>ac]Q29}md$ܯ2&兹s +gm -_?~Deǽ R 5c @v4Y@(%nsJ[+ͅXuL&ʹP?-wjhTr)VzeTs-ڪmr+zms/{}8WFm1Ɯsr/&XdيUkm\ʫkNhuC)|ʩ8Rk7|˭~ǝ??>AW˔~dW[jh"9F -3CQS"r2F .O~f/IR܏Ӿ7Y2BOt{SƮn]K)uh2mlY*hɀ8k_ah@jsRv72Y\@V?M[([wgVJpZu:ԂŽU?J[tej m++־F^L r5v{ݩبpԓ+`OP^קqب7;TöJNpDP$@ ~:W꿘c$Þ!RdI c)bvrܻF+ fR_uۍqm봰mvLV/;5O_Ωs#Ly?tGɗF3SzPckxc7E:zH*~eʡv!ҭ8AmlD(%qAc-\O7nJdzs%VTT̥)0X,~Qzf!u=P0gXr?G|"6϶bN91Pi);5KٵVܻ&&@]}]uGOV:Z&vSogeʟRba,e8F /j$\V1g`S5u:570˫zMzCw$M*K=;hzNk#Q&:;f垈ϰܛ@ !Y(C^r ,B FhR{ mU)pv Gtc*[$D):E*) -In:,wPK9D V\ߴx0@&3UuqxpY<+e:LΓK@ո\9ԻVi֨>v Q{(:ee&`x NgaԨb2w(9W!*] n5r{Eg{0 -M -僴OMiźD@ REi&?TږUV.@z6Kg[ZEmynK[NZ+SJTZ)'*H.ixB=;8vK*J;#6>v` P2Kڨ`Z&8-YHD lKg g»(HX@#:M~YCMwʟ~( &xۉ)BpÉ\|&vMQM 4 -ǎsP9r4=!\'.*ŪꁚvQL{Q;^7w)?b bGT3P ^= {Y-ݐ{}ÍF B[&Q^A mfnXw&tvTb:#r,xa`6D>l5YjJVChH+U+ۻ*PD0lj7i'/fNl)4S] зt3A7)ԸfZ]b,+AZcm-S>0HJlLiPRO6Q,FF&6U9Fڃg #C逎p5MF=Tq$eohY8!#]a`~Ns0Sݕ^wѡ-0ɪ ^J~O7 -/ IȉA ?(["zJlZ i,(HP`=7dd,YnT-*-CPp"C0/wt%zP"Lp`PbPOL t|c{K&rU#xPj*lА1vDAahhlYnAhL!p(:{A$% H(I75PSKFV4\pD.R:N.6GL-AjtL+9V,Est/| @L| 5>ZjBx<U膈.j 6_I…br:e拳_7鉶 6f rT">4D^&zR+L!WR 4t)! U;!:g NKTjX&~Om_Lbp/7 #i*' no2Ӕ=E9n(H> ׁŒ@pa2rX7Y5}K`&zEtA!15) "DD8(/U[G:z8ޭ3w2C!1;6P.KDGvoI<6)Ji_S'֪?t3(>؂׉(҂8/":ٮ:m\VHNֆvnCD'u8X,6)GHۃs\6C)`@Himox g-h'umuߩZ$h4vQlFS7TMBZ@He<;oήt& C*AUJ#qQ4+g6Ш(x -W ~F! |o p%A]CAy\pzfqiD)eM3 Z\',=ic9^&&$2oxg]b`'ƈ.UݧXkDzxog@2j%6|;N.{kQ 'BBW6*]|}9 qLXJۚe=KxOh2&hLFE\> K$iD-bݣdʢ #+Ze'=䠁kY - P-Y$!*d4PY9r嵾yPOTP4:F&=Cj\`!8VQvŜs,x6;apFs&([kzk?Zhl :2h^i4=Opef=XH -F&u7Ɔ -do5i@ yosP.O;opSX<Ω .yV.)~GU+ݵnN.S=< -@L>\hU/J$IJ e@ǨL3{\ Tʓ˝Ho/RfW~O_.t +JiCCPICC ProfilexUoT?o\?US[IB*unS6mUo xB ISA$=t@hpS]Ƹ9w>5@WI`]5;V! A'@{N\..ƅG_!7suV$BlW=}i; F)A<.&Xax,38S(b׵*%31l #O-zQvaXOP5o6Zz&⻏^wkI/#&\%x/@{7S މjPh͔&mry>k7=ߪB#@fs_{덱п0-LZ~%Gpˈ{YXf^+_s-T>D@קƸ-9!r[2]3BcnCs?>*ԮeD|%4` :X2 pQSLPRaeyqĘ י5Fit )CdL$o$rpӶb>4+̹F_{Яki+x.+B.{L<۩ + IHDR`'zTXtRaw profile type exifxڥi%9nsZ'r8iZ㑙]*u˰Ȍqg k ռZOu_z3)Yc[>ӟ72\`_?ooBE+Z7~꯻?_Wow7c|K*ϥ W9EZ~i[\B[ڟd<_<-s럿wŬ(_7^L~gݿG3n6;ىj:in:Yc7;_s޹|ț}Ile/ٿh-g)*:W>ě%~_ {[!Je🰱/,C;ϼIWP IAi θ~bYGno 3TB%6m,& T,=gO@v6h\j^@2ˇEZJcoz֥{m}ҨM6V#vrhZjfܺ ڬм ئnܽKz{}< +g }1'לgלּʪV[kngmm}=O> ?3oҭnnGמƛv׮cү]Nug&]D{Ǝqg  gZvN{24I1vo?v޷oٹع?ڷkGܶB`,TߋcӞjxl=kܝYqS^=[q[$֫VFȋ5?8^[P(cymϑTF'd3.ssҩ봶YmO+=WZ7Kֵ~dgJ~6~o-z;hF8ڭ ;__,rq g56o Ν+IVMJE {ٗH}-[/e"d?Is='_.Z/VɶG~^&X)pl^=J1)sO"7DlW {:ՉχŌ(qM=D6>*L7u#dwf{Cƅo +H}[n5cTsQCu:L`8,nmm^hL7J)"]r~e8~,NZ(i~%vۼ֘4q$ʂ-@^?VWbs{~"==XsȨL2;ay[5c0X8^YH4-[- ؽX=wvpvj%nKvƵ[a|E*AQ_;5M2sXw$z,c@HCˈNQ +Tŷl8")ŦݽWCnyV<,(O+O* +2.#/v\6V1gZ`u:{_`VTIȷRSo-JG>7kE}Ӄ֫ھ'W=~{@ T x۫ Q2giNP6v0A'2EQ9L^oFÌk`<|R=Utl?r'uЉ(2o*dseٸн؅%rZĝD*TT֙Syxpeyu;/|$*^ތZg.w/meǝ@;"jx N:Pl8"N< Z,<`عK5\ՆȺl-Ύ`Z,i_:6ድj_mg3m36WJOUoCׇzj{+cɭe)IiUR<$C) 6gF$ԳcRQsNuF@&q h4')qxY]vI[>YP`y.g +?ZlXVD#:-qi!j?I +MSrL\as&p}sGg}E pv`4$ + \aBU}3|̄8TrbQE$OXť Taj-1ʅKy(:35pYR)@/p~`\V1ԴaCXó!ø7J%ا٤3WS5A|Lda<+Z%N!ґ 0E!ĤB=Ƣ1== +񄁸mQ$eaU l9=AH?䶫0M, &ee6q#%.)[qDT"؜^ Rf xTR2o-1 "E*P4Htvk*!Gv2ypT6R@  UGQ`OԐoL⿉@Q1e!h +A0,Hȁr\VsamoՀ0)O.$<0ouMva{JŨ{$RN:|M B?ыJ# p^'"ABԕ:j EMCPC%pwyW +%EL&y1O6z$hЧD -,0md,zP;KPPl & ;J=ʈCM, |V[U/BWD|d@vX9U^WF\yRFR߳Y.&ڏԶ5׈TCeRd"{/$ݼw[-u; DDhUxRJ@OOȤ?\& j!G(@~Sj4ڬSn蒀 _NЎjj}b"jvdLƘ)>T`"ʹ V޻ŜM;Np&78@95wuO +Z :D|d}e%S¼ y(6 +Lj} ]ү7n^.Gmy,--+;y@{&?aAƨ{ +6tuVӢ9ć^@L+HC(KxDžx_tb_xu:\Yj,Ŗ,"e`_rvC`djI;o@ t2:T졁lW佰}-u=5#L(s(sH9EC)JLoeaI +C3 7*ˉ `制4<6|"x +^B"uZ|!@B) 6jk܌wGq PQ߾ <:+|0}W=k]vM?P?L(ZR1o}%Q {,U]@`1Y"cw!z~BOHW]~i~>RGl mR͑h,&AVaWTE܋y#]-?6Qou A5um$zj8ZwHe86%x\aYM䔠SRt|Pd :͠ ɷTc 4Qh,<)F *ZXh?5$5 PIF>cT?\)9w-!eįxvn ldGβ:=SAV@YA +dN.BgT6ax)v?Bgݨ(6X+:uՆt"yIC:*I 6lGd-*upA%XAd H?~MRH؃@% +@RΛӲ.YYSb&8p WiFy-Gw,Lɑ6QBjL\

KY/YYUNXI+͝MUԾQ[$/*#u A=<@^*ZKbf(A* .J=|1: +-LplIC ]A7cہCR9B6͘QA˨㧺'ƒͮff5%b^1\/7P4\)z^*$>zeU!}tKdz8j:>W}+׮~$ʢ2q%yE7t[z1L>D>&r5ZPֳ-ٮtD:bS f.$:Qߨ"c`N&A8SϏ( ? "+AٰxjqE*aډW͞NoVuCU$friaE2滲ΌJ3_Q:p@K7:x&q V0jRL<`?9JlRKx4Ȱh䨭~/LDqC2רK ^;KS7e4LЌz$>&Xd(:טl.PVhB~5qMiᩧ5%þg!j:qF6{5MLl5"{7)KoGH$&Uyo 傺&%gqusTE =q:]#]-IY +wN=`G13|}DX0['pI&Aa#~ߵ~"&zq1(zԆ3fƪ -r +W'V`iELȈCQ&W$ n @%eIԱnxRGb[U'QD3F`m烺? %z7N{oB/!5 è6UΓS1J-O)N@S4}p6]=PGKN@!OOMiNA$3x5k|Zu 6 v8={a=zhy;-O a4آ"F vu0y:#Ӊ{TM))L훴Tm*MЪuQ%)q{Xؒ}߮y) HTφ138VҾB=ڀSWA:8]3R/o#5HNRqޭ3j@_Q{|e2pRL:y5((lz+N!S.P4Z|#g]0F,1B_٪5X,[8M[z& =u7tX2S%$Aa'SZVj<_d:>ڌӣh{"Mgz6ej::%̚Fzqhi 83}:19Iplə +0Q ?Ԁ6eMEgx3T@ b|EQI6%݌OKimԸy Ԉ\)\dNOje=xը#U/SQg}M'A::g;1[\In y2S)ўF?u"YqXE$#WyADe8!ФjÑ\cnJH:5w$Scw-,$ 6,?pO_A_}O&A FtSYHI1d7p5nOăX5K߈EB"3 tIJiCux%a5@WI`]5;V! A'@{N\..ƅG_!7suV$BlW=}i; F)A<.&Xax,38S(b׵*%31l #O-zQvaXOP5o6Zz&⻏^wkI/#&\%x/@{7S މjPh͔&mry>k7=ߪB#@fs_{덱п0-LZ~%Gpˈ{YXf^+_s-T>D@קƸ-9!r[2]3BcnCs?>*ԮeD|%4` :X2 pQSLPRaeyqĘ י5Fit )CdL$o$rpӶb>4+̹F_{Яki+x.+B.{L<۩ =UHcnf<>F ^e||pyv%b:iX'%8Iߔ? rw[vITVQN^dpYI"|#\cz[2M^S0[zIJ/HHȟ- Ic @@ -13063,17 +14193,17 @@ h xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:5fdad3a1-4eaf-4346-9351-42ee0b1cd876" - xmpMM:InstanceID="xmp.iid:4f480cc8-9740-4923-9f03-6528e85479e6" + xmpMM:InstanceID="xmp.iid:4e6d370e-da4d-4bfb-83ba-de2c62d0b165" xmpMM:OriginalDocumentID="xmp.did:94df4dc8-f70b-4052-b263-9b56d5653be0" dc:Format="image/png" GIMP:API="2.0" GIMP:Platform="Windows" - GIMP:TimeStamp="1687596565845648" + GIMP:TimeStamp="1689226241089249" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" - xmp:MetadataDate="2023:06:24T01:49:24-07:00" - xmp:ModifyDate="2023:06:24T01:49:24-07:00"> + xmp:MetadataDate="2023:07:13T00:30:40-05:00" + xmp:ModifyDate="2023:07:13T00:30:40-05:00"> + stEvt:when="2023-07-13T00:30:41"/> @@ -13114,14 +14244,19 @@ h -sbKGDQb pHYs  tIME1q] IDATx]F~sЂpL|2NZ\2U3J&"TM<) 1ǁqaMe4;#hh5@}ޏy#%D2S@j~8hp3?rZV/!ƨly<ɏ i?Qجզmu.}N~_{*DD;[rI?[;BT%rhm! -H_ȫ} ;c5\ppCL:;:R9Osl-oN|8Y -.bg˲7'Ușr/rN7;mz@DD/ψh>[9gk{żƊhs]3""z]볣SNYA=7*3CueYʶ`+?-"7Ubym_m;؊~Lέlܜ6n~7*i{c[ V9'j-Bd gk u װ'6 7,:`q$WV5@^.b>M&?Ju FaQ&9&}-",`ᝦ@9(#@Zn?5z<%7)j>I%c!-zAcm%u ;&أQ$XMǹ_^f Y!DЦi9"]"OGQO6]Q}Cv- -$s_7ucJ*RQhH'7.`O`cEl$_ʱs)^@69f;̎,L`mN]>We~ܢFlw\_X[?BTƋ1Cuj&\#q]}qE!O0knĔ?,DkI. Fr޳Hn\\" S)|3āc—%k:&4 | '`N"LdG&P_ǬG"1{ "2$Oԫ-!?+'{Jh?[5}o'M`8/>9(2g -T0m/ʏ$NNYTIbP-.EN] P =cŔ{S ͙U5rfd @뜤N D`bmb -)Ɠ'V1 -"!)*Y>CO"WuĖGeB#@g*?vvS͖1DMaVoҭsI~uj}?nu˩@VKnVK?W|G̷&C9돯wyIm?ebăݝ+"":z]>oqqcm|pZV[0Om?)WK.~f"׸STrI[UB+( YY? G:~0eCDl?t"Dnد }(x\m`~GâeZԔm"3~Jf{ІXD[IENDB`gimp xcf v011`BB[ icc-profileappl mntrRGB XYZ   acspAPPLappl-appl descodscmxlcprt8wtptrXYZ0gXYZDbXYZXrTRClchad|,bTRClgTRCldescGeneric RGB ProfileGeneric RGB Profilemluc skSK(xhrHR(caES$ptBR&ukUA*frFU(Vaeobecn RGB profilGeneri ki RGB profilPerfil RGB genricPerfil RGB Genrico030;L=89 ?@>D09; RGBProfil gnrique RVBu( RGB r_icϏProfilo RGB genericoGenerisk RGB-profil| RGB \ |Obecn RGB profil RGB Allgemeines RGB-Profilltalnos RGB profilfn RGB cϏeNN, RGB 000000Profil RGB generic  RGBPerfil RGB genricoAlgemeen RGB-profielB#D%L RGB 1H'DGenel RGB ProfiliYleinen RGB-profiiliUniwersalny profil RGB1I89 ?@>D8;L RGBEDA *91JA RGB 'D9'EGeneric RGB ProfileGenerel RGB-beskrivelsetextCopyright 2007 Apple Inc., all rights reserved.XYZ RXYZ tM=XYZ Zus4XYZ (6curvsf32 B&licc-profile-name ICC Profilegimp-image-grid(style solid) + VbKGD?H$ pHYs  tIME ) IDATx]k\>oH VFbE -NB00) b)*Hjqu +Sd!ƅ<`؛fyw{Ν39Ǚy@0F4"`8?8Rxl?$Vn9I͏;S^(u7?im_'@>۲M^l_sN)6^l0i:'P'x%9g'HB'p;LryibS'@>1 F?)}b #mׂ[&ߺXVշum~N}Mc,#cp`9ɻA`ʙ%@"tr^lA,?VBG.wQmjXΦ݁90W 6^J~J}&|Qy?j/OËU Gb~*9?86GkHePQbm=hBחU`oHIJ ,RX'Fj|%rmI(̑?6:Y>T۶FOݹ/<^αo4TɖUWnHD2G|B4s/a~H? TRIM2=$K7g9Vv9=/gSffNMYՏssMb>zQB诋[l4m_[*%< nN`ov֏K:Y=|zkNV(otNg~_=c߼FNu_/dK}l˷mo٨G٥7˄ʝR}G*'>Sf0N~g^tSeF˞% + ePqsz;߼~.a._/bI ~n$#Fk +sﶭ?J}?9 'FRSJ_cro$?m~ukoV/)M{n۪׫U3VZmfһ@ @ FFEP@E, "H&cEK +Dѿ?~:xcO1& 0!,J*.Drx T۞hJq z_Ok8orqxWvM`w97$W EDL q ?ɒZ[%f ~lϼS9)S'|2: )M%FJyxhIvo~U #8cIlO'`El\LĞ\֟3r}SIEWcr(@.Gkz\C?cvd_> o?+/⻸)}\Ӽ ^O F"jSjO+TLn?P06mvֿ5F51Jݼ_ֿ=Po>9d:H)up:>[Sr/Hܬ0B?ɕc@Z c4|_bf$-(Q@d@ @ ; +)1 +F1P@>1h ~ܱ>O;|Ni"o/O'X: D_s5 t.oAw4jhR77z+SP, E OM\|p_-G&LX}b}3J:s%w3WI ?.@]`NVrȦ{޶Ik#WmP)ƣ6LR;tZA&'Bw&0̈́PyJS?7+ ִssd =@TDI>' ~p.}p25~^bs!Sm=u_1YHL>9$vã^Xuͻ؟C۶uvi^`EjY2R`? _co/Ob2;u\|7d l&/NL}f:W3)SObA g9yp#h$f]Կ:O'nr]~`c{4qHK L߸:wzk +KF2yb$-jw蟋5HR{ jÿj0q613fK?({ZAr)s( ;ns3n6 | N~+>s|mSOMl3/ : ]qГ `~_=#/%b^&Wa +$lKQTwiK|Ur䭥'?X|I*i9ኸsMz$~ۛӳ62X`XCso[^}l8ľ|nV_`8VF_\\_D9]d zK}pu >@U׷? r6U(6lTm7^plWd9&!+ \[VIENDB`gimp xcf v011`BBf icc-profileappl mntrRGB XYZ   acspAPPLappl-appl descodscmxlcprt8wtptrXYZ0gXYZDbXYZXrTRClchad|,bTRClgTRCldescGeneric RGB ProfileGeneric RGB Profilemluc skSK(xhrHR(caES$ptBR&ukUA*frFU(Vaeobecn RGB profilGeneri ki RGB profilPerfil RGB genricPerfil RGB Genrico030;L=89 ?@>D09; RGBProfil gnrique RVBu( RGB r_icϏProfilo RGB genericoGenerisk RGB-profil| RGB \ |Obecn RGB profil RGB Allgemeines RGB-Profilltalnos RGB profilfn RGB cϏeNN, RGB 000000Profil RGB generic  RGBPerfil RGB genricoAlgemeen RGB-profielB#D%L RGB 1H'DGenel RGB ProfiliYleinen RGB-profiiliUniwersalny profil RGB1I89 ?@>D8;L RGBEDA *91JA RGB 'D9'EGeneric RGB ProfileGenerel RGB-beskrivelsetextCopyright 2007 Apple Inc., all rights reserved.XYZ RXYZ tM=XYZ Zus4XYZ (6curvsf32 B&licc-profile-name ICC Profilegimp-image-grid(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 12) @@ -13159,8 +14294,8 @@ F xmp.iid:f53637a4-d8ab-43fe-a632-941a9eafc0af xmp.did:94df4dc8-f70b-4052-b263-9b56d5653be0 -bNMbStaff!? " -    %$#7bJVb'u:$"   + ZbStaff!? " +    %$#7b b'F ($"   ޔ ޔ ޔ ޸ ޸0> @@ -13216,29 +14351,29 @@ A   A$#$&&$&&&>%% -A3; " ! !ޔ -# -# ޔޔ" -2 -# -"   " +A3; "  ޔ + + ޔޔ +ޔ( + +     -Z838888;8 88"8 888888!8 88!8 8 -8#8 8 -8#8 88"8 8 -828 -8# 8 -8" "  +Z838888;8 88"8 88888888 888888 8 +888 8 +888 8888 8 +88(8 +88 8 +88 8   -Z%3%%P%%;% %%"% %P%%%P%%!% %%!l%l % -%#% % -%#% l%ll%l"% % -%2% -%# % -%" "  +Z%3%%P%%;% %%"% %P%%%P%%%% %%%P%%l%l % +%%% % +%%% l%ll%l%% % +%l%l(% +%% % +%% %   -ZV;;=>==>>== -fI;  ޔ ޔ   I8;8888888888 888 888888 888 888 888 88I%;%P%%%%%%P%%%P %%% %%%l%l%% %l%ll% %%% %%% %%I;      //( +ZV;''(()()() +f=ޔ=88888888888=%%P%%%%%l%l%%%=I;  ޔ ޔ   I8;8888888888 888 888888 888 888 888 88I%;%P%%%%%%P%%%P %%% %%%l%l%% %l%ll% %%% %%% %%I;      //( ' 'ޔޔ1 2 @@ -13259,44 +14394,44 @@ fI %l(% %r 11 -;;(''=>(~==  +;;(''=>(~==    - +  -ޔޔޔޔ + ޔޔޔޔ  - +ޔ  - +  -S     +>       - 8888888888 88888888888 + 8888888888 8888888 8888888 8 88 -88 +88 8 88 -888888 +88 88888 8 88 -88 +88 8 88 -88 +88 8 88 -8S +88>8   -%%%%%P%%%P%% %P%%%P%%%%%%% +%%%%%P%%%P%% %P%%%P%%% %%%%%P%% % %% -%% +%% % %% -%l%ll%ll%ll%l% +%% l%ll%ll%ll%l% % %% -%% +%l%l % %% -%% +%% % %% -%S +%%>%   -   _0000l16`nico-base.png!? " -    %$#p`N5NA`-s7<B?FIX3        +       > ޔl88888888888l%%P%%%%%l%l%%%lll16`nico-base.png!? " +    %$#!`"$ZZ`"t0 9HtL`PSyY3             & J6%5dM =>6   ?&% % * * ) - - 9. 2      @@ -13341,62 +14476,71 @@ fI (589 # ! ! ! # # -#$$9  -  -  N` -D - C - %  % -  +#$$9/    +    +A +   = + #   1 + " -  +    -       - -  -  - g  g  g  g       N` -D - g  g  g  g            C -%% - +     +   +   /      + g g  g  g  g  g  g g        +A   + g g  g  g  g  g  gg              =  +# 1 +" -  +    -       -    - PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP -  ->>>>>>>>>>>>>>>>>>> >> >>P>>P>>P>>>P>>NPPPPPPP` -D ->>>>>>>>>>>>>>>>>>P>>P>>>P>>PP>PP>P P>PP>PC -%% -P +     +   +      /PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP   >> +>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >> >>P>>P>>P>>>P>>P>>PPPPPPPPP +A>> +>>>>>>>>>>>>>>>>>>>>>>>>>>>>P>>P>>>P>>P>P P>PP>P P>PP>PP>>P=  +# 1 +"PP P P -P PPPP P +P P PPPP PP P P -PPPPP       ->>>>>> - -     -       - -     -  -   -    -1  -    +PPPPPP     +   + > >>>>>>>    +      +           +      +      +   +   +  +     +  + =    +    -  -  - +  +  + +  f  +   '   " f  +    g g g g '    g g gg  "  fPP PP +PP PPPP >>>>>>>> >>>>'P>>PPP >>>>>>>> >>>> >PP>>P"PPPP>> Q   + + +    + + +       =     ! N    N  g=      @@ -13417,41 +14561,55 @@ fI &/+-0/.  1  p  i>P>>P>hP P1PP1P P P&PP/P+-0/.> >1>>p>P>>P>'% &)*63 " ! "  " ' -(899&&)  G 0 +(899&&) U  - +    -     -   +      +   -    D         g gG0 +   + +          g g U - +    -     -   +      +   -             g g D>>>>>>>> P>>P>> >P>PG0P +     +          g g + >>>>>>>>P>>P>> >P>P>P>UPP P P -PPPPP P +P P PPPP PP P P -PPPP     -   +P PPPP     +   - >> >>>> >>>>>>>> >P>PP>P>D -    -    -   -  - Z0-` -StaffBack!? " -    %$#:OO`O{[[`ORUYZZ**&%ޔ''ޔ&>>_  +> >> >>>>> +>>>>>>>>>P>PP>P> +>P> +   =    + +   +  +   + +  +  +!,!   , !>P>PPPP>>,>P> + + +   +il06` +StaffBack!? " +    %$#:\`\.rr`\~_mbj<naoo=q**&%ޔ''ޔ&>>_   ޔޔޔ88*8888*888&8888%8888'88'88&88>8>8_888888888888888 888 888 888%%*%%P%%*%%%&%%P%%%%%ll%l%'%%'%l%l&%%>%>%_%%%%P%%%P%%%P%%%%% %%% %%% l%ll%ll%l**&%''&>>_  @@ -13482,55 +14640,86 @@ StaffBack %%(% %%'l%ll%ll%(% %%(% -%%0 , , . / . . / / &'(('((k##  -  - ޔޔ +%%0 , , . / . . / / &'(('((4.--,++,.0 2 0//0 2 57y4.--!     ޸ ޔޔ  - + ޸ - ޔޔ - -& -& -  - - ޔޔޔ - - k88#888888#88 88 8 -8 8888888 -8 8888 8 + ޸ +ޔޔ + ޔ + ޸ + ޸ + +޸3 3 +7 1//  +  +  + ޔޔޔ + +ޔ4.--,++,.0 2 0//0 2 57y4.--!8 888 888 8 88888888 888 8888 8 8 8 8 -88 +8 8 8 8 8 -8 88 8 -88 -8&8 -8&8 -888888888 888888888888 -888 -8 88888 -888 -8 k%%#%P%%%P%%#%% %% % -% %P%%%P%%% -% %%l%ll%l % + 8 +88 8 + 8 8 +8 8 8 +8 8 8 +8 +83 3 +7 1//88888888 88888888888 + 88 +88888  88 +88 888888 +8888 +88*4*.*-*-*,*+*+*,*.*0 *2 *0*/*/*0 *2 *5*7*y*4*.*-*-*!%* %P%%* %*%% % *%*%P%%%P%%% *%P%%* %%l%ll%l *% % % % -%% +% *%* % % % -% l%ll%l % -%% -%&% -%&% -%%%%%%%P%% %P%%%P%%%%%%%% -%%% -% ll%ll%ll%l%% -%%% -% k//221212 + *%** +l%ll%l % + *l%l* % +% *%** % +% *%** % +% +*%**3 *3 +**7 *1*/*/*%%%%*%%P%% %P%%%P%%*%%%%*% +* %% +%*%%P%% * %% +%*% *ll%ll%ll%l*%*%% +%*%*%% +%l%l*4.--,++,.0 2 0//0 2 57y4.--!       + + + " # $ 3 3 +7 1//    $$8  +    ޸   ޸ ޔ ޸ ޸ + +   +  + + ޔ8   +    8 888 8 8 8 8 8 8 + +8   8 +888 8 +8 +8 88* ************** * + * *** ******* *%* *%P%%** *%* *%* *%** *l%l* *%** *%* + +*% *** * ******% +**%P%% **% +**% +**%** *l%l*8  +   +      +  B888 888 @@ -13543,11 +14732,35 @@ StaffBack 88(% %%(  -V +555 74 10//...05 566 5 5 5 8 88 -8V +8858585 74 10//...05 566 5 5 5 8 %% -%VbZ0-/* Generated with GIMP Palette Export */ +%*%*5*%*5*%*5 *7**4 *1*0*/*/*.*.*.*0*5 *5*6*6 *5 *5 *5 *8* 5 5 5 74 10//...05 566 5 5 5 8 + + + +  + + + +M8 +8 +8 +  +    +  +  +   +M*%* +*%* +*%* + * +** * ********** * +* * + * + * * +*M     Pl06/* Generated with GIMP Palette Export */ .Untitled { color: rgb(55, 7, 15) } .Untitled { color: rgb(95, 23, 31) } .Untitled { color: rgb(143, 39, 23) } diff --git a/Crawler/pge.js b/Crawler/pge.js index 60a3a083..31d8ba14 100644 --- a/Crawler/pge.js +++ b/Crawler/pge.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){if(Module["ENVIRONMENT_IS_PTHREAD"]||Module["$ww"])return;var loadPackage=function(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}var PACKAGE_NAME="pge.data";var REMOTE_PACKAGE_BASE="pge.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];function fetchRemotePackage(packageName,packageSize,callback,errback){if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){require("fs").readFile(packageName,function(err,contents){if(err){errback(err)}else{callback(contents.buffer)}});return}var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"](`Downloading data... (${loaded}/${total})`)}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","assets",true,true);Module["FS_createPath"]("/assets","Campaigns",true,true);Module["FS_createPath"]("/assets","maps",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"](`fp ${this.name}`)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"](`fp ${that.name}`);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",reason=>{throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="pge.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"env":wasmImports,"wasi_snapshot_preview1":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["memory"];updateMemoryViews();wasmTable=Module["asm"]["__indirect_function_table"];addOnInit(Module["asm"]["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={45964:()=>{window.onunload=Module._olc_OnPageUnload},46008:($0,$1)=>{Module.olc_AspectRatio=$0/$1;Module.olc_AssumeDefaultShells=document.querySelectorAll(".emscripten").length>=3?true:false;var olc_ResizeHandler=function(){let isFullscreen=document.fullscreenElement!=null;let width=isFullscreen?window.innerWidth:Module.canvas.parentNode.clientWidth;let height=isFullscreen?window.innerHeight:Module.canvas.parentNode.clientHeight;let viewWidth=width;let viewHeight=width/Module.olc_AspectRatio;if(viewHeight>height){viewWidth=height*Module.olc_AspectRatio;viewHeight=height}viewWidth=parseInt(viewWidth);viewHeight=parseInt(viewHeight);setTimeout(function(){if(Module.olc_AssumeDefaultShells)Module.canvas.parentNode.setAttribute("style","width: 100%; height: 70vh; margin-left: auto; margin-right: auto;");Module.canvas.setAttribute("width",viewWidth);Module.canvas.setAttribute("height",viewHeight);Module.canvas.setAttribute("style",`width: ${viewWidth}px; height: ${viewHeight}px;`);Module._olc_PGE_UpdateWindowSize(viewWidth,viewHeight);Module.canvas.focus()},200)};var olc_Init=function(){if(Module.olc_AspectRatio===undefined){setTimeout(function(){Module.olc_Init()},50);return}let resizeObserver=new ResizeObserver(function(entries){Module.olc_ResizeHandler()}).observe(Module.canvas.parentNode);let mutationObserver=new MutationObserver(function(mutationsList,observer){setTimeout(function(){Module.olc_ResizeHandler()},200)}).observe(Module.canvas.parentNode,{attributes:false,childList:true,subtree:false});window.addEventListener("fullscreenchange",function(e){setTimeout(function(){Module.olc_ResizeHandler()},200)})};Module.olc_ResizeHandler=Module.olc_ResizeHandler!=undefined?Module.olc_ResizeHandler:olc_ResizeHandler;Module.olc_Init=Module.olc_Init!=undefined?Module.olc_Init:olc_Init;Module.olc_Init()}};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_throw_longjmp(){throw Infinity}function _abort(){abort("")}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.now();function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}out('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function safeSetTimeout(func,timeout){return setTimeout(()=>{callUserCallback(func)},timeout)}var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=event=>{out("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;if(onload)onload(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:2};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout:function(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAP32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}function webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=canvas.getContext("webgl2",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents=="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _eglCreateContext(display,config,hmm,contextAttribs){if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}}function _eglCreateWindowSurface(display,config,win,attrib_list){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006}function _eglDestroyContext(display,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1}function _eglDestroySurface(display,surface){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1}function _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}function _eglInitialize(display,majorVersion,minorVersion){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1}function _eglMakeCurrent(display,draw,read,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1}function _eglSwapBuffers(dpy,surface){if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0}function _eglSwapInterval(display,interval){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1}function _eglTerminate(display){if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_cancel_main_loop(){Browser.mainLoop.pause();Browser.mainLoop.func=null}function _emscripten_date_now(){return Date.now()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(e=event){var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread)}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread)}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread)}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread)}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function fillMouseEventData(eventStruct,e,target){HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-rect.left;HEAP32[idx+14]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(e=event){fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread)}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread)}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread)}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread)}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread)}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(e=event){var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}}function _emscripten_set_window_title(title){setWindowTitle(UTF8ToString(title))}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindBuffer(target,buffer){if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])}var _glBindVertexArrayOES=_glBindVertexArray;function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}function _glBufferData(target,size,data,usage){if(true){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}}function _glClear(x0){GLctx.clear(x0)}function _glClearColor(x0,x1,x2,x3){GLctx.clearColor(x0,x1,x2,x3)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glEnable(x0){GLctx.enable(x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}var _glGenVertexArraysOES=_glGenVertexArrays;function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(true){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};var preloadedImages={};var preloadedAudios={};var GLctx;var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); +var Module=typeof Module!="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){if(Module["ENVIRONMENT_IS_PTHREAD"]||Module["$ww"])return;var loadPackage=function(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}var PACKAGE_NAME="pge.data";var REMOTE_PACKAGE_BASE="pge.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];function fetchRemotePackage(packageName,packageSize,callback,errback){if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){require("fs").readFile(packageName,function(err,contents){if(err){errback(err)}else{callback(contents.buffer)}});return}var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"](`Downloading data... (${loaded}/${total})`)}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","assets",true,true);Module["FS_createPath"]("/assets","Campaigns",true,true);Module["FS_createPath"]("/assets","maps",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"](`fp ${this.name}`)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"](`fp ${that.name}`);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",reason=>{throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="pge.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"env":wasmImports,"wasi_snapshot_preview1":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["memory"];updateMemoryViews();wasmTable=Module["asm"]["__indirect_function_table"];addOnInit(Module["asm"]["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={49692:()=>{window.onunload=Module._olc_OnPageUnload},49736:($0,$1)=>{Module.olc_AspectRatio=$0/$1;Module.olc_AssumeDefaultShells=document.querySelectorAll(".emscripten").length>=3?true:false;var olc_ResizeHandler=function(){let isFullscreen=document.fullscreenElement!=null;let width=isFullscreen?window.innerWidth:Module.canvas.parentNode.clientWidth;let height=isFullscreen?window.innerHeight:Module.canvas.parentNode.clientHeight;let viewWidth=width;let viewHeight=width/Module.olc_AspectRatio;if(viewHeight>height){viewWidth=height*Module.olc_AspectRatio;viewHeight=height}viewWidth=parseInt(viewWidth);viewHeight=parseInt(viewHeight);setTimeout(function(){if(Module.olc_AssumeDefaultShells)Module.canvas.parentNode.setAttribute("style","width: 100%; height: 70vh; margin-left: auto; margin-right: auto;");Module.canvas.setAttribute("width",viewWidth);Module.canvas.setAttribute("height",viewHeight);Module.canvas.setAttribute("style",`width: ${viewWidth}px; height: ${viewHeight}px;`);Module._olc_PGE_UpdateWindowSize(viewWidth,viewHeight);Module.canvas.focus()},200)};var olc_Init=function(){if(Module.olc_AspectRatio===undefined){setTimeout(function(){Module.olc_Init()},50);return}let resizeObserver=new ResizeObserver(function(entries){Module.olc_ResizeHandler()}).observe(Module.canvas.parentNode);let mutationObserver=new MutationObserver(function(mutationsList,observer){setTimeout(function(){Module.olc_ResizeHandler()},200)}).observe(Module.canvas.parentNode,{attributes:false,childList:true,subtree:false});window.addEventListener("fullscreenchange",function(e){setTimeout(function(){Module.olc_ResizeHandler()},200)})};Module.olc_ResizeHandler=Module.olc_ResizeHandler!=undefined?Module.olc_ResizeHandler:olc_ResizeHandler;Module.olc_Init=Module.olc_Init!=undefined?Module.olc_Init:olc_Init;Module.olc_Init()}};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_throw_longjmp(){throw Infinity}function _abort(){abort("")}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.now();function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}out('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function safeSetTimeout(func,timeout){return setTimeout(()=>{callUserCallback(func)},timeout)}var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=event=>{out("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;if(onload)onload(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:2};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout:function(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAP32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}function webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=canvas.getContext("webgl2",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents=="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _eglCreateContext(display,config,hmm,contextAttribs){if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}}function _eglCreateWindowSurface(display,config,win,attrib_list){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006}function _eglDestroyContext(display,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1}function _eglDestroySurface(display,surface){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1}function _eglGetDisplay(nativeDisplayType){EGL.setErrorCode(12288);return 62e3}function _eglInitialize(display,majorVersion,minorVersion){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1}function _eglMakeCurrent(display,draw,read,context){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1}function _eglSwapBuffers(dpy,surface){if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0}function _eglSwapInterval(display,interval){if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1}function _eglTerminate(display){if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_cancel_main_loop(){Browser.mainLoop.pause();Browser.mainLoop.func=null}function _emscripten_date_now(){return Date.now()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function registerFocusEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=function(e=event){var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread)}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread)}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread)}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread)}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function fillMouseEventData(eventStruct,e,target){HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-rect.left;HEAP32[idx+14]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=function(e=event){fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread)}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread)}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread)}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread)}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread)}function registerWheelEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=function(e=event){var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}}function _emscripten_set_window_title(title){setWindowTitle(UTF8ToString(title))}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindBuffer(target,buffer){if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])}var _glBindVertexArrayOES=_glBindVertexArray;function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}function _glBufferData(target,size,data,usage){if(true){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}}function _glClear(x0){GLctx.clear(x0)}function _glClearColor(x0,x1,x2,x3){GLctx.clearColor(x0,x1,x2,x3)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glEnable(x0){GLctx.enable(x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}var _glGenVertexArraysOES=_glGenVertexArrays;function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glLinkProgram(program){program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<>shift,pixels+bytes>>shift)}function _glReadPixels(x,y,width,height,format,type,pixels){if(true){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);GLctx.readPixels(x,y,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};var preloadedImages={};var preloadedAudios={};var GLctx;var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); diff --git a/Crawler/pge.wasm b/Crawler/pge.wasm index e5ce9d6a..391fe6ae 100644 Binary files a/Crawler/pge.wasm and b/Crawler/pge.wasm differ diff --git a/x64/Release/Crawler.exe b/x64/Release/Crawler.exe index 38e743ec..0aa21939 100644 Binary files a/x64/Release/Crawler.exe and b/x64/Release/Crawler.exe differ