BaSs_HaXoR

Mango Knife's COD Ghosts Public Cheater v2.0.0

Mar 22nd, 2014
537
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.89 KB | None | 0 0
  1. /*
  2.  
  3.  
  4. PwN3D By BaSs_HaXoR
  5.  
  6. Download: http://adf.ly/rt8GE
  7.  
  8. * °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°PwN3D°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°PwN3D°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°PwN3D°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°PwN3D°°°°°°°°°°°°°PwN3D°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°PwN3D°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
  9. * °°°°°°PwN3D°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°PwN3D°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°PwN3D°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°PwN3D°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°PwN3D°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°PwN3D°°°°°°°°°°
  10. ____ __ __ __ __ __ ____
  11. /\ _`\ /\ \ __/\ \/\ \/\ \ /'__`\ /\ _`\
  12. \ \ \L\ \ \ \/\ \ \ \ \ `\\ \/\_\L\ \\ \ \/\ \
  13. \ \ ,__/\ \ \ \ \ \ \ \ , ` \/_/_\_<_\ \ \ \ \
  14. \ \ \/ \ \ \_/ \_\ \ \ \`\ \/\ \L\ \\ \ \_\ \
  15. \ \_\ \ `\___x___/\ \_\ \_\ \____/ \ \____/
  16. \/_/ '\/__//__/ \/_/\/_/\/___/ \/___/
  17.  
  18. * _ _ _
  19. / /\ /\ \ /\_\ _
  20. / / \\ \ \ / / //\_\
  21. / / /\ \\ \ \_/ / / \/_/
  22. / / /\ \ \\ \___/ /
  23. / / /\ \_\ \\ \ \_/
  24. / / /\ \ \___\\ \ \
  25. / / / \ \ \__/ \ \ \ _
  26. / / /____\_\ \ \ \ \ /_/\
  27. / / /__________\ \ \_\ \_\/
  28. \/_____________/ \/_/
  29. °
  30. _____ _____ _____ _____ _____ _____ _______ _____
  31. /\ \ /\ \ /\ \ /\ \ /\ \ /\ \ ______ /::\ \ /\ \
  32. /::\ \ /::\ \ /::\ \ /::\ \ /::\____\ /::\ \ |::| | /::::\ \ /::\ \
  33. /::::\ \ /::::\ \ /::::\ \ /::::\ \ /:::/ / /::::\ \ |::| | /::::::\ \ /::::\ \
  34. /::::::\ \ /::::::\ \ /::::::\ \ /::::::\ \ /:::/ / /::::::\ \ |::| | /::::::::\ \ /::::::\ \
  35. /:::/\:::\ \ /:::/\:::\ \ /:::/\:::\ \ /:::/\:::\ \ /:::/ / /:::/\:::\ \ |::| | /:::/~~\:::\ \ /:::/\:::\ \
  36. /:::/__\:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ /:::/____/ /:::/__\:::\ \ |::| | /:::/ \:::\ \ /:::/__\:::\ \
  37. /::::\ \:::\ \ /::::\ \:::\ \ \:::\ \:::\ \ \:::\ \:::\ \ /::::\ \ /::::\ \:::\ \ |::| | /:::/ / \:::\ \ /::::\ \:::\ \
  38. /::::::\ \:::\ \ /::::::\ \:::\ \ ___\:::\ \:::\ \ ___\:::\ \:::\ \ /::::::\ \ _____ /::::::\ \:::\ \ |::| | /:::/____/ \:::\____\ /::::::\ \:::\ \
  39. /:::/\:::\ \:::\ ___\ /:::/\:::\ \:::\ \ /\ \:::\ \:::\ \ /\ \:::\ \:::\ \ /:::/\:::\ \ /\ \ /:::/\:::\ \:::\ \ ______|::|___|___ ____ |:::| | |:::| | /:::/\:::\ \:::\____\
  40. /:::/__\:::\ \:::| |/:::/ \:::\ \:::\____\/::\ \:::\ \:::\____\/::\ \:::\ \:::\____\/:::/ \:::\ /::\____\/:::/ \:::\ \:::\____\|:::::::::::::::::| ||:::|____| |:::| |/:::/ \:::\ \:::| |
  41. \:::\ \:::\ /:::|____|\::/ \:::\ /:::/ /\:::\ \:::\ \::/ /\:::\ \:::\ \::/ /\::/ \:::\ /:::/ /\::/ \:::\ /:::/ /|:::::::::::::::::|____| \:::\ \ /:::/ / \::/ |::::\ /:::|____|
  42. \:::\ \:::\/:::/ / \/____/ \:::\/:::/ / \:::\ \:::\ \/____/ \:::\ \:::\ \/____/ \/____/ \:::\/:::/ / \/____/ \:::\/:::/ / ~~~~~~|::|~~~|~~~ \:::\ \ /:::/ / \/____|:::::\/:::/ /
  43. \:::\ \::::::/ / \::::::/ / \:::\ \:::\ \ \:::\ \:::\ \ \::::::/ / \::::::/ / |::| | \:::\ /:::/ / |:::::::::/ /
  44. \:::\ \::::/ / \::::/ / \:::\ \:::\____\ \:::\ \:::\____\ \::::/ / \::::/ / |::| | \:::\__/:::/ / |::|\::::/ /
  45. \:::\ /:::/ / /:::/ / \:::\ /:::/ / \:::\ /:::/ / /:::/ / /:::/ / |::| | \::::::::/ / |::| \::/____/
  46. \:::\/:::/ / /:::/ / \:::\/:::/ / \:::\/:::/ / /:::/ / /:::/ / |::| | \::::::/ / |::| ~|
  47. \::::::/ / /:::/ / \::::::/ / \::::::/ / /:::/ / /:::/ / |::| | \::::/ / |::| |
  48. \::::/ / /:::/ / \::::/ / \::::/ / /:::/ / /:::/ / |::| | \::/____/ \::| |
  49. \::/____/ \::/ / \::/ / \::/ / \::/ / \::/ / |::|___| ~~ \:| |
  50. ~~ \/____/ \/____/ \/____/ \/____/ \/____/ ~~ \|___|
  51.  
  52. *
  53. *
  54.  
  55. Yb dP 8 w .d88b. w w dP"Yb
  56. Yb db dP 8d8b. .d88 w8ww YPwww. .d88b .d8b 8 8 8d8b w w8ww Yb dP " d8
  57. YbdPYbdP 8P Y8 8 8 8 d8 8.dP' 8 8b d8 8P 8 8 YbdP dP
  58. YP YP 8 8 `Y88 Y8P `Y88P' `Y88P `Y8P `Y8P8 8 8 Y8P dP w
  59. dP
  60.  
  61.  
  62.  
  63.  
  64. *
  65. *
  66. ::: ::::::::
  67. :+: :+: :+:
  68. +:+ +:+
  69. +#+ +#++:
  70. +#+ +#+
  71. #+# #+# #+#
  72. ### ######## _ _ _
  73. | | | | | |
  74. _ _ _ __ ___ _ __ ___ _ __ _ _ _ __ | |_ ___ __| | | |__ ___ ___ __ _ _ _ ___ ___ __ _____ ___ __ _ _ __ ___
  75. | | | | '_ \ / _ \ '_ \ / __| '__| | | | '_ \| __/ _ \/ _` | | '_ \ / _ \/ __/ _` | | | / __|/ _ \ \ \ /\ / / _ \ / __/ _` | '__/ _ \
  76. | |_| | | | | __/ | | | (__| | | |_| | |_) | || __/ (_| | | |_) | __/ (_| (_| | |_| \__ \ __/ \ V V / __/ | (_| (_| | | | __/
  77. \__,_|_| |_|\___|_| |_|\___|_| \__, | .__/ \__\___|\__,_| |_.__/ \___|\___\__,_|\__,_|___/\___| \_/\_/ \___| \___\__,_|_| \___|
  78. __/ | |
  79. |___/|_|
  80. ::: ::::::::
  81. :+: :+: :+:
  82. +:+ +:+
  83. +#+ +#++:
  84. +#+ +#+
  85. #+# #+# #+#
  86. ### ########
  87. */
  88.  
  89. namespace WindowsFormsApplication1
  90. {
  91. using DevComponents.DotNetBar;
  92. using DevComponents.DotNetBar.ColorPickers;
  93. using DevComponents.DotNetBar.Metro.ColorTables;
  94. using DevExpress.XtraEditors;
  95. using GHOSTS;
  96. using Microsoft.VisualBasic;
  97. using Modern_Warfare_2_Library;
  98. using MW2RPC;
  99. using PS3Lib;
  100. using System;
  101. using System.Collections.Generic;
  102. using System.ComponentModel;
  103. using System.Diagnostics;
  104. using System.Drawing;
  105. using System.Globalization;
  106. using System.IO;
  107. using System.Linq;
  108. using System.Management;
  109. using System.Net;
  110. using System.Net.Sockets;
  111. using System.Runtime.CompilerServices;
  112. using System.Runtime.InteropServices;
  113. using System.Text;
  114. using System.Threading;
  115. using System.Threading.Tasks;
  116. using System.Windows.Forms;
  117. using WindowsFormsApplication1.Properties;
  118. using BO2;
  119. public class Form1 : Form
  120. {
  121. private NumericUpDown A;
  122. private ToolStripMenuItem aAS72XToolStripMenuItem;
  123. private ToolStripMenuItem aC130ToolStripMenuItem;
  124. private NumericUpDown Ag;
  125. private NumericUpDown Agmw2;
  126. private ToolStripMenuItem aGRBulletsToolStripMenuItem;
  127. private ToolStripMenuItem aGRRocketsToolStripMenuItem;
  128. private ToolStripMenuItem aimbotToolStripMenuItem;
  129. private ToolStripMenuItem aimbotToolStripMenuItem1;
  130. private ToolStripMenuItem aK12ToolStripMenuItem;
  131. private ToolStripMenuItem akimboToolStripMenuItem;
  132. private NumericUpDown Align;
  133. private NumericUpDown Alignmw2;
  134. private DataGridViewTextBoxColumn Alive;
  135. private ToolStripMenuItem allGunsToolStripMenuItem;
  136. private ToolStripMenuItem allPerksToolStripMenuItem;
  137. private ToolStripMenuItem allPerksToolStripMenuItem1;
  138. private ToolStripMenuItem allPerksToolStripMenuItem2;
  139. private ToolStripMenuItem allPerksToolStripMenuItem3;
  140. private ToolStripMenuItem ameliToolStripMenuItem;
  141. private ToolStripMenuItem ammoCreateToolStripMenuItem;
  142. private NumericUpDown Amw2;
  143. private ToolStripMenuItem aN94ToolStripMenuItem;
  144. private ToolStripMenuItem arcticToolStripMenuItem;
  145. private ToolStripMenuItem aRX160ToolStripMenuItem;
  146. private ToolStripMenuItem assaultToolStripMenuItem;
  147. private ToolStripMenuItem assaultToolStripMenuItem1;
  148. private ToolStripMenuItem attachToolStripMenuItem;
  149. private ToolStripMenuItem attachToolStripMenuItem1;
  150. private NumericUpDown B;
  151. private BackgroundWorker backgroundWorker1;
  152. private BackgroundWorker backgroundWorker2;
  153. private BackgroundWorker backgroundWorker3;
  154. private ToolStripMenuItem backToMapToolStripMenuItem;
  155. private ToolStripMenuItem balisticKnifeToolStripMenuItem;
  156. private ToolStripMenuItem ballDroneToolStripMenuItem;
  157. private ToolStripMenuItem ballistaToolStripMenuItem;
  158. private ToolStripMenuItem battleHindToolStripMenuItem;
  159. private ToolStripMenuItem beastToolStripMenuItem;
  160. private ToolStripMenuItem beastToolStripMenuItem1;
  161. private NumericUpDown Bg;
  162. private NumericUpDown Bgmw2;
  163. private ToolStripMenuItem bigNamesToolStripMenuItem;
  164. private ToolStripMenuItem bigPurpleBallToolStripMenuItem;
  165. private ToolStripMenuItem bigSilverBallToolStripMenuItem;
  166. private ToolStripMenuItem bigToolStripMenuItem;
  167. private ToolStripMenuItem bizonToolStripMenuItem;
  168. private ToolStripMenuItem blackOps2ToolStripMenuItem;
  169. private DataGridView BlackOpsIIClientList;
  170. private DataGridView BlackOpsIIZombiesClientList;
  171. private ToolStripMenuItem blackScreenToolStripMenuItem;
  172. private ToolStripMenuItem blackToolStripMenuItem;
  173. private ColorCombControl BlenderGlow;
  174. private ColorCombControl BlenderGlowmw2;
  175. private ColorCombControl BlenderText;
  176. private ColorCombControl BlenderTextmw2;
  177. private ToolStripMenuItem blueTigerToolStripMenuItem;
  178. private ToolStripMenuItem blurToolStripMenuItem;
  179. private NumericUpDown Bmw2;
  180. private ContextMenuStrip Bo2ClientsGrid;
  181. private static PS3API BO2DEX = new PS3API(SelectAPI.TargetManager);
  182. private static PS3API BO2PS3 = new PS3API(SelectAPI.TargetManager);
  183. private ContextMenuStrip Bo2ZombiesClientGrid;
  184. private ToolStripMenuItem bombBeltToolStripMenuItem;
  185. private ToolStripMenuItem bombToolStripMenuItem;
  186. private ToolStripMenuItem bombToolStripMenuItem1;
  187. private ToolStripMenuItem bombToolStripMenuItem2;
  188. public static bool bool_0 = false;
  189.  
  190. public Form1()
  191. {
  192. this.InitializeComponent();
  193. this.HideTabPage(this.tabPage2);
  194. this.Text = "CoD Public Cheater Version " + this.ToolUpdate;
  195. }
  196.  
  197. private void aAS72XToolStripMenuItem_Click(object sender, EventArgs e)
  198. {
  199. this.SetModel(this.ClientInt, "vehicle_aas_72x_killstreak");
  200. this.iPrintln(this.ClientInt, "^2Model Changed To: ^3AAS 72X!");
  201. }
  202.  
  203. private void aC130ToolStripMenuItem_Click(object sender, EventArgs e)
  204. {
  205. this.SetModel(this.ClientInt, "vehicle_ac130_low_mp");
  206. this.iPrintln(this.ClientInt, "^2Model Changed To: ^3AC-130!");
  207. }
  208.  
  209. private void aGRBulletsToolStripMenuItem_Click(object sender, EventArgs e)
  210. {
  211. BlackOps2Library.Multiplayer.SetBullet.BulletType(this.BlackOpsIIClientList.CurrentRow.Index, "AGR Rockets");
  212. this.iPrintlnBo2(this.ClientInt, "^2Bullet Set To: ^1AGR Bullets!");
  213. }
  214.  
  215. private void aGRRocketsToolStripMenuItem_Click(object sender, EventArgs e)
  216. {
  217. BlackOps2Library.Multiplayer.SetBullet.BulletType(this.BlackOpsIIClientList.CurrentRow.Index, "AGR Gun");
  218. this.iPrintlnBo2(this.ClientInt, "^2Bullet Set To: ^1AGR Rockets!");
  219. }
  220.  
  221. private void aimbotToolStripMenuItem_Click(object sender, EventArgs e)
  222. {
  223. if (this.ButtonPressed(this.ClientInt, Buttonz.Square))
  224. {
  225. this.JetPack(this.ClientInt);
  226. }
  227. this.iPrintln(this.ClientInt, "^1JetPack On! ^2Press Square To Start Using It...");
  228. }
  229.  
  230. private void aimtroll(uint ClientIndex)
  231. {
  232. byte[] buffer = new byte[2];
  233. this.PS3.SetMemory(0x177eed0 + (ClientIndex * 0x5808), buffer);
  234. byte[] buffer2 = new byte[] { 0xff };
  235. this.PS3.SetMemory(0x177eecc + (ClientIndex * 0x5808), buffer2);
  236. }
  237.  
  238. private void aK12ToolStripMenuItem_Click(object sender, EventArgs e)
  239. {
  240. this.GiveWeapon(this.ClientInt, 0x26, 0x3e7, 0);
  241. this.iPrintln(this.ClientInt, "^2AK-12 ^1Given!");
  242. }
  243.  
  244. private void akimboToolStripMenuItem_Click(object sender, EventArgs e)
  245. {
  246. GhostsLibrary.Multiplayer.Clients.Reset.Akimbo.Primary(this.ClientInt);
  247. GhostsLibrary.Multiplayer.Clients.Reset.Akimbo.Secondary(this.ClientInt);
  248. }
  249.  
  250. private void alloff(uint ClientIndex)
  251. {
  252. byte[] buffer = new byte[1];
  253. this.PS3.SetMemory(0x177ea2b + (ClientIndex * 0x5808), buffer);
  254. }
  255.  
  256. private void allPerksToolStripMenuItem_Click(object sender, EventArgs e)
  257. {
  258. }
  259.  
  260. private void allPerksToolStripMenuItem1_Click(object sender, EventArgs e)
  261. {
  262. GhostsLibrary.Multiplayer.Clients.Reset.RabbitMod(this.ClientInt);
  263. }
  264.  
  265. private void allPerksToolStripMenuItem2_Click(object sender, EventArgs e)
  266. {
  267. }
  268.  
  269. private void ameliToolStripMenuItem_Click(object sender, EventArgs e)
  270. {
  271. this.GiveWeapon(this.ClientInt, 0x27, 0x3e7, 0);
  272. this.iPrintln(this.ClientInt, "^2Ameli ^1Given!");
  273. }
  274.  
  275. private void ammoCreateToolStripMenuItem_Click(object sender, EventArgs e)
  276. {
  277. this.GiveWeapon(this.ClientInt, 0x19, 0x3e7, 0);
  278. this.iPrintln(this.ClientInt, "^2Ammo Create ^1Given!");
  279. }
  280.  
  281. private void aN94ToolStripMenuItem_Click(object sender, EventArgs e)
  282. {
  283. BlackOps2Library.Multiplayer.GiveWeaponAN94(this.BlackOpsIIClientList.CurrentRow.Index);
  284. }
  285.  
  286. private void AntiQuitBo2(int clientNumber, string input)
  287. {
  288. this.SV_GameSendServerCommandBO2(clientNumber, "@ " + input, 0);
  289. }
  290.  
  291. private void aRX160ToolStripMenuItem_Click(object sender, EventArgs e)
  292. {
  293. this.GiveWeapon(this.ClientInt, 40, 0x3e7, 0);
  294. this.iPrintln(this.ClientInt, "^2ARX-160 ^1Given!");
  295. }
  296.  
  297. private void attachToolStripMenuItem_Click(object sender, EventArgs e)
  298. {
  299. this.PS3.ChangeAPI(SelectAPI.TargetManager);
  300. try
  301. {
  302. if (this.PS3.AttachProcess())
  303. {
  304. MessageBox.Show("Current game is attached successfully.", "Success.", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  305. }
  306. }
  307. catch
  308. {
  309. MessageBox.Show("No game process found!", "Error.", MessageBoxButtons.OK, MessageBoxIcon.Hand);
  310. }
  311. }
  312.  
  313. private void attachToolStripMenuItem1_Click(object sender, EventArgs e)
  314. {
  315. this.PS3.ChangeAPI(SelectAPI.ControlConsole);
  316. try
  317. {
  318. if (this.PS3.AttachProcess())
  319. {
  320. MessageBox.Show("Current game is attached successfully.", "Success.", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  321. }
  322. }
  323. catch
  324. {
  325. MessageBox.Show("No game process found!", "Error.", MessageBoxButtons.OK, MessageBoxIcon.Hand);
  326. }
  327. }
  328.  
  329. private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
  330. {
  331. this.PS3.ConnectTarget(0);
  332. this.PS3.AttachProcess();
  333. this.WritePPC();
  334. while (true)
  335. {
  336. for (int i = 0; i < this.GetNumPlayers(); i++)
  337. {
  338. if (this.ButtonPressed(this.ClientInt, Buttonz.DpadDown))
  339. {
  340. }
  341. if (this.ButtonPressed(this.ClientInt, Buttonz.Square))
  342. {
  343. this.JetPack(i);
  344. }
  345. }
  346. }
  347. }
  348.  
  349. private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
  350. {
  351. this.PS3.ConnectTarget(0);
  352. this.PS3.AttachProcess();
  353. this.WritePPC();
  354. while (true)
  355. {
  356. for (int i = 0; i < this.GetNumPlayers(); i++)
  357. {
  358. this.MonitorDeath(i);
  359. }
  360. }
  361. }
  362.  
  363. private void backgroundWorker3_DoWork(object sender, DoWorkEventArgs e)
  364. {
  365. this.PS3.ConnectTarget(0);
  366. this.PS3.AttachProcess();
  367. this.WritePPC();
  368. while (true)
  369. {
  370. for (int i = 0; i < this.GetNumPlayers(); i++)
  371. {
  372. if (this.ButtonPressed(0, Buttonz.DpadLeft))
  373. {
  374. string str = this.RunKeyBoard(0, "Cbuf_AddText", "", 60);
  375. this.Cbuf_AddText(0, str ?? "");
  376. }
  377. if (this.ButtonPressed(0, Buttonz.DpadDown))
  378. {
  379. if (!this.bool_4)
  380. {
  381. this.bool_4 = true;
  382. GhostsLibrary.Multiplayer.NoHost.Give.OrangeBoxes(0);
  383. }
  384. else if (this.bool_4)
  385. {
  386. this.bool_4 = false;
  387. GhostsLibrary.Multiplayer.NoHost.Reset.OrangeBoxes(0);
  388. }
  389. }
  390. if (this.ButtonPressed(0, Buttonz.DpadUp))
  391. {
  392. if (!this.bool_4)
  393. {
  394. this.bool_4 = true;
  395. GhostsLibrary.Multiplayer.NoHost.Give.AdvancedUAV(0);
  396. }
  397. else if (this.bool_4)
  398. {
  399. this.bool_4 = false;
  400. GhostsLibrary.Multiplayer.NoHost.Reset.AdvancedUAV(0);
  401. }
  402. }
  403. if (this.ButtonPressed(0, Buttonz.Circle + Buttonz.DpadLeft))
  404. {
  405. if (!this.bool_9)
  406. {
  407. this.bool_9 = true;
  408. GhostsLibrary.Multiplayer.NoHost.Give.ChromePlayers(0);
  409. }
  410. else if (this.bool_9)
  411. {
  412. this.bool_9 = false;
  413. GhostsLibrary.Multiplayer.NoHost.Reset.ChromePlayers(0);
  414. }
  415. }
  416. if (this.ButtonPressed(0, Buttonz.Circle + Buttonz.DpadDown))
  417. {
  418. if (!this.bool_12)
  419. {
  420. this.bool_12 = true;
  421. GhostsLibrary.Multiplayer.NoHost.Give.Laser(0);
  422. }
  423. else if (this.bool_12)
  424. {
  425. this.bool_12 = false;
  426. GhostsLibrary.Multiplayer.NoHost.Reset.Laser(0);
  427. }
  428. }
  429. if (this.ButtonPressed(0, Buttonz.Circle + Buttonz.DpadUp))
  430. {
  431. if (!this.bool_16)
  432. {
  433. this.bool_16 = true;
  434. GhostsLibrary.Multiplayer.NoHost.Give.NoRecoil(0);
  435. }
  436. else if (this.bool_16)
  437. {
  438. this.bool_16 = false;
  439. GhostsLibrary.Multiplayer.NoHost.Reset.NoRecoil(0);
  440. }
  441. }
  442. }
  443. }
  444. }
Add Comment
Please, Sign In to add comment