program MeisterFighterScript;

{
   =================================================
   MeisterFighter V1.3b - by Scarmeister
   =================================================
   INSTRUCTIONS: If you want to attack a monster
   that's not in the list then just fill in the
   MonsterColor in the boxes (use the colorpicker).
   It doesn't matter if you don't fill in all the
   boxes, one value is sufficient but more values
   will make you detect the monster faster.

   Make sure you have a sleeping bag in your
   inventory somewhere.

   IMPORTANT: Only works with Scar 1.11 or higher!
   =================================================
   FEATURES:

   - Easy select options using forms.
   - Sleeping, Autologon and Eating.
   - Fast detection of monsters.
   - Fast correction of wrong FightMode.
   - Anti-MissClicking feature added.
   - P2P Logon procedure added.

   UPDATES V1.2:
   - Login bug fixed (script can be started at any
     time now).
   - Multiple color detection added.

   UPDATES V1.3:
   - Smart Minimap searching for next monster if you
     come across someone who is fighting 'your'
     monster.
   - Anti AutoLike Behaviour added.
   - WaitTime tweaked for faster detection results.
   - Locked-In detection added with automatic door
     opening.
   - Choice to search percentage of MiniMap for
     monsters, buildings or dirt.
   UPDATES V1.3b
   - Choice between leftclick or rightclick attack
     added.
   - Choice between using minimap search only when
     another player is attacking your monster.
   =================================================
}

var
form, self: TForm;
Application: TApplication;

UserLabel, PassLabel, MonsterLabel, FMode: TLabel;
OtherMonsterLabel, ColorTwo, ColorThree: TLabel;
LabelEat, LabelEatHits, F2P, LabelLockedIn: TLabel;
TxtColorOne, TxtColorTwo, TxtColorThree: TEdit;
TxtUserName, TxtPassWord, TxtEatHits: TEdit;
TxtClickMode, DropList, FList, EatChoice, F2PDrop: TComboBox;
LabelClickMode, LabelMiniMap2: TLabel;
ButtonOK: TButton;

TxtMiniMap, TxtPercentage, TxtObject, TxtLockedIn: TComboBox;
LabelMiniMap, LabelPercentage, LabelObject: Tlabel;
TxtMiniMap2: TCombobox;

f, i, j, x, y, BagX, BagY, Attack, Mode, Lobster, Timer: integer;
MonsterColor1, MonsterColor2, MonsterColor3: integer;
UserName, PassWord, MonsterName, CurrentHits, Monster: string;
ActualHp, EatHp, Eating, Server, ScarMeister, Cols, Look: integer;
MiniSearch, LockedIn2, a, b, SObject: integer;
FreeMonster, Click, SObjectName: string;

procedure ButtonClick (sender: TObject);
begin
      UserName:= TxtUserName.Text;
      PassWord:= TxtPassWord.Text;

      MonsterName:= DropList.Text;
      Monster:= DropList.Text;
      FreeMonster:= TxtMiniMap2.Text;
      Click:= TxtClickMode.Text;
      MonsterColor1:=  StrToInt (TxtColorOne.Text);
      MonsterColor2:=  StrToInt (TxtColorTwo.Text);
      MonsterColor3:=  StrToInt (TxtColorThree.Text);
      if (TxtMiniMap.Text = 'No') then
      begin
           MiniSearch:= 0;
      end;
      if (TxtMiniMap.Text = 'Yes') then
      begin
           MiniSearch:= 1;
      end;
      if (TxtLockedIn.Text = 'De-Activated') then
      begin
           LockedIn2:= 0;
           end;
      if (TxtLockedIn.Text = 'Activated') then
      begin
           LockedIn2:= 1;
      end;
      if (MonsterColor1 > 0) then
      begin
           Cols:= 1;
      end;
      if (MonsterColor2 > 0) then
      begin
           Cols:= 2;
      end;
      if (MonsterColor3 > 0) then
      begin
           Cols:= 3;
      end;
      if (FList.Text = 'Controlled') then
      begin
           Mode:= 1;
      end;
      if (FList.Text = 'Aggressive') then
      begin
           Mode:= 2;
      end;
      if (FList.Text = 'Attack') then
      begin
           Mode:= 3;
      end;
      if (FList.Text = 'Defensive') then
      begin
           Mode:= 4;
      end;
      if (EatChoice.Text = 'Yes') then
      begin
           Eating:= 1;
           EatHp:= StrToInt (TxtEatHits.Text);
      end;
      if (EatChoice.Text = 'No') then
      begin
           Eating:= 0;
      end;
      if (F2PDrop.Text = 'F2P') then
      begin
           Server:= 0;
      end;
      if (F2PDrop.Text = 'P2P') then
      begin
           Server:= 1;
      end;
      if (TxtPercentage.Text = '100%') then
      begin
           a:= 75; b:= 70;
      end;
      if (TxtPercentage.Text = '90%') then
      begin
           a:= 68; b:= 63;
      end;
      if (TxtPercentage.Text = '80%') then
      begin
           a:= 60; b:= 56;
      end;
      if (TxtPercentage.Text = '70%') then
      begin
           a:= 53; b:= 49;
      end;
      if (TxtPercentage.Text = '60%') then
      begin
           a:= 45; b:= 42;
      end;
      if (TxtPercentage.Text = '50%') then
      begin
           a:= 38; b:= 35;
      end;
      if (TxtObject.Text = 'Monster') then
      begin
           SObject:= 65535;
           SObjectName:= Monster;
      end;
      if (TxtObject.Text = 'Grey Floor') then
      begin
           SObject:= 4210752;
           SObjectName:= 'Grey Floor';
      end;
      if (TxtObject.Text = 'Brown Floor') then
      begin
           SObject:= 143460;
           SObjectName:= 'Brown Floor';
      end;
      if (TxtObject.Text = 'Yellow Dirt') then
      begin
           SObject:= 18520;
           SObjectName:= 'Yellow Dirt';
      end;
      if (TxtObject.Text = 'Brown Dirt') then
      begin
           SObject:= 12360;
           SObjectName:= 'Brown Dirt';
      end;
end;

procedure AddPicture;
var
   Canvas: TCanvas;
begin
   Canvas:= GetBitmapCanvas(ScarMeister);
   CopyCanvas(Canvas, Form.Canvas, 0, 0, 97, 40, 8, 236, 8+97, 236+40);
   CopyCanvas(Canvas, Form.Canvas, 0, 0, 97, 40, 329, 236, 329+97, 236+40);
end;

procedure FormPaint(Sender: TObject);
begin
   AddPicture;
end;

procedure Initialise;
begin
   Application:= GetApplication;
   Self:= GetSelf;

   Form:= TForm.Create(nil);
   Form.Width := 442;
   Form.Height := 310;
   Form.Position := poScreenCenter;
   Form.BorderStyle := bsDialog;
   Form.OnPaint:= @FormPaint;
   Form.Caption := 'MeisterFighter V1.3b - by Scarmeister';

   UserLabel := TLabel.Create(Form);
   UserLabel.Top := 12;
   UserLabel.Left := 8;
   UserLabel.Caption := 'Username:';
   UserLabel.Parent := Form;

   PassLabel := TLabel.Create(Form);
   PassLabel.Top := 40;
   PassLabel.Left := 8;
   PassLabel.Caption := 'Password:';
   PassLabel.Parent := Form;

   LabelEat := TLabel.Create(Form);
   LabelEat.Top := 68;
   LabelEat.Left := 8;
   LabelEat.Caption := 'Use eating:';
   LabelEat.Parent := Form;

   LabelEatHits := TLabel.Create(Form);
   LabelEatHits.Top := 96;
   LabelEatHits.Left := 8;
   LabelEatHits.Caption := 'Eat if Hits below:';
   LabelEatHits.Parent := Form;

   F2P := TLabel.Create(Form);
   F2P.Top := 124;
   F2P.Left := 8;
   F2P.Caption := 'Free or Members:';
   F2P.Parent := Form;

   LabelMiniMap := TLabel.Create(Form);
   LabelMiniMap.Top := 152;
   LabelMiniMap.Left := 8;
   LabelMiniMap.Caption := 'Use MiniMap Search:';
   LabelMiniMap.Parent := Form;

   LabelPercentage := TLabel.Create(Form);
   LabelPercentage.Top := 180;
   LabelPercentage.Left := 8;
   LabelPercentage.Caption := 'Search % of MiniMap:';
   LabelPercentage.Parent := Form;

   LabelClickMode := TLabel.Create(Form);
   LabelClickMode.Top := 208;
   LabelClickMode.Left := 8;
   LabelClickMode.Caption := 'Left/RightClick Attack:';
   LabelClickMode.Parent := Form;

   FMode := TLabel.Create(Form);
   Fmode.Top := 12;
   Fmode.Left := 200;
   Fmode.Caption := 'Choose FightMode:';
   Fmode.Parent := Form;

   MonsterLabel := TLabel.Create(Form);
   MonsterLabel.Top:= 40;
   MonsterLabel.Left := 200;
   MonsterLabel.Caption := 'Choose Monster:';
   MonsterLabel.Parent := Form;

   OtherMonsterLabel := TLabel.Create(Form);
   OtherMonsterLabel.Top:= 68;
   OtherMonsterLabel.Left := 200;
   OtherMonsterLabel.Caption := 'Edit MonsterColor #1:';
   OtherMonsterLabel.Parent := Form;

   ColorTwo := TLabel.Create(Form);
   ColorTwo.Top := 96;
   ColorTwo.Left := 200;
   ColorTwo.Caption := 'Edit MonsterColor #2:';
   ColorTwo.Parent := Form;

   ColorThree := TLabel.Create(Form);
   ColorThree.Top := 124;
   ColorThree.Left := 200;
   ColorThree.Caption := 'Edit MonsterColor #3:';
   ColorThree.Parent := Form;

   LabelObject := TLabel.Create(Form);
   LabelObject.Top := 152;
   LabelObject.Left := 200;
   LabelObject.Caption := 'Object on MiniMap:';
   LabelObject.Parent := Form;

   LabelLockedIn := TLabel.Create(Form);
   LabelLockedIn.Top := 180;
   LabelLockedIn.Left := 200;
   LabelLockedIn.Caption := 'Locked-in Detection:';
   LabelLockedIn.Parent := Form;

   LabelMiniMap2 := TLabel.Create(Form);
   LabelMiniMap2.Top := 208;
   LabelMiniMap2.Left := 200;
   LabelMiniMap2.Caption := 'Find Free Monster:';
   LabelMiniMap2.Parent := Form;

   TxtUserName := TEdit.Create(Form);
   TxtUserName.Top := 10;
   TxtUserName.Left := 64;
   TxtUserName.Width := 120;
   TxtUserName.Parent := Form;

   TxtPassWord := TEdit.Create(Form);
   TxtPassWord.Top := 38;
   TxtPassWord.Left := 64;
   TxtPassWord.Width := 120;
   TxtPassWord.PasswordChar:= '*';
   TxtPassWord.Parent := Form;

   EatChoice:= TComboBox.Create(form);
   EatChoice.Top:= 66;
   EatChoice.Left:= 96;
   EatChoice.Width:= 88;
   EatChoice.Parent:=Form;
   EatChoice.DropDownCount:= 2;
   EatChoice.Items.Add ('No');
   EatChoice.Items.Add ('Yes');
   EatChoice.ItemIndex:= 0;

   TxtEatHits := TEdit.Create(Form);
   TxtEatHits.Top := 94;
   TxtEatHits.Left := 96;
   TxtEatHits.Width := 88;
   TxtEatHits.Parent := Form;

   F2PDrop:= TComboBox.Create(form);
   F2PDrop.Top:= 122;
   F2PDrop.Left:= 96;
   F2PDrop.Width:= 88;
   F2PDrop.Parent:=Form;
   F2PDrop.DropDownCount:= 2;
   F2PDrop.Items.Add ('F2P');
   F2PDrop.Items.Add ('P2P');
   F2PDrop.ItemIndex:= 0;

   TxtMiniMap:= TComboBox.Create(form);
   TxtMiniMap.Top:= 150;
   TxtMiniMap.Left:= 120;
   TxtMiniMap.Width:= 64;
   TxtMiniMap.Parent:=Form;
   TxtMiniMap.DropDownCount:= 2;
   TxtMiniMap.Items.Add ('No');
   TxtMiniMap.Items.Add ('Yes');
   TxtMiniMap.ItemIndex:= 0;

   TxtPercentage:= TComboBox.Create(form);
   TxtPercentage.Top:= 178;
   TxtPercentage.Left:= 120;
   TxtPercentage.Width:= 64;
   TxtPercentage.Parent:=Form;
   TxtPercentage.DropDownCount:= 6;
   TxtPercentage.Items.Add ('100%');
   TxtPercentage.Items.Add ('90%');
   TxtPercentage.Items.Add ('80%');
   TxtPercentage.Items.Add ('70%');
   TxtPercentage.Items.Add ('60%');
   TxtPercentage.Items.Add ('50%');
   TxtPercentage.ItemIndex:= 0;

   TxtClickMode:= TComboBox.Create(form);
   TxtClickMode.Top:= 206;
   TxtClickMode.Left:= 120;
   TxtClickMode.Width:= 64;
   TxtClickMode.Parent:=Form;
   TxtClickMode.DropDownCount:= 2;
   TxtClickMode.Items.Add ('Right');
   TxtClickMode.Items.Add ('Left');
   TxtClickMode.ItemIndex:= 0;

   FList:= TComboBox.Create(form);
   FList.Top:= 10;
   FList.Left:= 306;
   FList.Width:= 120;
   FList.Parent:= Form;
   FList.DropDownCount:= 4;
   FList.Items.Add ('Aggressive');
   FList.Items.Add ('Attack');
   FList.Items.Add ('Defensive');
   FList.Items.Add ('Controlled');
   FList.ItemIndex:= 0;

   DropList:= TComboBox.Create(form);
   DropList.Top:= 38;
   DropList.Left:= 306;
   DropList.Width:= 120;
   DropList.Parent:= Form;
   DropList.DropDownCount:= 29;
   DropList.Items.Add ('Other Monster');
   DropList.Items.Add ('Barbarian');
   DropList.Items.Add ('Bear');
   DropList.Items.Add ('Black Knight');
   DropList.Items.Add ('Chicken');
   DropList.Items.Add ('Cow');
   DropList.Items.Add ('Darkwizard');
   DropList.Items.Add ('Deadly Red Spider');
   DropList.Items.Add ('Dwarf');
   DropList.Items.Add ('Ghost');
   DropList.Items.Add ('Giant');
   DropList.Items.Add ('Giant Spider');
   DropList.Items.Add ('Goblin');
   DropList.Items.Add ('Guard');
   DropList.Items.Add ('Hobgoblin');
   DropList.Items.Add ('Ice Giant');
   DropList.Items.Add ('Ice Warrior');
   DropList.Items.Add ('Lesser Demon');
   DropList.Items.Add ('Moss Giant');
   DropList.Items.Add ('Mugger');
   DropList.Items.Add ('Pirate');
   DropList.Items.Add ('Rat');
   DropList.Items.Add ('Scorpion');
   DropList.Items.Add ('Skeleton');
   DropList.Items.Add ('Unicorn');
   DropList.Items.Add ('Warrior');
   DropList.Items.Add ('White Knight');
   DropList.Items.Add ('Wizard');
   DropList.Items.Add ('Zombie');
   DropList.ItemIndex:= 0;

   TxtColorOne := TEdit.Create(Form);
   TxtColorOne.Top := 66;
   TxtColorOne.Left := 306;
   TxtColorOne.Width := 120;
   TxtColorOne.Parent := Form;

   TxtColorTwo := TEdit.Create(Form);
   TxtColorTwo.Top := 94;
   TxtColorTwo.Left := 306;
   TxtColorTwo.Width := 120;
   TxtColorTwo.Parent := Form;

   TxtColorThree := TEdit.Create(Form);
   TxtColorThree.Top := 122;
   TxtColorThree.Left := 306;
   TxtColorThree.Width := 120;
   TxtColorThree.Parent := Form;

   TxtObject:= TComboBox.Create(form);
   TxtObject.Top:= 150;
   TxtObject.Left:= 306;
   TxtObject.Width:= 120;
   TxtObject.Parent:= Form;
   TxtObject.DropDownCount:= 5;
   TxtObject.Items.Add ('Monster');
   TxtObject.Items.Add ('Grey Floor');
   TxtObject.Items.Add ('Brown Floor');
   TxtObject.Items.Add ('Yellow Dirt');
   TxtObject.Items.Add ('Brown Dirt');
   TxtObject.ItemIndex:= 0;

   TxtLockedIn:= TComboBox.Create(form);
   TxtLockedIn.Top:= 178;
   TxtLockedIn.Left:= 306;
   TxtLockedIn.Width:= 120;
   TxtLockedIn.Parent:= Form;
   TxtLockedIn.DropDownCount:= 2;
   TxtLockedIn.Items.Add ('De-Activated');
   TxtLockedIn.Items.Add ('Activated');
   TxtLockedIn.ItemIndex:= 0;

   TxtMiniMap2:= TComboBox.Create(form);
   TxtMiniMap2.Top:= 206;
   TxtMiniMap2.Left:= 306;
   TxtMiniMap2.Width:= 120;
   TxtMiniMap2.Parent:= Form;
   TxtMiniMap2.DropDownCount:= 2;
   TxtMiniMap2.Items.Add ('De-Activated');
   TxtMiniMap2.Items.Add ('Activated');
   TxtMiniMap2.Hint:= ('If you Activate this, also set the Search % of the MiniMap.');
   TxtMiniMap2.ShowHint:= true;
   TxtMiniMap2.ItemIndex:= 0;

   ButtonOK := TButton.Create(Form);
   ButtonOK.Left := 147;
   ButtonOK.Top := 252;
   ButtonOK.Width := 136;
   ButtonOK.Height := 24;
   ButtonOK.Caption := '- Start -';

   ButtonOK.OnClick := @ButtonClick;
   ButtonOK.Parent := Form;
   ButtonOK.ModalResult:= mrOk;
   ButtonOK.Default := False;

   Form.ShowModal;
   Form.Free;
end;

procedure BitMapInitialise;
begin
        Attack := BitmapFromString(15, 9,
        '000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000' +
        'FFFFFF000000000000000000FFFFFF000000000000000000FFFFFF' +
        'FFFFFFFFFFFF000000000000000000FFFFFFFFFFFF000000000000' +
        'FFFFFFFFFFFF000000000000FFFFFFFFFFFF000000FFFFFFFFFFFF' +
        '000000000000FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFF' +
        '000000FFFFFFFFFFFF000000FFFFFFFFFFFF000000000000FFFFFF' +
        'FFFFFF000000000000FFFFFFFFFFFF000000000000FFFFFFFFFFFF' +
        '000000FFFFFFFFFFFF000000000000FFFFFFFFFFFF000000000000' +
        'FFFFFFFFFFFF000000000000FFFFFFFFFFFF000000FFFFFFFFFFFF' +
        '000000000000FFFFFFFFFFFF000000000000FFFFFFFFFFFF000000' +
        'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF' +
        'FFFFFF000000000000FFFFFFFFFFFF000000FFFFFFFFFFFF000000' +
        '000000000000FFFFFFFFFFFF000000FFFFFFFFFFFF000000000000' +
        'FFFFFFFFFFFF000000FFFFFFFFFFFF000000000000000000FFFFFF' +
        'FFFFFF000000000000FFFFFFFFFFFF000000000000FFFFFFFFFFFF' +
        '');

        Lobster := BitmapFromString(19, 13,
        '8E4D008E4D00000000000000000000000000000000000000000000' +
        '000000000000000000000000000000000000000000000000000000' +
        '0000007F4500AD5E007F45005C3200000000000000000000000000' +
        '000000000000000000000000000000000000000000000000000000' +
        '000000000000AD5E005C32004D2A007F45008E4D00000000000000' +
        '000000000000000000000000000000000000000000000000000000' +
        '00000000000000000000000045372C5C3200703D007F4500000000' +
        '000000000000000000000000000000000000000000000000000000' +
        '0000000000000000000000000000000000005C32005C3200703D00' +
        '703D005C3200000000000000000000000000000000000000000000' +
        '0000000000000000000000000000000000000000000000005C3200' +
        '5C32004D2A00703D008E4D008E4D008E4D00703D00703D00703D00' +
        '000000000000000000000000000000000000000000000000000000' +
        '0000000000005C3200703D007F45007F4500AD5E00AD5E008E4D00' +
        '9E56009E56008E4D009E56009E5600000000000000000000000000' +
        '0000000000000000000000005C32005C3200AD5E007F45008E4D00' +
        '9E56009E56009E5600703D008E4D009E56009E5600000000000000' +
        '00000000000000000000000000000000000045372C703D007F4500' +
        '8E4D008E4D008E4D009E56008E4D00703D008E4D008E4D0045372C' +
        '000000000000000000000000000000000000000000000000703D00' +
        '7F45008E4D008E4D00703D008E4D009E56008E4D00703D008E4D00' +
        '7F4500000000000000000000000000000000000000000000000000' +
        '7F45007F45008E4D008E4D008E4D00703D008E4D009E56008E4D00' +
        '45372C000000000000000000000000000000000000000000000000' +
        '0000000000007F45005C32008E4D009E56008E4D00703D008E4D00' +
        '7F4500000000000000000000000000000000000000000000000000' +
        '0000000000000000000000008E4D00703D008E4D008E4D00703D00' +
        '7F4500000000000000000000');

        ScarMeister:= BitmapFromString(97, 40,
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C27C819563566A5C506D' +
        '5E5D69C2C2C2C2C2C2C2C2C2C2C2C2C2C2C27473826E5E5A796686' +
        '95718B6E5E5A948F95C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2646785' +
        '312E400302053A3C500302050302055E5D69C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C25C506D3E1645571784482A8663566A63566A' +
        'C2C2C2C2C2C2C2C2C27473826E1E5E8C2F97A133C19D3DB3925E8E' +
        '95718B948F95C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2A6A1B2312E401F1E2D04020E0C0622' +
        '4C347F0C06220C06220E050A52566FC2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        '6D5B88451A824C0D728177B6A594D22C0C374B4343C2C2C2C2C2C2' +
        'C2C2C2572486661A87A26CBBD2ACD4BAA4DA835EA4785284A6A1B2' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C21F1E2D1F1E2D1F1E2D646785A2B5EED6DEFED1D4FA' +
        '948F951609332213155E5D69C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2816AA6572486' +
        '9298C3B4BDF38997BF16084C6B5291C2C2C2C2C2C299979C3E1467' +
        '410C69D1C5F2D1D4FAA3A3D74D3D62512F5F99979CC0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2312E40' +
        '0302051F1E2D9BACE0AAB5EB3634470302056B6E86CDD6F69397AF' +
        '0302054B4343C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2653C92572486A3A3D7A2B5EE' +
        '828CB91609335C506DC2C2C2C2C2C270629D38187C56428BDFD9FA' +
        'D1C5F25C506D20091A4D3D62A6A1B2C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C252566F0302050302058997BF' +
        '92A2D11F1E2D03020523142D040222D6DEFECECED00E050A221315' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C24C347F1D0747A3A3D7AAB5EB828CB9120635' +
        '524A76C2C2C2C2C2C236223838187C9185ABD1D4FAC0CEFA302238' +
        '2A0A69968899C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0747382' +
        '5E26624618441F0931362238C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2030205030205948F95C0CEFA646785030205' +
        '23142D04020E100518CDD6F6E5E4FA030205B7A1B1C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C23E14672A0A69A3A3D7B4BDF3828CB91206355C506DC2C2C2' +
        'A297C62A0A692A0A69B4BDF3D6CCFAB4C7FA100518370C48C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C06D5B885717849D4BC59562B1' +
        '5E2A8A531E683D273CC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        '6B6E860302051F1E2DD6DEFED6DEFE03020503020552566F160933' +
        '484457BEC5EAB6B6D9030205FBF6FDC2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C299979C2A0A69' +
        '451A829BACE0B5C6F28084B00C054516084CC2C2C25253852A0A69' +
        '56428BADBEF2BDC6FAA3A3D70C0622281264C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0623284752EA1D0BBE8E5E4FADEDAEE280849' +
        '571784C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2312E40030205' +
        '727697D1CDEAA6ACD3030205030205030205050318948F95DFE6FE' +
        '99979C6E5E5AE9DFDEC2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C28A8592320B6E614E89C4CAF2' +
        '9BACE0A2B5EE0C054516084CC2C2C216084C26147A918CCAAEB4E4' +
        'A2B5EE828CB9120635363447C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'A398AA5E2A8A623284EADCF2EDEBFBE5E4FA1005181F0931C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0D2C8CAF7F2FDCA77BE' +
        '72425A99979CC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2030205030205B2B2CACDD6F6' +
        '5E5D69030205484457030205030205CDD6F6D1DBFA5E5D69C0B9D3' +
        'A6A1B2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2947EAB0803319772B2FBF6FDD6DEFEA5BEF4' +
        '0C06220E095C928DA91E0A651E0A65C0CEFAB4C7FAAAB5EB646785' +
        '16084C524A76C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0A6A1B2653C92' +
        '645A96DBD7F6E0E0FEB2B2CA0402225C18A0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0DA9AAEF5B3F1F4CFECCA77BE6E1E5E' +
        'C0B2B2C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C2C2C2C2C2C2' +
        'C2C2C2C2C2C299979C03020504020EDBD7F6DFE6FE5E5D69030205' +
        '7C81950302051F1E2DB5C6F29397AF4A4E6622131599979CC2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2A48CAC1D07479298C3FBF6FDDFE6FEC7CCF60C06220E095C' +
        '524A760E095C64689BBAC7F6C2CCFEB4C7FA52566F0C06226B6E86' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0A398AA8242B856428BC0CEFA' +
        'CDD6F63A3C501F0931484457C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        '95718B752EA1752EA1925E8EFAE1F0461844461844C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0' +
        'C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C2C2C2C2C2C2C2C2C2C2C2C2' +
        '7C81950302053A3C50DFE6FEEDEBFB5E5D690302058A85920E050A' +
        '0E050A4B43434B43436E5E5A363447C2C2C2C2C2C27C81957C8195' +
        '8A8592C2C2C2C2C2C2C2C2C2C2C2C299979C99979C948F95C2C2C2' +
        'C2C2C2C2C2C28A8592C0B2B2C2C2C2C2C2C299979CA398AAB179CE' +
        '280849B2B2CAEDEBFBEDEBFBCDD6F60C06220E095C0E095C100754' +
        '9298C3B4C7FAC2CCFECDD6F624203F1206358A859252566F4A4E66' +
        '4A4E66484457B1ADCBA6A1B2653C92653C924844571F1E2D0E050A' +
        '6F2F81A6A1B299979CA6A1B299979CA6A1B2C0C0C0785284861CBA' +
        'BF8ACADFD1FAD0BBE8370C486E1E5EC0C0C0CECED0E9DFDECECED0' +
        'A48CAC8A8592C0C0C099979C99979CA6A1B299979C99979C99979C' +
        '99979CC0C0C0C0C0C0C2C2C2C2C2C2C2C2C2C2C2C27C81950E050A' +
        '52566FDFE6FEEDEBFB5E5D690302058A859299979C6E5E5AFBF6FD' +
        'F7F2FD363447C2C2C28A859216071023142D1609332213152A2131' +
        'C2C2C2CECED0FEFDFE9547883612251607100302056E5E5A63566A' +
        '785284FAE1F0E7CEDF785284370C481F0931653C9225134AD6DEFE' +
        'E0E0FED6DEFECDD6F60302050E095C0E095C100754B4BDF3B4BDF3' +
        'C0CEFACDD6F60503180C054524203F0E095C1E0A651E0A651E0A65' +
        '2C1E4D796686451A828242B8975DD2531E68410C69A48CAC572486' +
        '9D3DB3BE50D2A133C16E1E5EA48CAC5C18A05C18A0A3A3D7DFD9FA' +
        'A6A1B2461844954788A48CACFEFDFEFEFDFEFEFDFEFAE1F0CA62B6' +
        '948F953E164551145D1406210C062205031805031803020552566F' +
        'C0C0C0C2C2C2C2C2C2C2C2C2C2C2C27C81950E050A52566FCDD6F6' +
        'E0E0FE6467850302054B4343C2C2C2CECED0C2C2C2C2C2C2C2C2C2' +
        '8A85920302051F0931482A866D5B883D273C361225D6B9C2FEFDFE' +
        'FAE1F0925E8E6E5E5A3D27651206350C054538187CA26CBBFCEDFA' +
        'E6C2EAB16CBD410C6961436C5E2A8A835EA4E0E0FED1D4FACDD6F6' +
        'CDD6F604020E0C05450E095C5F5B7DADBEF2AAB5EBC0CEFA92A2D1' +
        '04020E0C05450E095C0E095C828CB992A2D128206416084C320B6E' +
        '2A0A69975DD2C78DE9A14EA56232845717849D4BC5AF5CCBD684E3' +
        'AF5CCB680E8C680E8C680E8C5C18A0DFD1FADBD7F67966863E1645' +
        'A2739BFAC2F6FEFDFEFEFDFEFCEDFAFCEDFAF4CFECFEFDFEFCEDFA' +
        'A14EA5653C923E1467320B6E614E891007540C06225E5D69C2C2C2' +
        'C2C2C2C2C2C2C2C2C27C81950302053A3C50D1DBFAD6DEFEC2C2C2' +
        '030205C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C20C062223142D' +
        '5F5B7DCFD8FEDEDAEECECED0361225FEFDFEFEFDFEB888A7D1C5F2' +
        'A297C6BDC6FA8177B60C0545320B6EBAA4DAEEE3FEEEE3FEFBD5FE' +
        'BAA4DAD1D4FA4D3D62E7CEDFDFD9FAB6B6D9E0E0FEDFE6FE04020E' +
        '0C05450C0545A2A1C6ADBEF2A6ACD3D1CDEA9298C30402220E095C' +
        '282064B4BDF3CACCFAC7CCF69BACE00C054538187C947EABD6CCFA' +
        'D1C5F26F2F818C2F97701C8CD684E3F7F2FDFCEDFAEADCF29562B1' +
        '680E8C861CBA680E8CD6CCFAD1CDEA835EA451145DCA77BEFEFDFE' +
        'FEFDFEFEFDFEFCEDFAD2C8CA4D3D62BE50D2FEFDFEFBF6FDB5C6F2' +
        '451A82525385B4BDF37C81950503181F1E2DC2C2C2C2C2C2C2C2C2' +
        'C2C2C299979C030205030205D6DEFEDFE6FECDD6F6C0B2B2FEFDFE' +
        'C2C2C2C2C2C2C2C2C2C2C2C2363447030205312E40D6DEFED1CDEA' +
        '747382D1D4FA968899FEFDFEE7CEDFD1DBFA6B6E8604020EC0CEFA' +
        'B5C6F2525385423A82AAB5EBBEC5F2DBD7F6F4CFECEEE3FEB4BDF3' +
        '9185AB645A96FBF6FDA3A3D7EDEBFBDFE6FE04020E0C0545080331' +
        'CDD6F6828CB9C7CCF6CACCFA52566F0402220E095C92A2D1BEC5F2' +
        '1F1E2D92A2D1AEB4E4524A76451A82BEBBEFBDC6FAADBEF2280849' +
        'BE50D29562B1EEE3FEBEB2C20E050AD1C5F2E9DFDE680E8CA133C1' +
        'C78DE9DED8FEDFD1FA947EAB72425AF5B3F1FEFDFEFEFDFE747382' +
        '968899E0CEE2A398AA9D3DB3D0BBE8EADCF2FEFDFED0BBE8A6ACD3' +
        'A5BEF4A2B5EE0C0622050318C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        '030205030205BACAE6FEFDFEFEFDFE948F952213155E5D69C2C2C2' +
        'C2C2C299979C040222160933A6ACD3CFD8FE3A3C50120508DBD7F6' +
        'E7CEDFFEFDFEDAC9D2BEBBEF04020E2C1E4DC0CEFABDC6FA828CB9' +
        '92A2D164689BA2B5EEADBEF2D1C5F2F7D7F6BEBBEF828CB99298C3' +
        'EADCF2A6ACD3D6DEFECDD6F60402220C0545525385C0CEFA64689B' +
        'CFD8FEB4C7FA52566F0C0545423A82C0CEFA6B6E86080331828CB9' +
        'ADBEF2645A96828CB9A3A3D7C5C2F6A6ACD3512F5FAF5CCBE7CEDF' +
        'EEE3FE0E050A410C69D0BBE8EDEBFB2A0A69A383B4D0BBE8DFD1FA' +
        'D1D4FAA6A1B295718BFAE1F0FEFDFEDAC9D25E2662B888A7DFD1FA' +
        'A297C6A383B4BF8ACAD1C5F2BEBBEFDFD9FAD0BBE8BEC5EAA5BEF4' +
        '050318030205C2C2C2C2C2C2C2C2C2C2C2C2C2C2C23D273C3D273C' +
        'EDEBFBFEFDFEFBF6FD99979C030205030205C2C2C2C2C2C2484457' +
        '0C06224A4E66C7CCF6AEB4E40E050A542C38EEE3FEF7F2FDFCEDFA' +
        'BEC5EA6467850C062252566FC2CCFEC0CEFA1F1E2D6467858177B6' +
        'ADBEF2ADBEF264689BBEB2C2B4BDF364689B92A2D1B2B2CAA2A1C6' +
        'C0CEFAA6ACD304020E0C05458997BFADBEF252566FA5BEF4ADBEF2' +
        '05031808033192A2D1A5BEF41F1E2D0803319298C3BAC7F6525385' +
        '918CCA645A96CACCFAB4BDF36F2F81B179CEFCEDFAC2C2C2370C48' +
        '571784FBF6FDEDEBFB140621661A87D6B9C2EADCF2B1ADCB221315' +
        'FAE1F0FEFDFEFEFDFE8A8592824184BF8ACAEADCF2A297C6484457' +
        'A383B4D1D4FAC0CEFAA2A1C67C6EABCDD6F692A2D1030205040222' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2968899EDEBFBE9DFDED6DEFE' +
        'F7F2FDEDEBFB0E050A0E050A6B6E86C2C2C20C06220C0622A6ACD3' +
        'C0CEFA74738222131595718BDBD7F6DAC9D2DEDAEEB4BDF31F1E2D' +
        '0C06228084B0B4C7FAB4BDF304020E040222828CB9B4BDF3ADBEF2' +
        '1F1E2D5C506D777EA91F0931B4BDF382769EA3A3D7ADBEF2828CB9' +
        '0402220C0545B4C7FA777EA9777EA9A2B5EE9BACE0080331282064' +
        'A5BEF49BACE00402220C0545928DC0B5C6F252566F1D07479185AB' +
        'DFD1FAB6B6D98242B8BAA4DAE5E4FA706684661A879772B2EDEBFB' +
        'C0B9D320091A98368AE6C2EAFEFDFEC0B9D3CEB4D0FEFDFEFEFDFE' +
        'DBD7F6362238954788B16CBDDFD9FAA2A1C63E1467835EA4D1C5F2' +
        'BACAE66467851F1E2DA6ACD324203F23142D3A3C50C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C299979CFEFDFE63566AC2C2C2DFE6FEE5E4FA' +
        '7473820302053022388A8592120508120508E0E0FEE0E0FE948F95' +
        'D2C8CAD2C8CADAC9D2FAE1F0EDEBFBBEC5EA0302050C06228997BF' +
        'B4BDF392A2D104020E0803319BACE0ADBEF292A2D10503186F2F81' +
        '531E682C1E4DADBEF2614E89EEE3FEB5C6F28997BF04022252566F' +
        'B4C7FA3A3565828CB9B4C7FA828CB90C05456E7E97ADBEF2646785' +
        '0402220C05459298C3B4BDF33A3C502A0A69BAA4DAEEE3FEBFADE1' +
        'B16CBDBFADE1D6CCFA796686861CBAB79ABFE0E0FE7473822C0C37' +
        'FBD5FEFEFDFEFBF6FD968899F7F2FDFAC2F6DFD1FAA2A1C6361225' +
        '571784A26CBBDFD1FA928DC06C228AA383B4CACCFAC0CEFA312E40' +
        '2C1E4D7966863D273C363447C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2EDEBFB0E050A484457CDD6F6DFE6FED1CDEA120508' +
        '2213154B434320091A6E5E5AFEFDFEF7F2FD6E5E5AD6B9C2CA9EAA' +
        'FEFDFED6CDD8E0E0FE9397AF03020504020EB4BDF3B4C7FA8997BF' +
        '040222080331B4C7FAA5BEF47276970E050A835EA4D684E36B5291' +
        'ADBEF2080331BEC5F2EDEBFB828CB90C0545828CB99BACE0080331' +
        '9BACE0C0CEFA6E7E970C05459BACE0A2B5EE3A3C500C05450E095C' +
        'C5C2F6B4BDF30402221E0A65E0E0FEE5E4FA9185ABD684E3DDD2FE' +
        'DDD2FE6D5B88701C8CB79ABFCDD6F6302238DA9AAEFBF6FDFEFDFE' +
        'EDEBFB63566A98368ABAA4DAE5E4FA8084B03E1467410C69A297C6' +
        'D1D4FA4D3D62752EA1BAA4DADDD2FEAEB4E4120508370C48BEB2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'CECED0160710030205B1ADCBEDEBFBFBF6FDC0B2B2F7F2FDFCEDFA' +
        'B888A7FEFDFEFEFDFEC2C2C2120508120508F7D7F6FAE1F099979C' +
        'C0CEFA4E526E04020E04020EBDC6FAB4C7FA52566F0402223A3C50' +
        'B4BDF3ADBEF2312E4005031861436C6F2F81947EABA2B5EE1D0747' +
        'A5BEF4BDC6FAB2B2CA040222A2B5EE6E7E97080331A5BEF4A5BEF4' +
        '525385282064A2B5EEA5BEF404022210075456428BD1DBFA7C8195' +
        '1D0747280849E0E0FEEADCF2796686D684E3F7F2FDDFD9FA82769E' +
        '6E1E5E2C0C373D273C542C38FEFDFEFEFDFEFCEDFAD6DEFE100518' +
        '571784E0CEE2E0E0FE5F5B7D410C6951145DBEBBEFB4BDF3100518' +
        '4C0D72BEBBEFD1D4FA9185AB10051823142DC2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C24B4343' +
        '16071099979CFEFDFEFEFDFEFBF6FDD6CDD8FEFDFEFEFDFEFEFDFE' +
        'DFD9FA948F9503020595718B362238D2ACD4EDEBFBD1D4FA3A3C50' +
        '0402223A3C50B5C6F2B5C6F24E526E080331525385ADBEF2A2B5EE' +
        '04020E1206352C1E4D320B6EBAA4DA8084B0080331ADBEF2A5BEF4' +
        'CACCFA7C6EABADBEF23A3C50525385A5BEF4A5BEF43A3565525385' +
        'A2B5EE92A2D10402221E0A65A3A3D7D1DBFA1F1E2D2A0A696D5B88' +
        'DED8FED6DEFE312E40B179CEF7F2FDEEE3FEB79ABF6F2F8198368A' +
        'BF8ACAF4CFECFEFDFEFEDFFAE0E0FEBFADE13E1645571784E0E0FE' +
        'C7CCF63D273C6B179F9562B1D4C8F66B6E86280849661A87DED8FE' +
        'D1D4FA63566A100518796686C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2CECED0FEFDFEE9DFDE' +
        'F7F2FDD6DEFEE0E0FE4B434336122572425AC7CCF6C0CEFA5E5D69' +
        '61436C96889920091A362238CDD6F6CDD6F604020E05031852566F' +
        'A5BEF4A2B5EE04020E040222777EA9B4C7FA92A2D104020E120635' +
        '1D0747451A82AEB4E4777EA9080331A5BEF4ADBEF29298C3DFD9FA' +
        'A2B5EE0402224E526EA5BEF4A5BEF4080331828CB9A2B5EE828CB9' +
        '0C05454A3E8AC7CCF66B6E86100518320B6E7B529EE0E0FEE0E0FE' +
        '2C0C37B16CBDE0CEE2EEE3FEEADCF282418498368AE6C2EAEDEBFB' +
        'FEFDFEE6C2EADDD2FEA398AA571784835EA4D0BBE8BEC5F2531E68' +
        '6B179FD1C5F2A3A3D704020E410C697B529ED6CCFAC7CCF6302238' +
        '1406218A8592C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2E9DFDE4B43437C8195D1D4FA' +
        'DEDAEE928DA912050863566AC7CCF6EDEBFB2213150E050A63566A' +
        '12050852566FBAC7F6BEC5EA23142D0402229298C3B4BDF3A2B5EE' +
        '04020E0803318997BFADBEF2828CB904020E3D27651D07472A0A69' +
        'BAC7F6524A760C0545A5BEF4ADBEF2828CB9BEC5F2A6ACD3040222' +
        '828CB9A5BEF49BACE00E095C9BACE0A2B5EE64689B2A2672AEB4E4' +
        '9298C30503181D07472A0A69A3A3D7E0E0FEC0B9D325134AA14EA5' +
        'D2ACD4EDEBFBEDEBFBA383B46E1E5EFAE1F0FBF6FDFCEDFAD0BBE8' +
        'DBD7F65E5D69680E8CAC94DCDBD7F6AEB4E46B179FBAA4DABEBBEF' +
        '2A21311F0931410C697B529ED0BBE8BEC5F220091A370C48C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C0B2B2747382120508030205C7CCF6D1DBFAA2A1C6' +
        '1205087C8195DED8FED6DEFE0302050302054B43430E050A8A8592' +
        'B4BDF3A6ACD303020504020E8997BFA5BEF4828CB904020E040222' +
        'B4C7FAADBEF26467850402224844572A0A6956428BC0CEFA3A3C50' +
        '080331AAB5EBA2B5EEA2B5EEB4C7FA727697120635828CB9A5BEF4' +
        '8997BF282064ADBEF2A2B5EE64689B9BACE092A2D11F1E2D120635' +
        '2A0A692A0A69A2A1C6D1C5F29298C33E1645824184A26CBBDEDAEE' +
        'EEE3FED6CDD8954788FEFDFEFEFDFEFAC2F6E7CEDFD6CCFA706684' +
        '4C0D72BEBBEFDFD1FABAA4DABAA4DAB6B6D952566F3622386C228A' +
        '680E8CA594D2C5C2F6A3A3D72C0C3751145DC2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C20E050A030205A6A1B2CDD6F6CDD6F6030205C0B9D3' +
        'EDEBFBA2A1C610051805031804020E140621828CB99BACE0A2A1C6' +
        '04020E080331A5BEF4A2B5EE6E7E97040222040222ADBEF2A5BEF4' +
        '52566F040222645A96080331645A96BAC7F60402220C0545A5BEF4' +
        'A5BEF4A2B5EEA5BEF42C1E4D56428BADBEF2ADBEF264689B525385' +
        'A5BEF4A2B5EEADBEF2828CB904020E23142D482A86320B6E2A0A69' +
        'BEBBEFAAB5EB5F5B7D5E26628C2F97954788CEB4D0DEDAEEDFD1FA' +
        'CA9EAAFEFDFEFEFDFEB16CBDEDEBFBE0E0FE1406214C0D72DFD1FA' +
        'D1DBFACDD6F6A2B5EE23142D2C1E4D6F2F816C228A752EA1AC94DC' +
        'BEBBEF9397AF3E164572425AC2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        '4B43430302056B6E86D1CDEACDD6F6A383B4DFE6FEE0E0FEA6ACD3' +
        '03020548445705031804020EB5C6F2C4CAF24E526E04020E24203F' +
        'B5C6F2C0CEFA4E526E040222525385B5C6F2ADBEF21F1E2D04020E' +
        '4D3D62080331777EA9A3A3D70402220C0545A2B5EEA2B5EEA2B5EE' +
        '828CB93D2765BFADE1ADBEF2B4C7FA52538564689BA2B5EEA2B5EE' +
        '36344704020E0C0622493D799185AB320B6E451A82BEBBEFAAB5EB' +
        '524A76824184925E8E954788B888A7DFD9FADFD9FADFD1FAF7D7F6' +
        'FEDEFEA26CBBEEE3FED1CDEA2808495E2A8AD4C8F6D1D4FA7C8195' +
        '0302051F09315E2662948F95701C8C661A87DFD9FAC4CAF26B6E86' +
        '461844925E8EC2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'CECED0948F958A8592C2C2C2C2C2C2C2C2C2C2C2C2747382040222' +
        '5E5D69C7CCF6CACCFA9185ABD6DEFECDD6F652566F0302053A3C50' +
        '050318030205E0E0FEB5C6F24A4E6608033152566FB4C7FAC0CEFA' +
        '3A3C5004022252566FB4BDF3B5C6F204020E080331080331080331' +
        '828CB9828CB90402220C0545A2B5EEA5BEF4A5BEF44A4E6625134A' +
        'EADCF2B5C6F2ADBEF21F1E2D8997BFA5BEF492A2D10402220C0545' +
        '524A76C2C2C282769E320B6E7B529EC5C2F6AAB5EB1D07476F2F81' +
        'A297C6CA77BE824184D0BBE8DBD7F6E0CEE2D2ACD4FBD5FED2ACD4' +
        'E5E4FAA2A1C6410C69835EA4D6CCFAC0CEFA24203F1D0747572486' +
        'C2C2C2968899661A876C228ADBD7F6CACCFA5F5B7D5E26628A8592' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2CECED0FEFDFE3D273C' +
        '1205088A8592C2C2C2C2C2C2C2C2C28A859205031852566FC0CEFA' +
        'BACAE65C506DC7CCF6CDD6F66467851609339688990302053A3C50' +
        'E0E0FEB4C7FA4A4E6604020E6B6E86B4C7FAB4C7FA030205040222' +
        '8997BFB4C7FA828CB904020E040222080331080331A2B5EE64689B' +
        '080331282064ADBEF2A2B5EEA2B5EE1F1E2D0C05457C6EABEDEBFB' +
        'ADBEF2040222918CCAADBEF28997BF0503183A3565C2C2C2C0B9D3' +
        '61436C320B6E7C6EABBAC7F6A2B5EE370C488C2F979D3DB3F5B3F1' +
        'CA77BEB8A3BEEEE3FEEDEBFBB7A1B1F5B3F1CEB4D0DDD2FE9185AB' +
        '410C69816AA6DFD1FAC5C2F6140621410C69C2C2C2C2C2C2947EAB' +
        '6C228AA26CBBEADCF2C5C2F616071051145DA398AAC2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2FEFDFEF7F2FD5C506D2A2131030205' +
        'C2C2C2C2C2C2C2C2C24844570503184E526EBDC6FA8997BF82769E' +
        'B5C6F2D1DBFA52566F0C0622928DA982769EA3A3D7FBF6FDB4BDF3' +
        '1F1E2D0402228997BFBAC7F6A3A3D7040222040222A3A3D7B5C6F2' +
        '8997BF040222484457080331080331A2B5EE4A4E660C0545525385' +
        'ADBEF2A5BEF48997BF04020E040222828CB9EDEBFB92A2D1080331' +
        '9BACE0BAC7F68997BF050318524A76B1ADCBB1ADCB4A3E8A2A0A69' +
        '918CCABEC5F2928DC04C0D72B179CE954788EEAAE6EEAAE6CEB4D0' +
        'FCEDFADEDAEE95718BB16CBDD1C5F2C4CAF25F5B7D5C18A09772B2' +
        'D1D4FABDC6FA1005182A0A69C2C2C2B1ADCB785284410C69A383B4' +
        'DED8FECDD6F620091A51145DC2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2CECED0FEFDFE4B4343C5C2F60E050A050318C2C2C2C2C2C2' +
        'C2C2C21F1E2D04020E828CB9A5BEF452566F928DA9CACCFACDD6F6' +
        '1F1E2D0302055E5D690C06226B6E86B4C7FAADBEF204020E04020E' +
        'B5C6F2B4C7FA8997BF030205040222C0CEFABAC7F64A4E6604020E' +
        '493D790803314E526EA2B5EE1F1E2D080331525385A5BEF4A5BEF4' +
        '72769704022208033192A2D1A2B5EEA2A1C6120635BAC7F6BAC7F6' +
        '6467850402223A35654C347F4C347F16084C2A0A69A3A3D7BEC5F2' +
        'A594D2752EA1D1D4FA461844DA94DEFAC2F6D2ACD4FEFDFED1CDEA' +
        'B179CE6F2F81DEDAEEC4CAF2493D79451A82AC94DCCACCFAA3A3D7' +
        '120635451A82947EABA48CAC835EA45E2A8ADEC4F2D6CCFAA2A1C6' +
        '3E1645A14EA5C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2DAC9D2' +
        '36122563566ABEC5F2030205030205C2C2C2C2C2C299979C04020E' +
        '04022292A2D19BACE0030205D1C5F2CDD6F6BAC7F603020504020E' +
        '36344724203F4E526EADBEF2ADBEF204020E3A3C50B4BDF3B4C7FA' +
        '6467850402221F1E2DC0CEFABEC5EA3A3C50040222484457080331' +
        '4A4E66A5BEF4040222080331525385B4BDF3A2B5EE4A4E66040222' +
        '080331A2B5EEA2B5EE82769E120635B4BDF3ADBEF252566F040222' +
        '1007542A26721007542A0A691E0A65BEBBEFB4BDF3645A969562B1' +
        'BEC5EA3E1645F5B3F1FAE1F0D6B9C2FBF6FDC2C2C2EEAAE6A2739B' +
        'DDD2FED1D4FA1206353E1467A2A1C6C4CAF29397AF3E1467975DD2' +
        '975DD2572486572486752EA1D1C5F2DBD7F6947EAB542C38796686' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2B7A1B172425A706684' +
        'B5C6F203020504020EC2C2C2C2C2C2312E40030205363447A5BEF4' +
        '727697160710EADCF2CDD6F6CDD6F60302050402224E526E777EA9' +
        '4E526EADBEF2ADBEF204020E64689BADBEF2BACAE64E526E040222' +
        '525385BDC6FAB4C7FA030205040222312E40080331828CB9828CB9' +
        '04020E080331525385ADBEF2A2B5EE04020E120635363447A2B5EE' +
        'A2B5EE747382282064BEC5EAAAB5EB52566F0C054516084CA3A3D7' +
        '1007542A0A694A3E8AC5C2F6ADBEF256428B9772B2CACCFA72425A' +
        'F7D7F6FEDEFEDEC4F2FCEDFAA6A1B2FCEDFABF8ACAD6DEFEDBD7F6' +
        '2C0C375C18A0BFADE1DED8FEA3A3D725134A320B6EA383B4614E89' +
        '38187C3E1467CACCFADBD7F663566A824184A2739BC2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2362238A2739BA2A1C6BACAE6030205' +
        '0E050A6B6E866B6E8604020E04020E9BACE0BEC5F21F1E2D4D3D62' +
        '706684CDD6F6C7CCF604020E0C06229298C36E7E974A4E66A5BEF4' +
        'ADBEF203020592A2D1B4C7FABAC7F60302050402227C8195B4C7FA' +
        '9BACE004020E0402220402220803318997BF828CB9040222080331' +
        '4A4E66A5BEF48997BF0402220402225253859BACE0B4BDF30C0622' +
        '9772B2A6ACD3A2B5EE4E526E0E095C525385A5BEF42820641E0A65' +
        '645A96B5C6F2BEBBEF8242B8CEB4D0FCEDFAA383B4FEDFFAE6C2EA' +
        'FBF6FDEDEBFB8A8592F7F2FDDEC4F2DED8FEB1ADCB653C92C78DE9' +
        'AC94DCC5C2F6928DC026147A451A82BDC6FA7C6EAB451A82493D79' +
        'D6CCFAB5C6F261436C9562B1C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2362238120508DDD2FEF7F2FD7276970503180E050A' +
        '03020504020E6B6E86BEC5EA6B6E860C06221607105C506DCDD6F6' +
        'BAC7F604020E3A3C50A5BEF41F1E2D363447A5BEF4ADBEF2646785' +
        'A2B5EEADBEF2B5C6F20302050503188997BFB4BDF3828CB9030205' +
        '23142D040222040222A2B5EE4A4E66040222040222828CB9A2B5EE' +
        '727697040222100754777EA99BACE0CACCFA0C0622DFD1FA9397AF' +
        '9BACE05253850C054592A2D16E7E97040222100754947EABB4BDF3' +
        'C5C2F6BFADE1EEE3FEFBF6FDB8A3BEF7D7F6FEFDFEFEFDFEB1ADCB' +
        '796686F4CFECC0B9D3EEE3FEBEBBEF8177B6918CCA70629DB4C7FA' +
        '928DC038187C9185ABAAB5EB0503183E1467816AA6CACCFAB4C7FA' +
        '160710531E68B7A1B1C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        '3612250E050A52566FE5E4FAD1D4FA30223816093305031852566F' +
        'B5C6F2828CB90302053022380C06221F1E2DC0CEFAADBEF264689B' +
        '9BACE0646785030205030205ADBEF2ADBEF2A5BEF492A2D1A5BEF4' +
        '828CB904020E050318ADBEF2B5C6F26E7E9704020E484457040222' +
        '3A3565A2B5EE4A4E66040222040222828CB9A2B5EE4A4E66040222' +
        '0402229BACE0B6B6D99298C304020EDEC4F270629DA2B5EE8997BF' +
        '8997BF9BACE00402220C0545100754828CB9BFADE1CDD6F6928DA9' +
        'B1ADCBFEFDFEF7F2FDFEFDFEFEFDFEEDEBFB4B43437B529E72425A' +
        'BAA4DAD0CBEEC5C2F6AAB5EB24203F16084CBEC5F2B4C7FA8177B6' +
        'C5C2F63A3C5016084C451A82A594D2AEB4E4AAB5EB0E050A5E2662' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C28A8592221315' +
        '0302053A3C50D1D4FAE0E0FEB1ADCBC0B9D3BAC7F6646785030205' +
        '0C062279668604022223142D6E7E97ADBEF2ADBEF2828CB9030205' +
        '03020504020E6E7E97A2B5EE6E7E976E7E978084B08084B03A3C50' +
        '0302058997BF828CB9312E40050318484457050318828CB9828CB9' +
        '72769704020E040222828CB9A2B5EE312E40040222646785828CB9' +
        '8997BF9397AF82769E512F5F04022292A2D1A2B5EE9BACE01F1E2D' +
        '23142D26147A100754525385ADBEF2A6ACD3030205030205A6A1B2' +
        'FBF6FDFEFDFEEDEBFB5E5D69362238824184653C92928DC0A2B5EE' +
        '9BACE03A3C501609331E0A658084B0ADBEF2A2B5EE5253850C0622' +
        '38187C451A827C6EAB8084B06467851F09319562B1C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C296889904020E030205' +
        '1F1E2D3A3C505E5D695E5D6903020503020504020E706684C2C2C2' +
        '6467850C06220503184A4E6636344703020504020E48445704020E' +
        '0302054A4E660302050302050302050302054B434323142D030205' +
        '030205030205484457484457484457030205030205030205484457' +
        '04020E04020E03020504020E04020E312E4003020503020524203F' +
        '4A4E6623142D0402221F1E2D4A4E6604020E04022224203F928DA9' +
        '1E0A651206354A4E6604020E2C0C375E266272425A2A21315E5D69' +
        '1F1E2D2C1E4D5E2662A48CAC7B529E2C1E4D4A4E661F1E2D080331' +
        '4C347F26147A0E095C4A4E661F1E2D0402222812649185AB5C506D' +
        '1D07470C06221F09313D273CC0B2B2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2C2C2C2C2C2C2C2C2C2C0B9D399979C312E40796686221315' +
        '030205030205030205160933948F95C2C2C2C2C2C2C2C2C25E5D69' +
        '24203F1609330302050C0622484457C2C2C25E5D6904020E04020E' +
        '04020E4844574844574844574A4E66484457484457484457484457' +
        '9397AFC2C2C248445748445748445748445752566F484457040222' +
        '0402220402227473824844574D3D625C506DC0B9D3484457A398AA' +
        '1F1E2D080331040222080331282064A6ACD3C2C2C29185AB1D0747' +
        '2808493E14676F2F81A383B4FCEDFAE7CEDFE6C2EA542C38824184' +
        'B8A3BEC2C2C2816AA6451A82482A8638187C423A82A6A1B27C6EAB' +
        '26147A1E0A651E0A651E0A65928DC0C2C2C28177B66B5291785284' +
        '6B5291947EABC2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2' +
        'C2C2C2');
end;

procedure AutoLogin;
begin
      begin
           Writeln('Logging in User '+UserName+'.');
           ClickMouse(340,280,True);
           Wait(2500);
      end;
if (LoginScreen) then
    begin
         ClickMouse(100,260,True);
         Wait(500);
         SendKeysSilent(UserName);
         Wait(2000);
         ClickMouse(120,310,True);
         Wait(500);
         SendKeysSilent(PassWord);
         Wait(2000);
         ClickMouse(380,250,True);
         if (Server = 1) then
         begin
              ClickMouse(214,285,True);
         end;
         repeat
               wait (300);
         until (IsTextAt (7, 304, 'Welcome to'));
         wait (2500);
         Writeln('Closing Welcome box.');
         ClickMouse (495,15, True);
         wait (500);
         MoveMouse (10,10);
         wait (500);
    end;
end;

procedure LockedIn;
begin
i:= 0; j:= 0; x:= 0; y:= 0;
MoveMouse (460, 15)
Wait (300);
ClickMouse (432, 133, True);
wait (300);
repeat
      if (FindColorSpiral (x, y, 929884, 1 + j, 1, 500, 320)) or
         (FindColorSpiral (x, y, 415860, 1 + j, 1, 500, 320)) or
         (FindColorSpiral (x, y, 1859768, 1 + j, 1, 500, 320)) or
         (FindColorSpiral (x, y, 1327248, 1 + j, 1, 500, 320)) or
         (FindColorSpiral (x, y, 663624, 1 + j, 1, 500, 320)) then
         begin
              MoveMouse (x, y);
              wait (200);
              if (IsTextAt (6, 2, 'Door: Open')) then
              begin
                   ClickMouse (x, y, True);
                   wait (1000);
              end;
         end;
      i:= i + 1;
      if (i = 3) then
      begin
           i:= 0;
           j:= j + 50;
      end;
wait (100);
until (j > 501) or (IsTextAt (7, 304, 'The door'));
writeln ('Locked in Check Complete. Continue with Autoing.');
end;

Procedure EatLobster;
begin
      i:= 0;
      j:= 0;
      repeat
      MoveMouse (495, 15);
      wait (500);
           if (FindBitmap (Lobster, x, y)) then
           begin
                i:= 1;
                writeln ('Eating Lobster.');
                ClickMouse (x, y, True);
                wait (300);
           end;
      wait (500);
      j:= j + 1;
      until (i = 1) or (j = 15);
      if (j = 15) then
      begin
           MoveMouse (10, 10);
           wait (300);
           writeln ('Lobsters gone. Waiting 3 seconds and logging off.');
           status ('Program Terminated - by Scarmeister 2004!');
           wait (3000);
           MoveMouse (325, 20);
           wait (300);
           ClickMouse (325, 282, True);
           wait (300);
           repeat
                 wait (500);
           until (False);
      end;
MoveMouse (10, 10);
wait (100);
end;

procedure CheckHealth;
begin
      MoveMouse (425, 20);
      wait (300);
      CurrentHits:= GetTextAt (318, 112);
      wait (300);
      MoveMouse (10, 10);
      wait (300);
      ActualHp:= StrToInt (copy (CurrentHits, 6, 2));
      if (ActualHp < EatHp) then
         begin
              writeln ('Looking for Lobster.');
              EatLobster;
         end;
end;

procedure Sleep;
begin
    i:= 0;
    MoveMouse (490, 15)
    Wait (300);
      ClickMouse (BagX, BagY, True);
      Wait(2000)
      repeat
            i:= i + 1;
            wait (50);
            if (i = 400) then
               begin
                    i:= 0;
                    ClickMouse (180, 300, True);
                    wait (300);
                    Writeln ('Trying again for a new word.');
               end;
      until (IsTextAt (7, 304,'You wake up')) or
            (IsTextAt (7, 304,'You are unexpectedly awoken')) or
            (IsTextAt (7, 304,'You can t do that whilst')) or
            (GetColor (167,41) <> 65535);
   MoveMouse(10,10)
   wait (10);
end;

procedure FindBag;
begin
    writeln ('Searching for sleeping bag.');
      repeat
      MoveMouse (495, 15);
      wait (500);
      if (FindColorSpiral (x, y, 4026013, 265, 25, 505, 240)) then
         begin
              MoveMouse (x, y);
              wait (500);
              if (IsTextAt (6, 2, 'Sleeping Bag')) then
              begin
                   writeln ('Sleeping bag found - Storing coordinates.')
                   BagX:= x;
                   BagY:= y;
                   i:= 1;
              end;
         MoveMouse (10, 10);
         wait (50);
         end;
      until (i = 1);
end;

Procedure FindObjectOnMap;
begin
    i:= 0; j:= 0;
      writeln ('Searching for '+SObjectName+' on MiniMap.');
      repeat
      if (j = 10) and (LockedIn2 = 1) then
      begin
           j:= 0;
           writeln ('Possibly Locked in. Checking all Closed Doors.');
           LockedIn;
      end;
            MoveMouse (460, 20);
            wait (200);
            if (FindColorSpiral (x, y, SObject, 422, 103, 441, 122)) then
            begin
                 writeln ('In vicinity of '+SObjectName+', switching to Attack Mode.');
                 i:= 1;
            end;
            if (FindColorSpiral (x, y, SObject, 432-a, 113-b, 432+a, 113+b)) then
            begin
                 j:= j + 1;
                 ClickMouse (x, y, True);
                 wait (200);
            end;
      wait (100);
      until (i = 1);
    MoveMouse (10, 10);
    wait (250);
end;

procedure CheckMessage;
begin
      i:= 0; j:= 0; x:= 0; y:= 0;
      MoveMouse (10, 10);
      wait (50);
      if (IsTextAt (7, 304, 'You are too')) then
      begin
           writeln ('Going to sleep.');
           Sleep;
           wait (50);
      end;
      if (GetColor (85, 140) = 3472636) and
         (GetColor (500, 215) = 0) then
         begin
              writeln ('Starting login procedure.');
              AutoLogin;
         end;
      if (IsTextAt (7, 268, 'I can t get close')) or
         (IsTextAt (7, 280, 'I can t get close')) or
         (IsTextAt (7, 292, 'I can t get close')) then
      begin
           writeln ('AutoLike Behaviour Prevention - Waiting for 5 seconds.');
           wait (5000);
      end;
      if (IsTextAt (7, 304, 'I can t get close')) and ((FreeMonster = 'Activated') or (MiniSearch = 1)) then
      begin
           FindObjectOnMap;
      end;
end;

procedure CheckFightMode;
begin
      Look:= 0; Timer:= 0;
      f:= GetFightMode;
      if (f = Mode) then
      begin
           repeat
                 f:= GetFightMode;
                 wait (100);
           until (f = 0);
           if (Eating = 1) then
           begin
                writeln ('Checking if we need to eat.');
                CheckHealth;
           end;
      end else
      begin
           Writeln('Choosing Right FightMode.');
           ClickMouse(100, 25 + (20 * Mode), True);
           wait (300);
      end;
end;

procedure GetMonster;
begin
      if (MonsterName <> 'Other Monster') then
      begin
           if (MonsterName = 'Barbarian') then
           begin
                MonsterColor1:= 2175372;
           end;
           if (MonsterName = 'Bear') then
           begin
                MonsterColor1:= 9834;
           end;
           if (MonsterName = 'Black Knight') then
           begin
                MonsterColor1:= 723723;
           end;
           if (MonsterName = 'Chicken') then
           begin
                MonsterColor1:= 16185078;
           end;
           if (MonsterName = 'Cow') then
           begin
                MonsterColor1:= 14342875;
           end;
           if (MonsterName = 'Darkwizard') then
           begin
                MonsterColor1:= 3618615;
           end;
           if (MonsterName = 'Deadly Red Spider') then
           begin
                MonsterColor1:= 2629761;
           end;
           if (MonsterName = 'Dwarf') then
           begin
                MonsterColor1:= 594799;
           end;
           if (MonsterName = 'Ghost') then
           begin
                MonsterColor1:= 7039752;
           end;
           if (MonsterName = 'Giant') then
           begin
                MonsterColor1:= 65536;
           end;
           if (MonsterName = 'Giant Spider') then
           begin
                MonsterColor1:= 1786198;
           end;
           if (MonsterName = 'Goblin') then
           begin
                MonsterColor1:= 251224;
           end;
           if (MonsterName = 'Guard') then
           begin
                MonsterColor1:= 733305;
           end;
           if (MonsterName = 'Hobgoblin') then
           begin
                MonsterColor1:= 250968;
           end;
           if (MonsterName = 'Ice Giant') then
           begin
                MonsterColor1:= 13082964;
           end;
           if (MonsterName = 'Ice Warrior') then
           begin
                MonsterColor1:= 13411668;
           end;
           if (MonsterName = 'Lesser Demon') then
           begin
                MonsterColor1:= 202;
           end;
           if (MonsterName = 'Moss Giant') then
           begin
                MonsterColor1:= 10667995;
           end;
           if (MonsterName = 'Mugger') then
           begin
                MonsterColor1:= 204;
           end;
           if (MonsterName = 'Pirate') then
           begin
                MonsterColor1:= 6274750;
           end;
           if (MonsterName = 'Rat') then
           begin
                MonsterColor1:= 7159865;
           end;
           if (MonsterName = 'Scorpion') then
           begin
                MonsterColor1:= 424386;
           end;
           if (MonsterName = 'Skeleton') then
           begin
                MonsterColor1:= 16447223;
           end;
           if (MonsterName = 'Unicorn') then
           begin
                MonsterColor1:= 16119285;
           end;
           if (MonsterName = 'Warrior') then
           begin
                MonsterColor1:= 7500402;
           end;
           if (MonsterName = 'White Knight') then
           begin
                MonsterColor1:= 6250335;
           end;
           if (MonsterName = 'Wizard') then
           begin
                MonsterColor1:= 15532032;
           end;
           if (MonsterName = 'Zombie') then
           begin
                MonsterColor1:= 16504238;
           end;
      end;
      if (Cols = 0) then
      begin
           MonsterColor2:= MonsterColor1;
           MonsterColor3:= MonsterColor1;
      end;
      if (Cols = 1) then
      begin
           MonsterColor2:= MonsterColor1;
           MonsterColor3:= MonsterColor1;
      end;
      if (Cols = 2) then
      begin
           MonsterColor3:= MonsterColor1;
      end;
end;

begin
status ('MeisterFighter V1.3 - by Scarmeister!');
BitMapInitialise; Initialise; GetMonster;
CheckMessage; FindBag; Look:= 0; Timer:= 0;

repeat
f:= GetFightMode;
      if (Look > 2) and (LockedIn2 = 1) then
      begin
           Look:= 0; Timer:= 0;
           writeln ('Possibly Locked in. Checking all Closed Doors.');
           LockedIn;
      end;
      if (Timer > 25) and (MiniSearch = 1) then
      begin
           Look:= 0; Timer:= 0;
           FindObjectOnMap;
      end;
if (f = 0) then
begin
      i:= 0; j:= 0; x:= 0; y:= 0;
      if (FindColorSpiral2 (x, y, MonsterColor1, 1, 1, 304, 325)) or
         (FindColorSpiral2 (x, y, MonsterColor1, 305, 36, 510, 325)) or
         (FindColorSpiral2 (x, y, MonsterColor2, 1, 1, 304, 325)) or
         (FindColorSpiral2 (x, y, MonsterColor2, 305, 36, 510, 325)) or
         (FindColorSpiral2 (x, y, MonsterColor3, 1, 1, 304, 325)) or
         (FindColorSpiral2 (x, y, MonsterColor3, 305, 36, 510, 325)) then
      begin
      if (Click = 'Left') then
      begin
           ClickMouse (x, y, True);
      end;
      if (Click = 'Right') then
      begin
           ClickMouse (x, y, False);
      end;
           wait (200);
           if (FindBitmap (Attack, x, y)) then
           begin
                ClickMouse (x+2, y+2, True);
                wait (250);
                writeln (Monster+' found and attacking it.');
                repeat
                      f:= GetFightMode;
                      i:= i + 1;
                      wait (50);
                until (i = 100) or (f > 0) or
                      (IsTextAt (7, 304, 'I can t get close'));
           end;
      end;
      if (i = 100) then
      begin
           Look:= Look + 1;
      end;
end else
     begin
          CheckFightMode;
     end;
     CheckMessage;
     Timer:= Timer + 1;
wait (300);
until (False);
end.