Found 2,086 repositories(showing 30)
vasanthk
What happens behind the scenes when we type www.google.com in a browser?
googlecreativelab
A collection of experiments for exploring how music works, all built with the Web Audio API.
vjeux
Pure re-encoding of an mp4-h264 video file with the web APIs as well as in-depth description of how it works.
Welcome this comprehensive course on Ethical Hacking! This course assumes you have NO prior knowledge in hacking and by the end of it you'll be able to hack systems like black-hat hackers and secure them like security experts! This course is highly practical but it won't neglect the theory, so we'll start with ethical hacking basics and the different fields in penetration testing, installing the needed software (works on Windows, Linux and Mac OS X) and then we'll dive and start hacking systems straight away. From here onwards you'll learn everything by example, by analysing and exploiting computer systems such as networks, servers, clients, websites .....etc, so we'll never have any boring dry theoretical lectures. The course is divided into a number of sections, each section covers a penetration testing / hacking field, in each of these sections you'll first learn how the target system works, the weaknesses of this system, and how to practically exploit theses weaknesses and hack into it, not only that but you'll also learn how to secure this system from the discussed attacks. This course will take you from a beginner to a more advanced level by the time you finish, you will have knowledge about most penetration testing fields. The course is divided into four main sections: 1. Network Hacking - This section will teach you how to test the security of networks, both wired and wireless. First, you will learn some basic network terminology, how networks work, and how devices communicate with each other. Then it will branch into three sub sections: Pre-connection attacks: in this subsection you'll learn what can you do before even connecting to a network, and even before having internet access; you'll start by learning how to gather information about the networks around you, discover the devices connected to them, and how to control connections around you (ie: deny/allow devices from connecting to networks) even without knowing the password of the target network. Gaining Access: Now that you gathered information about the networks around you, in this subsection you will learn how to crack the key and get the password to your target network weather it uses WEP, WPA or even WPA2. Post Connection attacks: Now that you have the key, you can connect to the target network, in this subsection you will learn a number of powerful techniques that allow you to gather comprehensive information about the connected devices, see anything they do on the internet (such as login information, passwords, visited urls, images, videos ....etc), redirect requests, inject evil code in loaded pages and much more! All the attacks here work against both wireless and wired networks. You will also learn how to create a fake WiFi network, attract users to connect to it and use all of the above techniques against the connected clients. 2. Gaining Access - In this section you will learn two main approaches to gain full control or hack computer systems: Server Side Attacks: In this subsection you will learn how to gain full access to computer systems without the need for user interaction. You will learn how to gather useful information about a target computer system such as its operating system, open ports, installed services, then you'll learn how to use this information to discover weaknesses and vulnerabilitiesand exploit them to gain full control over the target. Finally you will learn how to generate different types of reports for your discoveries. Client Side Attacks - If the target system does not contain any weaknesses then the only way to gain access to it is by interacting with the users, in this subsection you'll learn how to get the target user to install a backdoor on their system without even realising, this is done by hijacking updatesor backdoornig downloadeds on the fly. Not only that but you'll also learn how to create trojans by backdooring normal files (such as an image or a pdf) and use social engineering to deliver this trojan to the target, to do this you'll learn how to spoof emails so they appear as if they're sent from the target's friend, boss or any email account they're likely to interact with. 3. Post Exploitation - In this section you will learn how to interact with the systems you compromised so far. You’ll learn how to access the file system (read/write/upload/execute), maintain your access, spy on the target and even use the target computer as a pivot to hack other computer systems. 4. Website / Web Application Hacking - In this section you will learn how websites work, how to gather information about a target website (such as website owner, server location, used technologies ....etc) and how to discover and exploit the following dangerous vulnerabilities to hack into websites:
rprokap
CREDITS SEQUENCE NEWSPAPER HEADLINE MONTAGE: HEADLINES flash before us, displaying their accompanying photographs. "UBERMAN - METRO CITY'S HERO AFTER DEFEATING MASTER MIND! PHOTO: A chiseled, statuesque man wearing the COOLEST SUPER HERO SUIT IMAGINABLE, COMPLETE WITH FLOWING CAPE, shines a confident smile at the lens. This is UBERMAN, champion of METRO CITY. "UBERMAN DEFEATS MASTER MIND'S GIANT ROBOT!" PHOTO: Wide-shot of Uberman in mid-flight lifting the GIANT ROBOT in the sky above the city buildings. "MASTER MIND ALL WET AFTER UBERMAN FOILS AQUARIUM HEIST!" PHOTO: Uberman stands knee-deep in water. He has his enemy by the collar. The villain blocks his face from the shot with a METALLIC GAUNTLET. The images start to flash by even quicker, each showing the MYSTERIOUS VILLAIN in various stages of humiliation. In each photograph he successfully blocks his face with his armored glove. We ZOOM IN to the last headline. "MASTER MIND BEHIND BARS ONCE AGAIN - THANKS TO UBERMAN!" PHOTO: Uberman stands in a gallant pose with his fists on his hips, obviously trying to accentuate the "U" insignia on his chest. END OF CREDITS SEQUENCE EXT. BUILDING - DAY We DISSOLVE from the photograph to Uberman standing in the exact same position. WE PULL BACK showing him atop a BUILDING overlooking the city below. A perfect view for our guardian hero. He watches the thriving metropolis, bristling with life as people happily go about their day. Yet, we can't help but detect a hint of sadness in Uberman's expression. 2. UBERMAN You look so peaceful from up here. His serenity is suddenly interrupted by a loud BEEPING SOUND coming from his wrist. He looks down at a BRACELET (a manly one) on his right arm. It's a silver band with a FLASHING red letter "U". UBERMAN (CONT'D) Looks like Roxanne's in trouble again. Uberman leaps off the building and into the air. His cape gracefully flows in the breeze behind him as he shoots off into the distance like a speeding bullet. EXT. OBSERVATORY HIDEOUT - ESTABLISHING SHOT Grime and moss decorate the outside of this long abandoned building overlooking the COAST. Once a place of knowledge and wonder - now home to a great evil. INT. OBSERVATORY HIDEOUT - DAY The inside is in complete contrast to the exterior. The huge hall with a GIANT TELESCOPE teems with advanced ELECTRONIC EQUIPMENT. Computers, monitors and machines which do not have an obvious function FLASH and HUM. A STEEL DOOR slides open, revealing the subject of our story MASTER MIND - a villainous sight to behold. His FACE IS INEXPLICABLY LIGHT BLUE, topped by an OVERSIZED, MUSHROOM- SHAPED HEAD with a CIRCULAR PATCH OF WHITE HAIR ON TOP. He's dressed in the kind of costume only a super villain could pull off: a PURPLE JUMPSUIT AND BLACK BOOT ENSEMBLE WITH A GIANT GREEN "M" ON THE CHEST. His right hand, hanging at his side, is a METAL GAUNTLET WITH THREE SHORT SPIKES PROTRUDING BETWEEN HIS KNUCKLES. Master Mind begins to survey the room with his TWO PERMANENTLY ARCHED EYEBROWS. A man dressed as ALBERT EINSTEIN is busy ranting to two other men. One, a hulking brute, is dressed as LEONARDO DA VINCI. The other, a small intellectual-type carrying a clip-board, is dressed as the philosopher PLATO. EINSTEIN I hate the outfits. I mean, I get it: we're all supposed to be "masterminds" - very clever. (MORE) 3. EINSTEIN(cont'd) I just feel stupid. I mean, what the hell did Einstein really do anyway? PLATO Theory of relativity. Einstein starts feverishly scratching his side. EINSTEIN Well, you'd think he'd invent a wool sweater that didn't itch so much. Da Vinci and Plato's eyes suddenly grow with concern as they see Master Mind walk up behind Einstein. Einstein notices his colleague's staring over his right shoulder and turns around. He turns around and Master Mind SEIZES HIM BY HIS THROAT with his metal gauntlet. MASTER MIND The real Einstein once said, "God does not play dice with the world." He was right, because the world is MY dice. Is that understood? DA VINCI & PLATO Sir! Yes, sir! EINSTEIN (gasping for air) Yes, sir. Master Mind undoes his grip on Einstein's throat. MASTER MIND Alright, then - clean slate. Do we have the girl? DA VINCI Yes, sir. She fell into our trap just like you knew she would. MASTER MIND Reporters are a curious lot, and easily manipulated. He quickly checks his physique in a GIANT MIRROR, adjusts his posture and sucks in his gut. 4. MASTER MIND Alright, let's not keep the lady waiting. MOMENTS LATER Da Vinci escorts a BLINDFOLDED and bound woman, ROXANNE RITCHI, to the back of the room where Plato and Einstein are standing guard over a large BLACK SWIVEL-CHAIR facing away from us. She pulls free of Da Vinci's grasp and waits for him to undo the blindfold. Her face uncovered, we finally see Roxanne's striking features - all of which seem overshadowed by piercing eyes that seem more put off by the situation than afraid of it. MASTER MIND (O.S.) Miss Ritchi, we meet again. The chair turns menacingly slow, finally revealing Master Mind. ROXANNE You didn't need to turn around like that. I can recognize the stench of failure. Master Mind unleashes a wicked laugh. MASTER MIND I trust you gentlemen know the very sassy Roxanne Ritchi, highly regarded investigative journalist who some say has a more than friendly relationship with our super powered foe Uberman. And Miss Ritchi, I trust you've already met my new crew: The Mad Geniuses! Roxanne gives Einstein a once over. ROXANNE Looks like a real group of winners. At the risk of sounding cliche', you'll never get away with this. MASTER MIND In a way, I already have. Roxanne unleashes an exhausted SIGH. 5. ROXANNE We go through this every time. You kidnap me to get to Uberman, he immediately finds your hideout, escapes whatever lame trap you've come up with, and takes you and your cronies to jail. I propose we just save everybody some heartache this time by YOU letting me go, and ME forgetting this whole thing ever happened? MASTER MIND What about my revenge? ROXANNE We can say it was wasting everyone's time. MASTER MIND You have a wicked tongue. I hope you rid yourself of that when you're my queen. Roxanne unleashes a snort-filled laugh. ROXANNE I'm sorry. What makes you think I would want to be your queen? MASTER MIND Power corrupts absolutely, Miss Ritchi. And when I have ultimate power over this city, I have absolutely every intention of corrupting you with it. PLATO Sir! Master Mind turns to Plato who's now standing at a computer terminal. MASTER MIND (annoyed) What is it!? EXT. OBSERVATORY HIDEOUT - DAY Uberman flies toward the Observatory like a rocket. 6. INT. OBSERVATORY HIDEOUT - DAY Uberman crashes through the wall to the room we were just in. He looks around, but there's suddenly NOT A SOUL IN SIGHT. CUT TO: EXT. MASTER MIND'S HYDROFOIL - DAY The boat is shooting through the ocean, away from the observatory. INT. HYDROFOIL CONTROL ROOM - DAY Machines, cables and terminals criss-cross the craft's main bridge. Through the enormous surrounding windows we can see the observatory shrinking in the distance. Master Mind watches Uberman on a small TV monitor as the hero intently searches his hideout. UBERMAN (on monitor) Master Mind! INT. OBSERVATORY HIDEOUT - DAY Uberman throws up his arms in frustration when suddenly - MASTER MIND (O.S.) Over here, old friend. He turns to see a FAMILIAR BLUE FACE OF EVIL ON A GIANT SCREEN. UBERMAN What's the matter, miss your old jail cell? Uberman starts walking toward the monitor. MASTER MIND (ON MONITOR) Actually, I wanted to share the experience with my oldest friend. A MECHANIZED CAGE shoots out of the floor, suddenly trapping Metro City's protector. Totally unfazed, our hero stares on. 7. UBERMAN You can't possibly believe this will work. Master Mind pulls out a SMALL BLACK BOX with a SINGLE RED BUTTON on it. MASTER MIND (ON MONITOR) Oh, can't I? I have attained control of the Earth's most abundant energy source. I doubt even you are strong enough to withstand the FULL CONCENTRATED POWER OF THE SUN!!! He presses the button. EXT. OUTER SPACE A sinister-looking SATELLITE orbits Earth's atmosphere. Its bay doors suddenly open, deploying two huge SOLAR PANELS. The panels shift, angling themselves in the direction of the sun. They immediately start GLOWING as they absorb the burning star's power. The front of the satellite begins to make a loud HUMMING SOUND as it prepares to unleash its unholy power. INT. HYDROFOIL CONTROL ROOM - DAY From the giant window we can see the boat is a good mile from the observatory. PLATO We're now at minimum safe distance, master. Master Mind turns from the CAMERA he was broadcasting on and puts down the control box. MASTER MIND Excellent. Stop here, I like this view. PLATO Twenty seconds until impact. Master Mind turns to Roxanne who is being held by Da Vinci and Einstein. She almost appears a little bored. Disappointed by her lack of horror, he walks over to the monitor now showing Uberman trapped in the cage. 8. MASTER MIND Any last words? Uberman looks up at the screen with a cocky smile. UBERMAN (ON MONITOR) Yes: there's no caging the power of justice. PLATO Ten seconds to impact. On the screen we see Uberman take two of the cage's bars in his hands. He yanks...NOTHING. PLATO (CONT'D) Nine... Master Mind stares at the monitor, slightly confused. PLATO (CONT'D) Eight... Uberman yanks on the bars again, this time using his foot as leverage. MASTER MIND (genuinely concerned) What's going on? UBERMAN (straining) Hold...on...a second. Master Mind looks back at Plato and Einstein. They're equally befuddled at the hero's sudden weakness. PLATO Seven... Uberman loses his grip and FALLS BACKWARD ON HIS ASS. UBERMAN SON OF A BITCH!! Master Mind and the minions all cringe in unison. Da Vinci turns to Roxanne not believing his ears. DA VINCI What did he just say? 9. PLATO Six......Five... Master Mind begins to laugh. MASTER MIND What kind of trick is this? Uberman looks up at the camera with a very grave expression. UBERMAN Like you don't know. These bars are made of copper, aren't they? PLATO Four... MASTER MIND Yeah, so? Uberman tries to shield his grief with his hand. UBERMAN You figured out my weakness, damn you. I CAN'T BEND COPPER! PLATO Three... MASTER MIND Your weakness is copper? PLATO Two...one. Everyone turns to the window. EXT. OUTER SPACE The satellite fires a giant BEAM OF LIGHT toward the earth. EXT. OBSERVATORY HIDEOUT - DAY The beam hits the observatory. The building instantly EXPLODES in a white nova blast of fire. INT. HYDROFOIL CONTROL ROOM - DAY The blast is so bright everyone turns away from the window. Then, as suddenly as it began, the awesome light dies out. One by one, the passengers unshield their eyes and look out toward the observatory. 10. All we can see through the haze of destruction is fire and smoke. PLATO I don't think even he could have survived that. Einstein suddenly turns giddy with excitement. EINSTEIN Whoa! Is it me or did you just finally destroy Uberman? MASTER MIND (carefully skeptical) Well...let's not get ahead of ourselves. Da Vinci suddenly sees something outside. DA VINCI Look, there's something in the sky, coming this way. ROXANNE Uberman! Master Mind turns toward the window. An object is in the air, flying directly toward them. As it closes in we can just make out the FAMILIAR OUTLINE OF A CAPPED FIGURE. MASTER MIND I KNEW IT! PREPARE YOURSELVES! HE'S GONNA RAM US!!! Everyone scatters and braces themselves for the impact. Master Mind, seeing all the good places taken, doesn't know what to do with himself. He just covers his giant head with his hands. The figure CRASHES THROUGH THE WINDOW and lands at his feet. He looks down to see a CHARRED BLACK HUMAN SKELETON. Around its neck is the unmistakable black cape of Uberman. MASTER MIND (CONT'D) (horrified) HOLY SHIT! 11. Roxanne breaks out of Da Vinci's hold and runs over to the body. ROXANNE Uberman? She stares down at the still smoking corpse, the tattered black cape with the yellow "U" on it. Roxanne turns to Master Mind, who's still visibly dumbfounded at the grotesque sight before him. ROXANNE (CONT'D) You killed him! Roxanne's eyes roll back. Da Vinci catches her from behind as she FAINTS. Einstein turns to Master Mind, looking at him as if he's just walked on water. EINSTEIN You did it! Now that he's committed the impossible - our villain is at a complete loss. MASTER MIND ...so I did. EINSTEIN I mean, I know you always wanted to. I mean, all the schemes all the plots - I never thought you'd actually be capable of it. Giddy as a school girl, Einstein turns to his fellow henchmen. EINSTEIN This is history. Every villain and lackey in the history of villains and lackeys dream of this moment, but when does it actually EVER happen? A sudden realization comes over his face. EINSTEIN Good lord...You do all realize what we get to do now, don't you? 12. His question is met with acquisitive looks from Master Mind and the others. EINSTEIN We get to go on a crime wave. CRIME WAVE MONTAGE - SET TO "Fun Fun Fun" by The Beach Boys. SPINNING HEADLINE: "UBERMAN'S DEATH IGNITES CITY WIDE CRIME WAVE!" ARMORED TRUCK It's driving along when the men inside suddenly notice something - THEY'RE FLYING HIGH ABOVE THE CITY STREETS. We PULL BACK to see the truck being carried by a giant claw at the bottom of a BRAIN COPTER. Inside the cockpit Master Mind and his henchmen laugh maniacally. SPINNING HEADLINE: "CHAMPION-LESS CITY AT THE MERCY OF HOOLIGANS." METRO CITY BANK Da Vinci and Einstein run out the front of the bank holding BAGS OF MONEY. Two beat officers see them and take chase after them around the corner and into an alley. After a moment the police reemerge from the alley screaming and running for their lives as a GIANT ROBOT CHASES after them. The robot stops, then suddenly it's head opens up like convertible car top with Master Mind and Plato at the driver's wheel. They smile and shake hands at a bad deed well done. SPINNING HEADLINE: "MASTER MIND BLACKMAILS METRO!!!" A VICIOUS TORNADO It's heading for downtown Metro as Master Mind and the lackeys coolly look on. Three large DUMP TRUCKS pull up, filled to the brim with bricks of CASH. 13. The DRIVERS jump out as the lackeys take the driver seats in the three trucks. Master Mind is about to climb into the passenger seat of one when a drivers taps him on the shoulder and motions toward the tornado. MASTER MIND (absentmindedly) Oh, right. Master Mind pulls a television REMOTE from his pocket and aims it at approaching windstorm of death. He presses the button marked "Tornado Off." The tornado shrinks and disappears just before it hits the city. As they drive through the city streets, Master stares out the window with a hint of something in his eyes. Is it melancholy? END OF MONTAGE EXT. KINGPIN BOWLING - DAY It's Metro City's premier bowling alley. On top of the neon lit building is a GIANT 30 FOOT TALL CEMENT BOWLING BALL. INT. KINGPIN BOWLING - DAY HAL STEWART (early 30's) takes careful aim with his BOWLING BALL. HAL It's a sport of honor, focus and grace. Honor the ball, focus on the pins, release the ball not hard and fast, but as if you were releasing a baby dove. He takes a step, pulls back his arm, and releases the ball, following it with his eyes. It's a horrible shot - INSTANT GUTTER BALL. An aged barmaid type with a cigarette hanging from her mouth looks over at him. HAL Okay, do something like that - but center it more. 14. She picks up her custom made FOGHAT BALL and takes aim. ATTRACTIVE BLOND Tell me how my form looks, honey. Hal focuses on the misshapen bumps of her enormous Johnson administration era derriere. HAL Oh, it's lookin' good. It's lookin' REAL good. It doesn't get anymore clear. This man is a pig. VINNIE (O.S.) Hal, I want to see you in my office! Hal turns to see VINNIE, owner of the bowling alley, calling him. VINNIE Now! INT. KINGPIN BOWLING - VINNIE'S OFFICE - MOMENTS LATER Hal sits down, facing Vinnie who's sitting at his desk. VINNIE You're fired. Leave your shirt and locker key. This bit of news hits Hal like a freight train. HAL Fired? Are you going to tell me why? VINNIE Showing up to work late. Showing up to work late drunk. Sexually harassing customers. Stealing from the register. HAL Vinnie, I don't know where you're getting these accusations - Vinnie takes out a video tape from his desk drawer and puts in a VCR. 15. HAL Oh, which one do you supposedly have here? VINNIE This is all of them at once. TELEVISION A WOMAN walks up to a BOWLING EMPLOYEE and hands him a pair of shoes. As the employee turns to the wall of shoes, a very drunk and disheveled Hal comes running in and pushes him aside. HAL I've got this one, Benny. So, Cinderella. Can I help you find your glass slipper? WOMAN Yeah, I'm looking for a seven. He folds his arms on the counter and leans into her with a cat-like grin on his face. HAL (with a leer) Seven - Well, maybe I could interest you in something in an EIGHT. Namely, me. Disgusted, she walks off screen. HAL Lesbo. Suddenly realizing the register's open, he quickly grabs a stack of cash and shoves it in his pocket. BACK TO OFFICE Vinnie turns off the television and waits for Hal to respond. HAL From the angle of the camera, I can see where you might have gotten the wrong idea. Listen, Vinnie, I don't think you've thought this through. If you fire me, who's gonna be captain of the alley's bowling team? 16. VINNIE Um, I don't know. Maybe somebody who can actually bowl. You guys have never won a game. I hired you because you said you were on the pro circuit. HAL No, I said I WILL BE on the pro circuit. VINNIE Please, a loser like you will never amount to anything. This harsh remark seems to leave Hal genuinely stunned. HAL Wow...If that's how you feel...I guess we should then talk about what kind of severance I'm gonna get. EXT. KINGPIN BOWLING - DAY TWO BRUISERS open the door and throw Hal out onto the street. He quickly picks himself up and turns back toward the building. HAL Hey...what about my ball? A bowling ball sails past him, just missing his head. HAL Thank-you! EXT. CHANNEL 7 NEWS BUILDING - DAY The massive building with a giant 7 on the roof stands in the heart of Metro City. INT. CHANNEL 7 NEWS BUILDING - OFFICE - DAY The cubicles and offices are alive with the hustle and bustle of a busy news day. Phones are RINGING, REPORTERS are TALKING, and Editors are SHOUTING. The elevator doors open and out steps Roxanne Ritchi. 17. Everything stops as the entire office suddenly falls SILENT. Somewhat taken aback by the reaction, Roxanne scans the room to see every eye on her. ROXANNE It's...um...It's good to be back. Thanks for everyone's cards and concerns. I really appreciated it - now I'm ready to climb back on the horse. No one is budging - their looks of pity are really starting to make her uncomfortable. The back office door suddenly opens and out comes FRANK BONIN, the gruff, middle-aged Producer of Channel 7 News. Noticing the silence, he looks up and sees the sad expressions on everybody's face. FRANK Someone die or something? He suddenly notices Roxanne - both feet are placed firmly in his mouth. FRANK (cursing himself) Oh, Jesus. ROXANNE It's okay. Frank quickly walks up to Roxanne and takes her gently by the arm. FRANK Come on into my office, sweetie. INT. CHANNEL 7 NEWS BUILDING - FRANK'S OFFICE - CONTINUOUS He sits her down on his leather couch, then quickly turns toward his door. FRANK Can we get this woman some water for God's sake? (to Rebecca) I gave you two months off. What're you doing back? People are gonna think I'm a slave driver. 18. ROXANNE Aren't you? FRANK Yeah, but I don't want people to think it. ROXANNE Frank, listen. I want to go back to work. I NEED to go back to work. FRANK ...You're hysterical, aren't you? Frank sits down on the couch and blankets Roxanne with A WARM EMBRACE. ROXANNE What're you doing? FRANK Keeping you warm before you go into shock. (toward the open door) DO I HAVE SLICE OPEN A CAMEL HUMP TO GET A GLASS OF WATER AROUND HERE? A SECRETARY quickly enters with a bottled water. She sets it on the table in front of them and leaves. Roxanne pulls herself out of Frank's grasp and stands up to face him. ROXANNE It was a traumatic experience. Yes, everyone knows Uberman and me were...close. But what I really need - what would really make me better is getting back to work. There's a sudden awkward silence from Frank. FRANK Well, that's going to be... ROXANNE I thought you'd be happy to have me back. 19. FRANK Oh, we are. Honey, nothing makes us happier than to have our girl back, but... ROXANNE Yes? FRANK Things have sorta...changed. ROXANNE In three weeks? FRANK Listen, I'm not one who likes to open up wounds - especially ones that are just starting to scab, but you were sorta our go to girl for the exclusive on Uberman. And now that he's gone...I moved Brad into your anchor spot. ROXANNE (disgusted) Brad? Brad Helms? The man is an idiot. FRANK It's the suits. They think it's time to switch things up. ROXANNE Oh, because they can't use me to get the big story. FRANK C'mon, Roxie. Using is in the nature of what we do. They used you, you used Uberman. Everybody's happy. ROXANNE (defensive) I didn't use him. FRANK Oh, I didn't mean that. I know you two were in love or something. My bad. ROXANNE We were. 20. FRANK And that's great. ROXANNE Very in love. There's a hind of self-doubt in Roxanne's expression, as if she's failed to convince even herself of this. ROXANNE Okay. So, where are they going to move me if Brad has my spot? FRANK ...Human interest. ROXANNE Bake sales and pet stories. FRANK I told them I wouldn't be surprised if you just upped and quit. You busted your ass for that desk. Roxanne can hardly get it out - she's busy swallowing her pride ROXANNE I'll take it. Frank looks up at her, not believing what he's hearing. FRANK What? EXT. ABANDONED METRO CITY LIBRARY - NIGHT Amongst the jungle of high rises, one small building stands out from the rest - A tiny, forgotten piece of 19th century Gothic architecture. LIGHTENING FLASHES, revealing TWO CONCRETE GARGOYLES holding a cracked plaque, reading: METRO CITY LIBRARY. INT. ABANDONED METRO CITY LIBRARY - NIGHT A mixture of old and new. Dusty Victorian furniture and dilapidated bookshelves sit side by side with pristinely futuristic machinery. The building has been converted into Master Mind's new SECRET LAIR. 21. In the center of the main room is a three storey tall GLOWING BLUE ORB. At the base of it is a sign that reads "Reactor - Don't Touch." We PAN OVER to the READING ROOM where Master Mind is sitting on a couch watching TELEVISION. REPORTER ON TELEVISION (O.S.) It's been nearly six weeks, and still no word on the whereabouts of billionaire playboy, and philanthropist, Wayne Scott. Tune in at 11:00 as we look into what has become Metro City's biggest mystery. TELEVISION NARRATOR (O.S.) We now return to "The Hero of our Hearts: The Uberman story." Einstein and Plato come into the room holding a BAG OF LOOT. EINSTEIN Just robbed the diamond exchange. MASTER MIND (feigning pleasure) Great, great. Put it on the pile. Einstein tosses it on a LARGE PILE of purloined valuables in the corner of the room. EINSTEIN Anything else today? MASTER MIND No. Master Mind turns his attention back to the screen. Plato sees that Master Mind is in a funk and tries to snap him out of it. PLATO (cheerfully) Sir, the new reactor is installed. Plato nods to the giant orb. PLATO Do you want to throw the switch? I know how you love to start reactors. 22. MASTER MIND Maybe later. Einstein gives Master Mind a funny look then exchanges glances with Plato before leaving the two of them alone. Without turning away from the TV, Master Mind addresses Plato. MASTER MIND (CONT'D) What is it, Plato? PLATO (nervously) Sir, I can't help but notice that you've been...a little down lately. MASTER MIND When I want your opinion I'll beat it out of you. PLATO Yes, sir, I know, but please forgive my impertinence. It's just that you seem to have lost your lust for our profession. You've stopped going on jobs and spend most of your time watching Uberman specials. Master Mind relaxes slightly and turns to face the window in a classically contemplative pose. After an overdramatic beat... MASTER MIND I have defeated my greatest enemy. I have free reign over Metro City. I have more wealth than a thousand Sultans. I've achieved all I have worked for...so why am I so unhappy? He walks over to a PAINTED PORTRAIT that looks almost exactly like him, except slightly older, maybe meaner - MASTER MIND'S FATHER. MASTER MIND I mean, my father, god rest his evil and tormented soul, raised me straight from the test tube to be a symbol of evil. (MORE) 23. MASTER MIND(cont'd) And, I have accomplished something he had only dreamed about - the destruction of Metro City's champion. I tell you, I've always lived with this unquenchable thirst. I thought it was to make him proud or to get absolute power. But now that I've pretty much accomplished both, I am at a loss. PLATO ...I sort of have a theory about all that. MASTER MIND (snippy) Oh, really? PLATO Well, for one thing, maybe Uberman was more important to you than you thought. MASTER MIND He was a worthy rival. Sometimes I wonder, did he consider me his evil equal or was I just an annoying, little gnat to him? ...What's the second part? PLATO I think you sort of have a thing for Roxanne Ritchi. Master Mind quickly takes his lackey by the throat. MASTER MIND YOU WORM! HOW DARE YOU! WHERE WOULD YOU GET SUCH A NOTION? PLATO Sir, your plans always involve Ms. Ritchi either being kidnapped or placed in danger. If that's not love, I don't know what is. It's the grown up equivalent of dipping her pigtails in the ink well. Don't you see? She's the one treasure that's always escaped you. From Master Mind's expression, we see Plato's words beginning to ring true. 24. INT. RESTURAUNT - DAY Roxanne is having lunch with several girlfriends sitting around her, gabbing. FRIEND #1 I can't believe you came back so soon. FRIEND #2 Are you sure it's not TOO SOON, honey? ROXANNE I just wanted to get back to work. FRIEND #3 What we need to do is get you back on the saddle...the love saddle. Friend 1 and 2 give 3 disapproving looks. FRIEND #3 It's been three weeks. FRIEND #2 She just lost the love of her life, Grace. A WAITER comes by with a tray of CAESAR SALADS and begins setting them out for the ladies. ROXANNE I keep trying to tell people it wasn't really like that. Uberman and I - We were kinda having problems. We broke up. The waiter ALMOST DROPS HIS TRAY AT THIS. The women are too shocked by Roxanne's revelation to notice. FRIEND #1 You broke up with Uberman! FRIEND #3 You must have REALLY, REALLY high standards. I mean, you were dating a god. I mean, what's it take? ROXANNE Maybe someone who's a little more aware of his faults. Someone a little more sensitive. 25. FRIEND #3 Right. Someone who listens, sexy but attainable with cute little cheeks like a hamster and heartbreak in his eyes. She turns to Friend one and two to explain. FRIEND #3 She wants John Cusack. FRIEND #2 The actor? FRIEND #3 No, the famous pediatrist - Yes, the actor. Ever since we were teenagers, Roxanne's totally had the hots for him. ROXANNE Well, until he miraculously comes walking into my life, I'm just going to take a little reflection time for myself. The waiter gets a confused look on his face then slips away as Roxanne and her friends continue to chat away. EXT. RESTURAUNT - DAY The waiter tosses his apron in a trash can, then rolls up his sleeve and presses A STRANGE LOOKING DEVICE STRAPPED TO HIS WRIST. His image gets staticy, like a TV station going out, then disappears - revealing the man's true form underneath: MASTER MIND! MASTER MIND Who the hell is John Cusack? EXT. CITY STREET - DAY A YOUNG MOTHER pushes her baby stroller past a building construction site. ACROSS THE STREET A local POLITICIAN addresses a group of REPORTERS on the sidewalk, including Roxanne. 26. POLITICIAN The Fifth Avenue Renovation Project, which I championed, will breath new life into the downtown area. New life means new jobs and new revenue. ROXANNE Councilman, is it true that your brother-in-law's construction company won the contract for this project? POLITICIAN Well...er...yes, but...look I'm not here to answer a lot of crazy questions... YOUNG MOTHER The young mother stops halfway down the block, reaches into the stroller and tries to comfort her now crying baby. Above her, a CRANE is maneuvering a pile of STEEL GIRDERS to an upper floor. Hal comes around the corner and heads in her direction. CRANE The crane GRINDS TO A HALT. The OPERATOR has a confused look on his face as he moves levers back and forth in an effort to fix the problem. Hal stops a few feet from the woman and stoops down to tie his shoe. CRANE The operator's hand slips off the lever, hitting a RED BUTTON. To his horror the crane DROPS ITS LOAD OF STEEL. HAL AND THE WOMAN The woman looks up to see the girders seconds from crushing her and her baby. She screams. Hal looks up and sees it as well. He starts to run out of the way and crashes into the woman and stroller. ACROSS THE STREET 27. The reporters turns their cameras just in time to catch on film what appears to be Hal pushing the woman to safety just as the GIRDERS CRASH TO THE GROUND. HAL AND MOTHER Tears of joy in her eyes, the woman picks up her baby and kisses it. Hal struggles to catch his breath as the mother turns to him. YOUNG MOTHER Thank you! Thank you for saving me and my baby! She hugs him with her free arm, weeping with joy. HAL (not knowing what she's talking about) Huh? He's a little uncomfortable with the woman's public display of affection and the small child in-between their embrace. HAL (CONT'D) There, there. Hal slowly eases out of the woman's grip. HAL (CONT'D) Okay, we better...well, I hear these little guys smother easy. The reporters rush over and surround Hal and the mother. ROXANNE What's it feel like to be a hero? Hal looks up at Roxanne. Instantly, he's captivated by her beauty. HAL Well...I'm just a man doing what men do. You're Roxanne Ritchi, aren't you? They're suddenly interrupted when another reporter pushes his way in between them. REPORTER Were you scared? 28. HAL Scared? Who had time? The reporters eat this up. INT. ABANDONED METRO CITY LIBRARY - NIGHT TELEVISION John Cusack stands in the rain looking up at a window of a two story house. He holds up a BOOMBOX and "In Your Eyes" by Peter Gabriel begins to play. From the couch, Master Mind and his minions watch. MASTER MIND John Cusack, huh? So all I have to do is have a cute puppy dog stare, be willing to make a fool of myself and - Oh, REMOVE BOTH MY BALLS. He turns to see Da Vinci watching the movie and wiping a tear from his cheek. MASTER MIND Please, get a hold of yourself. INT. BOOKSTORE - NIGHT Roxanne is carrying a large paper coffee cup in her hands as she peruses the isles. She sets it down on a shelf to pull a book out and ends up KNOCKING THE DRINK OVER. ROXANNE Shit. She goes to pick it up when someone bends down and picks it up for her. Looking up to thank him, Roxanne is suddenly stunned speechless - It's popular and critically acclaimed actor JOHN CUSACK, or rather Master Mind disguised as him. "JOHN CUSACK" Oh the humanity - it was a Venti. ROXANNE (stunned) You're...you're. "JOHN CUSACK" Yes, it's me. John Cusack...the actor. 29. He notices the book she's reading. "JOHN CUSACK" Hey, is that Shelly? Wait, I think remember something from that one - Let's see: "My head is screaming `I want you and need you' - my heart it keeps reaching to see you and feel you - yet in the end, I'm alone once again." Wow, I scare even myself. I'm sorry. I'm just really into poetry. Probably because I'm so sensitive and always going to great lengths to express myself. But enough about me. Can I fill you up? ROXANNE (captivated) ...Yes. (catching herself) I mean, excuse me? "JOHN CUSACK" Can I fill you up? Your coffee. ROXANNE Right. INT. BOOKSTORE CAFE' - LATER Roxanne talks as John Cusack listens to her every word intently. ROXANNE I did have a boyfriend - until fairly recently. She suddenly begins to feel the stares around her as passers- by being to notice who she's with. ROXANNE I'm sorry - this is so surreal! "JOHN CUSACK" Yeah, they charge way too much at these places - Now back to your boyfriend. I'm interested and compassionate. I want to know about you. 30. ROXANNE Things were complicated. He was a man married to his work. There was...there was a lot of competition in his line of business. I'm sure you know what that's like. "JOHN CUSACK" Sure. In my business, one thing I have is RIVALS. For example, mine is...uh...Lou Ferr...igno. ROXANNE ...The body-builder who used to play The Hulk on TV? "JOHN CUSACK" Did he? Well, we're always up for the same roles. Did your boyfriend have someone like that? A particular rival that was always getting his goat - so to speak? ROXANNE Well...one rival in particular seemed to get more of his attention than I ever did. But enough about my problems. "JOHN CUSACK" NO, TELL ME MORE!!! Suddenly realizing his outburst, he begins COUGHING to mask it. "JOHN CUSACK" (CONT'D) I'm sorry. I got a whooping cough. Had it ever since Serendipity. I WONDER WHERE OUR REFILLS ARE!!! (fakes cough) See, there it goes again. Please, go on. ROXANNE Right, well, he seemed to need him more than he needed me. "JOHN CUSACK" How do you mean? 31. ROXANNE It was conflict he thrived on. He always said he wouldn't know what to do with himself if Master - I mean, this guy were gone. It was like he needed it, like oxygen. The answer to his mental funk hits him like a bolt of lightening. He turns away from her as if for private time. "JOHN CUSACK" (almost to himself) I think I finally understand...The only logical answer is to recreate that rivalry - or if that's impossible, create one of equal structure. That's it! ROXANNE What? John Cusack snaps out of his dream-like haze realizing she's heard every word. "JOHN CUSACK" Oh, sorry, sorry. Just rehearsing for a part...where I play a man who talks to himself at inappropriate times. In a sudden rush, he rises out of his chair. "JOHN CUSACK" I have to go right now, but I'd really like to see you again - if that's alright. Roxanne looks up at him - She can't help but laugh at the craziness of the situation. ROXANNE I'd love that. INT. ABANDONED METRO CITY LIBRARY - DAY Master storms in the office to find Plato and Einstein playing darts with the original Mona Lisa. EINSTEIN Got her nose! MASTER MIND I've got it! 32. Everyone stops what they're doing upon seeing that their master has returned. MASTER MIND I've got it! MASTER MIND It's plain and simple. Extraordinary minds need extraordinary stimulation. Without that stimulus they wither and die. Therefore, there is only one logical conclusion: I must create a new superhero. EINSTEIN Yeah, maybe that's not such hot idea... MASTER MIND (ignoring him) Prepare for Operation Superhero Genesis! INT. ABANDONED METRO CITY LIBRARY - LABORATORY - DAY The lab is slick, white and ultra modern. Dressed in a lab coat, Master Mind enters through a SLIDING GLASS DOOR rubbing his hands excitedly. MASTER MIND Prepare the subject. He glances down into a large HOLE in the floor to see a naked thirty year old man, SEVERS, shivering. Above the hole, a huge vat dangles precariously. Master Mind steps behind a glass partition next to Plato and Einstein. MASTER MIND (CONT'D) Plato, pour the toxic waste. Plato throws a switch causing the vat to tip hundreds of gallons of green and brown goo into the hole. MASTER MIND (CONT'D) Drainage. The slime is sucked out through the floor, leaving a goo- soaked Severs. 33. Master Mind looks into the pit. MASTER MIND (CONT'D) Well, Severs? SEVERS I feel fine. Just a little sticky, but aside from that everything's completely - BOOM - Severs explodes. A hail of blood and tissue covers Master Mind and his men. For a good ten seconds nobody moves an inch. Finally... MASTER MIND Okay then. INT. ABANDONED METRO CITY LIBRARY - LABORATORY - DAY Through a glass WATER TANK we see a man breathing normally. MASTER MIND And this one? PLATO We attached gills to him. He can breath under water. MASTER MIND Ah. Does he have extraordinary strength? PLATO Well...no. MASTER MIND Can he fly? PLATO No. MASTER MIND Resilient to weapons fire? PLATO No. MASTER MIND He just breathes under water, then. PLATO Ah...yeah. 34. Master Mind rolls his eyes and walks away. INT. ABANDONED METRO CITY LIBRARY - LABORATORY - DAY The next guinea-pig, STENWICK, is standing in a sealed glass tube not much wider than himself. MASTER MIND Plato, the radioactive spider, please. Plato throws the switch DROPPING A SINGLE SPIDER onto Stenwick's arm. Stenwick looks and winces as it bites him. STENWICK Ow! He brushes the spider off. MASTER MIND Anything, Stenwick? STENWICK (shaken) No. Ah...sir, I didn't know this was about spiders. I have a pretty severe case of arachnophobia. Master Mind thinks for a moment, then turns to Plato. MASTER MIND We're gonna need more venom. Plato throws another switch, this time DUMPING THOUSANDS OF SPIDERS on poor Stenwick. His SCREAMS begin to fade as he's engulfed with swarms of crawling arachnids. MASTER MIND (CONT'D) How `bout now, Stenwick? ....Stenwick? INT. ABANDONED METRO CITY LIBRARY - OFFICE - DAY Master Mind is pacing back and forth. The muted TV plays in the background. MASTER MIND This has proven to be a challenge. I just don't know what I want. What do I want? 35. He stares at Einstein, Da Vinci and Plato, but they offer no advice. MASTER MIND (CONT'D) I want a man of moral fiber with a strong sense of right and wrong. Someone who doesn't seek power - instead, they must have it thrust upon them and find, within themselves, the courage to rise to the occasion. Einstein lets out a short laugh, getting everyone's attention. EINSTEIN Yeah, well, it sounds like what you want is Uberman. Master Mind snaps the fingers of his non-metal hand. MASTER MIND That's it! Why make a copy when the real thing will do? The lackeys look at each other, they can't believe what they're hearing. EINSTEIN I was just kidding, sir. In case you forgot, you actually burned Uberman alive. MASTER MIND Then we'll make a new one. Plato, bring me the box! MINUTES LATER Master Mind and the lackeys stand in a circle around a small table. Plato places a STAINLESS STEEL CHEST in the tables center. As Master Mind opens it, he's immediately doused in WHITE GLOW emanating from inside. MASTER MIND Behold - Uberessence. The very thing that gave Uberman his superhuman powers. 36. EINSTEIN Where the hell did you get that? MASTER MIND Oh, I shot him with a power sucking gun and had this idea to use this to clone a whole army of evil Ubermen. I'm not sure why I never got around to following up with that. PLATO I believe he defeated you before you could, master. MASTER MIND ...Right. Man, he was good! DA VINCI You want another volunteer, sir? MASTER MIND Not another volunteer driven by the need for personal gain. Somebody else, somebody pure. Master Mind turns to see an INTERVIEW WITH HAL playing on the muted television. Underneath his face is a blue caption with white lettering that reads: "Hal Stewart - Metro City's Newest Hero?" NEWS REPORTER ...who risked his own life to save that of a young mother and her child. HAL Please, please, you're embarrassing me. I saw someone in need and I helped them. What more can we ask of ourselves. I ask you, what more? A smile creeps across the evil one's face. MASTER MIND (CONT'D) Somebody like him! EXT. CITY STREET - DAY Plato is sitting in the van, staring into a pair of binoculars as he speaks on a cellphone. 37. PLATO Yeah, sir. This guy is a real piece of work. He used to teach bowling at Kingpin's. INT. MASTER MIND'S HIDEOUT - DAY Master Mind is sitting with his feet up on a computer console as he speaks to Plato. MASTER MIND (into phone) A modest profession to brilliantly hide his true heroic nature. I love it. EXT. CITY STREET - DAY PLATO Then you are absolutely going to love this - We follow Plato's line of sight across the street where we see HAL PLAYING WITH A LARGE GROUP OF BLIND CHILDREN. PLATO - He volunteers at a school for the blind. INT. MASTER MIND'S HIDEOUT - DAY Intrigued, he suddenly sits up in his chair. MASTER MIND He volunteers. He doesn't ask for any reward for his deeds. The fates are shining down on me. This Mr. Stewart is truly an unselfish soul. EXT. BLIND SCHOOL - DAY From a distance, Hal seems to be consoling an upset child who's sitting on a rock. But up close... HAL You greedy little bastard. I already gave you a twenty. BLIND KID Hey, you want me to play along? Then pay up, bitch! 38. HAL Fine, but you better be convincing. He gives the kid a bill out of his wallet and looks over his shoulder to see a HOT TEACHER walking toward them. HAL Here she comes, go to work. Like a miniature Brando, the blind kid buries his face in his hands and begins to cry. BLIND KID (weeping) Why can't I see! Why God? Hal puts a warm consoling hand on the weeping boy's shoulder. HAL Hey, Peter. C'mon champ, let me look at you. The Hot Teacher stops and curiously watches from a distance. The boy looks up at Hal, tears running down his dark sunglasses - he should get an Oscar. HAL You know, in life we're all given no more than we can bear. This happened to you maybe because you were meant to rise above it - Maybe to be an inspiration to the other little Peteys out there. BLIND KID You really think so, Hal? HAL Hey, does it LOOK like I'm lying? Now c'mon, go feel your way to class before you get your little butt suspended. The boy stands up and is about to take off. HAL Petey, wait a minute. Hal uses his shirt sleeve to wipe the tears away from the boy's face before sending him on his way. 39. The Hot Teacher grabs her chest. Her heart is about to absolutely melt. HAL Don't run into anything! EXT. STREET - CONTINUOUS Plato lowers his binoculars. From his perspective, Hal should be next in line for popehood. PLATO I think I've seen enough, sir. This is your guy. MASTER MIND (O.S.) (over radio) Then return to base. We have much work to do. Plato starts up the van and pulls away. INT. BAR - DAY It's a busy night. A couple of trucker types are shooting pool as the bartender slings drinks. Hal is nursing a beer at the bar when he suddenly notices a very ATTRACTIVE WOMAN sitting next to him. As he goes to straighten his stool-posture, Hal suddenly catches himself on the bar's TELEVISION - it's a story about how he saved the woman and her baby at the construction site. He turns back to the Attractive Woman next to him, then back to the TV. A plan of attack is forming. HAL (obviously playing it up for the woman's benefit) Oh, there it is again. This is really getting embarrassing now. The woman looks up at the screen and gives Hal a double-take. ATTRACTIVE WOMAN Oh my God! It's you! You're the man who saved that woman and her baby the other day! It is you, isn't it? TRUCKER #1, getting a drink at the bar next to them, OVERHEARS. 40. Hal rolls his eyes and puts his hands up in the air. HAL (to Attractive Woman) Oh, crap. You got me. TRUCKER#1 taps Hal on the shoulder. TRUCKER#1 Let me tell you something. That was just about the bravest damn thing I've ever witnessed. (he turns to the rest of the bar) Hey, everybody! This guy's the hero from TV! The bar ERUPTS IN CHEERS. MOMENTS LATER Hal is riding on the shoulders of TRUCKER#2 and TRUCKER#3 as `I'm Holding Out For A Hero' plays on the jukebox. TRUCKER#1 suddenly puts his hands in the air. The room quickly goes silent. TRUCKER#1 I want to give you something. He reaches into his pocket and takes out a medal. He holds it up in the air for everyone to see. TRUCKER#1 (CONT'D) Lost my whole platoon. They were a lot a good boys, a lot of good boys. That was just the way things were in "The Grenada." I'd rather a real hero have this. Trucker#1 gives the medal to a speechless Hal. ATTRACTIVE WOMAN Hey, you're on TV again. The crowd looks up at the Television. TELEVISION - CONTINUOUS The anchor man, BRAD HELMS (early 40's, amazing mustache), suddenly has a memo passed to him. 41. BRAD HELMS This just in. Upon a second look at that tape from this morning, which we'll now replay for you, it appears it was not the heroic act it first seemed to be. The tape shows Hal running in slow motion. BRAD HELMS (O.S.) (CONT'D) With the tape slowed down you can actually see the man push the woman and her child out of the way in an effort to save his own life. The tape shows Hal, in a clear act of self-preservation, pushing the woman and child out of the way. CUT BACK TO: INT. BAR - CONTINUOUS In unison, everyone turns their heads back to Hal. HAL I guess that looks kinda bad. Trucker#1 snatches his medal back. EXT. NEARBY ROOF - NIGHT Master Mind, Da Vinci and Plato look down, spotting Hal cutting through a dark alley. DA VINCI There he is, boss. Da Vinci hands Master Mind a fantastic looking silver rifle. MASTER MIND Now, we're sure this won't kill him? PLATO Yes, sir. He'll just feel a slight electrical shock. MASTER MIND Good. Master Mind raises the rifle and aims it at Hal. 42. EXT. ALLEY - NIGHT Hal wipes the blood from his nose with his shirtsleeve. A LIGHTENING BOLT suddenly zaps Hal in the back. His teeth spark and arc electrons as his entire body shakes and shudders violently. He finally collapses, knocking over a row of garbage cans. EXT. NEARBY ROOF - NIGHT An angry Master Mind slaps Plato. MASTER MIND Slight electrical shock? EXT. ALLEY - NIGHT Hal lies flat on his back, his jacket smoldering. Dazed, he slowly rises to his feet and looks up at the sky. HAL God, I hate the weather in this city. Hal walks off into the night as he attempts to slap the emitting smoke from his jacket. EXT. NEARBY ROOF - NIGHT Master Mind turns to Da Vinci. MASTER MIND Follow him. INT. HAL'S APARTMENT - NIGHT It's a dirty, small studio. Laundry lies everywhere, dishes are piled in the sink and the litter box looks like a minefield. Hal comes staggering in. Through his POV we see the lights wobble and streak like a hallucination. He shakes his head trying to clear thing up, but it looks worse. Hal makes his way to the kitchen table and plops down on a chair. The room begins to swim. His CAT jumps on the table and sits down in front of him. 43. From Hal's POV the cat's face looks like we're seeing it through a kaleidoscope. Hal seems fascinated by it. CAT You don't look so good, man. HAL I don't feel good. I was struck by freaking lightening. Suddenly Hal realizes his cat's talking to him. HAL (CONT'D) AAAAAAHHHHH! You can talk? CAT No, you're just hallucinating. By the way, we're out of orange juice. HAL AAAAAAHHHHH! Hal jumps up, trips over a cardboard box and knocks himself out on the coffee table. INT. HAL'S APARTMENT - MORNING Hal lies in the same position we left him last night. He sits up and grabs his head. He looks like he has the worst hangover in the world. Finally, he remembers last night. He looks around, but not really sure what he's looking for. HAL Man... Shaking his head, he walks to the kitchen and opens the refrigerator. He pulls out an orange juice container and puts it to his mouth. It's empty. As if suddenly remembering something he looks from the carton to the cat, who is busy cleaning himself. He shakes the thought from his mind. BATHROOM Hal lifts the seat and unbuckles his pants. 44. HAL'S FACE He stares at the ceiling with half closed eyes. The inevitable sound of urine hitting water starts. A content look washes over his face. There is a distinct sound of porcelain CRACKING and SPLINTERING. The sound intensifies. Hal looks down to see his URINE STREAM SMASHING THE TOILET. HAL (CONT'D) Oh, God! He whips his stream away only to cut a LONG RIP IN THE WALL. HAL (CONT'D) Oh, God! He freaks out and begins to lose control of his flow as it destroys everything he accidently aims at; the bathroom mirror, a bottle of cheap cologne, the bathroom window. HAL (CONT'D) Oh, God! He aims back for the toilet, which is pretty much rubble now, to see the floor give way. Finally, the pee stops and he glances down the hole. He sees his downstairs NEIGHBOR sitting at his breakfast table. He has a fork halfway to his mouth as he stares at the smashed toilet on his pancakes. EXT. STREET - DAY Hal turns the corner to see his bus pulling away from the stop. HAL Wait! He starts running after it. ZOOM - HE TAKES OFF LIKE LIGHTENING. HAL (CONT'D) Whoa, whoa, whoa! Unable to stop, he SLAMS INTO THE BACK OF THE BUS and falls back to the ground. 45. As the bus continues on he sees an INDENTATION of his torso right below the rear window. Stunned, to say the least, he rises to his feet. HAL (CONT'D) Something's not right here. He slaps himself in the face as hard as he can. HAL (CONT'D) Wake up! Wake up, Hal! HONK! Hal spins around to see a car barreling toward him. He goes to jump out of the way - ZOOM - he FLIES TWO STORIES UP, nails a building and comes crashing back down to the sidewalk. Hal sits up, disheveled and scared. HAL (CONT'D) Okay, okay. Let's get it together, man. He closes his eyes in an attempt to will back his sanity. HAL (CONT'D) This is just some sort of...episode. It will pass, it will pass. He opens his eyes and looks down the street. A BEAUTIFUL NAKED WOMAN is coming toward him. HAL (CONT'D) Well, not too fast I hope. As she passes him and turns the corner out of his view he catches ANOTHER NAKED WOMAN - an old disgusting one. HAL (CONT'D) Yes, fast, fast! He turns away from her in horror only to see AN ENTIRE BLOCK OF NAKED PEOPLE going about their business. He rubs his eyes and looks down the street again. Everyone has returned to a clothed state. 46. He relaxes a little until he looks down and notices that he's floating a foot off the ground. HAL (CONT'D) I think I need to go home. INT. HAL'S APARTMENT - DAY Hal's front door CREAKS as it slowly opens, revealing Master Mind. He walks over to the bathroom and smiles to himself as he notices the giant hole in the floor. MASTER MIND Welcome to your second birth, Hal Stewart. Master Mind continues to survey the room. He stops to look over a "KARATE KID" POSTER on Hal's living room wall. He focuses on the majestic image of Pat Morita teaching a young Ralph Macchio to kick. MASTER MIND (CONT'D) Instruction is very important in the formative years. Every hero needs a mentor, a father figure to look up to. He presses his special watch, causing his body to MORPH INTO THE SPITTING-IMAGE OF PAT MORITA. "PAT MORITA" Perfect. INT. HAL'S APARTMENT - DAY Hal enters, grabs a bottle of vodka from atop of the fridge and takes a long pull from it. VOICE (O.S.) A man will usually find that if he drinks from a bottle, eventually, the bottle drinks from him. Hal does a SPIT TAKE. In the corner a darkened figure stands. HAL Who are you!? 47. VOICE I am the guide on your journey. Fate has chosen you to be it's champion. Pat Morita steps out from the shadows. Hal passes out again. LATER We are close on Hal's face as his eyes flutter open. He appears to be lying on the couch. He hunches up on his elbows, looks around, but everything is as it seems. He lays his head back down. HAL Thank God. It was a dream. Man, I must be losing it. A voice sounds right next to his ear. "PAT MORITA" (O.S.) You know you're out of orange juice? Hal leaps up to find he's been resting his head on Pat's lap. HAL Jesus! This isn't happening, this isn't happening. Hal backs away and trips over a box. "PAT MORITA" Calm. All things must be filtered through calmness. HAL Bullshit! Sometimes it's best to freak out. "PAT MORITA" I think we must work on your attitude first. HAL Look I'm gonna call the cops in about two seconds if you don't get out of here. 48. Pat rises and walks to Hal. He's so calm it makes Hal calm. "PAT MORITA" Are you calm now? HAL Yeah, I'm okay. Pat slaps him across the face hard. "PAT MORITA" Good, because we've got a lot of work to do. Hal grabs his jaw. HAL What the hell was that for? "PAT MORITA" Rule number one: expect the unexpected. HAL Can you just tell me what this is all about? "PAT MORITA" The heavens are not in the habit of bestowing a gift such as this to just anyone. You are being rewarded for being a man of great moral fortitude with an unwavering belief in humanity. HAL That's me alright. "PAT MORITA" I am to train you so you may fulfill your destiny to defeat the great menace to Metro City: Master Mind. Pat gets up and walks toward the door. "PAT MORITA" (CONT'D) Come. HAL We're are we going? 49. "PAT MORITA" To train. EXT. PAT'S CAR - DAY Pat is sitting in the driver's seat. The car is bumping up and down. "PAT MORITA" Strength is just as much in the mind as it is the muscle. Remember, both need to be exercised. We PULL BACK to see Hal lifting the car up over his head. He's hardly straining. HAL I'M LIFTING A FREAKING CAR!!! Pat leans on the HORN. "PAT MORITA" Hey, Corky? You listening? Two highly attractive female joggers run by. They're clearly impressed with Hal's show of strength. He smiles and mouths a "hello." HAL Yeah, work both muscles. EXT. DESERT - DAY Pat cocks back the chamber of a .357 MAGNUM. He holds it up and carefully takes aim...at Hal's chest. "PAT MORITA" Trust me. HAL What are you doing!? "PAT MORITA" An invulnerability test. Something wrong? HAL Uh...yeah. I would prefer not to get shot. Do not fire that thing! Frustrated, Pat lowers the gun. 50. "PAT MORITA" You're bulletproof. HAL Okay, do you know that for sure? Pat quickly aims and fires. Hal lets out a high pitched scream as the bullet ricochets off his chest. "PAT MORITA" I do now. Hal looks down at his chest, not so much as a scratch. HAL You suck. EXT. SKY - DAY Hal is in the air flying in a sitting position. He's weaving back and forth. HAL Ice Man, I got a bogie on my tail. Two Russian Migs coming in hard and fast. "PAT MORITA" Hey! HAL What? Hal looks down to see Pat Morita yelling at him from the roof of a building down below. "PAT MORITA" What did I tell you? Stomach down, hands up. Hal sighs and assumes the proper superhero in-flight position. HAL God, I feel so gay. Pat's CELL PHONE begins to RING. He answers it. "PAT MORITA" (in Master Mind voice) What is it? 51. ROXANNE (V.O.) John? Pat panics. He looks up to make sure no one is in earshot. He sees Hal now doing somersaults in the air. HAL YEEEE HAWWWW! Pat turns his attention back to the phone, talking in his John Cusack voice. "PAT MORITA" (in Cusack voice) Yes, it's John Cusack. ROXANNE (V.O.) Hi, it's Roxanne. Listen, I...I really enjoyed talking with you the other day. "PAT MORITA" ...As did I. ROXANNE (V.O.) Great. God, I feel really silly, and if you have a lot going on I totally understand. But, I was wondering if you maybe wanted to have lunch. He can't believe what he's hearing. "PAT MORITA" (excited) I'd love to! He quickly recovers his composure. "PAT MORITA" (CONT'D) I mean, I AM a little hungry. ROXANNE (V.O.) Great. How does the park sound, around noon-ish? "PAT MORITA" Sure! ROXANNE (V.O.) Great, see you then. 52. Pat hangs up the phone and returns it to his pocket as Hal lands behind him. HAL WHOOOOA! Man, that is so cool. It's like fly - Oh my God, I almost said it was like flying. "PAT MORITA" For the rest of the day I want you to continue to practice your flying posture. HAL Why, where're ya going? "PAT MORITA" ...To do something...mysterious ...and Asian. HAL Say no more, bro. I'll just keep at it, then. EXT. PARK - DAY John Cusack and Roxanne eat WRAPPED SANDWICHES while walking through Metro City Park. ROXANNE How's your sandwich? "JOHN CUSACK" It's quite delicious. ROXANNE Hope you don't think I'm too forward. Some men are intimidated when a woman asks them out. I just find you really easy to talk to. "JOHN CUSACK" And I you. ROXANNE You know, you're not at all like you are in the movies. "JOHN CUSACK" I'm not? 53. ROXANNE Yeah. I don't know - You have this strange, refined way of speaking. "JOHN CUSACK" I do? That is most interesting. ROXANNE Anyway, when we were talking the other day I just felt, even though we only talked for a couple of hours, that we've known each other for years. "JOHN CUSACK" I know just what you mean. Roxanne bites into her sandwich. ROXANNE You know what? This sandwich is disgusting. She tosses it in a nearby garbage can. ROXANNE (CONT'D) Of course I already ate half of it. I wonder what that says about my character? "JOHN CUSACK" It means you don't give up on a sandwich. You see that it has potential, and you give it every chance to be all it can be. Roxanne smiles at his analogy. ROXANNE Thanks, but knowing me, I was probably projecting my expectations of what a lunch should be on the sandwich. It might have been okay at first, but I just made it bitter. John Cusack notices Roxanne's smile starting to fade. "JOHN CUSACK" Is that what happened with your last sandwich - I mean, boyfriend? 54. ROXANNE When I look back, I probably shouldn't of expected so much from him. He was already a giving person. You know, one of those go out and save the world types. "JOHN CUSACK" I've run into a few. ROXANNE I was selfish, I guess. I didn't want to share him with anybody else. "JOHN CUSACK" It sounds like he was a special man. ROXANNE They broke the mold. John Cusack arches his eyebrow in a very familiar manner. "JOHN CUSACK" Perhaps not. INT. ABANDONED WAREHOUSE - DAY Hal walks up to Pat Morita sporting a Lone Ranger-type mask and wearing a purple and red superhero costume. It's not unlike Uberman's except for a giant "T" on his chest. (From here on, Hal is referred to as TITAN) TITAN What's the "T" stand for? "PAT MORITA" Titan. TITAN What's that supposed to mean? "PAT MORITA" It's from Roman mythology. Zeus's father...oh, just go with it. You look perfect. TITAN I don't think this mask is big enough. Are you sure no one is gonna recognize me? 55. "PAT MORITA" It's fine, just don't slouch. It's all in the posture. He grabs Titan's shoulders like a proud papa. "PAT MORITA" (CONT'D) It is time. INT. BANK - DAY There is a long line of people snaked around the velvet ropes. They're all waiting for their chance at the one open teller window. Four men wearing BEATLES MASKS(JOHN,PAUL,GEORGE,AND RINGO)and CARRYING SHOTGUNS enter the bank. John fires a shot in the air, sending everyone into an immediate panic. JOHN Alright folks, this is a robbery. Nobody moves - yadda, yadda, yadda... Ringo jumps over the teller wall and starts stuffing bills into a bag. As John and Paul cover the crowd, George goes to the corner office and puts a gun to the BANK MANAGER'S head. GEORGE The safe. Let's go. BANK MANAGER Okay, just don't hurt anyone. GEORGE Yeah, yeah, yeah. George leads him out by the collar. CRASH - Titan smashes through the window and lands in a bold superhero stance with hands on hips. TITAN Well, boys, there's no need for all this just to get the free toaster. Paul cocks his gun. 56. PAUL What are you suppose to be? We move in for a nice dramatic close up. TITAN Justice. GEORGE Well, justice, suck on this... George, John and Paul open fire on Titan. He just stands there and yawns as the bullets bounce off him. With their guns empty the three just stare at him in amazement. TITAN Now it's my turn. He turns to George. TITAN (CONT'D) Hey, George, here comes the sun. Titan grabs George and throws him into a fluorescent light fixture in the ceiling. Paul tries to run for the door. Titan snatches the collar of his jacket. TITAN (CONT'D) Say, Paul, your mother should know...that you're a scumbag. He tosses Paul out the window and into a parked DELIVERY TRUCK. Titan turns around just as John hits him with the butt of his shotgun. It instantly breaks apart in his hands. Titan lifts him like a rag doll up into the air. TITAN (CONT'D) John, all you need is love... He throws John who lands on top of a cubical wall - GROIN FIRST. TITAN (CONT'D) ...and a good urologist. 57. Titan effortlessly hops over the teller wall to find Ringo cowering on the floor. He grabs him by the shirt and lifts him up. HAL Well, Ringo...um...um...you're under arrest. EXT. BANK - DAY Titan walks out of the bank with Ringo and George under his arm. He's suddenly swarmed by a group of television reporters, including Roxanne. Across the street is Pat Morita. He watches Titan's first news conference with great anxiety. BANK MANAGER (to Hal) On behalf of the First National Bank of Metro City, I'd like to offer you a reward for your act of bravery. He hands Titan a check. TITAN (reading) Ten thousand dollars! Titan looks over to Pat, who violently shakes his head no. TITAN (CONT'D) (unenthusiastically) I...can't except this. Law and order is it's own...um...reward. Pat gives him the thumbs up. Pat turns, suddenly seeing Roxanne with her camera crew. Captivated, his eyes lock on her. Meanwhile, Roxanne and her cameraman, SETH, are maneuvering around the crowd to get closer to Titan. BRAD HELMS (O.S.) Not so fast, Roxanne. They both turn to see Roxanne's reporter rival Brad Helms, Geraldo without the class, and his cameraman, FRANK. BRAD HELMS This story's mine. 58. ROXANNE Listen, Brad. We were just in the area. I was just trying to - BRAD HELMS I've been in this business long enough to know pretty well what you were "just trying to do." Besides, I heard you couldn't take the big game anymore and were put on fluff detail? Dejected, Roxanne turns and motions for Seth to turn the camera off. SETH You're not gonna take that from him, are you? ROXANNE He's right. Old habit, I guess. (to Brad) We'll get out of your way. As they walk off, Brad makes a comment to Frank loud enough for her to hear. BRAD HELMS Besides, I'm sure there's a pancake supper somewhere that needs covering. INT. ABANDONED METRO CITY LIBRARY - OFFICE - DAY ON TELEVISION We see the news conference on the bank's steps. In the corner of the screen is written: "recorded earlier." BRAD HELMS For months now, since the death of Uberman, the citizens of Metro City have been holding out for a hero. Well, it appears they won't have to hold out for much longer as a new costumed crusader has suddenly stormed onto the scene. Today, at the Metro Savings and Trust, a masked mystery man single-handedly defeated "The Fab Four Gang." Just who is this new caped avenger? Brad holds the microphone to Titan's face. 59. BRAD HELMS I'm sure all of our viewers are now wondering, what's the "T" stand for? TITAN It's a message to all the scum out there. Uberman may be gone, but Metro City has a new protector, and his name is "Tighten!" Another reporter leans in. REPORTER How do you spell that? We PULL BACK to see Plato and Da Vinci watching this spectacle. Master Mind is sitting with them, reading a NEWSPAPER. MASTER MIND (reading paper) Oh, for heaven's sake. I can't believe it. He misspelled his name. Master Mind holds up the newspaper. The headline reads "Metro's New Hero: Tighten." MASTER MIND (CONT'D) No matter, I suppose. Master Mind throws the paper on the floor and begins to pace around the room with his arms folded behind his back. MASTER MIND (CONT'D) We've now fully established Titan as Metro City's hero. They will love him just as they loved Uberman. Everything is going according to plan. Einstein leans over and whispers in Plato's ear. EINSTEIN (whispering) Yeah, if the plan is getting us in jail. Master Mind turns around, facing Einstein. He walks over, standing face to face with the rebellious henchmen. 60. MASTER MIND You know, Einstein, maybe I should have called you Socrates. He also didn't know when to keep his thoughts to himself. EINSTEIN I just fail to see the point in all of this. I mean, why are we creating another superhero when it was such a pain in the ass for you to get rid of the other one? I mean, Uberman is destroyed, we should be using this opportunity to...to... MASTER MIND To what? EINSTEIN I don't know. To take over the weather, space, the world - whatever super villains are SUPPOSED to do. MASTER MIND The reason someone like you will always be a minion is because you have no foresight. We take over the earth, like you said. Then what? Women? Cars? Money? Even the grandest treasures will lose their lustre if you don't have someone to hold them over. Einstein throws up his hands. He's had enough. He pulls off his wig and throws it to the floor. EINSTEIN That's it! This balance of the force bullshit is getting way too Oprah for me. I'm blowing. Who's with me? MASTER MIND You dare? EINSTEIN Yeah, I dare. I'm sick of wearing stupid costumes, and I'm sick of working for a super villain who's turning into a softie. 61. Plato and Da Vinci's mouths drop to the floor. They turn to Master Mind for his rebuttal. MASTER MIND What - did - you - call me? EINSTEIN You heard me. You used to be an inhuman monster, now look at you. You're creating super heroes, you don't go with us on robberies anymore, it's been days since you threatened anyone, oh, and not to mention this Roxanne Ritchi thing. MASTER MIND THAT is none of your business, knave! EINSTEIN Hey, you guys haven't sealed the deal yet, have you? MASTER MIND Silence! EINSTEIN (In a woman's voice) Oh, Master, your head is so big. MASTER MIND I'm warning you, Einstein. EINSTEIN (In a woman's voice) Take me! MASTER MIND I said silence! With his metal gauntlet Master Mind grabs Einstein by the throat and lifts him into the air. Einstein looks frightened as he tries to pry himself free of Master Mind's grip. Master Mind's eyes soften as if his heart is suddenly not into what he's about to do. He let's Einstein drop to the floor. MASTER MIND (CONT'D) Get out of my sight. 62. EXT. RESTAURANT - NIGHT Roxanne and John Cusack are eating on the outside patio of a fancy restaurant. ROXANNE Don't get me wrong, I love being a reporter. I don't think I could do anything else. It's the consequences of what we do that I'm having a problem with. He listens intently as he refills her glass with wine. "JOHN CUSACK" That's where journalistic responsibility comes in, no? ROXANNE It's supposed to. "JOHN CUSACK" Sounds to me like you're running from something. ROXANNE I got someone I cared about killed. If it wasn't for me, he wouldn't have been involved. John suddenly gets a disturbed look in his eye, realizing what she's talking about. He reaches across the table and takes her hand. "JOHN CUSACK" You can't blame yourself. My father used to say each of us must answer the great call to truly feel alive. ROXANNE Was he an actor? "JOHN CUSACK" ...No. He was...a landscaper. And a horrible one. I mean he would fail time and time again at his...landscaping. And sometimes he'd get pretty beaten up or thrown in jail - ROXANNE Jail? 63. "JOHN CUSACK" My point is he took the good with the bad. He grew a little each time. Improved, learned. ROXANNE Was he ever successful? "JOHN CUSACK" God, no...but don't let deter you. Roxanne LAUGHS. ROXANNE Thanks for this. You know, this is embarrassing, but it's been a long time since I - It's starting to lightly sprinkle. Roxanne looks up. ROXANNE (CONT'D) I think it's starting to rain. We might want to find a table inside. "JOHN CUSACK" What were you gonna say? ROXANNE Oh, I was gonna say...It's been a long time since...well, I've been with someone I...enjoy being with. John Cusack smiles warmly and raises his glass for a toast. "JOHN CUSACK" To people who enjoy being with each other. They go to clang glasses, when the rain suddenly causes John Cusack's disguise generator to short. His true form of Master Mind is briefly revealed to Roxanne as a BOLT OF ELECTRICITY encircles his body. Roxanne drops her glass and jumps out of her seat. MASTER MIND (CONT'D) Oh, no. Don't look at me. LIKE A BROKEN TV the image keeps switching between MASTER MIND AND JOHN CUSACK. 64. As Master Mind starts to franticly slap at his watch, the Cusack disguise begins to hold steady. He nonchalantly returns to cutting his steak. "JOHN CUSACK" Okay, never mind that. Now, where were we? Roxanne grabs his glass and throws the drink in his face, causing the generator to short out permanently. Master Mind now sits in his true blue form. ROXANNE Oh my God. MASTER MIND You're not gonna get all freaky about this, are you? ROXANNE This...this is too much, even for you. God, I go out with you, tell you my innermost thoughts. MASTER MIND I only did this because I wanted to talk to you on the same level. You know, without all the baggage? ROXANNE Baggage? You burned my boyfriend alive, you sick son-of-a-bitch! MASTER MIND You see, that's exactly what I'm talking about. Roxanne starts to walk away. MASTER MIND (CONT'D) Roxanne! ROXANNE Stay away from me. Master Mind sinks back down to his chair. Despite the now heavy rain bombarding him, he returns to his food. Several resturaunt patron's are looking at him through the window. 65. Our villain turns to them, giving them a villainous glare. MASTER MIND What? INT. MASTER MIND'S BEDROOM - NIGHT Master Mind is lying on his back, wide awake. MASTER MIND (mumbling to himself) Stupid. What was I thinking? Plato, it's his fault. He's the one who sent me on this weak-willed path. I'll filet his scrotum for this. Me, a creature of evil, in love with Roxanne Ritchi. Preposterous. I hardly give such matters thought He rolls onto his side. He yawns and closes his eyes. Suddenly, they shoot back open. CUT TO: EXT. ROXANNE'S APARTMENT - NIGHT Master Mind pulls up in a blue Rolls Royce, across the street from Roxanne's apartment He stares up at the building, hoping to catch a glimpse of her. Finally, she appears, primping her hair in her apartment window's reflection. MASTER MIND I should just go up there and just lay it all out to her. "Roxanne, I like you - I always have. Oh, and I'm sorry I blew up your ex. (realizing the absurdity of his words) Yeah, that would go over like a pants-less clown at a child's birthday party. What the hell am I even doing here? Who cares what she thinks? I'm a supervillain and here I am acting like a love struck schoolboy. Forget this. I control my own destiny! 66. He turns the ignition key - NOTHING HAPPENS. He repeats but gets the same results. MASTER MIND (CONT'D) (disgusted) Perfect. INT. ROXANNE'S APARTMENT - NIGHT She pulls a pack of smokes off her night stand. Empty. ROXANNE Damn. She grabs her long coat and throws it over her robe. EXT. ROXANNE'S APARTMENT BUILDING Roxanne steps outside. ROXANNE Please be open. Across the street is a liquor store. The light is still on. ROXANNE (CONT'D) Thank God. She walks across the street, passing in front of Master Mind's car. Spotting her, he sinks down in his seat. Roxanne walks by, totally unaware of his presence. Relieved, Master Mind sits back up and watches her go into the store. INT. LIQUOR STORE - NIGHT Roxanne walks up to an elderly Korean SHOPKEEPER at the counter. ROXANNE A pack of Lady Strikes, please. EXT. MASTER MIND'S CAR - NIGHT Master Mind is talking on his cell phone. MASTER MIND Hello, Triple A? 67. He suddenly spots something across the street. EXT. LIQUOR STORE - NIGHT A HOODLUM walks up to the entrance of the store and pulls out a gun from under his coat. EXT. MASTER MIND'S CAR - NIGHT Master Mind stares in shock. MASTER MIND I'll call you back. He hangs up the phone and watches the Hoodlum go inside the store. INT. LIQUOR STORE - NIGHT The Hoodlum reaches across the counter and grabs a fist full of cash from the register. SHOPKEEPER Hey! SHOTGUN HOODLUM Shut up, Gramps. He turns to Roxanne, spotting a GOLD NECKLACE around her neck. SHOTGUN HOODLUM (CONT'D) Gimme that necklace! ROXANNE I don't think so. The Hoodlum cocks his shotgun. SHOTGUN HOODLUM I said give it to me! MASTER MIND (O.S.) The lady said no. The hoodlum turns around to see Master Mind in the doorway holding a STRANGE-LOOKING HAND CANNON (GOO GUN) with knobs and blinking lights. The hoodlum starts to laugh. 68. SHOTGUN HOODLUM What the hell's that? A super soaker? MASTER MIND No, it's a goo gun. The hoodlum turns his gun to Master Mind. SHOTGUN HOODLUM Yeah, what's it do? MASTER MIND It goos. Master Mind fires the cannon. It instantly covers the store in a cloud of SMOKE. The smoke clears to reveal the hoodlum STUCK TO THE WALL, covered in a thick, GREEN GUNK. Roxanne stares at him, dumbfounded. MASTER MIND (CONT'D) It's...a prototype. Master Mind starts to walk out when he's suddenly confronted by the shopkeeper. SHOPKEEPER I know you! You Master Brain guy. You a hero. Master Mind points the goo gun at him. MASTER MIND Don't - EVER - say that again. EXT. LIQUOR STORE - NIGHT Master Mind walks out with the cannon resting on his shoulder like he's a short timer in Da Nang. Roxanne follows shortly behind him. ROXANNE Hey! Master Mind turns around. ROXANNE (CONT'D) Are you following me or something? 69. MASTER MIND Don't flatter yourself. He turns away and continues walking. Roxanne runs in front of him blocking his way. ROXANNE Don't walk away from me when I'm talking to you. Finally it occurs to her what's going on. ROXANNE (CONT'D) What a minute...all that stuff you use to say to me when Uberman was alive - about me being the loyal queen by your side as you rule over Metro City. That wasn't just super villain rhetoric, was it? You actually meant it! MASTER MIND My, someone has a rather high opinion of themselves. They stare at each other in silence, their glares locked in conflict. ROXANNE (coldly) Do you really think I would be with someone like you? This stings Master Mind to the bone. And after a brief contemplation, he reaches the only logical, painful conclusion. MASTER MIND No. With that, Master Mind exits into the night, leaving Roxanne with a baffled expression on her face. INT. ABANDONED METRO CITY LIBRARY - NIGHT Master Mind enters in a huff. Da Vinci closes the door behind him as Plato notices his master's agitated state. PLATO Everything alright, sir? Master Mind GRABS PLATO BY THE GROIN with his metal gauntlet causing Plato's eyes to bulge in pain. 70. MASTER MIND (overly calm) Fine, why do you ask? PLATO You...just...seem... Master Mind tightens his grip. MASTER MIND Go on. PLATO ...distracted. Master Mind releases him. MASTER MIND Just with business, my minion. Just with business. I've decided it is time. PLATO You mean? MASTER MIND Yes, we've created our hero, now it's time to give him a little motivation. DA VINCI How do we do that? MASTER MIND To be simply good is not enough. A hero must be driven by an almost relentless desire to right a wrong that can never be corrected. PLATO You mean? MASTER MIND Yes, he must lose someone near and dear to him - his father figure. Gentlemen, it's time for Operation Mentor Kill! EXT. SKY OVER METRO CITY - DAY Titan flies high over and through the city, under bridges, between buildings, etc. He's not really working, just enjoying himself. 71. INT. WOMAN'S APARTMENT - NIGHT A PRETTY WOMAN sits at her makeup table wearing nothing but her bra and panties. Through the reflection in her mirror we see a large window directly behind her. As she applies lipstick we see Titan fly quickly by in the background. After a moment he slowly slides back in view and begins ogling the girl. She sees him in the mirror and quickly covers herself with a robe. Titan tries to hide his face as he zooms off. MOMENTS LATER Titan looks down to see an APARTMENT BUILDING IN RUIN. Emergency lights flash around it as swarms of people run around in chaos. TITAN Man, what the hell happened down there? Wait a sec - He stops in mid-air as he comes to the striking realization. TITAN (CONT'D) THAT'S MY APARTMENT!!! EXT. HAL'S APARTMENT BUILDING - DAY Titan lands in front of the rubble that was once his home. Reporters stand just beyond the police line. TITAN Crap. From the wreckage crawls a dying Pat Morita. TITAN (CONT'D) PAT! Titan goes and kneels beside Pat, holding him in his arms. TITAN (CONT'D) You okay? "PAT MORITA" I'm dying, kid. There is just one last lesson I have for you. It is the most important of all. 72. TITAN What's that? "PAT MORITA" Master Mind did this, you must avenge me. TITAN Master Mind? Why? "PAT MORITA" Because he's evil. You must stop the evil Hal - stop the... Pat's body goes limp. The cameras begin to pop and flash around them. Titan gently lays Pat's body down and stands respectfully over him. The reporters rush over. REPORTER 1 Tighten, Is this the work of Master Mind? REPORTER 2 How will the death of your mentor affect your resolve? REPORTER 3 Was that Pat Morita? Titan walks up to one of the cameras. TITAN This injustice will not go unpunished. Master Mind, if you can hear me, Tighten is coming for you. In the background we see Plato and Da Vinci, DRESSED AS PARAMEDICS, load pat's body onto a stretcher. PLATO ACCIDENTALLY DROPS HIS SIDE. As he bends down to pick it back up, Pat quickly slaps him, then goes back to playing dead. INT. ABANDONED METRO CITY LIBRARY - NIGHT Master Mind and the boys prepare the fortress for Hal's revenge attack. Master Mind is as giddy as a schoolboy. 73. MASTER MIND Alright, people, we don't have much time. Titan should be here any minute, so let's get the lead out. There is a GIANT MOUNTED DEATH RAY in the middle of the hall being tinkered with by Da Vinci. MASTER MIND (CONT'D) How's the death ray coming? DA VINCI Nearly up to full power, sir. MASTER MIND Hum. Let's turn it down a few notches. It's his first time and we don't want to get in a lucky shot, now do we? Plato enters the room. MASTER MIND (CONT'D) Anything on the radar yet? PLATO Not yet, sir. MASTER MIND I see. Well, he must be planning something big. Are the flame androids deployed? PLATO All twelve. Master Mind rubs his hands in anticipation as he sits down on his throne. MASTER MIND Wonderful, wonderful. Plato, Da Vinci, take your places next to me. They move to either side of the chair. MASTER MIND (CONT'D) No slouching. Da Vinci straightens up and sucks in his gut. They remain this way for several long moments. Master Mind occasionally glances at a DIGITAL CLOCK on the wall. Still no Titan. 74. LATER Apparently quite some time has passed. The bold stances have degraded to fatigue. PLATO He's certainly taking his time. MASTER MIND He'll be here. That's the way it works. STILL LATER Master Mind reclines in his chair and taps his metal gauntlet impatiently on the armrest. Plato has squatted down, resting his chin on his hand. MASTER MIND (CONT'D) Unprofessional, that's what this is. No, it's disrespect for the craft. Master Mind rises and begins to pace back and forth. MASTER MIND (CONT'D) Would Uberman have kept us waiting like this? Of course not. He was a pro who knew the score. It's time we spelled out a few things for this Titan. I will not be made a fool of. He storms out of the room. INT. HAL'S NEW APARTMENT - DAY Titan's sitting on the floor in a barren apartment wearing his costume top and some tighty whities. He sips his beer as he watches a basketball game on a tiny TV. Much to his annoyance, there's a KNOCK at the door. TITAN Oh, for crying out loud. He gets up and opens the door. It's Master Mind. MASTER MIND Do you know who I am? 75. It takes a few moments to register, but Titan's suddenly excited. TITAN Yeah, you're Master Mind. Yeah! You're actually the guy I want to see! MASTER MIND Oh, so NOW you want to get down to it. Well, I want to get a few things off my chest first. Master Mind walks past Titan into the apartment. He spins around, pointing at him accusingly with one of his metal fingers. MASTER MIND (CONT'D) Of all the inconsiderate - Do you have any idea how long we waited for you? We're you even planning on coming to me and getting revenge? Titan shuts the apartment door, and turns back toward his guest. TITAN Well, at first I was going to. You know, because that's what I figured I was supposed to do. But then I got to thinking- MASTER MIND (interrupting) -You got to thinking? There's nothing to think about. I'm the villain. I do something bad, you come and get me. TITAN - I got to thinking...what's the point? Master Mind throws up his hands. MASTER MIND Maybe you're right. What's the point? He suddenly notices something in the corner of his eye. He walks over to a futon in the living room. On top of it is a LARGE SACK OVERFLOWING WITH GOLD WATCHES,RINGS AND OTHER VALUABLES. 76. MASTER MIND (CONT'D) What are these? TITAN That's what I wanted to talk to you about. MASTER MIND (baffled) Where did you get all this? TITAN (proudly) Get this: I stole them. MASTER MIND From where? TITAN From all over. You see, once you killed Pat and ruined my other apartment building I was pretty pissed off, so I figured I'd go, find you and kick some ass. Then I thought to myself: "Okay,then what?" I mean, if we were to fight, what would I get out of it? Would I get my apartment back? Would I be able to pay the bills? MASTER MIND Well, what about your mentor? TITAN Tell you the truth? He was kind of a dick. I mean, being a hero is dandy and all, but it's volunteer work. Now you've always had the right take on all this. I mean, when you rob a bank or take over the diamond exchange you get something out of it. I mean, when you don't get caught, which, no offense, isn't very often. And that brings me to what I wanted to propose to you: Who could catch you if I'm by your side? Perplexed by his proposal, Master Mind just stares at Titan awe-struck. MASTER MIND You want to team-up? 77. TITAN You got the brains, I got the brawn. We could even call ourselves that: `Brain' and `Brawn'. Look at this. Titan picks up a piece of POSTER BOARD off the floor and shows it to Master Mind. TITAN (CONT'D) I even designed us some new costumes. The picture is crudely drawn with magic markers and crayons. A big headed man (Master Mind) is standing on a plate of grass in a blue costume with a picture of a brain on his chest. Next to him, is a picture of Titan in a red costume with a black cape, but his chest is mysteriously blank. Titan proudly points to the two figures. TITAN (CONT'D) See, you'd be brain, so you got a little one on your costume, and then I'll have brawn on mine...once I figure out the best, you know, visual interpretation of it. What do you think? MASTER MIND What do I think? Master Mind shakes his head tiredly. MASTER MIND (CONT'D) I think you're probably the biggest idiot I've ever met. I mean, I can't believe you. All your gifts, all your powers, and all you want to use them for is your own financial fulfillment. You know what? Your kind of people make me sick. Titan puts down his drawing. TITAN I worked hard on this. MASTER MIND Oh - gee - I am so sorry! 78. Master Mind looks to Heaven in disgust. MASTER MIND (CONT'D) (under his breath) Of all the people to pick, it had to be this loser. This strikes a cord with Titan. TITAN Now, hold on. You're going a little too far. MASTER MIND I wish your mother said that to your father the night of your conception, they would have saved me a whole lot of heartache. TITAN Hey, I mean it. Master Mind gets right in his face. MASTER MIND Oh, yeah? What are you gonna do? EXT. HAL'S APARTMENT BUILDING - DAY We see Master Mind's body CRASH through the building and land in a DUMPSTER across the street. A car pulls up. The driver's door opens. Da Vinci gets out and runs to help his master. DA VINCI Master! MASTER MIND (O.S.) It hurts. Da Vinci peeks into the dumpster to see Master Mind's body cushioned by a stack of trash bags. DA VINCI What hurts? MASTER MIND It! The overly large henchmen starts to pull his master from the dumpster when they suddenly hear a voice from above. It's Titan peeking through the hole in his apartment wall. 79. TITAN I don't need you, I don't need anybody. I have the power to do and take anything I want. And now, I'm gonna take back everything this city owes me. Beware Metro City, it's time for Titan to collect. Titan shoots up into the air. TITAN (CONT'D) Oh, and from now on - I'M GONNA FLY THE WAY I WANT TO FLY! He takes a sitting position and flies away as if he were piloting an invisible jet. Master Mind climbs out of the dumpster and watches Titan disappear into the distance. DA VINCI How'd the plan go, boss? MASTER MIND I just made myself redundant, old friend. Da Vinci gives Master Mind a whiff. DA VINCI It's not that bad. INT. BANK - DAY Titan, with a happy bounce in his step, enters the bank. The last time he was here he thwarted a robbery. He looks nostalgic. A SECURITY GUARD shyly walks up to him like a kid meeting his TV idol. SECURITY GUARD Morning, Tighten. TITAN Morning. SECURITY GUARD Is there something we can do for you? 80. TITAN Oh, don't bother about me. I'm just here to make a withdrawal. Titan walks across the lobby, drawing stares of admiration from all. A little girl waves to him sweetly. He gives her a good- natured WINK as he heads straight for the vault. The security guard watches him enter and come out with a SACK OF CASH. Sure he must be misunderstanding what's going on, the security guard just stares at Titan as he passes by and out the door. The bank manager comes over to the guard. BANK MANAGER Say, did he just rob us? SECURITY GUARD Not sure. Sort of looks it, don't it? BANK MANAGER Yeah. SECURITY GUARD Should I, you know, stop him? BANK MANAGER Umm...Yeah. As the security guard exits the bank, the manager stares out the window. His eyes suddenly grow wide with terror. The guard's body suddenly smashes through the window, landing at the startled bank manager's feet. BANK MANAGER (CONT'D) (looking down at the guard) He did rob us, didn't he? CUT TO: TELEVISION "A Channel 7 News Special Report." Brad Helms wipes into view. 81. BRAD HELMS "Absolute power corrupts absolutely." When Lord Acton stated that, in a letter to Bishop Mandell Creighton in 1887, no one thought much about it, but today Metro City is reeling from that very prophecy. Tighten, who many thought of as our savior, has turned his back on the cause of justice. CUT TO: TITAN BEING EVIL - MONTAGE EXT. DIAMOND EXCHANGE - DAY Titan flies through the window of the building. He emerges seconds later laughing with his shirt full of booty. EXT. CITY STREET - DAY A woman screams from the window of a BURNING BUILDING. Titan flies up to her, grabs her fur coat and zooms off again, leaving the woman behind, slightly confused. EXT. OUTSIDE MARKET - DAY Titan steals a little boy's lollipop and gooses his mother. EXT. CITY STREET - DAY Dozens of people run through the streets apparently to get out of a downpour. We cut to the top of a building and see Titan ZIPPING UP HIS PANTS and laughing. INT. ABANDONED METRO CITY LIBRARY - NIGHT Master Mind paces back and forth in front of Plato and Da Vinci. PLATO I don't understand it. He seemed to have every characteristic we were looking for in a superhero. MASTER MIND Well, there's no use crying about it now, we must take action. I'm not going to play second fiddle to that crass buffoon. We must destroy Tighten. 82. PLATO It won't be easy. Uberman had a sense of decency and genuine love for the people. That was his weakness and was easily used against him. MASTER MIND Yes, but he possesses the same flaws present in Uberman's DNA - copper. It's like Benjamin Franklin always said: "If something works don't dick with it." EXT. BAR - DAY It looks like a war zone passed through here. Smashed police cars and debris lay everywhere. This seems to be the only building left untouched. INT. BAR - DAY A very tipsy Titan is sitting at the bar, looking deep into the bottom of his beer glass for answers. TITAN I can have anything I want. I'm like a god. The BARTENDER just listens as he wipes down a glass with a dirty rag. TITAN Point to any woman in this bar. I could have her in a second. He follows the bartender's gaze to THE ONLY OTHER PERSON THERE - A passed out, MIDDLE AGED HAG OF A BARFLY. TITAN (to Old Barfly) Hey, you wanna get with this? BARTENDER Buddy, what do you want? Titan carefully considers this for a moment. TITAN What do you want? That's the question, isn't it. I mean, what do you want when you can have everything? (MORE) 83. TITAN(cont'd) I suppose what I really want is to never be forgotten again. I want to do something that can never be cast aside or one-upped. I want a - what's it called? - A legacy. I want a legacy. Yeah, that's it. I like the sound that. BARTENDER I meant, what do you want to drink? TITAN Oh. EXT. BAR - LATER Titan stumbles out of the bar, carrying a large sack of money. MASTER MIND (O.S.) Your time has come to an end, Titan! He looks up to see Master Mind suddenly standing before him. TITAN What? MASTER MIND There can be only one master criminal in this city - and it's me. TITAN Really? Titan melodramatically throws up his arms. TITAN (CONT'D) I guess I should leave town then, huh? MASTER MIND I have a better idea - NOW! Two floors up Da Vinci releases a rope. A COPPER CAGE, like the one that caged Uberman, drops down on top of Titan. Titan nonchalantly surveys the cage. He walks to the bars, tries to pull them apart but can't. MASTER MIND (CONT'D) That's copper my good man. Your one weakness. (MORE) 84. MASTER MIND(cont'd) For all your amazing gifts of brawn you are no match for my intellect. Titan thinks for a moment. Suddenly, he starts to SPIN like a human top, DRILLING HIMSELF INTO THE STREET BELOW. As he disappears beneath the surface, we see a shocked look on Master Mind's face until Titan suddenly explodes out from under the street in front of him. Master Mind stares up at him, dumbfounded. Titan makes like he's going to strike him down, but stops. TITAN You know what? You're nothing but a bug. Not even worth my effort. He turns his back to Master Mind and continues down the street. Plato makes his way from the shadows to join his master. They watch Titan shrink into the distance. MASTER MIND He's not as dumb as I thought. PLATO I guess not...Funny, though. MASTER MIND What's funny? PLATO Funny Uberman didn't think of the same thing. EXT. HIGH ABOVE METRO CITY - DAY As Titan flies, he looks down at the rooftops of the city below. Suddenly, something catches his attention. HAL That's it! He stops, hovering in place as he looks down below. The buildings, which make up the heart of downtown Metro, are in a PERFECT TRIANGLE with a long strip of street leading up to it. It sorta looks like a bowling lane. 85. HAL Hello, Legacy. EXT. KINGPIN BOWLING - DAY Vinnie and his goons come running out as the hear a COMMOTION. They look up to see Titan ripping off THE GIANT BOWLING BALL from the top of the establishment. VINNIE Hey, that's my ball! INT. ROXANNE'S APARTMENT BUILDING - DAY Roxanne enters the building's elevator. Just before the door closes an ELDERLY WOMAN slides in. ELDERLY WOMAN That was a close one. Sixth floor, please. Roxanne smiles and goes to press the button. The elderly woman suddenly pulls out a SPRAY CAN, shooting a MYSTERIOUS-LOOKING MIST into Roxanne's face. She falls to the floor unconscious. INT. ROXANNE'S APARTMENT - DAY Roxanne awakens, finding herself tied to a chair in her living room. We hear NOISE from a TV in the background as she tries to adjust her vision. Slowly, the blurry figure before her becomes clear. It's Master Mind. He sits on her Lazy-Boy, reading what looks to be some kind of JOURNAL. MASTER MIND Wow, I always thought Uberman was your first superhero - but it looks like our little Roxanne dated a linebacker in college. ROXANNE That's my diary. MASTER MIND So it is. 86. ROXANNE It's personal. MASTER MIND Well, then I wouldn't leave it in your underwear drawer for just anyone to find. He throws the diary over his shoulder. ROXANNE What do you want? MASTER MIND I need your help. ROXANNE So you knock me out and tie me to a chair? MASTER MIND You're not going to like what I'm about to tell you. As she tries to shake off her headache from being knocked unconscious, Roxanne spots something on the TV. ON TELEVISION Brad Helms is huddled behind a van. BRAD HELMS It's chaos here in city square as city police - Behind him, Titan picks up a POLICE CAR and throws it at a PADDY WAGON. Both vehicles EXPLODE on impact. BACK TO SCENE ROXANNE He's really out of control. MASTER MIND Tell me about it. As if finally realizing something, Roxanne looks back at Master Mind. ROXANNE I should have known. You have something to do with this, don't you? - With Titan turning evil. 87. MASTER MIND Well, the evil thing he did by himself. My goal was to give MYSELF purpose by creating an intellectual sparring partner. ROXANNE (confused) You're talking like you made him. MASTER MIND And they call me Master Mind. ROXANNE Let me get this straight. You missed getting your ass kicked, so you made a new guy to kick your ass. That's pathetic. MASTER MIND In hindsight... Roxanne turns back to the TV to see a group of POLICE OFFICERS open fire on Titan. The bullets just deflect off his chest. ROXANNE And his powers, they're just like Uberman's. Why would he have his powers? MASTER MIND (almost ashamed) I had some left over from something. I infused him with it. ROXANNE YOU DID WHAT!? Driven by rage, she struggles to tear out of her bonds. She finally relents, giving Master Mind a look fueled by pure hatred. MASTER MIND Yeah, that's why I decided to tie you up. ROXANNE You did all this because you wanted purpose? MASTER MIND He seemed nice. 88. TELEVISION Titan is standing on top of a destroyed police car. He waves for the camera to zoom in on him. TITAN Closer. I want to show the people my real face. He pulls off his mask, revealing himself as Hal Stewart to the public for the first time. TITAN (CONT'D) Recognize me? BACK TO SCENE ROXANNE Hal Stewart. He's the guy we thought saved that woman and kid. Turned out he was just trying to save his own ass. MASTER MIND Yeah, good to know - NOW! TELEVISION Titan throws the mask over this shoulder and hops off the car. TITAN That's right, I'm really Hal Stewart. Former hero and bowling teacher at Kingpin's Bowling. BACK TO SCENE Roxanne turns to Master Mind, condescending him with her eyes. ROXANNE You picked a bowler to give super powers to? MASTER MIND It's a modest profession! TELEVISION 89. TITAN With my new found power, I've recently started to wonder what sort of legacy I should leave. Should I be a hero? I tried that once before - even saved a lady and her baby from being squashed. I was treated like a god until everyone started to shit on me - Okay, so what if I didn't "purposely" save them! He walks over and puts his hand on a large circular concrete shape just off camera. TITAN Well, I'm going to make something that can't be taken away from me. I'm going to create a permanent monument to my greatness. One that won't be so easily forgotten or erased. The camera pulls back revealing THE GIANT CONCRETE BOWLING BALL from Kingpin's. TITAN I intend to create a new category in the Guinness Book of World's Records by rolling the biggest strike in the history of bowling. He grabs the camera and points it to the DOWNTOWN BUILDINGS. We realize they are PERFECTLY ALIGNED IN BOWLING PIN FORMATION. TITAN My thanks to the city planning commission. This wouldn't have been possible without them. Titan grabs the camera so it's pointing back at him again. TITAN Tell your friends and family to tune in right here to this station at noon tomorrow. BACK TO SCENE ROXANNE My god, he's nuts. That'll destroy the whole business triangle. 90. Master Mind seems to be contemplating something - something bad. ROXANNE What? MASTER MIND My lair is in the direct path of the ball. ROXANNE Oh, real nice. Wouldn't want anything to happen to your hideout, would we? MASTER MIND You don't understand. I have certain equipment that's - that's highly unstable. ROXANNE What do you mean? MASTER MIND I sort of have a hydrogen reactor, okay? ROXANNE A HYDROGEN reactor? MASTER MIND It's experimental - only one in the world...Well, how do you think I power all my inventions? Someone like me can't pay for electricity. The bills would be outrageous. ROXANNE A REACTOR? MASTER MIND It creates 100 times the output of a nuclear one...If destroyed it could... ROXANNE - Vaporize the entire city! MASTER MIND (proudly) Pshaw...the whole eastern seaboard, actually. That little baby is amazing. I'm quite proud of it. (MORE) 91. MASTER MIND(cont'd) (off her deadpan reaction) I mean...we'd better find a way to stop him. Master Mind thinks a moment. MASTER MIND Did Uberman have a hideout? ROXANNE What? MASTER MIND A cave, a solitary fortress of some kind. C'mon, all heros have a place to hang their capes up in. Roxanne, it may be our only chance to find something, a clue, anything that could give us a fighting chance. ROXANNE It's under his house. MASTER MIND Whose house? Roxanne can hardly believe what she's telling him. ROXANNE Wayne Scott's. Master Mind shoots up out of his chair. MASTER MIND Wayne Scott? Uberman was Wayne Scott!? Wayne Scott, the wealthy philanthropist? But he disappeared - ROXANNE (interrupting) He disappeared just over two months ago when you killed him. Not only did you rid the world of a hero, you killed a kind, noble, generous man. Perhaps ashamed, the super villain hangs his head. Master Mind walks behind Roxanne and undoes her bonds. Rubbing her wrists, she watches him as he walks over to the door. 92. ROXANNE (CONT'D) Looks like you got what you always wanted. Uberman is out of the picture and Metro City is doomed. He grabs the door knob and stops, considering her words. MASTER MIND "Metro City doomed." You know, I never thought I'd say something like this, but here it goes - He slowly turns to her, CUE HEROIC MUSIC. MASTER MIND (CONT'D) Not if I have anything to say about it. EXT. WAYNE SCOTT'S MANSION - NIGHT Master Mind stands before the huge, Gothic structure in awe. MASTER MIND Such a dark place for one such as you. I wonder, underneath your noble deeds, what inner demons drove you to your endless crusade for justice? He walks to the front entrance. The double doors have been sealed shut with boards and nails. Master Mind begins to tear them off with his metal hand. INT. WAYNE SCOTT'S MANSION - NIGHT The doors opens. A beam of moonlight immediately pierces the darkness, forming an illuminated path into the heart of the manor. Master Mind enters. Covered in dust and cobwebs, the hall looks like a gigantic crypt. MASTER MIND Good lord, man. You've only been dead for two months. Master Mind walks, coming to a gigantic painted PORTRAIT OF WAYNE SCOTT. He stops to reverently admire the image of his fallen foe. 93. MASTER MIND (CONT'D) A disguise so simple, it's ingenious. No wonder I never caught on. Besides the Armani suit, there's nothing to hide the fact that this is the same person as Uberman. In the picture, he's even standing in the same cheesy, heroic pose with his fists on his hips. MASTER MIND (CONT'D) Two lives, yet in both you were an ideal. Perhaps it was you who was victorious in the end, old friend. A BONGING sound suddenly bellows through the dark halls. Master Mind comes to a grandfather clock standing next to a gigantic BOOKCASE. On the twelfth bong it falls silent. Master Mind begins to slide it across the floor until he hears a loud CLICK. The bookcase slides into the wall, REVEALING A HIDDEN PASSAGE. MASTER MIND (CONT'D) I'll miss how predictable you were. The passage way leads Master Mind to a WORKING ESCALATOR. Master Mind gets off the escalator to see a long hallway with stone walls. He begins to hear strange SOUNDS, almost like MUFFLED SCREAMS, coming from a doorway at the end of the hallway. Master Mind starts walking towards it. As he steps closer, he begins to notice a light cracking through the bottom of the door. MASTER MIND (CONT'D) Hello? Anyone here...besides..all the BIG MEN who are with me now? Nothing. MASTER MIND (CONT'D) (to himself) What's the worst you're gonna find? (MORE) 94. MASTER MIND(cont'd) The man was a boy scout, not a serial killer. He opens the door to his immediate amazement. It's some kind of screening room. A PROJECTOR shoots an image onto A DIRTY WHITE SCREEN hanging on the wall. BEER CANS litter the floor; a table in front of a ripped-up couch is covered in discarded snack goods; and a Kiss Pinball machine stands in the far corner next to a CLOSED DOOR. Master Mind turns his attention to the action on the screen. SCREEN A woman dressed in a leather DOMINATRIX OUTFIT is whipping an overweight man lying on a swing-like device with his butt sticking out. DOMINATRIX IN FILM YOU ARE A WORM! She whips him three times. The man CRIES out in pain. FAT MAN IN FILM PINEAPPLE!!! PINEAPPLE!!! Master Mind's eyes are transfixed on the disturbing imagery. The door by the pinball machine suddenly swings open. WAYNE SCOTT, dressed in raggedy sweats, steps into the room carrying a CAN OF BEER and a bowl of JIFFY-POP. Master Mind cannot believe his horrified eyes. MASTER MIND Ahhhhhh! Wayne Scott is just as startled. WAYNE SCOTT Jesus! He drop his drink and snack to the floor. The two men stare at each other as they struggle to regain their normal breathing patterns. Wayne Scott walks over to the couch, brushes off a thick layer of chip crumbs, and sits down. WAYNE SCOTT (CONT'D) What the hell are you doing here? 95. MASTER MIND I might just ask you the same question. I had thought I incinerated you. WAYNE SCOTT You scared the bejesus out of me. How'd you figure out I was still alive? Wait, how do you know my identity!? MASTER MIND Roxanne told me. As for your ruse, I forgot to line the bottom of the copper cage - Somebody pointed that out to me recently. Figured if they could do it, so could you. But one thing I couldn't figure out - WAYNE SCOTT The skeleton? Something I "borrowed" from a medical school a few months before. MASTER MIND A few months? How long had you been planning this? WAYNE SCOTT I always planned to retire - eventually. I mean, come on, you can't do this sort of thing in your fifties. You'd just look ridiculous. The pieces of the puzzle appear to be coming together in Master Mind's head. MASTER MIND I see it all so clearly now. INT. MASTER MIND'S HYDROFOIL - FLASHBACK Master Mind and his minions cover their eyes as the observatory explodes. MASTER MIND (CONT'D - V.O.) You must have done it just seconds before the observatory exploded. 96. INT. OBSERVATORY - FLASHBACK Similar to what Titan did, Uberman bores out from under the cage. MASTER MIND (CONT'D - V.O.) You bore out from under the cage. Then, using your Uber-Speed, - EXT. OBSERVATORY - FLASHBACK Running in a blur-like haze, Uberman screeches to a halt in front of some bushes. MASTER MIND (CONT'D - V.O.) - you made your way to safety, where you had the skeleton safely hidden away somewhere. EXT OBSERVATORY - SKY - DAY Uberman soars high above the clouds. He looks down at the observatory, which is a mere speck in the distance. MASTER MIND (CONT'D - V.O) (CONT'D) Then you must have flown to a safe distance and waited for the explosion, then... Just as the observatory explodes Uberman aims and throws the SKELETON like a javelin. It soars through the air like a missile, tearing through the flames of the explosion, and crashing right into the windshield of Master Mind's hydrofoil. END OF FLASHBACK Wayne stares at Master Mind, clearly impressed. WAYNE Man, you ARE smart. MASTER MIND But why fake your death? Why go through all of it? You could have just quit. WAYNE SCOTT But the responsibility would still be there. (MORE) 97. WAYNE SCOTT(cont'd) A cop can retire and stop handing out speeding tickets - but people expect more from superheroes. I tell you, a volcano couldn't erupt in Zimbabwe without everyone expecting me to do something about it. I figured, out of sight, out of mind. MASTER MIND And Wayne Scott? Why did he have to disappear? WAYNE SCOTT Both of my lives have so much baggage. It's time for new baggage, you know? Master Mind's is absolutely flabbergasted. MASTER MIND I just can't believe it. This whole time you've been in hiding while a force of great evil is tearing your city apart? Wayne rises to his feet, waving his hands for Master Mind to say no more. WAYNE SCOTT I don't want to hear about it. That's why I don't have a television in here to remind me of all the things I SHOULD be doing. Hell, I could get a wife to do that. MASTER MIND There's a demented supervillain out there about to destroy our - I mean, your city. Wayne shrugs indifferently. MASTER MIND You're really going to do nothing? WAYNE SCOTT Good and evil have a way of balancing themselves out. If this guy is as bad as you say, somebody will rise up to fight him. It's just the order of things. You found me, didn't you? 98. Wayne puts a condescending hand on Master Mind's shoulder. WAYNE SCOTT (CONT'D) I know it's hard, but you'll find someone else someday. He then starts walking to the door. MASTER MIND You're the only one who can stop him. Wayne turns around. WAYNE SCOTT Couldn't if I wanted to. Gotta a plane to catch. MASTER MIND A plane? WAYNE SCOTT Going to Barbados for a little change in climate. Now, if you'll excuse me, I got to go pack. He reads the still defeated look on Master Mind's face. WAYNE SCOTT (CONT'D) You were a good foe. I'm sorry if I've let you down. If it makes a difference, you were the best foe a hero could ask for. MASTER MIND Not smart enough to come up with a full-proof trap. WAYNE SCOTT Well, you did almost have me when you figured out my weakness was copper. Now that made me sweat a little. Took me way too long to drill out from under that cage. MASTER MIND I got lucky. WAYNE SCOTT Anyway, it's a good thing for my sake that I could always count on you for an out. 99. MASTER MIND (suddenly confused) What do you mean? WAYNE SCOTT C'mon, we always threw each other a couple of bones. You would always leave me an out in one of your `full-proof' traps, and I'd never had you incarcerated at a penitentiary that you couldn't eventually escape from. It kept our little game going. Master Mind seems deflated. MASTER MIND Game? - Was that all this ever was to you? You know, I was trying my best every time I fought you. Those `outs' as you call them were unintentional. WAYNE SCOTT Oh. MASTER MIND I guess I was never really a match for you, was I? Wayne shrugs. MASTER MIND (CONT'D) (thoughtfully) Then how can I expect to be one for Titan? A beaten man, Master Mind heads for the door, but stops and turns around. MASTER MIND (CONT'D) What about Roxanne? Wayne unleashes an exhausted sigh. WAYNE SCOTT I think we both got what we wanted out of our relationship. She got a career out of me, and I got plenty of other things out of her. But I'm ready to move on to greener pastures. 100. Master Mind's steel hand clinches into a fist at his side. Wayne's oblivious to this. MASTER MIND I guess I wasn't the villain I thought I was, and you...you weren't the hero I thought you were. He turns to make his exit when he suddenly sees ROXANNE STANDING IN THE DOOR FRAME. Wayne is almost at a loss for words. WAYNE SCOTT Roxanne! How long have you been... ROXANNE Long enough. Roxanne looks at Master Mind. ROXANNE (CONT'D) Don't you have something else you can go do? Master Mind leaves Roxanne and Wayne facing each other in silence. EXT. ANOTHER BAR - DAY Titan emerges with Brad and Frank. He's holding a BEER CAN and a bag of PORK RINDS. TITAN Alright, I want this whole thing to look ESPN professional, understand? A distant MECHANIZED RUMBLE can be heard. The noise rises, signaling the approach of something powerful. Titan and his crew walk out to the center of the plaza as the sound becomes almost deafening. A TANK TRACK as it moves over the street. We PULL BACK to see a whole line of TANKS rolling along the street. PLAZA From the five streets branching off the plaza, a dozen tanks roll toward Titan. 101. Titan turns to Brad and Frank. TITAN (CONT'D) You guys are about to get some good footage. I might need a little room, though. Brad and Frank look at each other and run to take cover behind a nearby building. Meanwhile, Titan nonchalantly sips from his beer as the tanks begin to surround them. FEEDBACK belts out of one of the tank's loudspeaker's, causing Titan to do a mock wince. TANK LOUDSPEAKER Titan, we have orders from the city of Metro to take you into custody. If you do not give your self up willingly, we will be forced to open fire. There's a long pause as no one says anything. TANK LOUDSPEAKER What is your answer? Titan takes a sip of his beverage and UNLEASHES A GIGANTIC BURP - The shockwave of which sends several of the tanks flying into a nearby building. Two of the remaining tanks close in on the villain. Both have him dead to rights at point-blank range with their massive guns. Titan sets down his beer, then calmly plugs a fist into each barrel. They FIRE. The FORCE OF THE BLAST SENDS THEM BOTH FLYING IN OPPOSITE DIRECTIONS where they CRASH into nearby buildings. Titan bends down and pick his beet back up. TITAN (to beer) Miss me? Titan is suddenly bombarded by a massive barrage of machine- gun fire. The force sends him flying into the windshield of a nearby car. 102. He looks up to see an APACHE ASSAULT COPTER. It's nose- mounted GATLING-GUN is turning toward him. Titan gets up to his feet and looks down at his beer can. The bottom of it was blown apart in the blast. TITAN (CONT'D) Didn't mean to get you involved in all of this. He stared daggers up at the helicopter pilot just as the gun gets a bead on him. TITAN (CONT'D) Hey, man! You killed my suds! Titan throws the can up and slaps it with the palm of his hand. It flies with so much force it knocks the helicopter blade clean off. The rest of the Apache crashes to the street like a car dropped off a building. TITAN (CONT'D) That's one was for you, beer. Titan salutes the wreckage and walks away to find Brad and Frank still hiding behind the building. TITAN Guys, please tell me you got that last bit. BRAD HELMS Huh? TITAN You're kidding me. I give you my sexiest moves and you mean to tell me it was for nothing? BRAD HELMS We were afraid something might hit us. TITAN Looks like I've given the story of the century to the wrong man. He thinks about this for a moment, then it hits him. 103. TITAN Wait. What about that other reporter. Blond. Not so lumpy on the topper half, but killer legs. BRAD HELMS Roxanne. You want Roxanne. She's a much better reporter than I am. You want her. TITAN Where can I find her. FRANK We're actually not supposed to give out that sort of information. BRAD HELMS 1314 Mockingbird Lane. I believe she lives in a penthouse. TITAN You've been very helpful. He tosses Brad over his shoulder like a discarded ice cream cone. In the faint distance we see him splash down in the middle of the Metro City river. INT. ABANDONED METRO CITY LIBRARY - DAY Master Mind, pacing anxiously as Plato and Da Vinci pack boxes. Obviously Master Mind is going on the lamb. MASTER MIND Hurry, we must be on our way as soon as possible. DA VINCI Master, why must we flee? MASTER MIND I told you, Titan is too powerful. If he's set on destroying us, there's precious little we could do about it. DA VINCI Where are we going? 104. MASTER MIND To another city, someplace with a shitload of superheroes to fight. We'll start over, we'll go back to doing what we do best. PLATO With our tails between our legs? The old Master Mind would never have let this comment slip by, but as we have seen, he's not the same man. MASTER MIND Plato, do you have a better plan?! Master Mind's cell phone rings. He turns in shame from his men and answers it. MASTER MIND (CONT'D) Hello...Roxanne? INT. ROXANNE'S APARTMENT Roxanne paces back and forth on the phone. ROXANNE What are you going to do about Tighten? INTERCUT between Master Mind and Roxanne on phone. MASTER MIND Right now I'm packing, later I'll have a snack on the train. ROXANNE You're running away? MASTER MIND In a word - yes. ROXANNE You created this monster... MASTER MIND I didn't create this - the god's of irony did and I am eating the crow I so richly deserve. ROXANNE There's no time for self pity. 105. MASTER MIND I'll make the time. Roxanne can't believe what she's hearing. MASTER MIND (CONT'D) You can leave with us. You'll be safe. ROXANNE I'm not going anywhere. MASTER MIND Will you listen to me, no one can stop him. ROXANNE You have to try. The city needs your help. MASTER MIND I'm afraid you have an inflated opinion of me. ROXANNE What the hell's happened to you? The Master Mind I knew would never have run from a fight even though he knew deep in his heart that he didn't have a chance in hell of winning it. It was your best quality. You need to be that man right now...I... MASTER MIND What? ROXANNE (heart felt) I believe in you. Master Mind is taken aback, in a good way. But he catches himself before the words swell his heart. MASTER MIND Sweet words, but that man is dead. Please, Roxanne, just come with me. ROXANNE No...I guess you are a coward after all. Suddenly, there's a loud crash. 106. Roxanne looks up to see a huge hunk of her ceiling has been completely ripped off. Titan is flying above, holding the debris as casually as if it were a paper plate at a barbecue. He looks down at her and smiles. TITAN Man, have I got a story for you. Master Mind can hears Titan's familiar laugh from his side of the line. MASTER MIND Roxanne? Roxanne? EXT. KINGPIN BOWLING - DAY Titan is standing in front of the bowling alley, trying to decide on an appropriate pose for the occasion. TITAN What pose would be best? The corny folded arms thing? He demonstrates, arching his chin proudly in the air. TITAN Or maybe on the hips, like this. It's the classic Superman pose, only not as masculine. TITAN No, makes me look like a flamer pirate. As Titan starts to fix his hair in the window, Frank pretends to fix the lens on his camera as he speaks to Roxanne. FRANK (whispering) Shouldn't we be making a run for it right about now? ROXANNE (whispering) The guy can outrun bullets. I don't think either one of us is in that kind of shape. TITAN She's right, Frank. 107. Frank looks up, stunned that Titan could have possibly heard him. TITAN Also got super hearing. I promise not to keep the both of you long, but you'll thank me when this is all over. Frank and Roxanne exchange helpless expressions. INT. ABANDONED METRO CITY LIBRARY - DAY Master Mind reverently stares up at the painted portrait of his father. MASTER MIND Dad, it's me... (he looks around to make sure no one can hear) ...Bubsy. I know we haven't talked in a while, and I'm sorry. It's been a little crazy trying to live up to a legacy. The painting's menacing stare seems to reach into his very soul. MASTER MIND Anyway...You raised me to be the worst that I could possibly be. And I've tried to live up to that as best as I could - even dropping out of dentistry school like you wanted me to. But I'm about to do something now that would really piss you off. I'm going to go against everything you ever taught me. I hope...I hope that maybe you'll look down at what I'm about to do as not so much a good deed, but more like the outright defiance of a hateful and ungrateful, son. If you could do that, then maybe - in your own little way - you could - for probably the first time - find a reason to be proud of me. He looks back up at the picture. Is it our imagination, or does the painting's stare suddenly seem even angrier? 108. MASTER MIND Well...either way, you're probably going to see me real soon. (calling over his shoulder) Men? Plato and Da Vinci suddenly stop what they're doing and look up at him. PLATO AND DA VINCI Yes Sir? MASTER MIND Stop packing. Our work is not finished here. PLATO AND DA VINCI YES SIR! TELEVISION A news report shows an aerial shot of Titan setting the giant ball down in the middle of a vacant city street. REPORTER We interrupt your regular afternoon programming to show you live footage of a potential dangerous situation in downtown Metro. The former hero knows as Titan is placing what appears to be a giant ball... INT. ABANDONED METRO CITY LIBRARY - CONTINUOUS Da Vinci stops in front of a television set, seeing the news report in progress. REPORTER Hold on...It appears our own Roxanne Ritchi is somehow at the scene. We now go to her with a live report. DA VINCI Sir, I think you should see this! CUT TO: 109. EXT. CITY STREET - DAY Roxanne is standing in front of a camera with a mike in her hand. ROXANNE I'm here with the cause of the destruction in Metro City. He has kidnapped me and a cameraman to chronicle what he refers to as the creation of a monument to his invincibility and overall "Asskickiness." He will use this giant concrete bowling ball to play the largest game of bowling ever using the buildings of downtown Metro City as his pins. Titan suddenly steps into the shot. TITAN And I'm going for the biggest strike ever. He leans into the camera. TITAN And you, Metro City, have a ringside seat as I cement my name in the anal of history. ROXANNE Annals. TITAN What? ROXANNE Nevermind. EXT. CITY STREET - MOMENTS LATER Titan holds up the massive bowling ball, lining up his shot. TITAN (in quiet professional bowler announcer voice) Like Tiger before him, a young savior has come to raise a sport from the ashes. Rookie Hal Stewart, a young man with a dream, realizing that dream here today, folks. (MORE) 110. TITAN(cont'd) One might click there heels and say "There's no place like home" upon finding themselves in such a fantasy. Well, Hal looks very much at home right were he is - with a ball in hand and glory in his sights. INT. METRO CITY LIBRARY - CONTINUOUS In the bowels of Master Mind's hideout, the HYDROGEN REACTOR glows and HUMS MENACINGLY. BACK TO SCENE Roxanne just stand helpless as Frank films away. ROXANNE Hal, I know everyone treated you like shit, but you don't have to do this. TITAN You're right. I don't HAVE to do anything. Isn't that cool? Titan lines up his shot. TITAN Here's one for the record books! Titan flies a few feet and rolls the ball down the main street. ROXANNE Her face is utter horror as she watches the inevitable destruction of Metro City. As the ball rolls - it demolishes everything in it's wake; cars, street lamps - windows shatter as the giant concrete sphere brushes along side buildings. TITAN He smiles in anticipation and uses "body English" to direct the ball. GIANT BOWLING BALL POV It's nearly halfway to its target. ROXANNE 111. She closes her eyes. Titan's smile fades. He looks around as if he hears something we don't. About two hundred feet in front of the first building a GIANT SPIDER WEB flies across the path of the ball, creating a defensive barrier. An enormous letter "M" is etched in the web's center. TITAN (CONT'D) What the...? The ball breaks through the web, but it's speed is greatly reduced. FRANK Look, what's that flying in the air? We suddenly see MASTER MIND FLYING OVER THE ROLLING BALL IN A JET PACK. He quickly pulls out his goo gun and starts laying down a path of sticky plasm to stop the destructive sphere's path. MASTER MIND C'mon, slow down Master Mind looks down to see the meter of the gun close to empty. MASTER MIND C'mon. The ball slows drastically then starts rolling to the side. It heads off an embankment and rolls harmlessly into a CANAL. MASTER MIND Gutterball! TITAN He's furious to say the least. TITAN YOU! Master Mind gives him a mocking grin. MASTER MIND Bowling? What other trailer park sports can you play? 112. TITAN You are becoming a real pain in my ass. I should have done this a long time ago. Titan lunges at his tormentor. Master Mind hits the BOOSTER on his jet pack and heads back toward the other side of the city with Titan in hot pursuit. MASTER MIND (CONT'D) (into walkie talkie) Plato, Da Vinci. Secure Roxanne, he's falling for it. ELSEWHERE A flustered Titan lands. He begins searching the city streets, but Master Mind is nowhere in sight. He turns upon hearing an EEKING sound to his left. Sitting on the ground is a CHIMPANZEE wearing a strange collar. It smiles at him. TITAN What the hell? From behind, Titan is immediately set upon by five more RADIO CONTROLLED APES. TITAN (CONT'D) GODAMNIT! The critters bite hop and hit Titan. As soon as he throws one off two more jump him. Titan breaks free and with his mighty breath blows them across the street into a fruit stand. With Titan out of their sight they begin to attack the fruit. MASTER MIND He's a block away frantically hitting his remote. MASTER MIND Shit! Stupid monkeys and their fruit. Titan flies away from the mad monkeys and lands to find Master Mind sitting on the ground wrapped in a long cape with only his head sticking out. 113. TITAN (CONT'D) No more games. Titan FIRES HIS LASER VISION AT MASTER MIND's CHEST. Master Mind pulls the cloak away to reveal a FIRE HYDRANT. Titan's EYE LASERS burn through the hydrant releasing a high pressure stream of water. Master Mind uses the last remote which dumps two tons of CEMENT mix into the truck. The crowd, police and news crews move in closer when Titan doesn't emerge. Master Mind drops his last remote and walks toward the truck cautiously. MASTER MIND Could it really be that easy-- - BOOM - The back of the truck explodes, throwing dust and concrete everywhere. When the dust clears we see and enraged Titan. MASTER MIND (CONT'D) Didn't think so. As the villain walks toward him, he pulls back his fist to give Master Mind the killing blow. TITAN If you don't mind, I'm going to punch trough your face now. Preparing himself for the end, Master Mind shuts his eyes as a SUDDEN GUST OF WIND BEGINS TO PICK UP. AS Titan goes to strike, a BLURRY FIGURE RUNS IN AND SNATCHES MASTER MIND OUT OF THE AWAY. Stunned, Master Mind begins to feel around his body as if to make sure everything's still in place. MASTER MIND I'm alive. He turns to see UBERMAN standing next to him. MASTER MIND Uberman? 114. The terrified bystanders start to notice the figure standing next to Master Mind. BYSTANDER 1 It's Uberman! BYSTANDER 2 Uberman's alive! BYSTANDER 3 We're saved! As the CROWD CHEERS, A confused Master Mind turns to Metro City's newly resurrected champion. MASTER MIND I thought. UBERMAN So did I. He puts a hand on Master Mind's shoulder. UBERMAN Thank you, old enemy. MASTER MIND For what? UBERMAN Showing me the error of my ways, Showing me I'm meant to be this city's savior, showing me that, while we can try, there is no running away from our true destiny. With that, UBERMAN IS STRICKEN BY A LASER BLAST, INSTANTLY TURNING HIM INTO A CHARRED HUMAN SKELETON. Master Mind turns to see Titan smiling with his STILL SMOKING EYES. TITAN Oh...Did I interrupt something? Master Mind turns to run, but, suddenly Titan is before him. TITAN Where you going, buddy? Titan grabs Master Mind by the collar and throws him across the street into a parked car. 115. TITAN (CONT'D) Welcome to Paintown. Population: you. Master Mind manages to stand on shaky legs. He seems in a daze, unable to move. Titan flies up in the air. TITAN (CONT'D) Time to finish this. With his fist front and center, Titan speeds toward Master Mind. He's like a human torpedo, coming in for the killing blow. Master Mind comes to his senses and puts up his hands. MASTER MIND WAIT!!! Titan screeches to a halt and stops just in front of him like an old Warner Bros cartoon. TITAN What? MASTER MIND Quick joke - What's the capital of Thailand? TITAN Huh - I don't know. MASTER MIND It's bang cock! In a sudden surge of strength, MASTER MIND PUNCHES TITAN IN THE GROIN. The once mighty man instantly drops to his knees, searching, with tears in his eyes, for the proper word to express the pain suddenly surging through his member. TITAN (CONT'D) Ow. Baffled, he looks up at Master Mind's hand and sees his gauntlet is now made ENTIRELY OUT OF COPPER. MASTER MIND So, I guess pennies are good for something. 116. He punches Titan in the face, knocking him out cold. Master Mind looks down on Titan with more than a little pride. Suddenly he hears something behind him. He spins to see the crowd making a strange noise - APPLAUSE. Roxanne comes up to him. The crowd starts to go wild and cheers for Master Mind. He's not sure what to make of it. ROXANNE Pretty strange, huh? MASTER MIND They're cheering for me. ROXANNE You saved them. You saved everybody. How's it feel? Master Mind looks at the smiles all around him. He begins to well up a little. MASTER MIND It's a...it's nice, you know? I usually don't get a lot of feedback. (whispering) But I also kind of caused all this. What happens when they find that out I was the cause of some of this? Roxanne looks at the cheering crowd, then back at Master Mind. ROXANNE What they don't know won't hurt them. MASTER MIND I guess that is all in the past. ROXANNE You're the hero. MASTER MIND I don't think I'd go that far...I mean I just...er... ROXANNE Master Mind? 117. MASTER MIND Yes? ROXANNE Stop talking. She kisses him. The crowd erupts in a cheer. TELEVISION The channel 7 he channel 7 logo zooms in followed by the title "Eye on Metro City." A picture of Master Mind smiling appears on the screen behind her. SAMANTHA SUMMERS Who's bad? Well, not Master Mind. It seems the former villain has done a career 180 after defeating Tighten and saving Metro City from certain enslavement. And here he is getting a full pardon by Metro City's Mayor, Steve Dent. Cut to ceremony on capital steps. The MAYOR is shaking Master Mind's metal gauntlet when it suddenly STARTS TO CRUSH HIS HAND. MAYOR Ahhh! Secret service men quickly start to draw their weapons and take aim at Master Mind. Realizing what's happening, he quickly lets the mayor's hand go and puts his arms in the air. MASTER MIND Sorry - Metal hand. Force of habit. He elbows the mayor. MASTER MIND (CONT'D) We're okay, right? Wincing, the mayor signals the men to put their guns down. WE CUT to video of Titan behind bars in a regular prison. 118. BRAD HELMS And what about Tighten? Is there a prison in existence that can hold this super powered menace? Well, the answer we found is no. A man in a white lab coat stands in front of Titan's cell just out of reach. PRISON SCIENTIST Of course normally he could break out of there anytime, but as you can see we've taken some special precautions. The news camera pans over see Titan in his cell wearing a copper JOCK STRAP with electrical cables hooked to it. Back to Samantha at the desk. BRAD HELMS What is a Hero? It seems never has that question needed to be asked more than it does tonight. We go to our very own Roxanne Ritchi, making her triumphant return to our news desk for the answer. Brad turns. The camera pans over to Roxanne who we now see has been sitting beside him. ROXANNE What is a hero? Well, there are many different kinds. There are those who hear a call, like the policeman or doctor, then there's the kind the public creates in their search for meaning and hope. Then, there are those who have the courage to change. DARK ALLEY - NIGHT A woman is being chased by two large thugs. They're gaining on her. She comes to a brick wall - a dead end. The thugs laugh. THUG #1 Hey, gimme that purse? 119. MASTER MIND (O.S) I don't think it would go with your outfit. The thugs turn around to see Master Mind, standing with his arms folded across his chest. THUG #2 It's Master Mind! Thug #1 draws a knife. THUG #1 So? It's not like he has any superpowers. Thug #1 puts his fingers to his mouth and whistles. Suddenly two more Thugs appear behind Master Mind. MASTER MIND I'm gonna give you a chance to surrender. THUG #1 Four against one. For a Master Mind, you're really bad at math. Master Mind throws a hand signal up in the air. Suddenly a giant robotic foot crashes down on the two men behind him. Thug #1 and Thug #2 drop their knives and raise their hands in the air. Master Mind looks up and waves. MASTER MIND Way to take out those two goons, guys! We see Da Vinci and Plato at the wheel of a gigantic robot. DA VINCI What two goons? The giant robot lifts its foot to check the bottom of it's sole. It KNOCKS OVER WATER TOWER in the process. The woman looks at Master Mind, horrified. 120. MASTER MIND (apologetically) Sorry, we're new at this. THE END
chrisneagu
NOTICE This repository contains the public FTC SDK for the SKYSTONE (2019-2020) competition season. If you are looking for the current season's FTC SDK software, please visit the new and permanent home of the public FTC SDK: FtcRobotController repository Welcome! This GitHub repository contains the source code that is used to build an Android app to control a FIRST Tech Challenge competition robot. To use this SDK, download/clone the entire project to your local computer. Getting Started If you are new to robotics or new to the FIRST Tech Challenge, then you should consider reviewing the FTC Blocks Tutorial to get familiar with how to use the control system: FTC Blocks Online Tutorial Even if you are an advanced Java programmer, it is helpful to start with the FTC Blocks tutorial, and then migrate to the OnBot Java Tool or to Android Studio afterwards. Downloading the Project If you are an Android Studio programmer, there are several ways to download this repo. Note that if you use the Blocks or OnBot Java Tool to program your robot, then you do not need to download this repository. If you are a git user, you can clone the most current version of the repository: git clone https://github.com/FIRST-Tech-Challenge/SKYSTONE.git Or, if you prefer, you can use the "Download Zip" button available through the main repository page. Downloading the project as a .ZIP file will keep the size of the download manageable. You can also download the project folder (as a .zip or .tar.gz archive file) from the Downloads subsection of the Releases page for this repository. Once you have downloaded and uncompressed (if needed) your folder, you can use Android Studio to import the folder ("Import project (Eclipse ADT, Gradle, etc.)"). Getting Help User Documentation and Tutorials FIRST maintains online documentation with information and tutorials on how to use the FIRST Tech Challenge software and robot control system. You can access this documentation using the following link: SKYSTONE Online Documentation Note that the online documentation is an "evergreen" document that is constantly being updated and edited. It contains the most current information about the FIRST Tech Challenge software and control system. Javadoc Reference Material The Javadoc reference documentation for the FTC SDK is now available online. Click on the following link to view the FTC SDK Javadoc documentation as a live website: FTC Javadoc Documentation Documentation for the FTC SDK is also included with this repository. There is a subfolder called "doc" which contains several subfolders: The folder "apk" contains the .apk files for the FTC Driver Station and FTC Robot Controller apps. The folder "javadoc" contains the JavaDoc user documentation for the FTC SDK. Online User Forum For technical questions regarding the Control System or the FTC SDK, please visit the FTC Technology forum: FTC Technology Forum Release Information Version 5.5 (20200824-090813) Version 5.5 requires Android Studio 4.0 or later. New features Adds support for calling custom Java classes from Blocks OpModes (fixes SkyStone issue #161). Classes must be in the org.firstinspires.ftc.teamcode package. Methods must be public static and have no more than 21 parameters. Parameters declared as OpMode, LinearOpMode, Telemetry, and HardwareMap are supported and the argument is provided automatically, regardless of the order of the parameters. On the block, the sockets for those parameters are automatically filled in. Parameters declared as char or java.lang.Character will accept any block that returns text and will only use the first character in the text. Parameters declared as boolean or java.lang.Boolean will accept any block that returns boolean. Parameters declared as byte, java.lang.Byte, short, java.lang.Short, int, java.lang.Integer, long, or java.lang.Long, will accept any block that returns a number and will round that value to the nearest whole number. Parameters declared as float, java.lang.Float, double, java.lang.Double will accept any block that returns a number. Adds telemetry API method for setting display format Classic Monospace HTML (certain tags only) Adds blocks support for switching cameras. Adds Blocks support for TensorFlow Object Detection with a custom model. Adds support for uploading a custom TensorFlow Object Detection model in the Manage page, which is especially useful for Blocks and OnBotJava users. Shows new Control Hub blink codes when the WiFi band is switched using the Control Hub's button (only possible on Control Hub OS 1.1.2) Adds new warnings which can be disabled in the Advanced RC Settings Mismatched app versions warning Unnecessary 2.4 GHz WiFi usage warning REV Hub is running outdated firmware (older than version 1.8.2) Adds support for Sony PS4 gamepad, and reworks how gamepads work on the Driver Station Removes preference which sets gamepad type based on driver position. Replaced with menu which allows specifying type for gamepads with unknown VID and PID Attempts to auto-detect gamepad type based on USB VID and PID If gamepad VID and PID is not known, use type specified by user for that VID and PID If gamepad VID and PID is not known AND the user has not specified a type for that VID and PID, an educated guess is made about how to map the gamepad Driver Station will now attempt to automatically recover from a gamepad disconnecting, and re-assign it to the position it was assigned to when it dropped If only one gamepad is assigned and it drops: it can be recovered If two gamepads are assigned, and have different VID/PID signatures, and only one drops: it will be recovered If two gamepads are assigned, and have different VID/PID signatures, and BOTH drop: both will be recovered If two gamepads are assigned, and have the same VID/PID signatures, and only one drops: it will be recovered If two gamepads are assigned, and have the same VID/PID signatures, and BOTH drop: neither will be recovered, because of the ambiguity of the gamepads when they re-appear on the USB bus. There is currently one known edge case: if there are two gamepads with the same VID/PID signature plugged in, but only one is assigned, and they BOTH drop, it's a 50-50 chance of which one will be chosen for automatic recovery to the assigned position: it is determined by whichever one is re-enumerated first by the USB bus controller. Adds landscape user interface to Driver Station New feature: practice timer with audio cues New feature (Control Hub only): wireless network connection strength indicator (0-5 bars) New feature (Control Hub only): tapping on the ping/channel display will switch to an alternate display showing radio RX dBm and link speed (tap again to switch back) The layout will NOT autorotate. You can switch the layout from the Driver Station's settings menu. Breaking changes Removes support for Android versions 4.4 through 5.1 (KitKat and Lollipop). The minSdkVersion is now 23. Removes the deprecated LinearOpMode methods waitOneFullHardwareCycle() and waitForNextHardwareCycle() Enhancements Handles RS485 address of Control Hub automatically The Control Hub is automatically given a reserved address Existing configuration files will continue to work All addresses in the range of 1-10 are still available for Expansion Hubs The Control Hub light will now normally be solid green, without blinking to indicate the address The Control Hub will not be shown on the Expansion Hub Address Change settings page Improves REV Hub firmware updater The user can now choose between all available firmware update files Version 1.8.2 of the REV Hub firmware is bundled into the Robot Controller app. Text was added to clarify that Expansion Hubs can only be updated via USB. Firmware update speed was reduced to improve reliability Allows REV Hub firmware to be updated directly from the Manage webpage Improves log viewer on Robot Controller Horizontal scrolling support (no longer word wrapped) Supports pinch-to-zoom Uses a monospaced font Error messages are highlighted New color scheme Attempts to force-stop a runaway/stuck OpMode without restarting the entire app Not all types of runaway conditions are stoppable, but if the user code attempts to talk to hardware during the runaway, the system should be able to capture it. Makes various tweaks to the Self Inspect screen Renames "OS version" entry to "Android version" Renames "WiFi Direct Name" to "WiFi Name" Adds Control Hub OS version, when viewing the report of a Control Hub Hides the airplane mode entry, when viewing the report of a Control Hub Removes check for ZTE Speed Channel Changer Shows firmware version for all Expansion and Control Hubs Reworks network settings portion of Manage page All network settings are now applied with a single click The WiFi Direct channel of phone-based Robot Controllers can now be changed from the Manage page WiFi channels are filtered by band (2.4 vs 5 GHz) and whether they overlap with other channels The current WiFi channel is pre-selected on phone-based Robot Controllers, and Control Hubs running OS 1.1.2 or later. On Control Hubs running OS 1.1.2 or later, you can choose to have the system automatically select a channel on the 5 GHz band Improves OnBotJava New light and dark themes replace the old themes (chaos, github, chrome,...) the new default theme is light and will be used when you first update to this version OnBotJava now has a tabbed editor Read-only offline mode Improves function of "exit" menu item on Robot Controller and Driver Station Now guaranteed to be fully stopped and unloaded from memory Shows a warning message if a LinearOpMode exists prematurely due to failure to monitor for the start condition Improves error message shown when the Driver Station and Robot Controller are incompatible with each other Driver Station OpMode Control Panel now disabled while a Restart Robot is in progress Disables advanced settings related to WiFi direct when the Robot Controller is a Control Hub. Tint phone battery icons on Driver Station when low/critical. Uses names "Control Hub Portal" and "Control Hub" (when appropriate) in new configuration files Improve I2C read performance Very large improvement on Control Hub; up to ~2x faster with small (e.g. 6 byte) reads Not as apparent on Expansion Hubs connected to a phone Update/refresh build infrastructure Update to 'androidx' support library from 'com.android.support:appcompat', which is end-of-life Update targetSdkVersion and compileSdkVersion to 28 Update Android Studio's Android plugin to latest Fix reported build timestamp in 'About' screen Add sample illustrating manual webcam use: ConceptWebcam Bug fixes Fixes SkyStone issue #248 Fixes SkyStone issue #232 and modifies bulk caching semantics to allow for cache-preserving MANUAL/AUTO transitions. Improves performance when REV 2M distance sensor is unplugged Improves readability of Toast messages on certain devices Allows a Driver Station to connect to a Robot Controller after another has disconnected Improves generation of fake serial numbers for UVC cameras which do not provide a real serial number Previously some devices would assign such cameras a serial of 0:0 and fail to open and start streaming Fixes ftc_app issue #638. Fixes a slew of bugs with the Vuforia camera monitor including: Fixes bug where preview could be displayed with a wonky aspect ratio Fixes bug where preview could be cut off in landscape Fixes bug where preview got totally messed up when rotating phone Fixes bug where crosshair could drift off target when using webcams Fixes issue in UVC driver on some devices (ftc_app 681) if streaming was started/stopped multiple times in a row Issue manifested as kernel panic on devices which do not have this kernel patch. On affected devices which do have the patch, the issue was manifest as simply a failure to start streaming. The Tech Team believes that the root cause of the issue is a bug in the Linux kernel XHCI driver. A workaround was implemented in the SDK UVC driver. Fixes bug in UVC driver where often half the frames from the camera would be dropped (e.g. only 15FPS delivered during a streaming session configured for 30FPS). Fixes issue where TensorFlow Object Detection would show results whose confidence was lower than the minimum confidence parameter. Fixes a potential exploitation issue of CVE-2019-11358 in OnBotJava Fixes changing the address of an Expansion Hub with additional Expansion Hubs connected to it Preserves the Control Hub's network connection when "Restart Robot" is selected Fixes issue where device scans would fail while the Robot was restarting Fix RenderScript usage Use androidx.renderscript variant: increased compatibility Use RenderScript in Java mode, not native: simplifies build Fixes webcam-frame-to-bitmap conversion problem: alpha channel wasn't being initialized, only R, G, & B Fixes possible arithmetic overflow in Deadline Fixes deadlock in Vuforia webcam support which could cause 5-second delays when stopping OpMode Version 5.4 (20200108-101156) Fixes SkyStone issue #88 Adds an inspection item that notes when a robot controller (Control Hub) is using the factory default password. Fixes SkyStone issue #61 Fixes SkyStone issue #142 Fixes ftc_app issue #417 by adding more current and voltage monitoring capabilities for REV Hubs. Fixes a crash sometimes caused by OnBotJava activity Improves OnBotJava autosave functionality ftc_app #738 Fixes system responsiveness issue when an Expansion Hub is disconnected Fixes issue where IMU initialization could prevent Op Modes from stopping Fixes issue where AndroidTextToSpeech.speak() would fail if it was called too early Adds telemetry.speak() methods and blocks, which cause the Driver Station (if also updated) to speak text Adds and improves Expansion Hub-related warnings Improves Expansion Hub low battery warning Displays the warning immediately after the hub reports it Specifies whether the condition is current or occurred temporarily during an OpMode run Displays which hubs reported low battery Displays warning when hub loses and regains power during an OpMode run Fixes the hub's LED pattern after this condition Displays warning when Expansion Hub is not responding to commands Specifies whether the condition is current or occurred temporarily during an OpMode run Clarifies warning when Expansion Hub is not present at startup Specifies that this condition requires a Robot Restart before the hub can be used. The hub light will now accurately reflect this state Improves logging and reduces log spam during these conditions Syncs the Control Hub time and timezone to a connected web browser programming the robot, if a Driver Station is not available. Adds bulk read functionality for REV Hubs A bulk caching mode must be set at the Hub level with LynxModule#setBulkCachingMode(). This applies to all relevant SDK hardware classes that reference that Hub. The following following Hub bulk caching modes are available: BulkCachingMode.OFF (default): All hardware calls operate as usual. Bulk data can read through LynxModule#getBulkData() and processed manually. BulkCachingMode.AUTO: Applicable hardware calls are served from a bulk read cache that is cleared/refreshed automatically to ensure identical commands don't hit the same cache. The cache can also be cleared manually with LynxModule#clearBulkCache(), although this is not recommended. (advanced users) BulkCachingMode.MANUAL: Same as BulkCachingMode.AUTO except the cache is never cleared automatically. To avoid getting stale data, the cache must be manually cleared at the beginning of each loop body or as the user deems appropriate. Removes PIDF Annotation values added in Rev 5.3 (to AndyMark, goBILDA and TETRIX motor configurations). The new motor types will still be available but their Default control behavior will revert back to Rev 5.2 Adds new ConceptMotorBulkRead sample Opmode to demonstrate and compare Motor Bulk-Read modes for reducing I/O latencies. Version 5.3 (20191004-112306) Fixes external USB/UVC webcam support Makes various bugfixes and improvements to Blocks page, including but not limited to: Many visual tweaks Browser zoom and window resize behave better Resizing the Java preview pane works better and more consistently across browsers The Java preview pane consistently gets scrollbars when needed The Java preview pane is hidden by default on phones Internet Explorer 11 should work Large dropdown lists display properly on lower res screens Disabled buttons are now visually identifiable as disabled A warning is shown if a user selects a TFOD sample, but their device is not compatible Warning messages in a Blocks op mode are now visible by default. Adds goBILDA 5201 and 5202 motors to Robot Configurator Adds PIDF Annotation values to AndyMark, goBILDA and TETRIX motor configurations. This has the effect of causing the RUN_USING_ENCODERS and RUN_TO_POSITION modes to use PIDF vs PID closed loop control on these motors. This should provide more responsive, yet stable, speed control. PIDF adds Feedforward control to the basic PID control loop. Feedforward is useful when controlling a motor's speed because it "anticipates" how much the control voltage must change to achieve a new speed set-point, rather than requiring the integrated error to change sufficiently. The PIDF values were chosen to provide responsive, yet stable, speed control on a lightly loaded motor. The more heavily a motor is loaded (drag or friction), the more noticable the PIDF improvement will be. Fixes startup crash on Android 10 Fixes ftc_app issue #712 (thanks to FROGbots-4634) Fixes ftc_app issue #542 Allows "A" and lowercase letters when naming device through RC and DS apps. Version 5.2 (20190905-083277) Fixes extra-wide margins on settings activities, and placement of the new configuration button Adds Skystone Vuforia image target data. Includes sample Skystone Vuforia Navigation op modes (Java). Includes sample Skystone Vuforia Navigation op modes (Blocks). Adds TensorFlow inference model (.tflite) for Skystone game elements. Includes sample Skystone TensorFlow op modes (Java). Includes sample Skystone TensorFlow op modes (Blocks). Removes older (season-specific) sample op modes. Includes 64-bit support (to comply with Google Play requirements). Protects against Stuck OpModes when a Restart Robot is requested. (Thanks to FROGbots-4634) (ftc_app issue #709) Blocks related changes: Fixes bug with blocks generated code when hardware device name is a java or javascript reserved word. Shows generated java code for blocks, even when hardware items are missing from the active configuration. Displays warning icon when outdated Vuforia and TensorFlow blocks are used (SkyStone issue #27) Version 5.1 (20190820-222104) Defines default PIDF parameters for the following motors: REV Core Hex Motor REV 20:1 HD Hex Motor REV 40:1 HD Hex Motor Adds back button when running on a device without a system back button (such as a Control Hub) Allows a REV Control Hub to update the firmware on a REV Expansion Hub via USB Fixes SkyStone issue #9 Fixes ftc_app issue #715 Prevents extra DS User clicks by filtering based on current state. Prevents incorrect DS UI state changes when receiving new OpMode list from RC Adds support for REV Color Sensor V3 Adds a manual-refresh DS Camera Stream for remotely viewing RC camera frames. To show the stream on the DS, initialize but do not run a stream-enabled opmode, select the Camera Stream option in the DS menu, and tap the image to refresh. This feature is automatically enabled when using Vuforia or TFOD—no additional RC configuration is required for typical use cases. To hide the stream, select the same menu item again. Note that gamepads are disabled and the selected opmode cannot be started while the stream is open as a safety precaution. To use custom streams, consult the API docs for CameraStreamServer#setSource and CameraStreamSource. Adds many Star Wars sounds to RobotController resources. Added SKYSTONE Sounds Chooser Sample Program. Switches out startup, connect chimes, and error/warning sounds for Star Wars sounds Updates OnBot Java to use a WebSocket for communication with the robot The OnBot Java page no longer has to do a full refresh when a user switches from editing one file to another Known issues: Camera Stream The Vuforia camera stream inherits the issues present in the phone preview (namely ftc_app issue #574). This problem does not affect the TFOD camera stream even though it receives frames from Vuforia. The orientation of the stream frames may not always match the phone preview. For now, these frames may be rotated manually via a custom CameraStreamSource if desired. OnBotJava Browser back button may not always work correctly It's possible for a build to be queued, but not started. The OnBot Java build console will display a warning if this occurs. A user might not realize they are editing a different file if the user inadvertently switches from one file to another since this switch is now seamless. The name of the currently open file is displayed in the browser tab. Version 5.0 (built on 19.06.14) Support for the REV Robotics Control Hub. Adds a Java preview pane to the Blocks editor. Adds a new offline export feature to the Blocks editor. Display wifi channel in Network circle on Driver Station. Adds calibration for Logitech C270 Updates build tooling and target SDK. Compliance with Google's permissions infrastructure (Required after build tooling update). Keep Alives to mitigate the Motorola wifi scanning problem. Telemetry substitute no longer necessary. Improves Vuforia error reporting. Fixes ftctechnh/ftc_app issues 621, 713. Miscellaneous bug fixes and improvements. Version 4.3 (built on 18.10.31) Includes missing TensorFlow-related libraries and files. Version 4.2 (built on 18.10.30) Includes fix to avoid deadlock situation with WatchdogMonitor which could result in USB communication errors. Comm error appeared to require that user disconnect USB cable and restart the Robot Controller app to recover. robotControllerLog.txt would have error messages that included the words "E RobotCore: lynx xmit lock: #### abandoning lock:" Includes fix to correctly list the parent module address for a REV Robotics Expansion Hub in a configuration (.xml) file. Bug in versions 4.0 and 4.1 would incorrect list the address module for a parent REV Robotics device as "1". If the parent module had a higher address value than the daisy-chained module, then this bug would prevent the Robot Controller from communicating with the downstream Expansion Hub. Added requirement for ACCESS_COARSE_LOCATION to allow a Driver Station running Android Oreo to scan for Wi-Fi Direct devices. Added google() repo to build.gradle because aapt2 must be downloaded from the google() repository beginning with version 3.2 of the Android Gradle Plugin. Important Note: Android Studio users will need to be connected to the Internet the first time build the ftc_app project. Internet connectivity is required for the first build so the appropriate files can be downloaded from the Google repository. Users should not need to be connected to the Internet for subsequent builds. This should also fix buid issue where Android Studio would complain that it "Could not find com.android.tools.lint:lint-gradle:26.1.4" (or similar). Added support for REV Spark Mini motor controller as part of the configuration menu for a servo/PWM port on the REV Expansion Hub. Provide examples for playing audio files in an Op Mode. Block Development Tool Changes Includes a fix for a problem with the Velocity blocks that were reported in the FTC Technology forum (Blocks Programming subforum). Change the "Save completed successfully." message to a white color so it will contrast with a green background. Fixed the "Download image" feature so it will work if there are text blocks in the op mode. Introduce support for Google's TensorFlow Lite technology for object detetion for 2018-2019 game. TensorFlow lite can recognize Gold Mineral and Silver Mineral from 2018-2019 game. Example Java and Block op modes are included to show how to determine the relative position of the gold block (left, center, right). Version 4.1 (released on 18.09.24) Changes include: Fix to prevent crash when deprecated configuration annotations are used. Change to allow FTC Robot Controller APK to be auto-updated using FIRST Global Control Hub update scripts. Removed samples for non supported / non legal hardware. Improvements to Telemetry.addData block with "text" socket. Updated Blocks sample op mode list to include Rover Ruckus Vuforia example. Update SDK library version number. Version 4.0 (released on 18.09.12) Changes include: Initial support for UVC compatible cameras If UVC camera has a unique serial number, RC will detect and enumerate by serial number. If UVC camera lacks a unique serial number, RC will only support one camera of that type connected. Calibration settings for a few cameras are included (see TeamCode/src/main/res/xml/teamwebcamcalibrations.xml for details). User can upload calibration files from Program and Manage web interface. UVC cameras seem to draw a fair amount of electrical current from the USB bus. This does not appear to present any problems for the REV Robotics Control Hub. This does seem to create stability problems when using some cameras with an Android phone-based Robot Controller. FTC Tech Team is investigating options to mitigate this issue with the phone-based Robot Controllers. Updated sample Vuforia Navigation and VuMark Op Modes to demonstrate how to use an internal phone-based camera and an external UVC webcam. Support for improved motor control. REV Robotics Expansion Hub firmware 1.8 and greater will support a feed forward mechanism for closed loop motor control. FTC SDK has been modified to support PIDF coefficients (proportional, integral, derivative, and feed forward). FTC Blocks development tool modified to include PIDF programming blocks. Deprecated older PID-related methods and variables. REV's 1.8.x PIDF-related changes provide a more linear and accurate way to control a motor. Wireless Added 5GHz support for wireless channel changing for those devices that support it. Tested with Moto G5 and E4 phones. Also tested with other (currently non-approved) phones such as Samsung Galaxy S8. Improved Expansion Hub firmware update support in Robot Controller app Changes to make the system more robust during the firmware update process (when performed through Robot Controller app). User no longer has to disconnect a downstream daisy-chained Expansion Hub when updating an Expansion Hub's firmware. If user is updating an Expansion Hub's firmware through a USB connection, he/she does not have to disconnect RS485 connection to other Expansion Hubs. The user still must use a USB connection to update an Expansion Hub's firmware. The user cannot update the Expansion Hub firmware for a downstream device that is daisy chained through an RS485 connection. If an Expansion Hub accidentally gets "bricked" the Robot Controller app is now more likely to recognize the Hub when it scans the USB bus. Robot Controller app should be able to detect an Expansion Hub, even if it accidentally was bricked in a previous update attempt. Robot Controller app should be able to install the firmware onto the Hub, even if if accidentally was bricked in a previous update attempt. Resiliency FTC software can detect and enable an FTDI reset feature that is available with REV Robotics v1.8 Expansion Hub firmware and greater. When enabled, the Expansion Hub can detect if it hasn't communicated with the Robot Controller over the FTDI (USB) connection. If the Hub hasn't heard from the Robot Controller in a while, it will reset the FTDI connection. This action helps system recover from some ESD-induced disruptions. Various fixes to improve reliability of FTC software. Blocks Fixed errors with string and list indices in blocks export to java. Support for USB connected UVC webcams. Refactored optimized Blocks Vuforia code to support Rover Ruckus image targets. Added programming blocks to support PIDF (proportional, integral, derivative and feed forward) motor control. Added formatting options (under Telemetry and Miscellaneous categories) so user can set how many decimal places to display a numerical value. Support to play audio files (which are uploaded through Blocks web interface) on Driver Station in addition to the Robot Controller. Fixed bug with Download Image of Blocks feature. Support for REV Robotics Blinkin LED Controller. Support for REV Robotics 2m Distance Sensor. Added support for a REV Touch Sensor (no longer have to configure as a generic digital device). Added blocks for DcMotorEx methods. These are enhanced methods that you can use when supported by the motor controller hardware. The REV Robotics Expansion Hub supports these enhanced methods. Enhanced methods include methods to get/set motor velocity (in encoder pulses per second), get/set PIDF coefficients, etc.. Modest Improvements in Logging Decrease frequency of battery checker voltage statements. Removed non-FTC related log statements (wherever possible). Introduced a "Match Logging" feature. Under "Settings" a user can enable/disable this feature (it's disabled by default). If enabled, user provides a "Match Number" through the Driver Station user interface (top of the screen). The Match Number is used to create a log file specifically with log statements from that particular Op Mode run. Match log files are stored in /sdcard/FIRST/matlogs on the Robot Controller. Once an op mode run is complete, the Match Number is cleared. This is a convenient way to create a separate match log with statements only related to a specific op mode run. New Devices Support for REV Robotics Blinkin LED Controller. Support for REV Robotics 2m Distance Sensor. Added configuration option for REV 20:1 HD Hex Motor. Added support for a REV Touch Sensor (no longer have to configure as a generic digital device). Miscellaneous Fixed some errors in the definitions for acceleration and velocity in our javadoc documentation. Added ability to play audio files on Driver Station When user is configuring an Expansion Hub, the LED on the Expansion Hub will change blink pattern (purple-cyan) to indicate which Hub is currently being configured. Renamed I2cSensorType to I2cDeviceType. Added an external sample Op Mode that demonstrates localization using 2018-2019 (Rover Ruckus presented by QualComm) Vuforia targets. Added an external sample Op Mode that demonstrates how to use the REV Robotics 2m Laser Distance Sensor. Added an external sample Op Mode that demonstrates how to use the REV Robotics Blinkin LED Controller. Re-categorized external Java sample Op Modes to "TeleOp" instead of "Autonomous". Known issues: Initial support for UVC compatible cameras UVC cameras seem to draw significant amount of current from the USB bus. This does not appear to present any problems for the REV Robotics Control Hub. This does seem to create stability problems when using some cameras with an Android phone-based Robot Controller. FTC Tech Team is investigating options to mitigate this issue with the phone-based Robot Controllers. There might be a possible deadlock which causes the RC to become unresponsive when using a UVC webcam with a Nougat Android Robot Controller. Wireless When user selects a wireless channel, this channel does not necessarily persist if the phone is power cycled. Tech Team is hoping to eventually address this issue in a future release. Issue has been present since apps were introduced (i.e., it is not new with the v4.0 release). Wireless channel is not currently displayed for WiFi Direct connections. Miscellaneous The blink indication feature that shows which Expansion Hub is currently being configured does not work for a newly created configuration file. User has to first save a newly created configuration file and then close and re-edit the file in order for blink indicator to work. Version 3.6 (built on 17.12.18) Changes include: Blocks Changes Uses updated Google Blockly software to allow users to edit their op modes on Apple iOS devices (including iPad and iPhone). Improvement in Blocks tool to handle corrupt op mode files. Autonomous op modes should no longer get switched back to tele-op after re-opening them to be edited. The system can now detect type mismatches during runtime and alert the user with a message on the Driver Station. Updated javadoc documentation for setPower() method to reflect correct range of values (-1 to +1). Modified VuforiaLocalizerImpl to allow for user rendering of frames Added a user-overrideable onRenderFrame() method which gets called by the class's renderFrame() method. Version 3.5 (built on 17.10.30) Changes with version 3.5 include: Introduced a fix to prevent random op mode stops, which can occur after the Robot Controller app has been paused and then resumed (for example, when a user temporarily turns off the display of the Robot Controller phone, and then turns the screen back on). Introduced a fix to prevent random op mode stops, which were previously caused by random peer disconnect events on the Driver Station. Fixes issue where log files would be closed on pause of the RC or DS, but not re-opened upon resume. Fixes issue with battery handler (voltage) start/stop race. Fixes issue where Android Studio generated op modes would disappear from available list in certain situations. Fixes problem where OnBot Java would not build on REV Robotics Control Hub. Fixes problem where OnBot Java would not build if the date and time on the Robot Controller device was "rewound" (set to an earlier date/time). Improved error message on OnBot Java that occurs when renaming a file fails. Removed unneeded resources from android.jar binaries used by OnBot Java to reduce final size of Robot Controller app. Added MR_ANALOG_TOUCH_SENSOR block to Blocks Programming Tool. Version 3.4 (built on 17.09.06) Changes with version 3.4 include: Added telemetry.update() statement for BlankLinearOpMode template. Renamed sample Block op modes to be more consistent with Java samples. Added some additional sample Block op modes. Reworded OnBot Java readme slightly. Version 3.3 (built on 17.09.04) This version of the software includes improves for the FTC Blocks Programming Tool and the OnBot Java Programming Tool. Changes with verion 3.3 include: Android Studio ftc_app project has been updated to use Gradle Plugin 2.3.3. Android Studio ftc_app project is already using gradle 3.5 distribution. Robot Controller log has been renamed to /sdcard/RobotControllerLog.txt (note that this change was actually introduced w/ v3.2). Improvements in I2C reliability. Optimized I2C read for REV Expansion Hub, with v1.7 firmware or greater. Updated all external/samples (available through OnBot and in Android project folder). Vuforia Added support for VuMarks that will be used for the 2017-2018 season game. Blocks Update to latest Google Blockly release. Sample op modes can be selected as a template when creating new op mode. Fixed bug where the blocks would disappear temporarily when mouse button is held down. Added blocks for Range.clip and Range.scale. User can now disable/enable Block op modes. Fix to prevent occasional Blocks deadlock. OnBot Java Significant improvements with autocomplete function for OnBot Java editor. Sample op modes can be selected as a template when creating new op mode. Fixes and changes to complete hardware setup feature. Updated (and more useful) onBot welcome message. Known issues: Android Studio After updating to the new v3.3 Android Studio project folder, if you get error messages indicating "InvalidVirtualFileAccessException" then you might need to do a File->Invalidate Caches / Restart to clear the error. OnBot Java Sometimes when you push the build button to build all op modes, the RC returns an error message that the build failed. If you press the build button a second time, the build typically suceeds. Version 3.2 (built on 17.08.02) This version of the software introduces the "OnBot Java" Development Tool. Similar to the FTC Blocks Development Tool, the FTC OnBot Java Development Tool allows a user to create, edit and build op modes dynamically using only a Javascript-enabled web browser. The OnBot Java Development Tool is an integrated development environment (IDE) that is served up by the Robot Controller. Op modes are created and edited using a Javascript-enabled browser (Google Chromse is recommended). Op modes are saved on the Robot Controller Android device directly. The OnBot Java Development Tool provides a Java programming environment that does NOT need Android Studio. Changes with version 3.2 include: Enhanced web-based development tools Introduction of OnBot Java Development Tool. Web-based programming and management features are "always on" (user no longer needs to put Robot Controller into programming mode). Web-based management interface (where user can change Robot Controller name and also easily download Robot Controller log file). OnBot Java, Blocks and Management features available from web based interface. Blocks Programming Development Tool: Changed "LynxI2cColorRangeSensor" block to "REV Color/range sensor" block. Fixed tooltip for ColorSensor.isLightOn block. Added blocks for ColorSensor.getNormalizedColors and LynxI2cColorRangeSensor.getNormalizedColors. Added example op modes for digital touch sensor and REV Robotics Color Distance sensor. User selectable color themes. Includes many minor enhancements and fixes (too numerous to list). Known issues: Auto complete function is incomplete and does not support the following (for now): Access via this keyword Access via super keyword Members of the super cloass, not overridden by the class Any methods provided in the current class Inner classes Can't handle casted objects Any objects coming from an parenthetically enclosed expression Version 3.10 (built on 17.05.09) This version of the software provides support for the REV Robotics Expansion Hub. This version also includes improvements in the USB communication layer in an effort to enhance system resiliency. If you were using a 2.x version of the software previously, updating to version 3.1 requires that you also update your Driver Station software in addition to updating the Robot Controller software. Also note that in version 3.10 software, the setMaxSpeed and getMaxSpeed methods are no longer available (not deprecated, they have been removed from the SDK). Also note that the the new 3.x software incorporates motor profiles that a user can select as he/she configures the robot. Changes include: Blocks changes Added VuforiaTrackableDefaultListener.getPose and Vuforia.trackPose blocks. Added optimized blocks support for Vuforia extended tracking. Added atan2 block to the math category. Added useCompetitionFieldTargetLocations parameter to Vuforia.initialize block. If set to false, the target locations are placed at (0,0,0) with target orientation as specified in https://github.com/gearsincorg/FTCVuforiaDemo/blob/master/Robot_Navigation.java tutorial op mode. Incorporates additional improvements to USB comm layer to improve system resiliency (to recover from a greater number of communication disruptions). Additional Notes Regarding Version 3.00 (built on 17.04.13) In addition to the release changes listed below (see section labeled "Version 3.00 (built on 17.04.013)"), version 3.00 has the following important changes: Version 3.00 software uses a new version of the FTC Robocol (robot protocol). If you upgrade to v3.0 on the Robot Controller and/or Android Studio side, you must also upgrade the Driver Station software to match the new Robocol. Version 3.00 software removes the setMaxSpeed and getMaxSpeed methods from the DcMotor class. If you have an op mode that formerly used these methods, you will need to remove the references/calls to these methods. Instead, v3.0 provides the max speed information through the use of motor profiles that are selected by the user during robot configuration. Version 3.00 software currently does not have a mechanism to disable extra i2c sensors. We hope to re-introduce this function with a release in the near future. Version 3.00 (built on 17.04.13) *** Use this version of the software at YOUR OWN RISK!!! *** This software is being released as an "alpha" version. Use this version at your own risk! This pre-release software contains SIGNIFICANT changes, including changes to the Wi-Fi Direct pairing mechanism, rewrites of the I2C sensor classes, changes to the USB/FTDI layer, and the introduction of support for the REV Robotics Expansion Hub and the REV Robotics color-range-light sensor. These changes were implemented to improve the reliability and resiliency of the FTC control system. Please note, however, that version 3.00 is considered "alpha" code. This code is being released so that the FIRST community will have an opportunity to test the new REV Expansion Hub electronics module when it becomes available in May. The developers do not recommend using this code for critical applications (i.e., competition use). *** Use this version of the software at YOUR OWN RISK!!! *** Changes include: Major rework of sensor-related infrastructure. Includes rewriting sensor classes to implement synchronous I2C communication. Fix to reset Autonomous timer back to 30 seconds. Implementation of specific motor profiles for approved 12V motors (includes Tetrix, AndyMark, Matrix and REV models). Modest improvements to enhance Wi-Fi P2P pairing. Fixes telemetry log addition race. Publishes all the sources (not just a select few). Includes Block programming improvements Addition of optimized Vuforia blocks. Auto scrollbar to projects and sounds pages. Fixed blocks paste bug. Blocks execute after while-opModeIsActive loop (to allow for cleanup before exiting op mode). Added gyro integratedZValue block. Fixes bug with projects page for Firefox browser. Added IsSpeaking block to AndroidTextToSpeech. Implements support for the REV Robotics Expansion Hub Implements support for integral REV IMU (physically installed on I2C bus 0, uses same Bosch BNO055 9 axis absolute orientation sensor as Adafruit 9DOF abs orientation sensor). - Implements support for REV color/range/light sensor. Provides support to update Expansion Hub firmware through FTC SDK. Detects REV firmware version and records in log file. Includes support for REV Control Hub (note that the REV Control Hub is not yet approved for FTC use). Implements FTC Blocks programming support for REV Expansion Hub and sensor hardware. Detects and alerts when I2C device disconnect. Version 2.62 (built on 17.01.07) Added null pointer check before calling modeToByte() in finishModeSwitchIfNecessary method for ModernRoboticsUsbDcMotorController class. Changes to enhance Modern Robotics USB protocol robustness. Version 2.61 (released on 16.12.19) Blocks Programming mode changes: Fix to correct issue when an exception was thrown because an OpticalDistanceSensor object appears twice in the hardware map (the second time as a LightSensor). Version 2.6 (released on 16.12.16) Fixes for Gyro class: Improve (decrease) sensor refresh latency. fix isCalibrating issues. Blocks Programming mode changes: Blocks now ignores a device in the configuration xml if the name is empty. Other devices work in configuration work fine. Version 2.5 (internal release on released on 16.12.13) Blocks Programming mode changes: Added blocks support for AdafruitBNO055IMU. Added Download Op Mode button to FtcBocks.html. Added support for copying blocks in one OpMode and pasting them in an other OpMode. The clipboard content is stored on the phone, so the programming mode server must be running. Modified Utilities section of the toolbox. In Programming Mode, display information about the active connections. Fixed paste location when workspace has been scrolled. Added blocks support for the android Accelerometer. Fixed issue where Blocks Upload Op Mode truncated name at first dot. Added blocks support for Android SoundPool. Added type safety to blocks for Acceleration. Added type safety to blocks for AdafruitBNO055IMU.Parameters. Added type safety to blocks for AnalogInput. Added type safety to blocks for AngularVelocity. Added type safety to blocks for Color. Added type safety to blocks for ColorSensor. Added type safety to blocks for CompassSensor. Added type safety to blocks for CRServo. Added type safety to blocks for DigitalChannel. Added type safety to blocks for ElapsedTime. Added type safety to blocks for Gamepad. Added type safety to blocks for GyroSensor. Added type safety to blocks for IrSeekerSensor. Added type safety to blocks for LED. Added type safety to blocks for LightSensor. Added type safety to blocks for LinearOpMode. Added type safety to blocks for MagneticFlux. Added type safety to blocks for MatrixF. Added type safety to blocks for MrI2cCompassSensor. Added type safety to blocks for MrI2cRangeSensor. Added type safety to blocks for OpticalDistanceSensor. Added type safety to blocks for Orientation. Added type safety to blocks for Position. Added type safety to blocks for Quaternion. Added type safety to blocks for Servo. Added type safety to blocks for ServoController. Added type safety to blocks for Telemetry. Added type safety to blocks for Temperature. Added type safety to blocks for TouchSensor. Added type safety to blocks for UltrasonicSensor. Added type safety to blocks for VectorF. Added type safety to blocks for Velocity. Added type safety to blocks for VoltageSensor. Added type safety to blocks for VuforiaLocalizer.Parameters. Added type safety to blocks for VuforiaTrackable. Added type safety to blocks for VuforiaTrackables. Added type safety to blocks for enums in AdafruitBNO055IMU.Parameters. Added type safety to blocks for AndroidAccelerometer, AndroidGyroscope, AndroidOrientation, and AndroidTextToSpeech. Version 2.4 (released on 16.11.13) Fix to avoid crashing for nonexistent resources. Blocks Programming mode changes: Added blocks to support OpenGLMatrix, MatrixF, and VectorF. Added blocks to support AngleUnit, AxesOrder, AxesReference, CameraDirection, CameraMonitorFeedback, DistanceUnit, and TempUnit. Added blocks to support Acceleration. Added blocks to support LinearOpMode.getRuntime. Added blocks to support MagneticFlux and Position. Fixed typos. Made blocks for ElapsedTime more consistent with other objects. Added blocks to support Quaternion, Velocity, Orientation, AngularVelocity. Added blocks to support VuforiaTrackables, VuforiaTrackable, VuforiaLocalizer, VuforiaTrackableDefaultListener. Fixed a few blocks. Added type checking to new blocks. Updated to latest blockly. Added default variable blocks to navigation and matrix blocks. Fixed toolbox entry for openGLMatrix_rotation_withAxesArgs. When user downloads Blocks-generated op mode, only the .blk file is downloaded. When user uploads Blocks-generated op mode (.blk file), Javascript code is auto generated. Added DbgLog support. Added logging when a blocks file is read/written. Fixed bug to properly render blocks even if missing devices from configuration file. Added support for additional characters (not just alphanumeric) for the block file names (for download and upload). Added support for OpMode flavor (“Autonomous” or “TeleOp”) and group. Changes to Samples to prevent tutorial issues. Incorporated suggested changes from public pull 216 (“Replace .. paths”). Remove Servo Glitches when robot stopped. if user hits “Cancels” when editing a configuration file, clears the unsaved changes and reverts to original unmodified configuration. Added log info to help diagnose why the Robot Controller app was terminated (for example, by watch dog function). Added ability to transfer log from the controller. Fixed inconsistency for AngularVelocity Limit unbounded growth of data for telemetry. If user does not call telemetry.update() for LinearOpMode in a timely manner, data added for telemetry might get lost if size limit is exceeded. Version 2.35 (released on 16.10.06) Blockly programming mode - Removed unnecesary idle() call from blocks for new project. Version 2.30 (released on 16.10.05) Blockly programming mode: Mechanism added to save Blockly op modes from Programming Mode Server onto local device To avoid clutter, blocks are displayed in categorized folders Added support for DigitalChannel Added support for ModernRoboticsI2cCompassSensor Added support for ModernRoboticsI2cRangeSensor Added support for VoltageSensor Added support for AnalogInput Added support for AnalogOutput Fix for CompassSensor setMode block Vuforia Fix deadlock / make camera data available while Vuforia is running. Update to Vuforia 6.0.117 (recommended by Vuforia and Google to close security loophole). Fix for autonomous 30 second timer bug (where timer was in effect, even though it appeared to have timed out). opModeIsActive changes to allow cleanup after op mode is stopped (with enforced 2 second safety timeout). Fix to avoid reading i2c twice. Updated sample Op Modes. Improved logging and fixed intermittent freezing. Added digital I/O sample. Cleaned up device names in sample op modes to be consistent with Pushbot guide. Fix to allow use of IrSeekerSensorV3. Version 2.20 (released on 16.09.08) Support for Modern Robotics Compass Sensor. Support for Modern Robotics Range Sensor. Revise device names for Pushbot templates to match the names used in Pushbot guide. Fixed bug so that IrSeekerSensorV3 device is accessible as IrSeekerSensor in hardwareMap. Modified computer vision code to require an individual Vuforia license (per legal requirement from PTC). Minor fixes. Blockly enhancements: Support for Voltage Sensor. Support for Analog Input. Support for Analog Output. Support for Light Sensor. Support for Servo Controller. Version 2.10 (released on 16.09.03) Support for Adafruit IMU. Improvements to ModernRoboticsI2cGyro class Block on reset of z axis. isCalibrating() returns true while gyro is calibration. Updated sample gyro program. Blockly enhancements support for android.graphics.Color. added support for ElapsedTime. improved look and legibility of blocks. support for compass sensor. support for ultrasonic sensor. support for IrSeeker. support for LED. support for color sensor. support for CRServo prompt user to configure robot before using programming mode. Provides ability to disable audio cues. various bug fixes and improvements. Version 2.00 (released on 16.08.19) This is the new release for the upcoming 2016-2017 FIRST Tech Challenge Season. Channel change is enabled in the FTC Robot Controller app for Moto G 2nd and 3rd Gen phones. Users can now use annotations to register/disable their Op Modes. Changes in the Android SDK, JDK and build tool requirements (minsdk=19, java 1.7, build tools 23.0.3). Standardized units in analog input. Cleaned up code for existing analog sensor classes. setChannelMode and getChannelMode were REMOVED from the DcMotorController class. This is important - we no longer set the motor modes through the motor controller. setMode and getMode were added to the DcMotor class. ContinuousRotationServo class has been added to the FTC SDK. Range.clip() method has been overloaded so it can support this operation for int, short and byte integers. Some changes have been made (new methods added) on how a user can access items from the hardware map. Users can now set the zero power behavior for a DC motor so that the motor will brake or float when power is zero. Prototype Blockly Programming Mode has been added to FTC Robot Controller. Users can place the Robot Controller into this mode, and then use a device (such as a laptop) that has a Javascript enabled browser to write Blockly-based Op Modes directly onto the Robot Controller. Users can now configure the robot remotely through the FTC Driver Station app. Android Studio project supports Android Studio 2.1.x and compile SDK Version 23 (Marshmallow). Vuforia Computer Vision SDK integrated into FTC SDK. Users can use sample vision targets to get localization information on a standard FTC field. Project structure has been reorganized so that there is now a TeamCode package that users can use to place their local/custom Op Modes into this package. Inspection function has been integrated into the FTC Robot Controller and Driver Station Apps (Thanks Team HazMat… 9277 & 10650!). Audio cues have been incorporated into FTC SDK. Swap mechanism added to FTC Robot Controller configuration activity. For example, if you have two motor controllers on a robot, and you misidentified them in your configuration file, you can use the Swap button to swap the devices within the configuration file (so you do not have to manually re-enter in the configuration info for the two devices). Fix mechanism added to all user to replace an electronic module easily. For example, suppose a servo controller dies on your robot. You replace the broken module with a new module, which has a different serial number from the original servo controller. You can use the Fix button to automatically reconfigure your configuration file to use the serial number of the new module. Improvements made to fix resiliency and responsiveness of the system. For LinearOpMode the user now must for a telemetry.update() to update the telemetry data on the driver station. This update() mechanism ensures that the driver station gets the updated data properly and at the same time. The Auto Configure function of the Robot Controller is now template based. If there is a commonly used robot configuration, a template can be created so that the Auto Configure mechanism can be used to quickly configure a robot of this type. The logic to detect a runaway op mode (both in the LinearOpMode and OpMode types) and to abort the run, then auto recover has been improved/implemented. Fix has been incorporated so that Logitech F310 gamepad mappings will be correct for Marshmallow users. Release 16.07.08 For the ftc_app project, the gradle files have been modified to support Android Studio 2.1.x. Release 16.03.30 For the MIT App Inventor, the design blocks have new icons that better represent the function of each design component. Some changes were made to the shutdown logic to ensure the robust shutdown of some of our USB services. A change was made to LinearOpMode so as to allow a given instance to be executed more than once, which is required for the App Inventor. Javadoc improved/updated. Release 16.03.09 Changes made to make the FTC SDK synchronous (significant change!) waitOneFullHardwareCycle() and waitForNextHardwareCycle() are no longer needed and have been deprecated. runOpMode() (for a LinearOpMode) is now decoupled from the system's hardware read/write thread. loop() (for an OpMode) is now decoupled from the system's hardware read/write thread. Methods are synchronous. For example, if you call setMode(DcMotorController.RunMode.RESET_ENCODERS) for a motor, the encoder is guaranteed to be reset when the method call is complete. For legacy module (NXT compatible), user no longer has to toggle between read and write modes when reading from or writing to a legacy device. Changes made to enhance reliability/robustness during ESD event. Changes made to make code thread safe. Debug keystore added so that user-generated robot controller APKs will all use the same signed key (to avoid conflicts if a team has multiple developer laptops for example). Firmware version information for Modern Robotics modules are now logged. Changes made to improve USB comm reliability and robustness. Added support for voltage indicator for legacy (NXT-compatible) motor controllers. Changes made to provide auto stop capabilities for op modes. A LinearOpMode class will stop when the statements in runOpMode() are complete. User does not have to push the stop button on the driver station. If an op mode is stopped by the driver station, but there is a run away/uninterruptible thread persisting, the app will log an error message then force itself to crash to stop the runaway thread. Driver Station UI modified to display lowest measured voltage below current voltage (12V battery). Driver Station UI modified to have color background for current voltage (green=good, yellow=caution, red=danger, extremely low voltage). javadoc improved (edits and additional classes). Added app build time to About activity for driver station and robot controller apps. Display local IP addresses on Driver Station About activity. Added I2cDeviceSynchImpl. Added I2cDeviceSync interface. Added seconds() and milliseconds() to ElapsedTime for clarity. Added getCallbackCount() to I2cDevice. Added missing clearI2cPortActionFlag. Added code to create log messages while waiting for LinearOpMode shutdown. Fix so Wifi Direct Config activity will no longer launch multiple times. Added the ability to specify an alternate i2c address in software for the Modern Robotics gyro. Release 16.02.09 Improved battery checker feature so that voltage values get refreshed regularly (every 250 msec) on Driver Station (DS) user interface. Improved software so that Robot Controller (RC) is much more resilient and “self-healing” to USB disconnects: If user attempts to start/restart RC with one or more module missing, it will display a warning but still start up. When running an op mode, if one or more modules gets disconnected, the RC & DS will display warnings,and robot will keep on working in spite of the missing module(s). If a disconnected module gets physically reconnected the RC will auto detect the module and the user will regain control of the recently connected module. Warning messages are more helpful (identifies the type of module that’s missing plus its USB serial number). Code changes to fix the null gamepad reference when users try to reference the gamepads in the init() portion of their op mode. NXT light sensor output is now properly scaled. Note that teams might have to readjust their light threshold values in their op modes. On DS user interface, gamepad icon for a driver will disappear if the matching gamepad is disconnected or if that gamepad gets designated as a different driver. Robot Protocol (ROBOCOL) version number info is displayed in About screen on RC and DS apps. Incorporated a display filter on pairing screen to filter out devices that don’t use the “-“ format. This filter can be turned off to show all WiFi Direct devices. Updated text in License file. Fixed formatting error in OpticalDistanceSensor.toString(). Fixed issue on with a blank (“”) device name that would disrupt WiFi Direct Pairing. Made a change so that the WiFi info and battery info can be displayed more quickly on the DS upon connecting to RC. Improved javadoc generation. Modified code to make it easier to support language localization in the future. Release 16.01.04 Updated compileSdkVersion for apps Prevent Wifi from entering power saving mode removed unused import from driver station Corrrected "Dead zone" joystick code. LED.getDeviceName and .getConnectionInfo() return null apps check for ROBOCOL_VERSION mismatch Fix for Telemetry also has off-by-one errors in its data string sizing / short size limitations error User telemetry output is sorted. added formatting variants to DbgLog and RobotLog APIs code modified to allow for a long list of op mode names. changes to improve thread safety of RobocolDatagramSocket Fix for "missing hardware leaves robot controller disconnected from driver station" error fix for "fast tapping of Init/Start causes problems" (toast is now only instantiated on UI thread). added some log statements for thread life cycle. moved gamepad reset logic inside of initActiveOpMode() for robustness changes made to mitigate risk of race conditions on public methods. changes to try and flag when WiFi Direct name contains non-printable characters. fix to correct race condition between .run() and .close() in ReadWriteRunnableStandard. updated FTDI driver made ReadWriteRunnableStanard interface public. fixed off-by-one errors in Command constructor moved specific hardware implmentations into their own package. moved specific gamepad implemnatations to the hardware library. changed LICENSE file to new BSD version. fixed race condition when shutting down Modern Robotics USB devices. methods in the ColorSensor classes have been synchronized. corrected isBusy() status to reflect end of motion. corrected "back" button keycode. the notSupported() method of the GyroSensor class was changed to protected (it should not be public). Release 15.11.04.001 Added Support for Modern Robotics Gyro. The GyroSensor class now supports the MR Gyro Sensor. Users can access heading data (about Z axis) Users can also access raw gyro data (X, Y, & Z axes). Example MRGyroTest.java op mode included. Improved error messages More descriptive error messages for exceptions in user code. Updated DcMotor API Enable read mode on new address in setI2cAddress Fix so that driver station app resets the gamepads when switching op modes. USB-related code changes to make USB comm more responsive and to display more explicit error messages. Fix so that USB will recover properly if the USB bus returns garbage data. Fix USB initializtion race condition. Better error reporting during FTDI open. More explicit messages during USB failures. Fixed bug so that USB device is closed if event loop teardown method was not called. Fixed timer UI issue Fixed duplicate name UI bug (Legacy Module configuration). Fixed race condition in EventLoopManager. Fix to keep references stable when updating gamepad. For legacy Matrix motor/servo controllers removed necessity of appending "Motor" and "Servo" to controller names. Updated HT color sensor driver to use constants from ModernRoboticsUsbLegacyModule class. Updated MR color sensor driver to use constants from ModernRoboticsUsbDeviceInterfaceModule class. Correctly handle I2C Address change in all color sensors Updated/cleaned up op modes. Updated comments in LinearI2cAddressChange.java example op mode. Replaced the calls to "setChannelMode" with "setMode" (to match the new of the DcMotor method). Removed K9AutoTime.java op mode. Added MRGyroTest.java op mode (demonstrates how to use MR Gyro Sensor). Added MRRGBExample.java op mode (demonstrates how to use MR Color Sensor). Added HTRGBExample.java op mode (demonstrates how to use HT legacy color sensor). Added MatrixControllerDemo.java (demonstrates how to use legacy Matrix controller). Updated javadoc documentation. Updated release .apk files for Robot Controller and Driver Station apps. Release 15.10.06.002 Added support for Legacy Matrix 9.6V motor/servo controller. Cleaned up build.gradle file. Minor UI and bug fixes for driver station and robot controller apps. Throws error if Ultrasonic sensor (NXT) is not configured for legacy module port 4 or 5. Release 15.08.03.001 New user interfaces for FTC Driver Station and FTC Robot Controller apps. An init() method is added to the OpMode class. For this release, init() is triggered right before the start() method. Eventually, the init() method will be triggered when the user presses an "INIT" button on driver station. The init() and loop() methods are now required (i.e., need to be overridden in the user's op mode). The start() and stop() methods are optional. A new LinearOpMode class is introduced. Teams can use the LinearOpMode mode to create a linear (not event driven) program model. Teams can use blocking statements like Thread.sleep() within a linear op mode. The API for the Legacy Module and Core Device Interface Module have been updated. Support for encoders with the Legacy Module is now working. The hardware loop has been updated for better performance.
jettbrains
W3C Strategic Highlights September 2019 This report was prepared for the September 2019 W3C Advisory Committee Meeting (W3C Member link). See the accompanying W3C Fact Sheet — September 2019. For the previous edition, see the April 2019 W3C Strategic Highlights. For future editions of this report, please consult the latest version. A Chinese translation is available. ☰ Contents Introduction Future Web Standards Meeting Industry Needs Web Payments Digital Publishing Media and Entertainment Web & Telecommunications Real-Time Communications (WebRTC) Web & Networks Automotive Web of Things Strengthening the Core of the Web HTML CSS Fonts SVG Audio Performance Web Performance WebAssembly Testing Browser Testing and Tools WebPlatform Tests Web of Data Web for All Security, Privacy, Identity Internationalization (i18n) Web Accessibility Outreach to the world W3C Developer Relations W3C Training Translations W3C Liaisons Introduction This report highlights recent work of enhancement of the existing landscape of the Web platform and innovation for the growth and strength of the Web. 33 working groups and a dozen interest groups enable W3C to pursue its mission through the creation of Web standards, guidelines, and supporting materials. We track the tremendous work done across the Consortium through homogeneous work-spaces in Github which enables better monitoring and management. We are in the middle of a period where we are chartering numerous working groups which demonstrate the rapid degree of change for the Web platform: After 4 years, we are nearly ready to publish a Payment Request API Proposed Recommendation and we need to soon charter follow-on work. In the last year we chartered the Web Payment Security Interest Group. In the last year we chartered the Web Media Working Group with 7 specifications for next generation Media support on the Web. We have Accessibility Guidelines under W3C Member review which includes Silver, a new approach. We have just launched the Decentralized Identifier Working Group which has tremendous potential because Decentralized Identifier (DID) is an identifier that is globally unique, resolveable with high availability, and cryptographically verifiable. We have Privacy IG (PING) under W3C Member review which strengthens our focus on the tradeoff between privacy and function. We have a new CSS charter under W3C Member review which maps the group's work for the next three years. In this period, W3C and the WHATWG have succesfully completed the negotiation of a Memorandum of Understanding rooted in the mutual belief that that having two distinct specifications claiming to be normative is generally harmful for the Web community. The MOU, signed last May, describes how the two organizations are to collaborate on the development of a single authoritative version of the HTML and DOM specifications. W3C subsequently rechartered the HTML Working Group to assist the W3C community in raising issues and proposing solutions for the HTML and DOM specifications, and for the production of W3C Recommendations from WHATWG Review Drafts. As the Web evolves continuously, some groups are looking for ways for specifications to do so as well. So-called "evergreen recommendations" or "living standards" aim to track continuous development (and maintenance) of features, on a feature-by-feature basis, while getting review and patent commitments. We see the maturation and further development of an incredible number of new technologies coming to the Web. Continued progress in many areas demonstrates the vitality of the W3C and the Web community, as the rest of the report illustrates. Future Web Standards W3C has a variety of mechanisms for listening to what the community thinks could become good future Web standards. These include discussions with the Membership, discussions with other standards bodies, the activities of thousands of participants in over 300 community groups, and W3C Workshops. There are lots of good ideas. The W3C strategy team has been identifying promising topics and invites public participation. Future, recent and under consideration Workshops include: Inclusive XR (5-6 November 2019, Seattle, WA, USA) to explore existing and future approaches on making Virtual and Augmented Reality experiences more inclusive, including to people with disabilities; W3C Workshop on Data Models for Transportation (12-13 September 2019, Palo Alto, CA, USA) W3C Workshop on Web Games (27-28 June 2019, Redmond, WA, USA), view report Second W3C Workshop on the Web of Things (3-5 June 2019, Munich, Germany) W3C Workshop on Web Standardization for Graph Data; Creating Bridges: RDF, Property Graph and SQL (4-6 March 2019, Berlin, Germany), view report Web & Machine Learning. The Strategy Funnel documents the staff's exploration of potential new work at various phases: Exploration and Investigation, Incubation and Evaluation, and eventually to the chartering of a new standards group. The Funnel view is a GitHub Project where new area are issues represented by “cards” which move through the columns, usually from left to right. Most cards start in Exploration and move towards Chartering, or move out of the funnel. Public input is welcome at any stage but particularly once Incubation has begun. This helps W3C identify work that is sufficiently incubated to warrant standardization, to review the ecosystem around the work and indicate interest in participating in its standardization, and then to draft a charter that reflects an appropriate scope. Ongoing feedback can speed up the overall standardization process. Since the previous highlights document, W3C has chartered a number of groups, and started discussion on many more: Newly Chartered or Rechartered Web Application Security WG (03-Apr) Web Payment Security IG (17-Apr) Patent and Standards IG (24-Apr) Web Applications WG (14-May) Web & Networks IG (16-May) Media WG (23-May) Media and Entertainment IG (06-Jun) HTML WG (06-Jun) Decentralized Identifier WG (05-Sep) Extended Privacy IG (PING) (30-Sep) Verifiable Claims WG (30-Sep) Service Workers WG (31-Dec) Dataset Exchange WG (31-Dec) Web of Things Working Group (31-Dec) Web Audio Working Group (31-Dec) Proposed charters / Advance Notice Accessibility Guidelines WG Privacy IG (PING) RDF Literal Direction WG Timed Text WG CSS WG Web Authentication WG Closed Internationalization Tag Set IG Meeting Industry Needs Web Payments All Web Payments specifications W3C's payments standards enable a streamlined checkout experience, enabling a consistent user experience across the Web with lower front end development costs for merchants. Users can store and reuse information and more quickly and accurately complete online transactions. The Web Payments Working Group has republished Payment Request API as a Candidate Recommendation, aiming to publish a Proposed Recommendation in the Fall 2019, and is discussing use cases and features for Payment Request after publication of the 1.0 Recommendation. Browser vendors have been finalizing implementation of features added in the past year (view the implementation report). As work continues on the Payment Handler API and its implementation (currently in Chrome and Edge Canary), one focus in 2019 is to increase adoption in other browsers. Recently, Mastercard demonstrated the use of Payment Request API to carry out EMVCo's Secure Remote Commerce (SRC) protocol whose payment method definition is being developed with active participation by Visa, Mastercard, American Express, and Discover. Payment method availability is a key factor in merchant considerations about adopting Payment Request API. The ability to get uniform adoption of a new payment method such as Secure Remote Commerce (SRC) also depends on the availability of the Payment Handler API in browsers, or of proprietary alternatives. Web Monetization, which the Web Payments Working Group will discuss again at its face-to-face meeting in September, can be used to enable micropayments as an alternative revenue stream to advertising. Since the beginning of 2019, Amazon, Brave Software, JCB, Certus Cybersecurity Solutions and Netflix have joined the Web Payments Working Group. In April, W3C launched the Web Payment Security Group to enable W3C, EMVCo, and the FIDO Alliance to collaborate on a vision for Web payment security and interoperability. Participants will define areas of collaboration and identify gaps between existing technical specifications in order to increase compatibility among different technologies, such as: How do SRC, FIDO, and Payment Request relate? The Payment Services Directive 2 (PSD2) regulations in Europe are scheduled to take effect in September 2019. What is the role of EMVCo, W3C, and FIDO technologies, and what is the current state of readiness for the deadline? How can we improve privacy on the Web at the same time as we meet industry requirements regarding user identity? Digital Publishing All Digital Publishing specifications, Publication milestones The Web is the universal publishing platform. Publishing is increasingly impacted by the Web, and the Web increasingly impacts Publishing. Topic of particular interest to Publishing@W3C include typography and layout, accessibility, usability, portability, distribution, archiving, offline access, print on demand, and reliable cross referencing. And the diverse publishing community represented in the groups consist of the traditional "trade" publishers, ebook reading system manufacturers, but also publishers of audio book, scholarly journals or educational materials, library scientists or browser developers. The Publishing Working Group currently concentrates on Audiobooks which lack a comprehensive standard, thus incurring extra costs and time to publish in this booming market. Active development is ongoing on the future standard: Publication Manifest Audiobook profile for Web Publications Lightweight Packaging Format The BD Comics Manga Community Group, the Synchronized Multimedia for Publications Community Group, the Publishing Community Group and a future group on archival, are companions to the working group where specific work is developed and incubated. The Publishing Community Group is a recently launched incubation channel for Publishing@W3C. The goal of the group is to propose, document, and prototype features broadly related to: publications on the Web reading modes and systems and the user experience of publications The EPUB 3 Community Group has successfully completed the revision of EPUB 3.2. The Publishing Business Group fosters ongoing participation by members of the publishing industry and the overall ecosystem in the development of Web infrastructure to better support the needs of the industry. The Business Group serves as an additional conduit to the Publishing Working Group and several Community Groups for feedback between the publishing ecosystem and W3C. The Publishing BG has played a vital role in fostering and advancing the adoption and continued development of EPUB 3. In particular the BG provided critical support to the update of EPUBCheck to validate EPUB content to the new EPUB 3.2 specification. This resulted in the development, in conjunction with the EPUB3 Community Group, of a new generation of EPUBCheck, i.e., EPUBCheck 4.2 production-ready release. Media and Entertainment All Media specifications The Media and Entertainment vertical tracks media-related topics and features that create immersive experiences for end users. HTML5 brought standard audio and video elements to the Web. Standardization activities since then have aimed at turning the Web into a professional platform fully suitable for the delivery of media content and associated materials, enabling missing features to stream video content on the Web such as adaptive streaming and content protection. Together with Microsoft, Comcast, Netflix and Google, W3C received an Technology & Engineering Emmy Award in April 2019 for standardization of a full TV experience on the Web. Current goals are to: Reinforce core media technologies: Creation of the Media Working Group, to develop media-related specifications incubated in the WICG (e.g. Media Capabilities, Picture-in-picture, Media Session) and maintain maintain/evolve Media Source Extensions (MSE) and Encrypted Media Extensions (EME). Improve support for Media Timed Events: data cues incubation. Enhance color support (HDR, wide gamut), in scope of the CSS WG and in the Color on the Web CG. Reduce fragmentation: Continue annual releases of a common and testable baseline media devices, in scope of the Web Media APIs CG and in collaboration with the CTA WAVE Project. Maintain the Road-map of Media Technologies for the Web which highlights Web technologies that can be used to build media applications and services, as well as known gaps to enable additional use cases. Create the future: Discuss perspectives for Media and Entertainment for the Web. Bring the power of GPUs to the Web (graphics, machine learning, heavy processing), under incubation in the GPU for the Web CG. Transition to a Working Group is under discussion. Determine next steps after the successful W3C Workshop on Web Games of June 2019. View the report. Timed Text The Timed Text Working Group develops and maintains formats used for the representation of text synchronized with other timed media, like audio and video, and notably works on TTML, profiles of TTML, and WebVTT. Recent progress includes: A robust WebVTT implementation report poises the specification for publication as a proposed recommendation. Discussions around re-chartering, notably to add a TTML Profile for Audio Description deliverable to the scope of the group, and clarify that rendering of captions within XR content is also in scope. Immersive Web Hardware that enables Virtual Reality (VR) and Augmented Reality (AR) applications are now broadly available to consumers, offering an immersive computing platform with both new opportunities and challenges. The ability to interact directly with immersive hardware is critical to ensuring that the web is well equipped to operate as a first-class citizen in this environment. The Immersive Web Working Group has been stabilizing the WebXR Device API while the companion Immersive Web Community Group incubates the next series of features identified as key for the future of the Immersive Web. W3C plans a workshop focused on the needs and benefits at the intersection of VR & Accessibility (Inclusive XR), on 5-6 November 2019 in Seattle, WA, USA, to explore existing and future approaches on making Virtual and Augmented Reality experiences more inclusive. Web & Telecommunications The Web is the Open Platform for Mobile. Telecommunication service providers and network equipment providers have long been critical actors in the deployment of Web technologies. As the Web platform matures, it brings richer and richer capabilities to extend existing services to new users and devices, and propose new and innovative services. Real-Time Communications (WebRTC) All Real-Time Communications specifications WebRTC has reshaped the whole communication landscape by making any connected device a potential communication end-point, bringing audio and video communications anywhere, on any network, vastly expanding the ability of operators to reach their customers. WebRTC serves as the corner-stone of many online communication and collaboration services. The WebRTC Working Group aims to bringing WebRTC 1.0 (and companion specification Media Capture and Streams) to Recommendation by the end of 2019. Intense efforts are focused on testing (supported by a dedicated hackathon at IETF 104) and interoperability. The group is considering pushing features that have not gotten enough traction to separate modules or to a later minor revision of the spec. Beyond WebRTC 1.0, the WebRTC Working Group will focus its efforts on WebRTC NV which the group has started documenting by identifying use cases. Web & Networks Recently launched, in the wake of the May 2018 Web5G workshop, the Web & Networks Interest Group is chaired by representatives from AT&T, China Mobile and Intel, with a goal to explore solutions for web applications to achieve better performance and resource allocation, both on the device and network. The group's first efforts are around use cases, privacy & security requirements and liaisons. Automotive All Automotive specifications To create a rich application ecosystem for vehicles and other devices allowed to connect to the vehicle, the W3C Automotive Working Group is delivering a service specification to expose all common vehicle signals (engine temperature, fuel/charge level, range, tire pressure, speed, etc.) The Vehicle Information Service Specification (VISS), which is a Candidate Recommendation, is seeing more implementations across the industry. It provides the access method to a common data model for all the vehicle signals –presently encapsulating a thousand or so different data elements– and will be growing to accommodate the advances in automotive such as autonomous and driver assist technologies and electrification. The group is already working on a successor to VISS, leveraging the underlying data model and the VIWI submission from Volkswagen, for a more robust means of accessing vehicle signals information and the same paradigm for other automotive needs including location-based services, media, notifications and caching content. The Automotive and Web Platform Business Group acts as an incubator for prospective standards work. One of its task forces is using W3C VISS in performing data sampling and off-boarding the information to the cloud. Access to the wealth of information that W3C's auto signals standard exposes is of interest to regulators, urban planners, insurance companies, auto manufacturers, fleet managers and owners, service providers and others. In addition to components needed for data sampling and edge computing, capturing user and owner consent, information collection methods and handling of data are in scope. The upcoming W3C Workshop on Data Models for Transportation (September 2019) is expected to focus on the need of additional ontologies around transportation space. Web of Things All Web of Things specifications W3C's Web of Things work is designed to bridge disparate technology stacks to allow devices to work together and achieve scale, thus enabling the potential of the Internet of Things by eliminating fragmentation and fostering interoperability. Thing descriptions expressed in JSON-LD cover the behavior, interaction affordances, data schema, security configuration, and protocol bindings. The Web of Things complements existing IoT ecosystems to reduce the cost and risk for suppliers and consumers of applications that create value by combining multiple devices and information services. There are many sectors that will benefit, e.g. smart homes, smart cities, smart industry, smart agriculture, smart healthcare and many more. The Web of Things Working Group is finishing the initial Web of Things standards, with support from the Web of Things Interest Group: Web of Things Architecture Thing Descriptions Strengthening the Core of the Web HTML The HTML Working Group was chartered early June to assist the W3C community in raising issues and proposing solutions for the HTML and DOM specifications, and to produce W3C Recommendations from WHATWG Review Drafts. A few days before, W3C and the WHATWG signed a Memorandum of Understanding outlining the agreement to collaborate on the development of a single version of the HTML and DOM specifications. Issues and proposed solutions for HTML and DOM done via the newly rechartered HTML Working Group in the WHATWG repositories The HTML Working Group is targetting November 2019 to bring HTML and DOM to Candidate Recommendations. CSS All CSS specifications CSS is a critical part of the Open Web Platform. The CSS Working Group gathers requirements from two large groups of CSS users: the publishing industry and application developers. Within W3C, those groups are exemplified by the Publishing groups and the Web Platform Working Group. The former requires things like better pagination support and advanced font handling, the latter needs intelligent (and fast!) scrolling and animations. What we know as CSS is actually a collection of almost a hundred specifications, referred to as ‘modules’. The current state of CSS is defined by a snapshot, updated once a year. The group also publishes an index defining every term defined by CSS specifications. Fonts All Fonts specifications The Web Fonts Working Group develops specifications that allow the interoperable deployment of downloadable fonts on the Web, with a focus on Progressive Font Enrichment as well as maintenance of WOFF Recommendations. Recent and ongoing work includes: Early API experiments by Adobe and Monotype have demonstrated the feasibility of a font enrichment API, where a server delivers a font with minimal glyph repertoire and the client can query the full repertoire and request additional subsets on-the-fly. In other experiments, the Brotli compression used in WOFF 2 was extended to support shared dictionaries and patch update. Metrics to quantify improvement are a current hot discussion topic. The group will meet at ATypi 2019 in Japan, to gather requirements from the international typography community. The group will first produce a report summarizing the strengths and weaknesses of each prototype solution by Q2 2020. SVG All SVG specifications SVG is an important and widely-used part of the Open Web Platform. The SVG Working Group focuses on aligning the SVG 2.0 specification with browser implementations, having split the specification into a currently-implemented 2.0 and a forward-looking 2.1. Current activity is on stabilization, increased integration with the Open Web Platform, and test coverage analysis. The Working Group was rechartered in March 2019. A new work item concerns native (non-Web-browser) uses of SVG as a non-interactive, vector graphics format. Audio The Web Audio Working Group was extended to finish its work on the Web Audio API, expecting to publish it as a Recommendation by year end. The specification enables synthesizing audio in the browser. Audio operations are performed with audio nodes, which are linked together to form a modular audio routing graph. Multiple sources — with different types of channel layout — are supported. This modular design provides the flexibility to create complex audio functions with dynamic effects. The first version of Web Audio API is now feature complete and is implemented in all modern browsers. Work has started on the next version, and new features are being incubated in the Audio Community Group. Performance Web Performance All Web Performance specifications There are currently 18 specifications in development in the Web Performance Working Group aiming to provide methods to observe and improve aspects of application performance of user agent features and APIs. The W3C team is looking at related work incubated in the W3C GPU for the Web (WebGPU) Community Group which is poised to transition to a W3C Working Group. A preliminary draft charter is available. WebAssembly All WebAssembly specifications WebAssembly improves Web performance and power by being a virtual machine and execution environment enabling loaded pages to run native (compiled) code. It is deployed in Firefox, Edge, Safari and Chrome. The specification will soon reach Candidate Recommendation. WebAssembly enables near-native performance, optimized load time, and perhaps most importantly, a compilation target for existing code bases. While it has a small number of native types, much of the performance increase relative to Javascript derives from its use of consistent typing. WebAssembly leverages decades of optimization for compiled languages and the byte code is optimized for compactness and streaming (the web page starts executing while the rest of the code downloads). Network and API access all occurs through accompanying Javascript libraries -- the security model is identical to that of Javascript. Requirements gathering and language development occur in the Community Group while the Working Group manages test development, community review and progression of specifications on the Recommendation Track. Testing Browser testing plays a critical role in the growth of the Web by: Improving the reliability of Web technology definitions; Improving the quality of implementations of these technologies by helping vendors to detect bugs in their products; Improving the data available to Web developers on known bugs and deficiencies of Web technologies by publishing results of these tests. Browser Testing and Tools The Browser Testing and Tools Working Group is developing WebDriver version 2, having published last year the W3C Recommendation of WebDriver. WebDriver acts as a remote control interface that enables introspection and control of user agents, provides a platform- and language-neutral wire protocol as a way for out-of-process programs to remotely instruct the behavior of Web, and emulates the actions of a real person using the browser. WebPlatform Tests The WebPlatform Tests project now provides a mechanism which allows to fully automate tests that previously needed to be run manually: TestDriver. TestDriver enables sending trusted key and mouse events, sending complex series of trusted pointer and key interactions for things like in-content drag-and-drop or pinch zoom, and even file upload. Since 2014 W3C began work on this coordinated open-source effort to build a cross-browser test suite for the Web Platform, which WHATWG, and all major browsers adopted. Web of Data All Data specifications There have been several great success stories around the standardization of data on the web over the past year. Verifiable Claims seems to have significant uptake. It is also significant that the Distributed Identifier WG charter has received numerous favorable reviews, and was just recently launched. JSON-LD has been a major success with the large deployment on Web sites via schema.org. JSON-LD 1.1 completed technical work, about to transition to CR More than 25% of websites today include schema.org data in JSON-LD The Web of Things description is in CR since May, making use of JSON-LD Verifiable Credentials data model is in CR since July, also making use of JSON-LD Continued strong interest in decentralized identifiers Engagement from the TAG with reframing core documents, such as Ethical Web Principles, to include data on the web within their scope Data is increasingly important for all organizations, especially with the rise of IoT and Big Data. W3C has a mature and extensive suite of standards relating to data that were developed over two decades of experience, with plans for further work on making it easier for developers to work with graph data and knowledge graphs. Linked Data is about the use of URIs as names for things, the ability to dereference these URIs to get further information and to include links to other data. There are ever-increasing sources of open Linked Data on the Web, as well as data services that are restricted to the suppliers and consumers of those services. The digital transformation of industry is seeking to exploit advanced digital technologies. This will facilitate businesses to integrate horizontally along the supply and value chains, and vertically from the factory floor to the office floor. W3C is seeking to make it easier to support enterprise-wide data management and governance, reflecting the strategic importance of data to modern businesses. Traditional approaches to data have focused on tabular databases (SQL/RDBMS), Comma Separated Value (CSV) files, and data embedded in PDF documents and spreadsheets. We're now in midst of a major shift to graph data with nodes and labeled directed links between them. Graph data is: Faster than using SQL and associated JOIN operations More favorable to integrating data from heterogeneous sources Better suited to situations where the data model is evolving In the wake of the recent W3C Workshop on Graph Data we are in the process of launching a Graph Standardization Business Group to provide a business perspective with use cases and requirements, to coordinate technical standards work and liaisons with external organizations. Web for All Security, Privacy, Identity All Security specifications, all Privacy specifications Authentication on the Web As the WebAuthn Level 1 W3C Recommendation published last March is seeing wide implementation and adoption of strong cryptographic authentication, work is proceeding on Level 2. The open standard Web API gives native authentication technology built into native platforms, browsers, operating systems (including mobile) and hardware, offering protection against hacking, credential theft, phishing attacks, thus aiming to end the era of passwords as a security construct. You may read more in our March press release. Privacy An increasing number of W3C specifications are benefitting from Privacy and Security review; there are security and privacy aspects to every specification. Early review is essential. Working with the TAG, the Privacy Interest Group has updated the Self-Review Questionnaire: Security and Privacy. Other recent work of the group includes public blogging further to the exploration of anti-patterns in standards and permission prompts. Security The Web Application Security Working Group adopted Feature Policy, aiming to allow developers to selectively enable, disable, or modify the behavior of some of these browser features and APIs within their application; and Fetch Metadata, aiming to provide servers with enough information to make a priori decisions about whether or not to service a request based on the way it was made, and the context in which it will be used. The Web Payment Security Interest Group, launched last April, convenes members from W3C, EMVCo, and the FIDO Alliance to discuss cooperative work to enhance the security and interoperability of Web payments (read more about payments). Internationalization (i18n) All Internationalization specifications, educational articles related to Internationalization, spec developers checklist Only a quarter or so current Web users use English online and that proportion will continue to decrease as the Web reaches more and more communities of limited English proficiency. If the Web is to live up to the "World Wide" portion of its name, and for the Web to truly work for stakeholders all around the world engaging with content in various languages, it must support the needs of worldwide users as they engage with content in the various languages. The growth of epublishing also brings requirements for new features and improved typography on the Web. It is important to ensure the needs of local communities are captured. The W3C Internationalization Initiative was set up to increase in-house resources dedicated to accelerating progress in making the World Wide Web "worldwide" by gathering user requirements, supporting developers, and education & outreach. For an overview of current projects see the i18n radar. W3C's Internationalization efforts progressed on a number of fronts recently: Requirements: New African and European language groups will work on the gap analysis, errata and layout requirements. Gap analysis: Japanese, Devanagari, Bengali, Tamil, Lao, Khmer, Javanese, and Ethiopic updated in the gap-analysis documents. Layout requirements document: notable progress tracked in the Southeast Asian Task Force while work continues on Chinese layout requirements. Developer support: Spec reviews: the i18n WG continues active review of specifications of the WHATWG and other W3C Working Groups. Short review checklist: easy way to begin a self-review to help spec developers understand what aspects of their spec are likely to need attention for internationalization, and points them to more detailed checklists for the relevant topics. It also helps those reviewing specs for i18n issues. Strings on the Web: Language and Direction Metadata lays out issues and discusses potential solutions for passing information about language and direction with strings in JSON or other data formats. The document was rewritten for clarity, and expanded. The group is collaborating with the JSON-LD and Web Publishing groups to develop a plan for updating RDF, JSON-LD and related specifications to handle metadata for base direction of text (bidi). User-friendly test format: a new format was developed for Internationalization Test Suite tests, which displays helpful information about how the test works. This particularly useful because those tests are pointed to by educational materials and gap-analysis documents. Web Platform Tests: a large number of tests in the i18n test suite have been ported to the WPT repository, including: css-counter-styles, css-ruby, css-syntax, css-test, css-text-decor, css-writing-modes, and css-pseudo. Education & outreach: (for all educational materials, see the HTML & CSS Authoring Techniques) Web Accessibility All Accessibility specifications, WAI resources The Web Accessibility Initiative supports W3C's Web for All mission. Recent achievements include: Education and training: Inaccessibility of CAPTCHA updated to bring our analysis and recommendations up to date with CAPTCHA practice today, concluding two years of extensive work and invaluable input from the public (read more on the W3C Blog Learn why your web content and applications should be accessible. The Education and Outreach Working Group has completed revision and updating of the Business Case for Digital Accessibility. Accessibility guidelines: The Accessibility Guidelines Working Group has continued to update WCAG Techniques and Understanding WCAG 2.1; and published a Candidate Recommendation of Accessibility Conformance Testing Rules Format 1.0 to improve inter-rater reliability when evaluating conformance of web content to WCAG An updated charter is being developed to host work on "Silver", the next generation accessibility guidelines (WCAG 2.2) There are accessibility aspects to most specifications. Check your work with the FAST checklist. Outreach to the world W3C Developer Relations To foster the excellent feedback loop between Web Standards development and Web developers, and to grow participation from that diverse community, recent W3C Developer Relations activities include: @w3cdevs tracks the enormous amount of work happening across W3C W3C Track during the Web Conference 2019 in San Francisco Tech videos: W3C published the 2019 Web Games Workshop videos The 16 September 2019 Developer Meetup in Fukuoka, Japan, is open to all and will combine a set of technical demos prepared by W3C groups, and a series of talks on a selected set of W3C technologies and projects W3C is involved with Mozilla, Google, Samsung, Microsoft and Bocoup in the organization of ViewSource 2019 in Amsterdam (read more on the W3C Blog) W3C Training In partnership with EdX, W3C's MOOC training program, W3Cx offers a complete "Front-End Web Developer" (FEWD) professional certificate program that consists of a suite of five courses on the foundational languages that power the Web: HTML5, CSS and JavaScript. We count nearly 900K students from all over the world. Translations Many Web users rely on translations of documents developed at W3C whose official language is English. W3C is extremely grateful to the continuous efforts of its community in ensuring our various deliverables in general, and in our specifications in particular, are made available in other languages, for free, ensuring their exposure to a much more diverse set of readers. Last Spring we developed a more robust system, a new listing of translations of W3C specifications and updated the instructions on how to contribute to our translation efforts. W3C Liaisons Liaisons and coordination with numerous organizations and Standards Development Organizations (SDOs) is crucial for W3C to: make sure standards are interoperable coordinate our respective agenda in Internet governance: W3C participates in ICANN, GIPO, IGF, the I* organizations (ICANN, IETF, ISOC, IAB). ensure at the government liaison level that our standards work is officially recognized when important to our membership so that products based on them (often done by our members) are part of procurement orders. W3C has ARO/PAS status with ISO. W3C participates in the EU MSP and Rolling Plan on Standardization ensure the global set of Web and Internet standards form a compatible stack of technologies, at the technical and policy level (patent regime, fragmentation, use in policy making) promote Standards adoption equally by the industry, the public sector, and the public at large Coralie Mercier, Editor, W3C Marketing & Communications $Id: Overview.html,v 1.60 2019/10/15 12:05:52 coralie Exp $ Copyright © 2019 W3C ® (MIT, ERCIM, Keio, Beihang) Usage policies apply.
a7ul
A blog demo to showcase how push notification works in web
DominikN
ESP32 + HTTP server + websockets + Bootstrap + Husarnet. A simple project template showing how to use those technologies to create a fast, pretty and secure web UI hosted on ESP32. Works in LAN and over the internet. Written using Arduino framework.
sanusanth
What is Python? Executive Summary Python is an interpreted, object-oriented, high-level programming language with dynamic semantics. Its high-level built in data structures, combined with dynamic typing and dynamic binding, make it very attractive for Rapid Application Development, as well as for use as a scripting or glue language to connect existing components together. Python's simple, easy to learn syntax emphasizes readability and therefore reduces the cost of program maintenance. Python supports modules and packages, which encourages program modularity and code reuse. The Python interpreter and the extensive standard library are available in source or binary form without charge for all major platforms, and can be freely distributed. Often, programmers fall in love with Python because of the increased productivity it provides. Since there is no compilation step, the edit-test-debug cycle is incredibly fast. Debugging Python programs is easy: a bug or bad input will never cause a segmentation fault. Instead, when the interpreter discovers an error, it raises an exception. When the program doesn't catch the exception, the interpreter prints a stack trace. A source level debugger allows inspection of local and global variables, evaluation of arbitrary expressions, setting breakpoints, stepping through the code a line at a time, and so on. The debugger is written in Python itself, testifying to Python's introspective power. On the other hand, often the quickest way to debug a program is to add a few print statements to the source: the fast edit-test-debug cycle makes this simple approach very effective. What is Python? Python is a popular programming language. It was created by Guido van Rossum, and released in 1991. It is used for: web development (server-side), software development, mathematics, system scripting. What can Python do? Python can be used on a server to create web applications. Python can be used alongside software to create workflows. Python can connect to database systems. It can also read and modify files. Python can be used to handle big data and perform complex mathematics. Python can be used for rapid prototyping, or for production-ready software development. Why Python? Python works on different platforms (Windows, Mac, Linux, Raspberry Pi, etc). Python has a simple syntax similar to the English language. Python has syntax that allows developers to write programs with fewer lines than some other programming languages. Python runs on an interpreter system, meaning that code can be executed as soon as it is written. This means that prototyping can be very quick. Python can be treated in a procedural way, an object-oriented way or a functional way. Good to know The most recent major version of Python is Python 3, which we shall be using in this tutorial. However, Python 2, although not being updated with anything other than security updates, is still quite popular. In this tutorial Python will be written in a text editor. It is possible to write Python in an Integrated Development Environment, such as Thonny, Pycharm, Netbeans or Eclipse which are particularly useful when managing larger collections of Python files. Python Syntax compared to other programming languages Python was designed for readability, and has some similarities to the English language with influence from mathematics. Python uses new lines to complete a command, as opposed to other programming languages which often use semicolons or parentheses. Python relies on indentation, using whitespace, to define scope; such as the scope of loops, functions and classes. Other programming languages often use curly-brackets for this purpose. Applications for Python Python is used in many application domains. Here's a sampling. The Python Package Index lists thousands of third party modules for Python. Web and Internet Development Python offers many choices for web development: Frameworks such as Django and Pyramid. Micro-frameworks such as Flask and Bottle. Advanced content management systems such as Plone and django CMS. Python's standard library supports many Internet protocols: HTML and XML JSON E-mail processing. Support for FTP, IMAP, and other Internet protocols. Easy-to-use socket interface. And the Package Index has yet more libraries: Requests, a powerful HTTP client library. Beautiful Soup, an HTML parser that can handle all sorts of oddball HTML. Feedparser for parsing RSS/Atom feeds. Paramiko, implementing the SSH2 protocol. Twisted Python, a framework for asynchronous network programming. Scientific and Numeric Python is widely used in scientific and numeric computing: SciPy is a collection of packages for mathematics, science, and engineering. Pandas is a data analysis and modeling library. IPython is a powerful interactive shell that features easy editing and recording of a work session, and supports visualizations and parallel computing. The Software Carpentry Course teaches basic skills for scientific computing, running bootcamps and providing open-access teaching materials. Education Python is a superb language for teaching programming, both at the introductory level and in more advanced courses. Books such as How to Think Like a Computer Scientist, Python Programming: An Introduction to Computer Science, and Practical Programming. The Education Special Interest Group is a good place to discuss teaching issues. Desktop GUIs The Tk GUI library is included with most binary distributions of Python. Some toolkits that are usable on several platforms are available separately: wxWidgets Kivy, for writing multitouch applications. Qt via pyqt or pyside Platform-specific toolkits are also available: GTK+ Microsoft Foundation Classes through the win32 extensions Software Development Python is often used as a support language for software developers, for build control and management, testing, and in many other ways. SCons for build control. Buildbot and Apache Gump for automated continuous compilation and testing. Roundup or Trac for bug tracking and project management. Business Applications Python is also used to build ERP and e-commerce systems: Odoo is an all-in-one management software that offers a range of business applications that form a complete suite of enterprise management applications. Try ton is a three-tier high-level general purpose application platform.
hayageek
How Whatsapp Web QR Code works
sanusanth
What is C#? C# is pronounced "C-Sharp". It is an object-oriented programming language created by Microsoft that runs on the .NET Framework. C# has roots from the C family, and the language is close to other popular languages like C++ and Java. The first version was released in year 2002. The latest version, C# 8, was released in September 2019. C# is a modern object-oriented programming language developed in 2000 by Anders Hejlsberg, the principal designer and lead architect at Microsoft. It is pronounced as "C-Sharp," inspired by the musical notation “♯” which stands for a note with a slightly higher pitch. As it’s considered an incremental compilation of the C++ language, the name C “sharp” seemed most appropriate. The sharp symbol, however, has been replaced by the keyboard friendly “#” as a suffix to “C” for purposes of programming. Although the code is very similar to C++, C# is newer and has grown fast with extensive support from Microsoft. The fact that it’s so similar to Java syntactically helps explain why it has emerged as one of the most popular programming languages today. C# is pronounced "C-Sharp". It is an object-oriented programming language created by Microsoft that runs on the .NET Framework. C# has roots from the C family, and the language is close to other popular languages like C++ and Java. The first version was released in year 2002. The latest version, C# 8, was released in September 2019. C# is used for: Mobile applications Desktop applications Web applications Web services Web sites Games VR Database applications And much, much more! An Introduction to C# Programming C# is a general-purpose, object-oriented programming language that is structured and easy to learn. It runs on Microsoft’s .Net Framework and can be compiled on a variety of computer platforms. As the syntax is simple and easy to learn, developers familiar with C, C++, or Java have found a comfort zone within C#. C# is a boon for developers who want to build a wide range of applications on the .NET Framework—Windows applications, Web applications, and Web services—in addition to building mobile apps, Windows Store apps, and enterprise software. It is thus considered a powerful programming language and features in every developer’s cache of tools. Although first released in 2002, when it was introduced with .NET Framework 1.0, the C# language has evolved a great deal since then. The most recent version is C# 8.0, available in preview as part of Visual Studio. To get access to all of the new language features, you would need to install the latest preview version of .NET Core 3.0. C# is used for: Mobile applications Desktop applications Web applications Web services Web sites Games VR Database applications And much, much more! Why Use C#? It is one of the most popular programming language in the world It is easy to learn and simple to use It has a huge community support C# is an object oriented language which gives a clear structure to programs and allows code to be reused, lowering development costs. As C# is close to C, C++ and Java, it makes it easy for programmers to switch to C# or vice versa. The C# Environment You need the .NET Framework and an IDE (integrated development environment) to work with the C# language. The .NET Framework The .NET Framework platform of the Windows OS is required to write web and desktop-based applications using not only C# but also Visual Basic and Jscript, as the platform provides language interoperability. Besides, the .Net Framework allows C# to communicate with any of the other common languages, such as C++, Jscript, COBOL, and so on. IDEs Microsoft provides various IDEs for C# programming: Visual Studio 2010 (VS) Visual Studio Express Visual Web Developer Visual Studio Code (VSC) The C# source code files can be written using a basic text editor, like Notepad, and compiled using the command-line compiler of the .NET Framework. Alternative open-source versions of the .Net Framework can work on other operating systems as well. For instance, the Mono has a C# compiler and runs on several operating systems, including Linux, Mac, Android, BSD, iOS, Windows, Solaris, and UNIX. This brings enhanced development tools to the developer. As C# is part of the .Net Framework platform, it has access to its enormous library of codes and components, such as Common Language Runtime (CLR), the .Net Framework Class Library, Common Language Specification, Common Type System, Metadata and Assemblies, Windows Forms, ASP.Net and ASP.Net AJAX, Windows Workflow Foundation (WF), Windows Communication Foundation (WCF), and LINQ. C# and Java C# and Java are high-level programming languages that share several similarities (as well as many differences). They are both object-oriented languages much influenced by C++. But while C# is suitable for application development in the Microsoft ecosystem from the front, Java is considered best for client-side web applications. Also, while C# has many tools for programming, Java has a larger arsenal of tools to choose from in IDEs and Text Editors. C# is used for virtual reality projects like games, mobile, and web applications. It is built specifically for Microsoft platforms and several non-Microsoft-based operating systems, like the Mono Project that works with Linux and OS X. Java is used for creating messaging applications and developing web-based and enterprise-based applications in open-source ecosystems. Both C# and Java support arrays. However, each language uses them differently. In C#, arrays are a specialization of the system; in Java, they are a direct specialization of the object. The C# programming language executes on the CLR. The source code is interpreted into bytecode, which is further compiled by the CLR. Java runs on any platform with the assistance of JRE (Java Runtime Environment). The written source code is first compiled into bytecode and then converted into machine code to be executed on a JRE. C# and C++ Although C# and C++ are both C-based languages with similar code, there are some differences. For one, C# is considered a component-oriented programming language, while C++ is a partial object-oriented language. Also, while both languages are compiled languages, C# compiles to CLR and is interpreted by.NET, but C++ compiles to machine code. The size of binaries in C# is much larger than in C++. Other differences between the two include the following: C# gives compiler errors and warnings, but C++ doesn’t support warnings, which may cause damage to the OS. C# runs in a virtual machine for automatic memory management. C++ requires you to manage memory manually. C# can create Windows, .NET, web, desktop, and mobile applications, but not stand-alone apps. C++ can create server-side, stand-alone, and console applications as it can work directly with the hardware. C++ can be used on any platform, while C# is targeted toward Windows OS. Generally, C++ being faster than C#, the former is preferred for applications where performance is essential. Features of C# The C# programming language has many features that make it more useful and unique when compared to other languages, including: Object-oriented language Being object-oriented, C# allows the creation of modular applications and reusable codes, an advantage over C++. As an object-oriented language, C# makes development and maintenance easier when project size grows. It supports all three object-oriented features: data encapsulation, inheritance, interfaces, and polymorphism. Simplicity C# is a simple language with a structured approach to problem-solving. Unsafe operations, like direct memory manipulation, are not allowed. Speed The compilation and execution time in C# is very powerful and fast. A Modern programming language C# programming is used for building scalable and interoperable applications with support for modern features like automatic garbage collection, error handling, debugging, and robust security. It has built-in support for a web service to be invoked from any app running on any platform. Type-safe Arrays and objects are zero base indexed and bound checked. There is an automatic checking of the overflow of types. The C# type safety instances support robust programming. Interoperability Language interoperability of C# maximizes code reuse for the efficiency of the development process. C# programs can work upon almost anything as a program can call out any native API. Consistency Its unified type system enables developers to extend the type system simply and easily for consistent behavior. Updateable C# is automatically updateable. Its versioning support enables complex frameworks to be developed and evolved. Component oriented C# supports component-oriented programming through the concepts of properties, methods, events, and attributes for self-contained and self-describing components of functionality for robust and scalable applications. Structured Programming Language The structured design and modularization in C# break a problem into parts, using functions for easy implementation to solve significant problems. Rich Library C# has a standard library with many inbuilt functions for easy and fast development. Prerequisites for Learning C# Basic knowledge of C or C++ or any programming language or programming fundamentals. Additionally, the OOP concept makes for a short learning curve of C#. Advantages of C# There are many advantages to the C# language that makes it a useful programming language compared to other languages like Java, C, or C++. These include: Being an object-oriented language, C# allows you to create modular, maintainable applications and reusable codes Familiar syntax Easy to develop as it has a rich class of libraries for smooth implementation of functions Enhanced integration as an application written in .NET will integrate and interpret better when compared to other NET technologies As C# runs on CLR, it makes it easy to integrate with components written in other languages It’s safe, with no data loss as there is no type-conversion so that you can write secure codes The automatic garbage collection keeps the system clean and doesn’t hang it during execution As your machine has to install the .NET Framework to run C#, it supports cross-platform Strong memory backup prevents memory leakage Programming support of the Microsoft ecosystem makes development easy and seamless Low maintenance cost, as C# can develop iOS, Android, and Windows Phone native apps The syntax is similar to C, C++, and Java, which makes it easier to learn and work with C# Useful as it can develop iOS, Android, and Windows Phone native apps with the Xamarin Framework C# is the most powerful programming language for the .NET Framework Fast development as C# is open source steered by Microsoft with access to open source projects and tools on Github, and many active communities contributing to the improvement What Can C Sharp Do for You? C# can be used to develop a wide range of: Windows client applications Windows libraries and components Windows services Web applications Native iOS and Android mobile apps Azure cloud applications and services Gaming consoles and gaming systems Video and virtual reality games Interoperability software like SharePoint Enterprise software Backend services and database programs AI and ML applications Distributed applications Hardware-level programming Virus and malware software GUI-based applications IoT devices Blockchain and distributed ledger technology C# Programming for Beginners: Introduction, Features and Applications By Simplilearn Last updated on Jan 20, 2020674 C# Programming for Beginners As a programmer, you’re motivated to master the most popular languages that will give you an edge in your career. There’s a vast number of programming languages that you can learn, but how do you know which is the most useful? If you know C and C++, do you need to learn C# as well? How similar is C# to Java? Does it become more comfortable for you to learn C# if you already know Java? Every developer and wannabe programmer asks these types of questions. So let us explore C# programming: how it evolved as an extension of C and why you need to learn it as a part of the Master’s Program in integrated DevOps for server-side execution. Are you a web developer or someone interested to build a website? Enroll for the Javascript Certification Training. Check out the course preview now! What is C#? C# is a modern object-oriented programming language developed in 2000 by Anders Hejlsberg, the principal designer and lead architect at Microsoft. It is pronounced as "C-Sharp," inspired by the musical notation “♯” which stands for a note with a slightly higher pitch. As it’s considered an incremental compilation of the C++ language, the name C “sharp” seemed most appropriate. The sharp symbol, however, has been replaced by the keyboard friendly “#” as a suffix to “C” for purposes of programming. Although the code is very similar to C++, C# is newer and has grown fast with extensive support from Microsoft. The fact that it’s so similar to Java syntactically helps explain why it has emerged as one of the most popular programming languages today. An Introduction to C# Programming C# is a general-purpose, object-oriented programming language that is structured and easy to learn. It runs on Microsoft’s .Net Framework and can be compiled on a variety of computer platforms. As the syntax is simple and easy to learn, developers familiar with C, C++, or Java have found a comfort zone within C#. C# is a boon for developers who want to build a wide range of applications on the .NET Framework—Windows applications, Web applications, and Web services—in addition to building mobile apps, Windows Store apps, and enterprise software. It is thus considered a powerful programming language and features in every developer’s cache of tools. Although first released in 2002, when it was introduced with .NET Framework 1.0, the C# language has evolved a great deal since then. The most recent version is C# 8.0, available in preview as part of Visual Studio. To get access to all of the new language features, you would need to install the latest preview version of .NET Core 3.0. The C# Environment You need the .NET Framework and an IDE (integrated development environment) to work with the C# language. The .NET Framework The .NET Framework platform of the Windows OS is required to write web and desktop-based applications using not only C# but also Visual Basic and Jscript, as the platform provides language interoperability. Besides, the .Net Framework allows C# to communicate with any of the other common languages, such as C++, Jscript, COBOL, and so on. IDEs Microsoft provides various IDEs for C# programming: Visual Studio 2010 (VS) Visual Studio Express Visual Web Developer Visual Studio Code (VSC) The C# source code files can be written using a basic text editor, like Notepad, and compiled using the command-line compiler of the .NET Framework. Alternative open-source versions of the .Net Framework can work on other operating systems as well. For instance, the Mono has a C# compiler and runs on several operating systems, including Linux, Mac, Android, BSD, iOS, Windows, Solaris, and UNIX. This brings enhanced development tools to the developer. As C# is part of the .Net Framework platform, it has access to its enormous library of codes and components, such as Common Language Runtime (CLR), the .Net Framework Class Library, Common Language Specification, Common Type System, Metadata and Assemblies, Windows Forms, ASP.Net and ASP.Net AJAX, Windows Workflow Foundation (WF), Windows Communication Foundation (WCF), and LINQ. C# and Java C# and Java are high-level programming languages that share several similarities (as well as many differences). They are both object-oriented languages much influenced by C++. But while C# is suitable for application development in the Microsoft ecosystem from the front, Java is considered best for client-side web applications. Also, while C# has many tools for programming, Java has a larger arsenal of tools to choose from in IDEs and Text Editors. C# is used for virtual reality projects like games, mobile, and web applications. It is built specifically for Microsoft platforms and several non-Microsoft-based operating systems, like the Mono Project that works with Linux and OS X. Java is used for creating messaging applications and developing web-based and enterprise-based applications in open-source ecosystems. Both C# and Java support arrays. However, each language uses them differently. In C#, arrays are a specialization of the system; in Java, they are a direct specialization of the object. The C# programming language executes on the CLR. The source code is interpreted into bytecode, which is further compiled by the CLR. Java runs on any platform with the assistance of JRE (Java Runtime Environment). The written source code is first compiled into bytecode and then converted into machine code to be executed on a JRE. C# and C++ Although C# and C++ are both C-based languages with similar code, there are some differences. For one, C# is considered a component-oriented programming language, while C++ is a partial object-oriented language. Also, while both languages are compiled languages, C# compiles to CLR and is interpreted by.NET, but C++ compiles to machine code. The size of binaries in C# is much larger than in C++. Other differences between the two include the following: C# gives compiler errors and warnings, but C++ doesn’t support warnings, which may cause damage to the OS. C# runs in a virtual machine for automatic memory management. C++ requires you to manage memory manually. C# can create Windows, .NET, web, desktop, and mobile applications, but not stand-alone apps. C++ can create server-side, stand-alone, and console applications as it can work directly with the hardware. C++ can be used on any platform, while C# is targeted toward Windows OS. Generally, C++ being faster than C#, the former is preferred for applications where performance is essential. Features of C# The C# programming language has many features that make it more useful and unique when compared to other languages, including: Object-oriented language Being object-oriented, C# allows the creation of modular applications and reusable codes, an advantage over C++. As an object-oriented language, C# makes development and maintenance easier when project size grows. It supports all three object-oriented features: data encapsulation, inheritance, interfaces, and polymorphism. Simplicity C# is a simple language with a structured approach to problem-solving. Unsafe operations, like direct memory manipulation, are not allowed. Speed The compilation and execution time in C# is very powerful and fast. A Modern programming language C# programming is used for building scalable and interoperable applications with support for modern features like automatic garbage collection, error handling, debugging, and robust security. It has built-in support for a web service to be invoked from any app running on any platform. Type-safe Arrays and objects are zero base indexed and bound checked. There is an automatic checking of the overflow of types. The C# type safety instances support robust programming. Interoperability Language interoperability of C# maximizes code reuse for the efficiency of the development process. C# programs can work upon almost anything as a program can call out any native API. Consistency Its unified type system enables developers to extend the type system simply and easily for consistent behavior. Updateable C# is automatically updateable. Its versioning support enables complex frameworks to be developed and evolved. Component oriented C# supports component-oriented programming through the concepts of properties, methods, events, and attributes for self-contained and self-describing components of functionality for robust and scalable applications. Structured Programming Language The structured design and modularization in C# break a problem into parts, using functions for easy implementation to solve significant problems. Rich Library C# has a standard library with many inbuilt functions for easy and fast development. Full Stack Java Developer Course The Gateway to Master Web DevelopmentEXPLORE COURSEFull Stack Java Developer Course Prerequisites for Learning C# Basic knowledge of C or C++ or any programming language or programming fundamentals. Additionally, the OOP concept makes for a short learning curve of C#. Advantages of C# There are many advantages to the C# language that makes it a useful programming language compared to other languages like Java, C, or C++. These include: Being an object-oriented language, C# allows you to create modular, maintainable applications and reusable codes Familiar syntax Easy to develop as it has a rich class of libraries for smooth implementation of functions Enhanced integration as an application written in .NET will integrate and interpret better when compared to other NET technologies As C# runs on CLR, it makes it easy to integrate with components written in other languages It’s safe, with no data loss as there is no type-conversion so that you can write secure codes The automatic garbage collection keeps the system clean and doesn’t hang it during execution As your machine has to install the .NET Framework to run C#, it supports cross-platform Strong memory backup prevents memory leakage Programming support of the Microsoft ecosystem makes development easy and seamless Low maintenance cost, as C# can develop iOS, Android, and Windows Phone native apps The syntax is similar to C, C++, and Java, which makes it easier to learn and work with C# Useful as it can develop iOS, Android, and Windows Phone native apps with the Xamarin Framework C# is the most powerful programming language for the .NET Framework Fast development as C# is open source steered by Microsoft with access to open source projects and tools on Github, and many active communities contributing to the improvement What Can C Sharp Do for You? C# can be used to develop a wide range of: Windows client applications Windows libraries and components Windows services Web applications Native iOS and Android mobile apps Azure cloud applications and services Gaming consoles and gaming systems Video and virtual reality games Interoperability software like SharePoint Enterprise software Backend services and database programs AI and ML applications Distributed applications Hardware-level programming Virus and malware software GUI-based applications IoT devices Blockchain and distributed ledger technology Who Should Learn the C# Programming Language and Why? C# is one of the most popular programming languages as it can be used for a variety of applications: mobile apps, game development, and enterprise software. What’s more, the C# 8.0 version is packed with several new features and enhancements to the C# language that can change the way developers write their C# code. The most important new features available are ‘null reference types,’ enhanced ‘pattern matching,’ and ‘async streams’ that help you to write more reliable and readable code. As you’re exposed to the fundamental programming concepts of C# in this course, you can work on projects that open the doors for you as a Full Stack Java Developer. So, upskill and master the C# language for a faster career trajectory and salary scope.
hackcrypto
Fluxion is a security auditing and social-engineering research tool. It is a remake of linset by vk496 with (hopefully) less bugs and more functionality. The script attempts to retrieve the WPA/WPA2 key from a target access point by means of a social engineering (phishing) attack. It's compatible with the latest release of Kali (rolling). Fluxion's attacks' setup is mostly manual, but experimental auto-mode handles some of the attacks' setup parameters. Read the FAQ before requesting issues. If you need quick help, fluxion is also avaible on gitter. You can talk with us on Gitter or on Discord. Installation Read here before you do the following steps. Download the latest revision git clone --recursive git@github.com:FluxionNetwork/fluxion.git Switch to tool's directory cd fluxion Run fluxion (missing dependencies will be auto-installed) ./fluxion.sh Fluxion is also available in arch cd bin/arch makepkg or using the blackarch repo pacman -S fluxion scroll Changelog Fluxion gets weekly updates with new features, improvements, and bugfixes. Be sure to check out the changelog here. :octocat: How to contribute All contributions are welcome! Code, documentation, graphics, or even design suggestions are welcome; use GitHub to its fullest. Submit pull requests, contribute tutorials or other wiki content -- whatever you have to offer, it'll be appreciated but please follow the style guide. book How it works Scan for a target wireless network. Launch the Handshake Snooper attack. Capture a handshake (necessary for password verification). Launch Captive Portal attack. Spawns a rogue (fake) AP, imitating the original access point. Spawns a DNS server, redirecting all requests to the attacker's host running the captive portal. Spawns a web server, serving the captive portal which prompts users for their WPA/WPA2 key. Spawns a jammer, deauthenticating all clients from original AP and lureing them to the rogue AP. All authentication attempts at the captive portal are checked against the handshake file captured earlier. The attack will automatically terminate once a correct key has been submitted. The key will be logged and clients will be allowed to reconnect to the target access point. For a guide to the Captive Portal attack, read the Captive Portal attack guide exclamation Requirements A Linux-based operating system. We recommend Kali Linux 2 or Kali rolling. Kali 2 & rolling support the latest aircrack-ng versions. An external wifi card is recommended. Related work For development I use vim and tmux. Here are my dotfiles :octocat: Credits l3op - contributor dlinkproto - contributor vk496 - developer of linset Derv82 - @Wifite/2 Princeofguilty - @webpages and @buteforce Photos for wiki @http://www.kalitutorials.net Ons Ali @wallpaper PappleTec @sites MPX4132 - Fluxion V3 Disclaimer Authors do not own the logos under the /attacks/Captive Portal/sites/ directory. Copyright Disclaimer Under Section 107 of the Copyright Act 1976, allowance is made for "fair use" for purposes such as criticism, comment, news reporting, teaching, scholarship, and research. The usage of Fluxion for attacking infrastructures without prior mutual consent could be considered an illegal activity, and is highly discouraged by its authors/developers. It is the end user's responsibility to obey all applicable local, state and federal laws. Authors assume no liability and are not responsible for any misuse or damage caused by this program. Note Beware of sites pretending to be related with the Fluxion Project. These may be delivering malware. Fluxion DOES NOT WORK on Linux Subsystem For Windows 10, because the subsystem doesn't allow access to network interfaces. Any Issue regarding the same would be Closed Immediately Links Fluxion website: https://fluxionnetwork.github.io/fluxion/ Discord: https://discordapp.com/invite/G43gptk Gitter: https://gitter.im/FluxionNetwork/Lobby
Rastaman4e
NICEHASH PLATFORM TERMS OF USE AND NICEHASH MINING TERMS OF SERVICE PLEASE READ THESE NICEHASH PLATFORM TERMS OF USE AND NICEHASH MINING TERMS OF SERVICE (“Terms”) CAREFULLY BEFORE USING THE THE PLATFORM OR SERVICES DESCRIBED HEREIN. BY SELECTING “I AGREE”, ACCESSING THE PLATFORM, USING NICEHASH MINING SERVICES OR DOWNLOADING OR USING NICEHASH MINING SOFTWARE, YOU ARE ACKNOWLEDGING THAT YOU HAVE READ THESE TERMS, AS AMENDED FROM TIME TO TIME, AND YOU ARE AGREEING TO BE BOUND BY THEM. IF YOU DO NOT AGREE TO THESE TERMS, OR ANY SUBSEQUENT AMENDMENTS, CHANGES OR UPDATES, DO NOT ACCESS THE PLATFORM, USE NICEHASH MINING SERVICES OR USE THE NICEHASH MINING SOFTWARE. GENERAL These Terms apply to users of the NiceHash Platform (“Platform” and NiceHash Mining Services (“Services”) which are provided to you by NICEHASH Ltd, company organized and existing under the laws of the British Virgin Islands, with registered address at Intershore Chambers, Road Town, Tortola, British Virgin Islands, registration number: 2048669, hereinafter referred to as “NiceHash, as well as “we” or “us”. ELIGIBILITY By using the NiceHash platform and NiceHash Mining Services, you represent and warrant that you: are at least Minimum Age and have capacity to form a binding contract; have not previously been suspended or removed from the NiceHash Platform; have full power and authority to enter into this agreement and in doing so will not violate any other agreement to which you are a party; are not not furthering, performing, undertaking, engaging in, aiding, or abetting any unlawful activity through your relationship with us, through your use of NiceHash Platform or use of NiceHash Mining Services; will not use NiceHash Platform or NiceHash Mining Services if any applicable laws in your country prohibit you from doing so in accordance with these Terms. We reserve the right to terminate your access to the NiceHash Platform and Mining Services for any reason and in our sole and absolute discretion. Use of NiceHash Platform and Mining Services is void where prohibited by applicable law. Depending on your country of residence or incorporation or registered office, you may not be able to use all the functions of the NiceHash Platform or services provided therein. It is your responsibility to follow the rules and laws in your country of residence and/or country from which you access the NiceHash Platform. DEFINITIONS NiceHash Platform means a website located on the following web address: www.nicehash.com. NiceHash Mining Services mean all services provided by NiceHash, namely the provision of the NiceHash Platform, NiceHash Hashing power marketplace, NiceHash API, NiceHash OS, NiceHash Mining Software including licence for NiceHash Miner, NiceHash Private Endpoint, NiceHash Account, NiceHash mobile apps, and all other software products, applications and services associated with these products, except for the provision of NiceHash Exchange Services. NiceHash Exchange Service means a service which allows trading of digital assets in the form of digital tokens or cryptographic currency for our users by offering them a trading venue, helping them find a trading counterparty and providing the means for transaction execution. NiceHash Exchange Services are provided by NICEX Ltd and accessible at the NiceHash Platform under NiceHash Exchange Terms of Service. Hashing power marketplace means an infrastructure provided by the NiceHash which enables the Hashing power providers to point their rigs towards NiceHash stratum servers where Hashing power provided by different Hashing power providers is gathered and sold as generic Hashing power to the Hashing power buyers. Hashing power buyer means a legal entity or individual who buys the gathered and generic hashing power on the Hashing power marketplace from undefined Hashing power providers. Hashing power provider means a legal entity or individual who sells his hashing power on the Hashing power marketplace to undefined Hashing power buyers. NiceHash Mining Software means NiceHash Miner and any other software available via the NiceHash Platform. NiceHash Miner means a comprehensive software with graphical user interface and web interface, owned by NiceHash. NiceHash Miner is a process manager software which enables the Hashing power providers to point their rigs towards NiceHash stratum servers and sell their hashing power to the Hashing power buyers. NiceHash Miner also means any and all of its code, compilations, updates, upgrades, modifications, error corrections, patches and bug fixes and similar. NiceHash Miner does not mean third party software compatible with NiceHash Miner (Third Party Plugins and Miners). NiceHash QuickMiner means a software accessible at https://www.nicehash.com/quick-miner which enables Hashing power providers to point their PCs or rigs towards NiceHash stratum servers and sell their hashing power to the Hashing power buyers. NiceHash QuickMiner is intended as a tryout tool. Hashing power rig means all hardware which produces hashing power that represents computation power which is required to calculate the hash function of different type of cryptocurrency. Secondary account is an account managed by third party from which the Account holder deposits funds to his NiceHash Wallet or/and to which the Account holder withdraws funds from his NiceHash Wallet. Stratum is a lightweight mining protocol: https://slushpool.com/help/manual/stratum-protocol. NiceHash Account means an online account available on the NiceHash Platform and created by completing the registration procedure on the NiceHash Platform. Account holder means an individual or legal entity who completes the registration procedure and successfully creates the NiceHash Account. Minimum Age means 18 years old or older, if in order for NiceHash to lawfully provide the Services to you without parental consent (including using your personal data). NiceHash Wallet means a wallet created automatically for the Account holder and provided by the NiceHash Wallet provider. NiceHash does not hold funds on behalf of the Account holder but only transfers Account holder’s requests regarding the NiceHash Wallet transaction to the NiceHash Wallet provider who executes the requested transactions. In this respect NiceHash only processes and performs administrative services related to the payments regarding the NiceHash Mining Services and NiceHash Exchange Services, if applicable. NiceHash Wallet provider is a third party which on the behalf of the Account holder provides and manages the NiceHash Wallet, holds, stores and transfers funds and hosts NiceHash Wallet. For more information about the NiceHash Wallet provider, see the following website: https://www.bitgo.com/. Blockchain network is a distributed database that is used to maintain a continuously growing list of records, called blocks. Force Majeure Event means any governmental or relevant regulatory regulations, acts of God, war, riot, civil commotion, fire, flood, or any disaster or an industrial dispute of workers unrelated to you or NiceHash. Any act, event, omission, happening or non-happening will only be considered Force Majeure if it is not attributable to the wilful act, neglect or failure to take reasonable precautions of the affected party, its agents, employees, consultants, contractors and sub-contractors. SALE AND PURCHASE OF HASHING POWER Hashing power providers agree to sell and NiceHash agrees to proceed Hashing power buyers’ payments for the provided hashing power on the Hashing power marketplace, on the Terms set forth herein. According to the applicable principle get-paid-per-valid-share (pay as you go principle) Hashing power providers will be paid only for validated and accepted hashing power to their NiceHash Wallet or other wallet, as indicated in Account holder’s profile settings or in stratum connection username. In some cases, no Hashing power is sent to Hashing power buyers or is accepted by NiceHash Services, even if Hashing power is generated on the Hashing power rigs. These cases include usage of slower hardware as well as software, hardware or network errors. In these cases, Hashing power providers are not paid for such Hashing power. Hashing power buyers agree to purchase and NiceHash agrees to process the order and forward the purchased hashing power on the Hashing power marketplace, on the Terms set forth herein. According to the applicable principle pay-per-valid-share (pay as you go principle) Hashing power buyers will pay from their NiceHash Wallet only for the hashing power that was validated by our engine. When connection to the mining pool which is selected on the Hashing power order is lost or when an order is cancelled during its lifetime, Hashing power buyer pays for additional 10 seconds worth of hashing power. Hashing power order is charged for extra hashing power when mining pool which is selected on the Hashing power order, generates rapid mining work changes and/or rapid mining job switching. All payments including any fees will be processed in crypto currency and NiceHash does not provide an option to sale and purchase of the hashing power in fiat currency. RISK DISCLOSURE If you choose to use NiceHash Platform, Services and NiceHash Wallet, it is important that you remain aware of the risks involved, that you have adequate technical resources and knowledge to bear such risks and that you monitor your transactions carefully. General risk You understand that NiceHash Platform and Services, blockchain technology, Bitcoin, all other cryptocurrencies and cryptotokens, proof of work concept and other associated and related technologies are new and untested and outside of NiceHash’s control. You acknowledge that there are major risks associated with these technologies. In addition to the risks disclosed below, there are risks that NiceHash cannot foresee and it is unreasonable to believe that such risk could have been foreseeable. The performance of NiceHash’s obligation under these Terms will terminate if market or technology circumstances change to such an extent that (i) these Terms clearly no longer comply with NiceHash’s expectations, (ii) it would be unjust to enforce NiceHash’s obligations in the general opinion or (iii) NiceHash’s obligation becomes impossible. NiceHash Account abuse You acknowledge that there is risk associated with the NiceHash Account abuse and that you have been fully informed and warned about it. The funds stored in the NiceHash Wallet may be disposed by third party in case the third party obtains the Account holder’s login credentials. The Account holder shall protect his login credentials and his electronic devices where the login credentials are stored against unauthorized access. Regulatory risks You acknowledge that there is risk associated with future legislation which may restrict, limit or prohibit certain aspects of blockchain technology which may also result in restriction, limitation or prohibition of NiceHash Services and that you have been fully informed and warned about it. Risk of hacking You acknowledge that there is risk associated with hacking NiceHash Services and NiceHash Wallet and that you have been fully informed and warned about it. Hacker or other groups or organizations may attempt to interfere with NiceHash Services or NiceHash Wallet in any way, including without limitation denial of services attacks, Sybil attacks, spoofing, smurfing, malware attacks, mining attacks or consensus-based attacks. Cryptocurrency risk You acknowledge that there is risk associated with the cryptocurrencies which are used as payment method and that you have been fully informed and warned about it. Cryptocurrencies are prone to, but not limited to, value volatility, transaction costs and times uncertainty, lack of liquidity, availability, regulatory restrictions, policy changes and security risks. NiceHash Wallet risk You acknowledge that there is risk associated with funds held on the NiceHash Wallet and that you have been fully informed and warned about it. You acknowledge that NiceHash Wallet is provided by NiceHash Wallet provider and not NiceHash. You acknowledge and agree that NiceHash shall not be responsible for any NiceHash Wallet provider’s services, including their accuracy, completeness, timeliness, validity, copyright compliance, legality, decency, quality or any other aspect thereof. NiceHash does not assume and shall not have any liability or responsibility to you or any other person or entity for any Hash Wallet provider’s services. Hash Wallet provider’s services and links thereto are provided solely as a convenience to you and you access and use them entirely at your own risk and subject to NiceHash Wallet provider’s terms and conditions. Since the NiceHash Wallet is a cryptocurrency wallet all funds held on it are entirely uninsured in contrast to the funds held on the bank account or other financial institutions which are insured. Connection risk You acknowledge that there are risks associated with usage of NiceHash Services which are provided through the internet including, but not limited to, the failure of hardware, software, configuration and internet connections and that you have been fully informed and warned about it. You acknowledge that NiceHash will not be responsible for any configuration, connection or communication failures, disruptions, errors, distortions or delays you may experience when using NiceHash Services, however caused. Hashing power provision risk You acknowledge that there are risks associated with the provisions of the hashing power which is provided by the Hashing power providers through the Hashing power marketplace and that you have been fully informed and warned about it. You acknowledge that NiceHash does not provide the hashing power but only provides the Hashing power marketplace as a service. Hashing power providers’ Hashing power rigs are new and untested and outside of NiceHash’s control. There is a major risk that the Hashing power rigs (i) will stop providing hashing power, (ii) will provide hashing power in an unstable way, (iii) will be wrongly configured or (iv) provide insufficient speed of the hashing power. Hashing power rigs as hardware could be subject of damage, errors, electricity outage, misconfiguration, connection or communication failures and other malfunctions. NiceHash will not be responsible for operation of Hashing power rigs and its provision of hashing power. By submitting a Hashing power order you agree to Hashing power no-refund policy – all shares forwarded to mining pool, selected on the Hashing power order are final and non-refundable. Hashing power profitability risk You acknowledge that there is risk associated with the profitability of the hashing power provision and that you have been fully informed and warned about it. You acknowledge that all Hashing power rig’s earning estimates and profitability calculations on NiceHash Platform are only for informational purposes and were made based on the Hashing power rigs set up in the test environments. NiceHash does not warrant that your Hashing power rigs would achieve the same profitability or earnings as calculated on NiceHash Platform. There is risk that your Hashing power rig would not produce desired hashing power quantity and quality and that your produced hashing power would differentiate from the hashing power produced by our Hashing power rigs set up in the test environments. There is risk that your Hashing power rigs would not be as profitable as our Hashing power rigs set up in the test environments or would not be profitable at all. WARRANTIES NiceHash Platform and Mining Services are provided on the “AS IS” and “AS AVAILABLE” basis, including all faults and defects. To the maximum extent permitted by applicable law, NiceHash makes no representations and warranties and you waive all warranties of any kind. Particularly, without limiting the generality of the foregoing, the NiceHash makes no representations and warranties, whether express, implied, statutory or otherwise regarding NiceHash Platform and Mining Services or other services related to NiceHash Platform and provided by third parties, including any warranty that such services will be uninterrupted, harmless, secure or not corrupt or damaged, meet your requirements, achieve any intended results, be compatible or work with any other software, applications, systems or services, meet any performance or error free or that any errors or defects can or will be corrected. Additionally NiceHash makes no representations and warranties, whether express, implied, statutory or otherwise of merchantability, suitability, reliability, availability, timeliness, accuracy, satisfactory quality, fitness for a particular purpose or quality, title and non-infringement with respect to any of the Mining Services or other services related to NiceHash Platform and provided by third parties, or quiet enjoyment and any warranties arising out of any course of dealing, course of performance, trade practice or usage of NiceHash Platform and Mining Services including information, content and material contained therein. Especially NiceHash makes no representations and warranties, whether express, implied, statutory or otherwise regarding any payment services and systems, NiceHash Wallet which is provided by third party or any other financial services which might be related to the NiceHash Platform and Mining Services. You acknowledge that you do not rely on and have not been induced to accept the NiceHash Platform and Mining Services according to these Terms on the basis of any warranties, representations, covenants, undertakings or any other statement whatsoever, other than expressly set out in these Terms that neither the NiceHash nor any of its respective agents, officers, employees or advisers have given any such warranties, representations, covenants, undertakings or other statements. LIABILITY NiceHash and their respective officers, employees or agents will not be liable to you or anyone else, to the maximum extent permitted by applicable law, for any damages of any kind, including, but not limited to, direct, consequential, incidental, special or indirect damages (including but not limited to lost profits, trading losses or damages that result from use or loss of use of NiceHash Services or NiceHash Wallet), even if NiceHash has been advised of the possibility of such damages or losses, including, without limitation, from the use or attempted use of NiceHash Platform and Mining Services, NiceHash Wallet or other related websites or services. NiceHash does not assume any obligations to users in connection with the unlawful alienation of Bitcoins, which occurred on 6. 12. 2017 with NICEHASH, d. o. o., and has been fully reimbursed with the completion of the NiceHash Repayment Program. NiceHash will not be responsible for any compensation, reimbursement, or damages arising in connection with: (i) your inability to use the NiceHash Platform and Mining Services, including without limitation as a result of any termination or suspension of the NiceHash Platform or these Terms, power outages, maintenance, defects, system failures, mistakes, omissions, errors, defects, viruses, delays in operation or transmission or any failure of performance, (ii) the cost of procurement of substitute goods or services, (iii) any your investments, expenditures, or commitments in connection with these Terms or your use of or access to the NiceHash Platform and Mining Services, (iv) your reliance on any information obtained from NiceHash, (v) Force Majeure Event, communications failure, theft or other interruptions or (vi) any unauthorized access, alteration, deletion, destruction, damage, loss or failure to store any data, including records, private key or other credentials, associated with NiceHash Platform and Mining Services or NiceHash Wallet. Our aggregate liability (including our directors, members, employees and agents), whether in contract, warranty, tort (including negligence, whether active, passive or imputed), product liability, strict liability or other theory, arising out of or relating to the use of NiceHash Platform and Mining Services, or inability to use the Platform and Services under these Terms or under any other document or agreement executed and delivered in connection herewith or contemplated hereby, shall in any event not exceed 100 EUR per user. You will defend, indemnify, and hold NiceHash harmless and all respective employees, officers, directors, and representatives from and against any claims, demand, action, damages, loss, liabilities, costs and expenses (including reasonable attorney fees) arising out of or relating to (i) any third-party claim concerning these Terms, (ii) your use of, or conduct in connection with, NiceHash Platform and Mining Services, (iii) any feedback you provide, (iv) your violation of these Terms, (v) or your violation of any rights of any other person or entity. If you are obligated to indemnify us, we will have the right, in our sole discretion, to control any action or proceeding (at our expense) and determine whether we wish to settle it. If we are obligated to respond to a third-party subpoena or other compulsory legal order or process described above, you will also reimburse us for reasonable attorney fees, as well as our employees’ and contractors’ time and materials spent responding to the third-party subpoena or other compulsory legal order or process at reasonable hourly rates. The Services and the information, products, and services included in or available through the NiceHash Platform may include inaccuracies or typographical errors. Changes are periodically added to the information herein. Improvements or changes on the NiceHash Platform can be made at any time. NICEHASH ACCOUNT The registration of the NiceHash Account is made through the NiceHash Platform, where you are required to enter your email address and password in the registration form. After successful completion of registration, the confirmation email is sent to you. After you confirm your registration by clicking on the link in the confirmation email the NiceHash Account is created. NiceHash will send you proof of completed registration once the process is completed. When you create NiceHash Account, you agree to (i) create a strong password that you change frequently and do not use for any other website, (ii) implement reasonable and appropriate measures designed to secure access to any device which has access to your email address associated with your NiceHash Account and your username and password for your NiceHash Account, (iii) maintain the security of your NiceHash Account by protecting your password and by restricting access to your NiceHash Account; (iv) promptly notify us if you discover or otherwise suspect any security breaches related to your NiceHash Account so we can take all required and possible measures to secure your NiceHash Account and (v) take responsibility for all activities that occur under your NiceHash Account and accept all risks of any authorized or unauthorized access to your NiceHash Account, to the maximum extent permitted by law. Losing access to your email, registered at NiceHash Platform, may also mean losing access to your NiceHash Account. You may not be able to use the NiceHash Platform or Mining Services, execute withdrawals and other security sensitive operations until you regain access to your email address, registered at NiceHash Platform. If you wish to change the email address linked to your NiceHash Account, we may ask you to complete a KYC procedure for security purposes. This step serves solely for the purpose of identification in the process of regaining access to your NiceHash Account. Once the NiceHash Account is created a NiceHash Wallet is automatically created for the NiceHash Account when the request for the first deposit to the NiceHash Wallet is made by the user. Account holder’s NiceHash Wallet is generated by NiceHash Wallet provider. Account holder is strongly suggested to enhance the security of his NiceHash Account by adding an additional security step of Two-factor authentication (hereinafter “2FA”) when logging into his account, withdrawing funds from his NiceHash Wallet or placing a new order. Account holder can enable this security feature in the settings of his NiceHash Account. In the event of losing or changing 2FA code, we may ask the Account holder to complete a KYC procedure for security reasons. This step serves solely for the purpose of identification in the process of reactivating Account holders 2FA and it may be subject to an a In order to use certain functionalities of the NiceHash Platform, such as paying for the acquired hashing power, users must deposit funds to the NiceHash Wallet, as the payments for the hashing power could be made only through NiceHash Wallet. Hashing power providers have two options to get paid for the provided hashing power: (i) by using NiceHash Wallet to receive the payments or (ii) by providing other Bitcoin address where the payments shall be received to. Hashing power providers provide their Bitcoin address to NiceHash by providing such details via Account holder’s profile settings or in a form of a stratum username while connecting to NiceHash stratum servers. Account holder may load funds on his NiceHash Wallet from his Secondary account. Account holder may be charged fees by the Secondary account provider or by the blockchain network for such transaction. NiceHash is not responsible for any fees charged by Secondary account providers or by the blockchain network or for the management and security of the Secondary accounts. Account holder is solely responsible for his use of Secondary accounts and Account holder agrees to comply with all terms and conditions applicable to any Secondary accounts. The timing associated with a load transaction will depend in part upon the performance of Secondary accounts providers, the performance of blockchain network and performance of the NiceHash Wallet provider. NiceHash makes no guarantee regarding the amount of time it may take to load funds on to NiceHash Wallet. NiceHash Wallet shall not be used by Account holders to keep, save and hold funds for longer period and also not for executing other transactions which are not related to the transactions regarding the NiceHash Platform. The NiceHash Wallet shall be used exclusively and only for current and ongoing transactions regarding the NiceHash Platform. Account holders shall promptly withdraw any funds kept on the NiceHash Wallet that will not be used and are not intended for the reasons described earlier. Commission fees may be charged by the NiceHash Wallet provider, by the blockchain network or by NiceHash for any NiceHash Wallet transactions. Please refer to the NiceHash Platform, for more information about the commission fees for NiceHash Wallet transactions which are applicable at the time of the transaction. NiceHash reserves the right to change these commission fees according to the provisions to change these Terms at any time for any reason. You have the right to use the NiceHash Account only in compliance with these Terms and other commercial terms and principles published on the NiceHash Platform. In particular, you must observe all regulations aimed at ensuring the security of funds and financial transactions. Provided that the balance of funds in your NiceHash Wallet is greater than any minimum balance requirements needed to satisfy any of your open orders, you may withdraw from your NiceHash Wallet any amount of funds, up to the total amount of funds in your NiceHash Wallet in excess of such minimum balance requirements, to Secondary Account, less any applicable withdrawal fees charged by NiceHash or by the blockchain network for such transaction. Withdrawals are not processed instantly and may be grouped with other withdrawal requests. Some withdrawals may require additional verification information which you will have to provide in order to process the withdrawal. It may take up to 24 hours before withdrawal is fully processed and distributed to the Blockchain network. Please refer to the NiceHash Platform for more information about the withdrawal fees and withdrawal processing. NiceHash reserves the right to change these fees according to the provisions to change these Terms at any time for any reason. You have the right to close the NiceHash Account. In case you have funds on your NiceHash Wallet you should withdraw funds from your account prior to requesting NiceHash Account closure. After we receive your NiceHash Account closure request we will deactivate your NiceHash Account. You can read more about closing the NiceHash Account in our Privacy Policy. Your NiceHash Account may be deactivated due to your inactivity. Your NiceHash account may be locked and a mandatory KYC procedure is applied for security reasons, if it has been more than 6 month since your last login. NiceHash or any of its partners or affiliates are not responsible for the loss of the funds, stored on or transferred from the NiceHash Wallet, as well as for the erroneous implementation of the transactions made via NiceHash Wallet, where such loss or faulty implementation of the transaction are the result of a malfunction of the NiceHash Wallet and the malfunction was caused by you or the NiceHash Wallet provider. You are obliged to inform NiceHash in case of loss or theft, as well as in the case of any possible misuse of the access data to your NiceHash Account, without any delay, and demand change of access data or closure of your existing NiceHash Account and submit a request for new access data. NiceHash will execute the change of access data or closure of the NiceHash Account and the opening of new NiceHash Account as soon as technically possible and without any undue delay. All information pertaining to registration, including a registration form, generation of NiceHash Wallet and detailed instructions on the use of the NiceHash Account and NiceHash Wallet are available at NiceHash Platform. The registration form as well as the entire system is properly protected from unwanted interference by third parties. KYC PROCEDURE NiceHash is appropriately implementing AML/CTF and security measures to diligently detect and prevent any malicious or unlawful use of NiceHash Services or use, which is strictly prohibited by these Terms, which are deemed as your agreement to provide required personal information for identity verification. Security measures include a KYC procedure, which is aimed at determining the identity of an individual user or an organisation. We may ask you to complete this procedure before enabling some or all functionalities of the NiceHash platform and provide its services. A KYC procedure might be applied as a security measure when: changing the email address linked to your NiceHash Account, losing or changing your 2FA code; logging in to your NiceHash Account for the first time after the launch of the new NiceHash Platform in August 2019, gaining access to all or a portion of NiceHash Services, NiceHash Wallet and its related services or any portion thereof if they were disabled due to and activating your NiceHash Account if it has been deactivated due to its inactivity and/or security or other reasons. HASHING POWER TRANSACTIONS General NiceHash may, at any time and in our sole discretion, (i) refuse any order submitted or provided hashing power, (ii) cancel an order or part of the order before it is executed, (iii) impose limits on the order amount permitted or on provided hashing power or (iv) impose any other conditions or restrictions upon your use of the NiceHash Platform and Mining Services without prior notice. For example, but not limited to, NiceHash may limit the number of open orders that you may establish or limit the type of supported Hashing power rigs and mining algorithms or NiceHash may restrict submitting orders or providing hashing power from certain locations. Please refer to the NiceHash Platform, for more information about terminology, hashing power transactions’ definitions and descriptions, order types, order submission, order procedure, order rules and other restrictions and limitations of the hashing power transactions. NiceHash reserves the right to change any transaction, definitions, description, order types, procedure, rules, restrictions and limitations at any time for any reason. Orders, provision of hashing power, payments, deposits, withdrawals and other transactions are accepted only through the interface of the NiceHash Platform, NiceHash API and NiceHash Account and are fixed by the software and hardware tools of the NiceHash Platform. If you do not understand the meaning of any transaction option, NiceHash strongly encourages you not to utilize any of those options. Hashing Power Order In order to submit an Hashing Power Order via the NiceHash Account, the Hashing power buyer must have available funds in his NiceHash Wallet. Hashing power buyer submits a new order to buy hashing power via the NiceHash Platform or via the NiceHash API by setting the following parameters in the order form: NiceHash service server location, third-party mining pool, algorithm to use, order type, set amount he is willing to spend on this order, set price per hash he is willing to pay, optionally approximate limit maximum hashing power for his order and other parameters as requested and by confirming his order. Hashing power buyer may submit an order in maximum amount of funds available on his NiceHash Wallet at the time of order submission. Order run time is only approximate since order’s lifetime is based on the number of hashes that it delivers. Particularly during periods of high volume, illiquidity, fast movement or volatility in the marketplace for any digital assets or hashing power, the actual price per hash at which some of the orders are executed may be different from the prevailing price indicated on NiceHash Platform at the time of your order. You understand that NiceHash is not liable for any such price fluctuations. In the event of market disruption, NiceHash Services disruption, NiceHash Hashing Power Marketplace disruption or manipulation or Force Majeure Event, NiceHash may do one or more of the following: (i) suspend access to the NiceHash Account or NiceHash Platform, or (ii) prevent you from completing any actions in the NiceHash Account, including closing any open orders. Following any such event, when trading resumes, you acknowledge that prevailing market prices may differ significantly from the prices available prior to such event. When Hashing power buyer submits an order for purchasing of the Hashing power via NiceHash Platform or via the NiceHash API he authorizes NiceHash to execute the order on his behalf and for his account in accordance with such order. Hashing power buyer acknowledges and agrees that NiceHash is not acting as his broker, intermediary, agent or advisor or in any fiduciary capacity. NiceHash executes the order in set order amount minus NiceHash’s processing fee. Once the order is successfully submitted the order amount starts to decrease in real time according to the payments for the provided hashing power. Hashing power buyer agrees to pay applicable processing fee to NiceHash for provided services. The NiceHash’s fees are deducted from Hashing power buyer’s NiceHash Wallet once the whole order is exhausted and completed. Please refer to the NiceHash Platform, for more information about the fees which are applicable at the time of provision of services. NiceHash reserves the right to change these fees according to the provisions to change these Terms at any time for any reason. The changed fees will apply only for the NiceHash Services provided after the change of the fees. All orders submitted prior the fee change but not necessary completed prior the fee change will be charged according to the fees applicable at the time of the submission of the order. NiceHash will attempt, on a commercially reasonable basis, to execute the Hashing power buyer’s purchase of the hashing power on the Hashing power marketplace under these Terms according to the best-effort delivery approach. In this respect NiceHash does not guarantee that the hashing power will actually be delivered or verified and does not guarantee any quality of the NiceHash Services. Hashing power buyer may cancel a submitted order during order’s lifetime. If an order has been partially executed, Hashing power buyer may cancel the unexecuted remainder of the order. In this case the NiceHash’s processing fee will apply only for the partially executed order. NiceHash reserves the right to refuse any order cancellation request once the order has been submitted. Selling Hashing Power and the Provision of Hashing Power In order to submit the hashing power to the NiceHash stratum server the Hashing power provider must first point its Hashing power rig to the NiceHash stratum server. Hashing power provider is solely responsible for configuration of his Hashing power rig. The Hashing power provider gets paid by Hashing power buyers for all validated and accepted work that his Hashing power rig has produced. The provided hashing power is validated by NiceHash’s stratum engine and validator. Once the hashing power is validated the Hashing power provider is entitled to receive the payment for his work. NiceHash logs all validated hashing power which was submitted by the Hashing power provider. The Hashing power provider receives the payments of current globally weighted average price on to his NiceHash Wallet or his selected personal Bitcoin address. The payments are made periodically depending on the height of payments. NiceHash reserves the right to hold the payments any time and for any reason by indicating the reason, especially if the payments represent smaller values. Please refer to the NiceHash Platform, for more information about the height of payments for provided hashing power, how the current globally weighted average price is calculated, payment periods, payment conditions and conditions for detention of payments. NiceHash reserves the right to change this payment policy according to the provisions to change these Terms at any time for any reason. All Hashing power rig’s earnings and profitability calculations on NiceHash Platform are only for informational purposes. NiceHash does not warrant that your Hashing power rigs would achieve the same profitability or earnings as calculated on NiceHash Platform. You hereby acknowledge that it is possible that your Hashing power rigs would not be as profitable as indicated in our informational calculations or would not be profitable at all. Hashing power provider agrees to pay applicable processing fee to NiceHash for provided Services. The NiceHash’s fees are deducted from all the payments made to the Hashing power provider for his provided work. Please refer to the NiceHash Platform, for more information about the fees which are applicable at the time of provision of services. Hashing power provider which has not submitted any hashing power to the NiceHash stratum server for a period of 90 days agrees that a processing fee of 0.00001000 BTC or less, depending on the unpaid mining balance, will be deducted from his unpaid mining balance. NiceHash reserves the right to change these fees according to the provisions to change these Terms at any time for any reason. The changed fees will apply only for the NiceHash Services provided after the change of the fees. NiceHash will attempt, on a commercially reasonable basis, to execute the provision of Hashing power providers’ hashing power on the Hashing power marketplace under these Terms according to the best-effort delivery approach. In this respect NiceHash does not guarantee that the hashing power will actually be delivered or verified and does not guarantee any quality of the NiceHash Services. Hashing power provider may disconnect the Hashing power rig from the NiceHash stratum server any time. NiceHash reserves the right to refuse any Hashing power rig once the Hashing power rig has been pointed towards NiceHash stratum server. RESTRICTIONS When accessing the NiceHash Platform or using the Mining Services or NiceHash Wallet, you warrant and agree that you: will not use the Services for any purpose that is unlawful or prohibited by these Terms, will not violate any law, contract, intellectual property or other third-party right or commit a tort, are solely responsible for your conduct while accessing the NiceHash Platform or using the Mining Services or NiceHash Wallet, will not access the NiceHash Platform or use the Mining Services in any manner that could damage, disable, overburden, or impair the provision of the Services or interfere with any other party's use and enjoyment of the Services, will not misuse and/or maliciously use Hashing power rigs, you will particularly refrain from using network botnets or using NiceHash Platform or Mining Services with Hashing power rigs without the knowledge or awareness of Hashing power rig owner(s), will not perform or attempt to perform any kind of malicious attacks on blockchains with the use of the NiceHash Platform or Mining Services, intended to maliciously gain control of more than 50% of the network's mining hash rate, will not use the NiceHash Platform or Mining Services for any kind of market manipulation or disruption, such as but not limited to NiceHash Mining Services disruption and NiceHash Hashing Power Marketplace manipulation. In case of any of the above mentioned events, NiceHash reserves the right to immediately suspend your NiceHash Account, freeze or block the funds in the NiceHash Wallet, and suspend your access to NiceHash Platform, particularly if NiceHash believes that such NiceHash Account are in violation of these Terms or Privacy Policy, or any applicable laws and regulation. RIGHTS AND OBLIGATIONS In the event of disputes with you, NiceHash is obliged to prove that the NiceHash service which is the subject of the dispute was not influenced by technical or other failure. You will have possibility to check at any time, subject to technical availability, the transactions details, statistics and available balance of the funds held on the NiceHash Wallet, through access to the NiceHash Account. You may not obtain or attempt to obtain any materials or information through any means not intentionally made available or provided to you or public through the NiceHash Platform or Mining Services. We may, in our sole discretion, at any time, for any or no reason and without liability to you, with prior notice (i) terminate all rights and obligations between you and NiceHash derived from these Terms, (ii) suspend your access to all or a portion of NiceHash Services, NiceHash Wallet and its related services or any portion thereof and delete or deactivate your NiceHash Account and all related information and files in such account (iii) modify, suspend or discontinue, temporarily or permanently, any portion of NiceHash Platform or (iv) provide enhancements or improvements to the features and functionality of the NiceHash Platform, which may include patches, bug fixes, updates, upgrades and other modifications. Any such change may modify or delete certain portion, features or functionalities of the NiceHash Services. You agree that NiceHash has no obligation to (i) provide any updates, or (ii) continue to provide or enable any particular portion, features or functionalities of the NiceHash Services to you. You further agree that all changes will be (i) deemed to constitute an integral part of the NiceHash Platform, and (ii) subject to these Terms. In the event of your breach of these Terms, including but not limited to, for instance, in the event that you breach any term of these Terms, due to legal grounds originating in anti-money laundering and know your client regulation and procedures, or any other relevant applicable regulation, all right and obligations between you and NiceHash derived from these Terms terminate automatically if you fail to comply with these Terms within the notice period of 8 days after you have been warned by NiceHash about the breach and given 8 days period to cure the breaches. NiceHash reserves the right to keep these rights and obligations in force despite your breach of these Terms. In the event of termination, NiceHash will attempt to return you any funds stored on your NiceHash Wallet not otherwise owed to NiceHash, unless NiceHash believes you have committed fraud, negligence or other misconduct. You acknowledge that the NiceHash Services and NiceHash Wallet may be suspended for maintenance. Technical information about the hashing power transactions, including information about chosen server locations, algorithms used, selected mining pools, your business or activities, including all financial and technical information, specifications, technology together with all details of prices, current transaction performance and future business strategy represent confidential information and trade secrets. NiceHash shall, preserve the confidentiality of all before mentioned information and shall not disclose or cause or permit to be disclosed without your permission any of these information to any person save to the extent that such disclosure is strictly to enable you to perform or comply with any of your obligations under these Terms, or to the extent that there is an irresistible legal requirement on you or NiceHash to do so; or where the information has come into the public domain otherwise than through a breach of any of the terms of these Terms. NiceHash shall not be entitled to make use of any of these confidential information and trade secrets other than during the continuance of and pursuant to these Terms and then only for the purpose of carrying out its obligations pursuant to these Terms. NICEHASH MINER LICENSE (NICEHASH MINING SOFTWARE LICENSE) NiceHash Mining Software whether on disk, in read only memory, or any other media or in any other form is licensed, not sold, to you by NiceHash for use only under these Terms. NiceHash retains ownership of the NiceHash Mining Software itself and reserves all rights not expressly granted to you. Subject to these Terms, you are granted a limited, non-transferable, non-exclusive and a revocable license to download, install and use the NiceHash Mining Software. You may not distribute or make the NiceHash Mining Software available over a network where it could be used by multiple devices at the same time. You may not rent, lease, lend, sell, redistribute, assign, sublicense host, outsource, disclose or otherwise commercially exploit the NiceHash Mining Software or make it available to any third party. There is no license fee for the NiceHash Mining Software. NiceHash reserves the right to change the license fee policy according to the provisions to change these Terms any time and for any reason, including to decide to start charging the license fee for the NiceHash Mining Software. You are responsible for any and all applicable taxes. You may not, and you agree not to or enable others to, copy, decompile, reverse engineer, reverse compile, disassemble, attempt to derive the source code of, decrypt, modify, or create derivative works of the NiceHash Mining Software or any services provided by the NiceHash Mining Software, or any part thereof (except as and only to the extent any foregoing restriction is prohibited by applicable law or to the extent as may be permitted by the licensing terms governing use of open-sourced components included with the NiceHash Mining Software). If you choose to allow automatic updates, your device will periodically check with NiceHash for updates and upgrades to the NiceHash Mining Software and, if an update or upgrade is available, the update or upgrade will automatically download and install onto your device and, if applicable, your peripheral devices. You can turn off the automatic updates altogether at any time by changing the automatic updates settings found within the NiceHash Mining Software. You agree that NiceHash may collect and use technical and related information, including but not limited to technical information about your computer, system and application software, and peripherals, that is gathered periodically to facilitate the provision of software updates, product support and other services to you (if any) related to the NiceHash Mining Software and to verify compliance with these Terms. NiceHash may use this information, as long as it is in a form that does not personally identify you, to improve our NiceHash Services. NiceHash Mining Software contains features that rely upon information about your selected mining pools. You agree to our transmission, collection, maintenance, processing, and use of all information obtained from you about your selected mining pools. You can opt out at any time by going to settings in the NiceHash Mining Software. NiceHash may provide interest-based advertising to you. If you do not want to receive relevant ads in the NiceHash Mining Software, you can opt out at any time by going to settings in the NiceHash Mining Software. If you opt out, you will continue to receive the same number of ads, but they may be less relevant because they will not be based on your interest. NiceHash Mining Software license is effective until terminated. All provisions of these Terms regarding the termination apply also for the NiceHash Mining Software license. Upon the termination of NiceHash Mining Software license, you shall cease all use of the NiceHash Mining Software and destroy or delete all copies, full or partial, of the NiceHash Mining Software. THIRD PARTY MINERS AND PLUGINS Third Party Miners and Plugins are a third party software which enables the best and most efficient mining operations. NiceHash Miner integrates third party mining software using a third party miner plugin system. Third Party Mining Software is a closed source software which supports mining algorithms for cryptocurrencies and can be integrated into NiceHash Mining Software. Third Party Miner Plugin enables the connection between NiceHash Mining Software and Third Party Mining Software and it can be closed, as well as open sourced. NiceHash Mining Software user interface enables the user to manually select which available Third Party Miners and Plugins will be downloaded and integrated. Users can select or deselect Third Party Miners and Plugins found in the Plugin Manager window. Some of the available Third Party Miners and Plugins which are most common are preselected by NiceHash, but can be deselected, depending on users' needs. The details of the Third Party Miners and Plugins available for NiceHash Mining Software are accessible within the NiceHash Mining Software user interface. The details include, but not limited to, the author of the software and applicable license information, if applicable information about developer fee for Third Party Miners, software version etc. Developer fees may apply to the use of Third Party Miners and Plugins. NiceHash will not be liable, to the maximum extent permitted by applicable law, for any damages of any kind, including, but not limited to, direct, consequential, incidental, special or indirect damages, arising out of using Third Party Miners and Plugins. The latter includes, but is not limited to: i) any power outages, maintenance, defects, system failures, mistakes, omissions, errors, defects, viruses, delays in operation or transmission or any failure of performance; ii) any unauthorized access, alteration, deletion, destruction, damage, loss or failure to store any data, including records, private key or other credentials, associated with usage of Third Party Miners and Plugins and ii) Force Majeure Event, communications failure, theft or other interruptions. If you choose to allow automatic updates, your device will periodically check with NiceHash for updates and upgrades to the installed Third Party Miners and Plugins, if an update or upgrade is available, the update or upgrade will automatically download and install onto your device and, if applicable, your peripheral devices. You can turn off the automatic updates altogether at any time by changing the automatic updates settings found within the NiceHash Mining Software. NICEHASH QUICKMINER NiceHash QuickMiner is a software application that allows the visitors of the NiceHash Quick Miner web page, accessible athttps://www.nicehash.com/quick-miner, to connect their PC or a mining rig to the NiceHash Hashing Power Marketplace. Visitors of the NiceHash Quick Miner web page can try out and experience crypto currency mining without having to register on the NiceHash Platform and create a NiceHash Account. Users are encouraged to do so as soon as possible in order to collect the funds earned using NiceHash Quick Miner. Users can download NiceHash QuickMiner free of charge. In order to operate NiceHash QuickMiner software needs to automatically detect technical information about users' computer hardware. You agree that NiceHash may collect and use technical and related information. For more information please refer to NiceHash Privacy Policy. Funds arising from the usage of NiceHash QuickMiner are transferred to a dedicated cryptocurrency wallet owned and managed by NiceHash. NiceHash QuickMiner Users expressly agree and acknowledge that completing the registration process and creating a NiceHash Account is necessary in order to collect the funds arising from the usage of NiceHash QuickMiner. Users of NiceHash QuickMiner who do not successfully register a NiceHash Account will lose their right to claim funds arising from their usage of NiceHash QuickMiner. Those funds, in addition to the condition that the user has not been active on the NiceHash QuickMiner web page for consecutive 7 days, will be donated to the charity of choice. NICEHASH PRIVATE ENDPOINT NiceHash Private Endpoint is a network interface that connects users privately and securely to NiceHash Stratum servers. Private Endpoint uses a private IP address and avoids additional latency caused by DDOS protection. All NiceHash Private Mining Proxy servers are managed by NiceHash and kept up-to-date. Users can request a dedicated private access endpoint by filling in the form for NiceHash Private Endpoint Solution available at the NiceHash Platform. In the form the user specifies the email address, country, number of connections and locations and algorithms used. Based on the request NiceHash prepares an individualized offer based on the pricing stipulated on the NiceHash Platform, available at https://www.nicehash.com/private-endpoint-solution. NiceHash may request additional information from the users of the Private Endpoint Solution in order to determine whether we are obligated to collect VAT from you, including your VAT identification number. INTELLECTUAL PROPERTY NiceHash retains all copyright and other intellectual property rights, including inventions, discoveries, knowhow, processes, marks, methods, compositions, formulae, techniques, information and data, whether or not patentable, copyrightable or protectable in trademark, and any trademarks, copyrights or patents based thereon over all content and other materials contained on NiceHash Platform or provided in connection with the Services, including, without limitation, the NiceHash logo and all designs, text, graphics, pictures, information, data, software, source code, as well as the compilation thereof, sound files, other files and the selection and arrangement thereof. This material is protected by international copyright laws and other intellectual property right laws, namely trademark. These Terms shall not be understood and interpreted in a way that they would mean assignment of copyright or other intellectual property rights, unless it is explicitly defined so in these Terms. NiceHash hereby grants you a limited, nonexclusive and non-sublicensable license to access and use NiceHash’s copyrighted work and other intellectual property for your personal or internal business use. Such license is subject to these Terms and does not permit any resale, the distribution, public performance or public display, modifying or otherwise making any derivative uses, use, publishing, transmission, reverse engineering, participation in the transfer or sale, or any way exploit any of the copyrighted work and other intellectual property other than for their intended purposes. This granted license will automatically terminate if NiceHash suspends or terminates your access to the Services, NiceHash Wallet or closes your NiceHash Account. NiceHash will own exclusive rights, including all intellectual property rights, to any feedback including, but not limited to, suggestions, ideas or other information or materials regarding NiceHash Services or related products that you provide, whether by email, posting through our NiceHash Platform, NiceHash Account or otherwise and you irrevocably assign any and all intellectual property rights on such feedback unlimited in time, scope and territory. Any Feedback you submit is non-confidential and shall become the sole property of NiceHash. NiceHash will be entitled to the unrestricted use, modification or dissemination of such feedback for any purpose, commercial or otherwise, without acknowledgment or compensation to you. You waive any rights you may have to the feedback. We have the right to remove any posting you make on NiceHash Platform if, in our opinion, your post does not comply with the content standards defined by these Terms. PRIVACY POLICY Please refer to our NiceHash Platform and Mining Services Privacy Policy published on the NiceHash Platform for information about how we collect, use and share your information, as well as what options do you have with regards to your personal information. COMMUNICATION AND SUPPORT You agree and consent to receive electronically all communications, agreements, documents, receipts, notices and disclosures that NiceHash provides in connection with your NiceHash Account or use of the NiceHash Platform and Services. You agree that NiceHash may provide these communications to you by posting them via the NiceHash Account or by emailing them to you at the email address you provide. You should maintain copies of electronic communications by printing a paper copy or saving an electronic copy. It is your responsibility to keep your email address updated in the NiceHash Account so that NiceHash can communicate with you electronically. You understand and agree that if NiceHash sends you an electronic communication but you do not receive it because your email address is incorrect, out of date, blocked by your service provider, or you are otherwise unable to receive electronic communications, it will be deemed that you have been provided with the communication. You can update your NiceHash Account preferences at any time by logging into your NiceHash Account. If your email address becomes invalid such that electronic communications sent to you by NiceHash are returned, NiceHash may deem your account to be inactive and close it. You may give NiceHash a notice under these Terms by sending an email to support@nicehash.com or contact NiceHash through support located on the NiceHash Platform. All communication and notices pursuant to these Terms must be given in English language. FEES Please refer to the NiceHash Platform for more information about the fees or administrative costs which are applicable at the time of provision of services. NiceHash reserves the right to change these fees according to the provisions to change these Terms at any time for any reason. The changed fees will apply only for the Services provided after the change of the fees. You authorize us, or our designated payment processor, to charge or deduct your NiceHash Account for any applicable fees in connection with the transactions completed via the Services. TAX It is your responsibility to determine what, if any, taxes apply to the transactions you complete or services you provide via the NiceHash Platform, Mining Services and NiceHash Wallet, it is your responsibility to report and remit the correct tax to the appropriate tax authority and all your factual and potential tax obligations are your concern. You agree that NiceHash is not in any case and under no conditions responsible for determining whether taxes apply to your transactions or services or for collecting, reporting, withholding or remitting any taxes arising from any transactions or services. You also agree that NiceHash is not in any case and under no conditions bound to compensate for your tax obligation or give you any advice related to tax issues. All fees and charges payable by you to NiceHash are exclusive of any taxes, and shall certain taxes be applicable, they shall be added on top of the payable amounts. Upon our request, you will provide to us any information that we reasonably request to determine whether we are obligated to collect VAT from you, including your VAT identification number. If any deduction or withholding is required by law, you will notify NiceHash and will pay NiceHash any additional amounts necessary to ensure that the net amount received by NiceHash, after any deduction and withholding, equals the amount NiceHash would have received if no deduction or withholding had been required. Additionally, you will provide NiceHash with documentation showing that the withheld and deducted amounts have been paid to the relevant taxing authority. FINAL PROVISIONS Natural persons and legal entities that are not capable of holding legal rights and obligations are not allowed to create NiceHash Account and use NiceHash Platform or other related services. If NiceHash becomes aware that such natural person or legal entity has created the NiceHash Account or has used NiceHash Services, NiceHash will delete such NiceHash Account and disable any Services and block access to NiceHash Account and NiceHash Services to such natural person or legal entity. If you register to use the NiceHash Services on behalf of a legal entity, you represent and warrant that (i) such legal entity is duly organized and validly existing under the applicable laws of the jurisdiction of its organization; and (ii) you are duly authorized by such legal entity to act on its behalf. These Terms do not create any third-party beneficiary rights in any individual or entity. These Terms forms the entire agreement and understanding relating to the subject matter hereof and supersede any previous and contemporaneous agreements, arrangements or understandings relating to the subject matter hereof to the exclusion of any terms implied by law that may be excluded by contract. If at any time any provision of these Terms is or becomes illegal, invalid or unenforceable, the legality, validity and enforceability of every other provisions will not in any way be impaired. Such illegal, invalid or unenforceable provision of these Terms shall be deemed to be modified and replaced by such legal, valid and enforceable provision or arrangement, which corresponds as closely as possible to our and your will and business purpose pursued and reflected in these Terms. Headings of sections are for convenience only and shall not be used to limit or construe such sections. No failure to enforce nor delay in enforcing, on our side to the Terms, any right or legal remedy shall function as a waiver thereof, nor shall any individual or partial exercise of any right or legal remedy prevent any further or other enforcement of these rights or legal remedies or the enforcement of any other rights or legal remedies. NiceHash reserves the right to make changes, amendments, supplementations or modifications from time to time to these Terms including but not limited to changes of licence agreement for NiceHash Mining Software and of any fees and compensations policies, in its sole discretion and for any reason. We suggest that you review these Terms periodically for changes. If we make changes to these Terms, we will provide you with notice of such changes, such as by sending an email, providing notice on the NiceHash Platform, placing a popup window after login to the NiceHash Account or by posting the amended Terms on the NiceHash Platform and updating the date at the top of these Terms. The amended Terms will be deemed effective immediately upon posting for any new users of the NiceHash Services. In all other cases, the amended Terms will become effective for preexisting users upon the earlier of either: (i) the date users click or press a button to accept such changes in their NiceHash Account, or (ii) continued use of NiceHash Services 30 days after NiceHash provides notice of such changes. Any amended Terms will apply prospectively to use of the NiceHash Services after such changes become effective. The notice of change of these Terms is considered as notice of termination of all rights and obligations between you and NiceHash derived from these Terms with notice period of 30 days, if you do not accept the amended Terms. If you do not agree to any amended Terms, (i) the agreement between you and NiceHash is terminated by expiry of 30 days period which starts after NiceHash provides you a notice of change of these Terms, (ii) you must discontinue using NiceHash Services and (iii) you must inform us regarding your disagreement with the changes and request closure of your NiceHash Account. If you do not inform us regarding your disagreement and do not request closure of you NiceHash Account, we will deem that you agree with the changed Terms. You may not assign or transfer your rights or obligations under these Terms without the prior written consent of NiceHash. NiceHash may assign or transfer any or all of its rights under these Terms, in whole or in part, without obtaining your consent or approval. These Terms shall be governed by and construed and enforced in accordance with the Laws of the British Virgin Islands, and shall be interpreted in all respects as a British Virgin Islands contract. Any transaction, dispute, controversy, claim or action arising from or related to your access or use of the NiceHash Platform or these Terms of Service likewise shall be governed by the Laws of the British Virgin Islands, exclusive of choice-of-law principles. The rights and remedies conferred on NiceHash by, or pursuant to, these Terms are cumulative and are in addition, and without prejudice, to all other rights and remedies otherwise available to NiceHash at law. NiceHash may transfer its rights and obligations under these Terms to other entities which include, but are not limited to H-BIT, d.o.o. and NICEX Ltd, or any other firm or business entity that directly or indirectly acquires all or substantially all of the assets or business of NICEHASH Ltd. If you do not consent to any transfer, you may terminate this agreement and close your NiceHash Account. These Terms are not boilerplate. If you disagree with any of them, believe that any should not apply to you, or wish to negotiate these Terms, please contact NiceHash and immediately navigate away from the NiceHash Platform. Do not use the NiceHash Mining Services, NiceHash Wallet or other related services until you and NiceHash have agreed upon new terms of service. Last updated: March 1, 2021
nyaundid
SEIS 665 Assignment 2: Linux & Git Overview This week we will focus on becoming familiar with launching a Linux server and working with some basic Linux and Git commands. We will use AWS to launch and host the Linux server. AWS might seem a little confusing at this point. Don’t worry, we will gain much more hands-on experience with AWS throughout the course. The goal is to get you comfortable working with the technology and not overwhelm you with all the details. Requirements You need to have a personal AWS account and GitHub account for this assignment. You should also read the Git Hands-on Guide and Linux Hands-on Guide before beginning this exercise. A word about grading One of the key DevOps practices we learn about in this class is the use of automation to increase the speed and repeatability of processes. Automation is utilized during the assignment grading process to review and assess your work. It’s important that you follow the instructions in each assignment and type in required files and resources with the proper names. All names are case sensitive, so a name like "Web1" is not the same as "web1". If you misspell a name, use the wrong case, or put a file in the wrong directory location you will lose points on your assignment. This is the easiest way to lose points, and also the most preventable. You should always double-check your work to make sure it accurately reflects the requirements specified in the assignment. You should always carefully review the content of your files before submitting your assignment. The assignment Let’s get started! Create GitHub repository The first step in the assignment is to setup a Git repository on GitHub. We will use a special solution called GitHub Classroom for this course which automates the process of setting up student assignment repositories. Here are the basic steps: Click on the following link to open Assignment 2 on the GitHub Classroom site: https://classroom.github.com/a/K4zcVmX- (Links to an external site.)Links to an external site. Click on the Accept this assignment button. GitHub Classroom will provide you with a URL (https) to access the assignment repository. Either copy this address to your clipboard or write it down somewhere. You will need to use this address to set up the repository on a Linux server. Example: https://github.com/UST-SEIS665/hw2-seis665-02-spring2019-<your github id>.git At this point your new repository to ready to use. The repository is currently empty. We will put some content in there soon! Launch Linux server The second step in the assignment is to launch a Linux server using AWS EC2. The server should have the following characteristics: Amazon Linux 2 AMI 64-bit (usually the first option listed) Located in a U.S. region (us-east-1) t2.micro instance type All default instance settings (storage, vpm, security group, etc.) I’ve shown you how to launch EC2 instances in class. You can review it on Canvas. Once you launch the new server, it may take a few minutes to provision. Log into server The next step is to log into the Linux server using a terminal program with a secure shell (SSH) support. You can use iTerm2 (Links to an external site.)Links to an external site. on a Mac and GitBash/PuTTY (Links to an external site.)Links to an external site. on a PC. You will need to have the private server key and the public IP address before attempting to log into the server. The server key is basically your password. If you lose it, you will need to terminate the existing instance and launch a new server. I recommend reusing the same key when launching new servers throughout the class. Note, I make this recommendation to make the learning process easier and not because it is a common security practice. I’ve shown you how to use a terminal application to log into the instance using a Windows desktop. Your personal computer or lab computer may be running a different OS version, but the process is still very similar. You can review the videos on the Canvas. Working with Linux If you’ve made it this far, congratulations! You’ve made it over the toughest hurdle. By the end of this course, I promise you will be able to launch and log into servers in your sleep. You should be looking at a login screen that looks something like this: Last login: Mon Mar 21 21:17:54 2016 from 174-20-199-194.mpls.qwest.net __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2015.09-release-notes/ 8 package(s) needed for security, out of 17 available Run "sudo yum update" to apply all updates. ec2-user@ip-172-31-15-26 ~]$ Your terminal cursor is sitting at the shell prompt, waiting for you to type in your first command. Remember the shell? It is a really cool program that lets you start other programs and manage services on the Linux system. The rest of this assignment will be spent working with the shell. Note, when you are asked to type in a command in the steps below, don’t type in the dollar-sign ($) character. This is just meant to represent the command prompt. The actual commands are represented by the characters to the right of the command prompt. Let’s start by asking the shell for some help. Type in: $ help The shell provides you with a list of commands you can run along with possible command options. Next, check out one of the pages in the built-in manual: $ man ls A man page will appear with information on how to use the ls command. This command is used to list the contents of file directories. Either space through the contents of the man page or hit q to exit. Most of the core Linux commands have man pages available. But honestly, some of these man pages are a bit hard to understand. Sometimes your best bet is to search on Google if you are trying to figure out how to use a specific command. When you initially log into Linux, the system places you in your home directory. Each user on the system has a separate home directory. Let’s see where your home directory is located: $ pwd The response should be /home/ec2-user. The pwd command is handy to remember if you ever forget what file directory you are currently located in. If you recall from the Linux Hands-on Guide, this directory is also your current working directory. Type in: $ cd / The cd command let’s you change to a new working directory on the server. In this case, we changed to the root (/) directory. This is the parent of all the other directories on the file system. Type in: $ ls The ls command lists the contents of the current directory. As you can see, root directory contains many other directories. You will become familiar with these directories over time. The ls command provides a very basic directory listing. You need to supply the command with some options if you want to see more detailed information. Type in: $ ls -la See how this command provides you with much more detailed information about the files and directories? You can use this detailed listing to see the owner, group, and access control list settings for each file or directory. Do you see any files listed? Remember, the first character in the access control list column denotes whether a listed item is a file or a directory. You probably see a couple files with names like .autofsck. How come you didn’t see this file when you typed in the lscommand without any options? (Try to run this command again to convince yourself.) Files names that start with a period are called hidden files. These files won’t appear on normal directory listings. Type in: $ cd /var Then, type in: $ ls You will see a directory listing for the /var directory. Next, type in: $ ls .. Huh. This directory listing looks the same as the earlier root directory listing. When you use two periods (..) in a directory path that means you are referring to the parent directory of the current directory. Just think of the two dots as meaning the directory above the current directory. Now, type in: $ cd ~ $ pwd Whoa. We’re back at our home directory again. The tilde character (~) is another one of those handy little directory path shortcuts. It always refers to our personal home directory. Keep in mind that since every user has their own home directory, the tilde shortcut will refer to a unique directory for each logged-in user. Most students are used to navigating a file system by clicking a mouse in nested graphical folders. When they start using a command-line to navigate a file system, they sometimes get confused and lose track of their current position in the file system. Remember, you can always use the pwd command to quickly figure out what directory you are currently working in. Let’s make some changes to the file system. We can easily make our own directories on the file system. Type: mkdir test Now type: ls Cool, there’s our new test directory. Let’s pretend we don’t like that directory name and delete it. Type: rmdir test Now it’s gone. How can you be sure? You should know how to check to see if the directory still exists at this point. Go ahead and check. Let’s create another directory. Type in: $ mkdir documents Next, change to the new directory: $ cd documents Did you notice that your command prompt displays the name of the current directory? Something like: [ec2-user@ip-172-31-15-26 documents]$. Pretty handy, huh? Okay, let’s create our first file in the documents directory. This is just an empty file for training purposes. Type in: $ touch paper.txt Check to see that the new file is in the directory. Now, go back to the previous directory. Remember the double dot shortcut? $ cd .. Okay, we don’t like our documents directory any more. Let’s blow it away. Type in: $ rmdir documents Uh oh. The shell didn’t like that command because the directory isn’t empty. Let’s change back into the documents directory. But this time don’t type in the full name of the directory. You can let shell auto-completion do the typing for you. Type in the first couple characters of the directory name and then hit the tab key: $ cd doc<tab> You should use the tab auto-completion feature often. It saves typing and makes working with the Linux file system much much easier. Tab is your friend. Now, remove the file by typing: $ rm paper.txt Did you try to use the tab key instead of typing in the whole file name? Check to make sure the file was deleted from the directory. Next, create a new file: $ touch file1 We like file1 so much that we want to make a backup copy. Type: $ cp file1 file1-backup Check to make sure the new backup copy was created. We don’t really like the name of that new file, so let’s rename it. Type: $ mv file1-backup backup Moving a file to the same directory and giving it a new name is basically the same thing as renaming it. We could have moved it to a different directory if we wanted. Let’s list all of the files in the current directory that start with the letter f: $ ls f* Using wildcard pattern matching in file commands is really useful if you want the command to impact or filter a group of files. Now, go up one directory to the parent directory (remember the double dot shortcut?) We tried to remove the documents directory earlier when it had files in it. Obviously that won’t work again. However, we can use a more powerful command to destroy the directory and vanquish its contents. Behold, the all powerful remove command: $ rm -fr documents Did you remember to use auto-completion when typing in documents? This command and set of options forcibly removes the directory and its contents. It’s a dangerous command wielded by the mightiest Linux wizards. Okay, maybe that’s a bit of an exaggeration. Just be careful with it. Check to make sure the documents directory is gone before proceeding. Let’s continue. Change to the directory /var and make a directory called test. Ugh. Permission denied. We created this darn Linux server and we paid for it. Shouldn’t we be able to do anything we want on it? You logged into the system as a user called ec2-user. While this user can create and manage files in its home directory, it cannot change files all across the system. At least it can’t as a normal user. The ec2-user is a member of the root group, so it can escalate its privileges to super-user status when necessary. Let’s try it: $ sudo mkdir test Check to make sure the directory exists now. Using sudo we can execute commands as a super-user. We can do anything we want now that we know this powerful new command. Go ahead and delete the test directory. Did you remember to use sudo before the rmdir command? Check to make sure the directory is gone. You might be asking yourself the question: why can we list the contents of the /var directory but not make changes? That’s because all users have read access to the /var directory and the ls command is a read function. Only the root users or those acting as a super-user can write changes to the directory. Let’s go back to our home directory: $ cd ~ Editing text files is a really common task on Linux systems because many of the application configuration files are text files. We can create a text file by using a text editor. Type in: $ nano myfile.conf The shell starts up the nano text editor and places your terminal cursor in the editing screen. Nano is a simple text-based word processor. Type in a few lines of text. When you’re done writing your novel, hit ctrl-x and answer y to the prompt to save your work. Finally, hit enter to save the text to the filename you specified. Check to see that your file was saved in the directory. You can take a look at the contents of your file by typing: $ cat myfile.conf The cat command displays your text file content on the terminal screen. This command works fine for displaying small text files. But if your file is hundreds of lines long, the content will scroll down your terminal screen so fast that you won’t be able to easily read it. There’s a better way to view larger text files. Type in: $ less myfile.conf The less command will page the display of a text file, allowing you to page through the contents of the file using the space bar. Your text file is probably too short to see the paging in action though. Hit q to quit out of the less text viewer. Hit the up-arrow key on your keyboard a few times until the commmand nano myfile.conf appears next to your command prompt. Cool, huh? The up-arrow key allows you to replay a previously run command. Linux maintains a list of all the commands you have run since you logged into the server. This is called the command history. It’s a really useful feature if you have to re-run a complex command again. Now, hit ctrl-c. This cancels whatever command is displayed on the command line. Type in the following command to create a couple empty files in the directory: $ touch file1 file2 file3 Confirm that the files were created. Some commands, like touch. allow you to specify multiple files as arguments. You will find that Linux commands have all kinds of ways to make tasks more efficient like this. Throughout this assignment, we have been running commands and viewing results on the terminal screen. The screen is the standard place for commands to output results. It’s known as the standard out (stdout). However, it’s really useful to output results to the file system sometimes. Type in: $ ls > listing.txt Take a look at the directory listing now. You just created a new file. View the contents of the listing.txt file. What do you see? Instead of sending the output from the ls command to the screen we sent it to a text file. Let’s try another one. Type: $ cat myfile.conf > listing.txt Take a look at the contents of the listing.txt file again. It looks like your myfile.conf file now. It’s like you made a copy of it. But what happened to the previous content in the listing.txt file? When you redirect the output of a command using the right angle-bracket character (>), the output overwrites the existing file. Type this command in: $ cat myfile.conf >> listing.txt Now look at the contents of the listing.txt file. You should see your original content displayed twice. When you use two angle-bracket characters in the commmand the output appends (or adds to) the file instead of overwriting it. We redirected the output from a command to a text file. It’s also possible to redirect the input to a command. Typically we use a keyboard to provide input, but sometimes it makes more sense to input a file to a command. For example, how many words are in your new listing.txt file? Let’s find out. Type in: $ wc -w < listing.txt Did you get a number? This command inputs the listing.txt file into a word count program called wc. Type in the command: $ ls /usr/bin The terminal screen probably scrolled quickly as filenames flashed by. The /usr/bin directory holds quite a few files. It would be nice if we could page through the contents of this directory. Well, we can. We can use a special shell feature called pipes. In previous steps, we redirected I/O using the file system. Pipes allow us to redirect I/O between programs. We can redirect the output from one program into another. Type in: $ ls /usr/bin | less Now the directory listing is paged. Hit the spacebar to page through the listing. The pipe, represented by a vertical bar character (|), takes the output from the ls command and redirects it to the less command where the resulting output is paged. Pipes are super powerful and used all the time by savvy Linux operators. Hit the q key to quit the paginated directory listing command. Working with shell scripts Now things are going to get interesting. We’ve been manually typing in commands throughout this exercise. If we were running a set of repetitive tasks, we would want to automate the process as much as possible. The shell makes it really easy to automate tasks using shell scripts. The shell provides many of the same features as a basic procedural programming language. Let’s write some code. Type in this command: $ j=123 $ echo $j We just created a variable named j referencing the string 123. The echo command printed out the value of the variable. We had to use a dollar sign ($) when referencing the variable in another command. Next, type in: $ j=1+1 $ echo $j Is that what you expected? The shell just interprets the variable value as a string. It’s not going to do any sort of computation. Typing in shell script commands on the command line is sort of pointless. We want to be able to create scripts that we can run over-and-over. Let’s create our first shell script. Use the nano editor to create a file named myscript. When the file is open in the editor, type in the following lines of code: #!/bin/bash echo Hello $1 Now quit the editor and save your file. We can run our script by typing: $ ./myscript World Er, what happened? Permission denied. Didn’t we create this file? Why can’t we run it? We can’t run the script file because we haven’t set the execute permission on the file. Type in: $ chmod u+x myscript This modifies the file access control list to allow the owner of the file to execute it. Let’s try to run the command again. Hit the up-arrow key a couple times until the ./myscript World command is displayed and hit enter. Hooray! Our first shell script. It’s probably a bit underwhelming. No problem, we’ll make it a little more complex. The script took a single argument called World. Any arguments provided to a shell script are represented as consecutively numbered variables inside the script ($1, $2, etc). Pretty simple. You might be wondering why we had to type the ./ characters before the name of our script file. Try to type in the command without them: $ myscript World Command not found. That seems a little weird. Aren’t we currently in the directory where the shell script is located? Well, that’s just not how the shell works. When you enter a command into the shell, it looks for the command in a predefined set of directories on the server called your PATH. Since your script file isn’t in your special path, the shell reports it as not found. By typing in the ./ characters before the command name you are basically forcing the shell to look for your script in the current directory instead of the default path. Create another file called cleanup using nano. In the file editor window type: #!/bin/bash # My cleanup script mkdir archive mv file* archive Exit the editor window and save the file. Change the permissions on the script file so that you can execute it. Now run the command: $ ./cleanup Take a look at the file directory listing. Notice the archive directory? List the contents of that directory. The script automatically created a new directory and moved three files into it. Anything you can do manually at a command prompt can be automated using a shell script. Let’s create one more shell script. Use nano to create a script called namelist. Here is the content of the script: #!/bin/bash # for-loop test script names='Jason John Jane' for i in $names do echo Hello $i done Change the permissions on the script file so that you can execute it. Run the command: $ ./namelist The script will loop through a set of names stored in a variable displaying each one. Scripts support several programming constructs like for-loops, do-while loops, and if-then-else. These building blocks allow you to create fairly complex scripts for automating tasks. Installing packages and services We’re nearing the end of this assignment. But before we finish, let’s install some new software packages on our server. The first thing we should do is make sure all the current packages installed on our Linux server are up-to-date. Type in: $ sudo yum update -y This is one of those really powerful commands that requires sudo access. The system will review the currently installed packages and go out to the Internet and download appropriate updates. Next, let’s install an Apache web server on our system. Type in: $ sudo yum install httpd -y Bam! You probably never knew that installing a web server was so easy. We’re not going to actually use the web server in this exercise, but we will in future assignments. We installed the web server, but is it actually running? Let’s check. Type in: $ sudo service httpd status Nope. Let’s start it. Type: $ sudo service httpd start We can use the service command to control the services running on the system. Let’s setup the service so that it automatically starts when the system boots up. Type in: $ sudo chkconfig httpd on Cool. We installed the Apache web server on our system, but what other programs are currently running? We can use the pscommand to find out. Type in: $ ps -ax Lots of processes are running on our system. We can even look at the overall performance of our system using the topcommand. Let’s try that now. Type in: $ top The display might seem a little overwhelming at first. You should see lots of performance information displayed including the cpu usage, free memory, and a list of running tasks. We’re almost across the finish line. Let’s make sure all of our valuable work is stored in a git repository. First, we need to install git. Type in the command: $ sudo yum install git -y Check your work It’s very important to check your work before submitting it for grading. A misspelled, misplaced or missing file will cost you points. This may seem harsh, but the reality is that these sorts of mistakes have consequences in the real world. For example, a server instance could fail to launch properly and impact customers because a single required file is missing. Here is what the contents of your git repository should look like before final submission: ┣archive ┃ ┣ file1 ┃ ┣ file2 ┃ ┗ file3 ┣ namelist ┗ myfile.conf Saving our work in the git repository Next, make sure you are still in your home directory (/home/ec2-user). We will install the git repository you created at the beginning of this exercise. You will need to modify this command by typing in the GitHub repository URL you copied earlier. $ git clone <your GitHub URL here>.git Example: git clone https://github.com/UST-SEIS665/hw2-seis665-02-spring2019-<your github id>.git The git application will ask you for your GitHub username and password. Note, if you have multi-factor authentication enabled on your GitHub account you will need to provide a personal token instead of your password. Git will clone (copy) the repository from GitHub to your Linux server. Since the repository is empty the clone happens almost instantly. Check to make sure that a sub-directory called "hw2-seis665-02-spring2019-<username>" exists in the current directory (where <username> is your GitHub account name). Git automatically created this directory as part of the cloning process. Change to the hw2-seis665-02-spring2019-<username> directory and type: $ ls -la Notice the .git hidden directory? This is where git actually stores all of the file changes in your repository. Nothing is actually in your repository yet. Change back to the parent directory (cd ..). Next, let’s move some of our files into the repository. Type: $ mv archive hw2-seis665-02-spring2019-<username> $ mv namelist hw2-seis665-02-spring2019-<username> $ mv myfile.conf hw2-seis665-02-spring2019-<username> Hopefully, you remembered to use the auto-complete function to reduce some of that typing. Change to the hw2-seis665-02-spring2019-<username> directory and list the directory contents. Your files are in the working directory, but are not actually stored in the repository because they haven’t been committed yet. Type in: $ git status You should see a list of untracked files. Let’s tell git that we want these files tracked. Type in: $ git add * Now type in the git status command again. Notice how all the files are now being tracked and are ready to be committed. These files are in the git staging area. We’ll commit them to the repository next. Type: $ git commit -m 'assignment 2 files' Next, take a look at the commit log. Type: $ git log You should see your commit listed along with an assigned hash (long string of random-looking characters). Finally, let’s save the repository to our GitHub account. Type in: $ git push origin master The git client will ask you for your GitHub username and password before pushing the repository. Go back to the GitHub.com website and login if you have been logged out. Click on the repository link for the assignment. Do you see your files listed there? Congratulations, you completed the exercise! Terminate server The last step is to terminate your Linux instance. AWS will bill you for every hour the instance is running. The cost is nominal, but there’s no need to rack up unnecessary charges. Here are the steps to terminate your instance: Log into your AWS account and click on the EC2 dashboard. Click the Instances menu item. Select your server in the instances table. Click on the Actions drop down menu above the instances table. Select the Instance State menu option Click on the Terminate action. Your Linux instance will shutdown and disappear in a few minutes. The EC2 dashboard will continue to display the instance on your instance listing for another day or so. However, the state of the instance will be terminated. Submitting your assignment — IMPORTANT! If you haven’t already, please e-mail me your GitHub username in order to receive credit for this assignment. There is no need to email me to tell me that you have committed your work to GitHub or to ask me if your GitHub submission worked. If you can see your work in your GitHub repository, I can see your work.
video-game-coding-club
A project to learn how to build web pages and how encryption works
karan
You don't need Javascript to make a beautiful, usable web. How it works: https://goel.io/nojs-club
VirgilSecurity
A simple Web application that demonstrates how the end-to-end encryption works. The application uses firebase as a backend service for authentication and chat messaging, and Virgil E3Kit SDK for end-to-end encryption.
Xanonymous-GitHub
🌏 The re-implementation of Baba is you in JS web. Baba Is You is a puzzle game where the rules you have to follow are present as physical objects in the game world. By manipulating the rules, you can change how the game works, repurpose things you find in the levels and cause surprising interactions!
kamronbekshodmonov
This application visualizes how JavaScript Event Loop (Call Stack, Web API, and Callback Queue) works.
Aliyan-Haxo
This page is a mirror of the former content of http://www.geohot.com/ as at 26 January 2011, removed following a Sony lawsuit. All content outside of the black areas is from George Hotz, not me. His original site now contains details of the unjust lawsuit against him, which was settled on 11 April 2011. NEW 2012-10-25! Here is the announcement by The Three Musketeers on 22 October 2012 of their leak of the PlayStation 3 bootldr keys. UPDATED 2012-10-25! The first binary download site for Mr Wicked's SACD Ripper. This is what PS3 homebrew is all about: using the PS3 for legitimate purposes that Sony would never allow – format-shifting from the dying SACD medium to open file formats playable on commodity PCs. Download beta version 0.21 (r275) which works stand-alone, or version 0.30 (r315) now called sacd-daemon, which works over a network with companion client software SACD Extract. You will also need a recent custom firmware such as OtherOS++ and the PS3 root keys. erk: C0 CE FE 84 C2 27 F7 5B D0 7A 7E B8 46 50 9F 93 B2 38 E7 70 DA CB 9F F4 A3 88 F8 12 48 2B E2 1B riv: 47 EE 74 54 E4 77 4C C9 B8 96 0C 7B 59 F4 C1 4D pub: C2 D4 AA F3 19 35 50 19 AF 99 D4 4E 2B 58 CA 29 25 2C 89 12 3D 11 D6 21 8F 40 B1 38 CA B2 9B 71 01 F3 AE B7 2A 97 50 19 R: 80 6E 07 8F A1 52 97 90 CE 1A AE 02 BA DD 6F AA A6 AF 74 17 n: E1 3A 7E BC 3A CC EB 1C B5 6C C8 60 FC AB DB 6A 04 8C 55 E1 K: BA 90 55 91 68 61 B9 77 ED CB ED 92 00 50 92 F6 6C 7A 3D 8D Da: C5 B2 BF A1 A4 13 DD 16 F2 6D 31 C0 F2 ED 47 20 DC FB 06 70 ~geohot props to fail0verflow for the asymmetric half no donate link, just use this info wisely i do not condone piracy if you want your next console to be secure, get in touch with me. any of you 3. it'd be fun to be on the other side. ...and this is a real self, hello world although it's not NPDRM, so it won't run off the hard drive shouts to the guys who did PSL1GHT without you, I couldn't release this first piece of homebrew you can run put in service mode, put on usb stick, boot [1] I made a video [2] it's jailbreak time open the zip, you know how to install 3.55 only would be pirates, don't waste your time do not mirror file, link to geohot.com [3] no donations accepted right now, don't get scammed homebrew signing tools and source [4] make_self_npdrm makes valid NPDRM selfs from elfs it does not contain any info on decrypting or removing NPDRM NPDRM is required for interoperability of our homebrew applications package_finalize turns your debug packages into psuedoretail packages psuedoretail packages install on a geohot jailbroken PS3 i'm excited to see what you will create open source SDK @ PSL1GHT [1] This grey text is from an earlier version of the Web site, as at 4 January. Although it shows George in a less favourable light, it is important because Sony has used it against him in their lawsuit. [2] The YouTube video link, which is now private, has been replaced with another YouTube user's copy, and for good measure we have a local copy too. [3] Actually do mirror widely... but be careful. [4] The github repository linked from the original page is down; so the "source" link now goes to a fork of it. A zipfile of that repository is also available just in case. The greyed-out tools link was only online for a few days, between about 8 and 11 January. To contact me (not geohot), email wdnqg3ehh3hvalpe at tormail.net* (easy to remember, as it's the same as the hostname of this site). My Bitcoin address for donations is 1C9KqYU8DC3dCfKPctT3RdcbGJpx6abYKn. * As at 4 August 2013, tormail has been compromised and is down.
Maksof-waqarahmed
Learn the foundations of web development using HTML, CSS, and JavaScript, enhanced with AI-assisted coding using tools like ChatGPT and Gemini. Build responsive, interactive websites from scratch and understand how the web truly works.
Wyntuition
The smallest flask web app, composed with a redis container using Docker. Try creating the files yourself and building and running containers via compose, to see how it works.
sanusanth
What is C++? C++ is a general-purpose, object-oriented programming language. It was created by Bjarne Stroustrup at Bell Labs circa 1980. C++ is very similar to C (invented by Dennis Ritchie in the early 1970s). C++ is so compatible with C that it will probably compile over 99% of C programs without changing a line of source code. Though C++ is a lot of well-structured and safer language than C as it OOPs based. Some computer languages are written for a specific purpose. Like, Java was initially devised to control toasters and some other electronics. C was developed for programming OS. Pascal was conceptualized to teach proper programming techniques. But C++ is a general-purpose language. It well deserves the widely acknowledged nickname "Swiss Pocket Knife of Languages." C++ is a cross-platform language that can be used to create high-performance applications. C++ was developed by Bjarne Stroustrup, as an extension to the C language. C++ gives programmers a high level of control over system resources and memory. The language was updated 3 major times in 2011, 2014, and 2017 to C++11, C++14, and C++17. About C++ Programming Multi-paradigm Language - C++ supports at least seven different styles of programming. Developers can choose any of the styles. General Purpose Language - You can use C++ to develop games, desktop apps, operating systems, and so on. Speed - Like C programming, the performance of optimized C++ code is exceptional. Object-oriented - C++ allows you to divide complex problems into smaller sets by using objects. Why Learn C++? C++ is used to develop games, desktop apps, operating systems, browsers, and so on because of its performance. After learning C++, it will be much easier to learn other programming languages like Java, Python, etc. C++ helps you to understand the internal architecture of a computer, how computer stores and retrieves information. How to learn C++? C++ tutorial from Programiz - We provide step by step C++ tutorials, examples, and references. Get started with C++. Official C++ documentation - Might be hard to follow and understand for beginners. Visit official C++ documentation. Write a lot of C++ programming code- The only way you can learn programming is by writing a lot of code. Read C++ code- Join Github's open-source projects and read other people's code. C++ best programming language? The answer depends on perspective and requirements. Some tasks can be done in C++, though not very quickly. For example, designing GUI screens for applications. Other languages like Visual Basic, Python have GUI design elements built into them. Therefore, they are better suited for GUI type of task. Some of the scripting languages that provide extra programmability to applications. Such as MS Word and even photoshop tend to be variants of Basic, not C++. C++ is still used widely, and the most famous software have their backbone in C++. This tutorial will help you learn C++ basic and the advanced concepts. Who uses C++? Some of today's most visible used systems have their critical parts written in C++. Examples are Amadeus (airline ticketing) Bloomberg (financial formation), Amazon (Web commerce), Google (Web search) Facebook (social media) Many programming languages depend on C++'s performance and reliability in their implementation. Examples include: Java Virtual Machines JavaScript interpreters (e.g., Google's V8) Browsers (e.g., Internet Explorer, Mozilla's Firefox, Apple's Safari, and Google's Chrome) Application and Web frameworks (e.g., Microsoft's .NET Web services framework). Applications that involve local and wide area networks, user interaction, numeric, graphics, and database access highly depend on C++ language. Why Use C++ C++ is one of the world's most popular programming languages. C++ can be found in today's operating systems, Graphical User Interfaces, and embedded systems. C++ is an object-oriented programming language which gives a clear structure to programs and allows code to be reused, lowering development costs. C++ is portable and can be used to develop applications that can be adapted to multiple platforms. C++ is fun and easy to learn! As C++ is close to C# and Java, it makes it easy for programmers to switch to C++ or vice versa Definition - What does C++ Programming Language mean? C++ is an object oriented computer language created by notable computer scientist Bjorne Stroustrop as part of the evolution of the C family of languages. Some call C++ “C with classes” because it introduces object oriented programming principles, including the use of defined classes, to the C programming language framework. C++ is pronounced "see-plus-plus." C++ Variables Variables are the backbone of any programming language. A variable is merely a way to store some information for later use. We can retrieve this value or data by referring to a "word" that will describe this information. Once declared and defined they may be used many times within the scope in which they were declared. C++ Control Structures When a program runs, the code is read by the compiler line by line (from top to bottom, and for the most part left to right). This is known as "code flow." When the code is being read from top to bottom, it may encounter a point where it needs to make a decision. Based on the decision, the program may jump to a different part of the code. It may even make the compiler re-run a specific piece again, or just skip a bunch of code. You could think of this process like if you were to choose from different courses from Guru99. You decide, click a link and skip a few pages. In the same way, a computer program has a set of strict rules to decide the flow of program execution. C++ Syntax The syntax is a layout of words, expression, and symbols. Well, it's because an email address has its well-defined syntax. You need some combination of letters, numbers, potentially with underscores (_) or periods (.) in between, followed by an at the rate (@) symbol, followed by some website domain (company.com). So, syntax in a programming language is much the same. They are some well-defined set of rules that allow you to create some piece of well-functioning software. But, if you don't abide by the rules of a programming language or syntax, you'll get errors. C++ Tools In the real world, a tool is something (usually a physical object) that helps you to get a certain job done promptly. Well, this holds true with the programming world too. A tool in programming is some piece of software which when used with the code allows you to program faster. There are probably tens of thousands, if not millions of different tools across all the programming languages. Most crucial tool, considered by many, is an IDE, an Integrated Development Environment. An IDE is a software which will make your coding life so much easier. IDEs ensure that your files and folders are organized and give you a nice and clean way to view them. Types of C++ Errors Another way to look at C++ in a practical sense is to start enumerating different kinds of errors that occur as the written code makes its way to final execution. First, there are syntax errors where the code is actually written in an illegible way. This can be a misuse of punctuation, or the misspelling of a function command or anything else that compromises the integrity of the syntax as it is written. Another fundamental type of error is a compiler error that simply tells the programmer the compiler was not able to do its work effectively. As a compiler language, C++ relies on the compiler to make the source code into machine readable code and optimize it in various ways. A third type of error happens after the program has been successfully compiled. Runtime errors are not uncommon in C++ executables. What they represent is some lack of designated resource or non-working command in the executable program. In other words, the syntax is right, and the program was compiled successfully, but as the program is doing its work, it encounters a problem, whether that has to do with interdependencies, operating system requirements or anything else in the general environment in which the program is trying to work. Over time, C++ has remained a very useful language not only in computer programming itself, but in teaching new programmers about how object oriented programming works.
NestieGuilas
Marketing Platform Google Analytics Terms of Service These Google Analytics Terms of Service (this "Agreement") are entered into by Google LLC ("Google") and the entity executing this Agreement ("You"). This Agreement governs Your use of the standard Google Analytics (the "Service"). BY CLICKING THE "I ACCEPT" BUTTON, COMPLETING THE REGISTRATION PROCESS, OR USING THE SERVICE, YOU ACKNOWLEDGE THAT YOU HAVE REVIEWED AND ACCEPT THIS AGREEMENT AND ARE AUTHORIZED TO ACT ON BEHALF OF, AND BIND TO THIS AGREEMENT, THE OWNER OF THIS ACCOUNT. In consideration of the foregoing, the parties agree as follows: 1. Definitions. "Account" refers to the account for the Service. All Profiles (as applicable) linked to a single Property will have their Hits aggregated before determining the charge for the Service for that Property. "Confidential Information" includes any proprietary data and any other information disclosed by one party to the other in writing and marked "confidential" or disclosed orally and, within five business days, reduced to writing and marked "confidential". However, Confidential Information will not include any information that is or becomes known to the general public, which is already in the receiving party's possession prior to disclosure by a party or which is independently developed by the receiving party without the use of Confidential Information. "Customer Data" or "Google Analytics Data" means the data you collect, process or store using the Service concerning the characteristics and activities of Users. "Documentation" means any accompanying documentation made available to You by Google for use with the Processing Software, including any documentation available online. "GAMC" means the Google Analytics Measurement Code, which is installed on a Property for the purpose of collecting Customer Data, together with any fixes, updates and upgrades provided to You. "Hit" means a collection of interactions that results in data being sent to the Service and processed. Examples of Hits may include page view hits and ecommerce hits. A Hit can be a call to the Service by various libraries, but does not have to be so (e.g., a Hit can be delivered to the Service by other Google Analytics-supported protocols and mechanisms made available by the Service to You). "Platform Home" means the user interface through which You can access certain Google Marketing Platform-level functionality. "Processing Software" means the Google Analytics server-side software and any upgrades, which analyzes the Customer Data and generates the Reports. "Profile" means the collection of settings that together determine the information to be included in, or excluded from, a particular Report. For example, a Profile could be established to view a small portion of a web site as a unique Report. "Property" means any web page, application, other property or resource under Your control that sends data to Google Analytics. "Privacy Policy" means the privacy policy on a Property. "Report" means the resulting analysis shown at www.google.com/analytics/, some of which may include analysis for a Profile. "Servers" means the servers controlled by Google (or its wholly-owned subsidiaries) on which the Processing Software and Customer Data are stored. “SDKs” mean certain software development kits, which may be used or incorporated into a Property app for the purpose of collecting Customer Data, together with any fixes, updates, and upgrades provided to You. "Software" means the Processing Software, GAMC and/or SDKs. "Third Party" means any third party (i) to which You provide access to Your Account or (ii) for which You use the Service to collect information on the third party's behalf. "Users" means users and/or visitors to Your Properties. The words "include" and "including" mean "including but not limited to." 2. Fees and Service. Subject to Section 15, the Service is provided without charge to You for up to 10 million Hits per month per Account. Google may change its fees and payment policies for the Service from time to time including the addition of costs for geographic data, the importing of cost data from search engines, or other fees charged to Google or its wholly-owned subsidiaries by third party vendors for the inclusion of data in the Service reports. The changes to the fees or payment policies are effective upon Your acceptance of those changes which will be posted at www.google.com/analytics/. Unless otherwise stated, all fees are quoted in U.S. Dollars. Any outstanding balance becomes immediately due and payable upon termination of this Agreement and any collection expenses (including attorneys' fees) incurred by Google will be included in the amount owed, and may be charged to the credit card or other billing mechanism associated with Your AdWords account. 3. Member Account, Password, and Security. To register for the Service, You must complete the registration process by providing Google with current, complete and accurate information as prompted by the registration form, including Your e-mail address (username) and password. You will protect Your passwords and take full responsibility for Your own, and third party, use of Your accounts. You are solely responsible for any and all activities that occur under Your Account. You will notify Google immediately upon learning of any unauthorized use of Your Account or any other breach of security. Google's (or its wholly-owned subsidiaries) support staff may, from time to time, log in to the Service under Your customer password in order to maintain or improve service, including to provide You assistance with technical or billing issues. 4. Nonexclusive License. Subject to the terms and conditions of this Agreement, (a) Google grants You a limited, revocable, non-exclusive, non-sublicensable license to install, copy and use the GAMC and/or SDKs solely as necessary for You to use the Service on Your Properties or Third Party's Properties; and (b) You may remotely access, view and download Your Reports stored at www.google.com/analytics/. You will not (and You will not allow any third party to) (i) copy, modify, adapt, translate or otherwise create derivative works of the Software or the Documentation; (ii) reverse engineer, decompile, disassemble or otherwise attempt to discover the source code of the Software, except as expressly permitted by the law in effect in the jurisdiction in which You are located; (iii) rent, lease, sell, assign or otherwise transfer rights in or to the Software, the Documentation or the Service; (iv) remove any proprietary notices or labels on the Software or placed by the Service; (v) use, post, transmit or introduce any device, software or routine which interferes or attempts to interfere with the operation of the Service or the Software; or (vi) use data labeled as belonging to a third party in the Service for purposes other than generating, viewing, and downloading Reports. You will comply with all applicable laws and regulations in Your use of and access to the Documentation, Software, Service and Reports. 5. Confidentiality and Beta Features. Neither party will use or disclose the other party's Confidential Information without the other's prior written consent except for the purpose of performing its obligations under this Agreement or if required by law, regulation or court order; in which case, the party being compelled to disclose Confidential Information will give the other party as much notice as is reasonably practicable prior to disclosing the Confidential Information. Certain Service features are identified as "Alpha," "Beta," "Experiment," (either within the Service or elsewhere by Google) or as otherwise unsupported or confidential (collectively, "Beta Features"). You may not disclose any information from Beta Features or the terms or existence of any non-public Beta Features. Google will have no liability arising out of or related to any Beta Features. 6. Information Rights and Publicity. Google and its wholly owned subsidiaries may retain and use, subject to the terms of its privacy policy (located at https://www.google.com/policies/privacy/), information collected in Your use of the Service. Google will not share Your Customer Data or any Third Party's Customer Data with any third parties unless Google (i) has Your consent for any Customer Data or any Third Party's consent for the Third Party's Customer Data; (ii) concludes that it is required by law or has a good faith belief that access, preservation or disclosure of Customer Data is reasonably necessary to protect the rights, property or safety of Google, its users or the public; or (iii) provides Customer Data in certain limited circumstances to third parties to carry out tasks on Google's behalf (e.g., billing or data storage) with strict restrictions that prevent the data from being used or shared except as directed by Google. When this is done, it is subject to agreements that oblige those parties to process Customer Data only on Google's instructions and in compliance with this Agreement and appropriate confidentiality and security measures. 7. Privacy. You will not and will not assist or permit any third party to, pass information to Google that Google could use or recognize as personally identifiable information. You will have and abide by an appropriate Privacy Policy and will comply with all applicable laws, policies, and regulations relating to the collection of information from Users. You must post a Privacy Policy and that Privacy Policy must provide notice of Your use of cookies, identifiers for mobile devices (e.g., Android Advertising Identifier or Advertising Identifier for iOS) or similar technology used to collect data. You must disclose the use of Google Analytics, and how it collects and processes data. This can be done by displaying a prominent link to the site "How Google uses data when you use our partners' sites or apps", (located at www.google.com/policies/privacy/partners/, or any other URL Google may provide from time to time). You will use commercially reasonable efforts to ensure that a User is provided with clear and comprehensive information about, and consents to, the storing and accessing of cookies or other information on the User’s device where such activity occurs in connection with the Service and where providing such information and obtaining such consent is required by law. You must not circumvent any privacy features (e.g., an opt-out) that are part of the Service. You will comply with all applicable Google Analytics policies located at www.google.com/analytics/policies/ (or such other URL as Google may provide) as modified from time to time (the "Google Analytics Policies"). You may participate in an integrated version of Google Analytics and certain Google advertising services ("Google Analytics Advertising Features"). If You use Google Analytics Advertising Features, You will adhere to the Google Analytics Advertising Features policy (available at support.google.com/analytics/bin/answer.py?hl=en&topic=2611283&answer=2700409). Your access to and use of any Google advertising service is subject to the applicable terms between You and Google regarding that service. If You use the Platform Home, Your use of the Platform Home is subject to the Platform Home Additional Terms (or as subsequently re-named) available at https://support.google.com/marketingplatform/answer/9047313 (or such other URL as Google may provide) as modified from time to time (the "Platform Home Terms"). 8. Indemnification. To the extent permitted by applicable law, You will indemnify, hold harmless and defend Google and its wholly-owned subsidiaries, at Your expense, from any and all third-party claims, actions, proceedings, and suits brought against Google or any of its officers, directors, employees, agents or affiliates, and all related liabilities, damages, settlements, penalties, fines, costs or expenses (including, reasonable attorneys' fees and other litigation expenses) incurred by Google or any of its officers, directors, employees, agents or affiliates, arising out of or relating to (i) Your breach of any term or condition of this Agreement, (ii) Your use of the Service, (iii) Your violations of applicable laws, rules or regulations in connection with the Service, (iv) any representations and warranties made by You concerning any aspect of the Service, the Software or Reports to any Third Party; (v) any claims made by or on behalf of any Third Party pertaining directly or indirectly to Your use of the Service, the Software or Reports; (vi) violations of Your obligations of privacy to any Third Party; and (vii) any claims with respect to acts or omissions of any Third Party in connection with the Service, the Software or Reports. Google will provide You with written notice of any claim, suit or action from which You must indemnify Google. You will cooperate as fully as reasonably required in the defense of any claim. Google reserves the right, at its own expense, to assume the exclusive defense and control of any matter subject to indemnification by You. 9. Third Parties. If You use the Service on behalf of the Third Party or a Third Party otherwise uses the Service through Your Account, whether or not You are authorized by Google to do so, then You represent and warrant that (a) You are authorized to act on behalf of, and bind to this Agreement, the Third Party to all obligations that You have under this Agreement, (b) Google may share with the Third Party any Customer Data that is specific to the Third Party's Properties, and (c) You will not disclose Third Party's Customer Data to any other party without the Third Party's consent. 10. DISCLAIMER OF WARRANTIES. TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, EXCEPT AS EXPRESSLY PROVIDED FOR IN THIS AGREEMENT, GOOGLE MAKES NO OTHER WARRANTY OF ANY KIND, WHETHER EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR USE AND NONINFRINGEMENT. 11. LIMITATION OF LIABILITY. TO THE EXTENT PERMITTED BY APPLICABLE LAW, GOOGLE WILL NOT BE LIABLE FOR YOUR LOST REVENUES OR INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES, EVEN IF GOOGLE OR ITS SUBSIDIARIES AND AFFILIATES HAVE BEEN ADVISED OF, KNEW OR SHOULD HAVE KNOWN THAT SUCH DAMAGES WERE POSSIBLE AND EVEN IF DIRECT DAMAGES DO NOT SATISFY A REMEDY. GOOGLE'S (AND ITS WHOLLY OWNED SUBSIDIARIES’) TOTAL CUMULATIVE LIABILITY TO YOU OR ANY OTHER PARTY FOR ANY LOSS OR DAMAGES RESULTING FROM CLAIMS, DEMANDS, OR ACTIONS ARISING OUT OF OR RELATING TO THIS AGREEMENT WILL NOT EXCEED $500 (USD). 12. Proprietary Rights Notice. The Service, which includes the Software and all Intellectual Property Rights therein are, and will remain, the property of Google (and its wholly owned subsidiaries). All rights in and to the Software not expressly granted to You in this Agreement are reserved and retained by Google and its licensors without restriction, including, Google's (and its wholly owned subsidiaries’) right to sole ownership of the Software and Documentation. Without limiting the generality of the foregoing, You agree not to (and not to allow any third party to): (a) sublicense, distribute, or use the Service or Software outside of the scope of the license granted in this Agreement; (b) copy, modify, adapt, translate, prepare derivative works from, reverse engineer, disassemble, or decompile the Software or otherwise attempt to discover any source code or trade secrets related to the Service; (c) rent, lease, sell, assign or otherwise transfer rights in or to the Software, Documentation or the Service; (d) use, post, transmit or introduce any device, software or routine which interferes or attempts to interfere with the operation of the Service or the Software; (e) use the trademarks, trade names, service marks, logos, domain names and other distinctive brand features or any copyright or other proprietary rights associated with the Service for any purpose without the express written consent of Google; (f) register, attempt to register, or assist anyone else to register any trademark, trade name, serve marks, logos, domain names and other distinctive brand features, copyright or other proprietary rights associated with Google (or its wholly owned subsidiaries) other than in the name of Google (or its wholly owned subsidiaries, as the case may be); (g) remove, obscure, or alter any notice of copyright, trademark, or other proprietary right appearing in or on any item included with the Service or Software; or (h) seek, in a proceeding filed during the term of this Agreement or for one year after such term, an injunction of any portion of the Service based on patent infringement. 13. U.S. Government Rights. If the use of the Service is being acquired by or on behalf of the U.S. Government or by a U.S. Government prime contractor or subcontractor (at any tier), in accordance with 48 C.F.R. 227.7202-4 (for Department of Defense (DOD) acquisitions) and 48 C.F.R. 2.101 and 12.212 (for non-DOD acquisitions), the Government's rights in the Software, including its rights to use, modify, reproduce, release, perform, display or disclose the Software or Documentation, will be subject in all respects to the commercial license rights and restrictions provided in this Agreement. 14. Term and Termination. Either party may terminate this Agreement at any time with notice. Upon any termination of this Agreement, Google will stop providing, and You will stop accessing the Service. Additionally, if Your Account and/or Properties are terminated, You will (i) delete all copies of the GAMC from all Properties and/or (ii) suspend any and all use of the SDKs within 3 business days of such termination. In the event of any termination (a) You will not be entitled to any refunds of any usage fees or any other fees, and (b) any outstanding balance for Service rendered through the date of termination will be immediately due and payable in full and (c) all of Your historical Report data will no longer be available to You. 15. Modifications to Terms of Service and Other Policies. Google may modify these terms or any additional terms that apply to the Service to, for example, reflect changes to the law or changes to the Service. You should look at the terms regularly. Google will post notice of modifications to these terms at https://www.google.com/analytics/terms/, the Google Analytics Policies at www.google.com/analytics/policies/, or other policies referenced in these terms at the applicable URL for such policies. Changes will not apply retroactively and will become effective no sooner than 14 days after they are posted. If You do not agree to the modified terms for the Service, You should discontinue Your use Google Analytics. No amendment to or modification of this Agreement will be binding unless (i) in writing and signed by a duly authorized representative of Google, (ii) You accept updated terms online, or (iii) You continue to use the Service after Google has posted updates to the Agreement or to any policy governing the Service. 16. Miscellaneous, Applicable Law and Venue. Google will be excused from performance in this Agreement to the extent that performance is prevented, delayed or obstructed by causes beyond its reasonable control. This Agreement (including any amendment agreed upon by the parties in writing) represents the complete agreement between You and Google concerning its subject matter, and supersedes all prior agreements and representations between the parties. If any provision of this Agreement is held to be unenforceable for any reason, such provision will be reformed to the extent necessary to make it enforceable to the maximum extent permissible so as to effect the intent of the parties, and the remainder of this Agreement will continue in full force and effect. This Agreement will be governed by and construed under the laws of the state of California without reference to its conflict of law principles. In the event of any conflicts between foreign law, rules, and regulations, and California law, rules, and regulations, California law, rules and regulations will prevail and govern. Each party agrees to submit to the exclusive and personal jurisdiction of the courts located in Santa Clara County, California. The United Nations Convention on Contracts for the International Sale of Goods and the Uniform Computer Information Transactions Act do not apply to this Agreement. The Software is controlled by U.S. Export Regulations, and it may be not be exported to or used by embargoed countries or individuals. Any notices to Google must be sent to: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA, with a copy to Legal Department, via first class or air mail or overnight courier, and are deemed given upon receipt. A waiver of any default is not a waiver of any subsequent default. You may not assign or otherwise transfer any of Your rights in this Agreement without Google's prior written consent, and any such attempt is void. The relationship between Google and You is not one of a legal partnership relationship, but is one of independent contractors. This Agreement will be binding upon and inure to the benefit of the respective successors and assigns of the parties hereto. The following sections of this Agreement will survive any termination thereof: 1, 4, 5, 6 (except the last two sentences), 7, 8, 9, 10, 11, 12, 14, 16, and 17. 17. Google Analytics for Firebase. If You link a Property to Firebase (“Firebase Linkage”) as part of using the Service, the following terms, in addition to Sections 1-16 above, will also apply to You, and will also govern Your use of the Service, including with respect to Your use of Firebase Linkage. Other than as modified below, all other terms will stay the same and continue to apply. In the event of a conflict between this Section 17 and Sections 1-16 above, the terms in Section 17 will govern and control solely with respect to Your use of the Firebase Linkage. The following definition in Section 1 is modified as follows: "Hit" means a collection of interactions that results in data being sent to the Service and processed. Examples of Hits may include page view hits and ecommerce hits. A Hit can be a call to the Service by various libraries, but does not have to be so (e.g., a Hit can be delivered to the Service by other Google Analytics-supported protocols and mechanisms made available by the Service to You). For the sake of clarity, a Hit does not include certain events whose collection reflects interactions with certain Properties capable of supporting multiple data streams, and which may include screen views and custom events (the collection of events, an “Enhanced Packet”). The following sentence is added to the end of Section 7 as follows: If You link a Property to a Firebase project (“Firebase Linkage”) (i) certain data from Your Property, including Customer Data, may be made accessible within or to any other entity or personnel according to permissions set in Firebase and (ii) that Property may have certain Service settings modified by authorized personnel of Firebase (notwithstanding the settings You may have designated for that Property within the Service). Last Updated June 17, 2019 Follow us About Google Marketing Platform Overview For Small Businesses For Enterprise Learning & support Support Blog Analytics Academy Skillshop Google Primer Developers & partners Google Marketing Platform Partners Google Measurement Partners Analytics for developers Tag Manager for developers Surveys for developers Campaign Manager 360 for developers Related products Google Ads Google AdSense Google Ad Manager Google Cloud Firebase More from Google Think with Google Business Solutions Google Workspace PrivacyTermsAbout GoogleGoogle Products Help
mhowerton91
<!DOCTYPE html> <!-- Copyright 2016 Google Inc. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <html> <head> <meta charset="utf-8"> <title>Chrome Platform Status</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0"> <link rel="manifest" href="/static/manifest.json"> <meta name="theme-color" content="#366597"> <link rel="icon" sizes="192x192" href="/static/img/crstatus_192.png"> <!-- iOS: run in full-screen mode and display upper status bar as translucent --> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <link rel="apple-touch-icon" href="/static/img/crstatus_128.png"> <link rel="apple-touch-icon-precomposed" href="/static/img/crstatus_128.png"> <link rel="shortcut icon" href="/static/img/crstatus_128.png"> <link rel="preconnect" href="https://www.google-analytics.com" crossorigin> <!-- <link rel="dns-prefetch" href="https://fonts.googleapis.com"> --> <!-- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> --> <!-- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400" media="none" onload="this.media='all'"> --> <!-- <link rel="stylesheet" href="/static/css/main.css"> --> <style>html,body{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline}div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,pre,a,abbr,acronym,address,code,del,dfn,em,img,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,caption,tbody,tfoot,thead,tr{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline}blockquote,q{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;quotes:"" ""}blockquote:before,q:before,blockquote:after,q:after{content:""}th,td,caption{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;text-align:left;font-weight:normal;vertical-align:middle}table{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;border-collapse:separate;border-spacing:0;vertical-align:middle}a img{border:none}*{box-sizing:border-box}*{-webkit-tap-highlight-color:transparent}h1,h2,h3,h4{font-weight:300}h1{font-size:30px}h2,h3,h4{color:#444}h2{font-size:25px}h3{font-size:20px}a{text-decoration:none;color:#4580c0}a:hover{text-decoration:underline;color:#366597}b{font-weight:600}input:not([type="submit"]),textarea{border:1px solid #D4D4D4}input:not([type="submit"])[disabled],textarea[disabled]{opacity:0.5}button,.button{display:inline-block;background:linear-gradient(#F9F9F9 40%, #E3E3E3 70%);border:1px solid #a9a9a9;border-radius:3px;padding:5px 8px;outline:none;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;text-shadow:1px 1px #fff;font-size:10pt}button:not(:disabled):hover{border-color:#515151}button:not(:disabled):active{background:linear-gradient(#E3E3E3 40%, #F9F9F9 70%)}.comma::after{content:',\00a0'}html,body{height:100%}body{color:#666;font:14px "Roboto", sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;background-color:#eee}body.loading #spinner{display:flex}body.loading chromedash-toast{visibility:hidden}#spinner{display:none;align-items:center;justify-content:center;position:fixed;height:calc(100% - 54px - $header-height);max-width:768px;width:100%}#site-banner{display:none;background:#4580c0;color:#fff;position:fixed;z-index:1;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;text-transform:capitalize;text-align:center;transform:rotate(35deg);right:-40px;top:20px;padding:10px 40px 8px 60px;box-shadow:inset 0px 5px 6px -3px rgba(0,0,0,0.4)}#site-banner iron-icon{margin-right:4px;height:20px;width:20px}#site-banner a{color:currentcolor;text-decoration:none}app-drawer{font-size:14px}app-drawer .drawer-content-wrapper{height:100%;overflow:auto;padding:16px}app-drawer paper-listbox{background-color:inherit !important}app-drawer paper-listbox paper-item{font-size:inherit !important}app-drawer h3{margin-bottom:16px;text-transform:uppercase;font-weight:500;font-size:14px;color:inherit}app-header{background-color:#eee;right:0;top:0;left:0;z-index:1}app-header[fixed]{position:fixed}.main-toolbar{display:flex;position:relative;padding:0 16px}header,footer{display:flex;align-items:center;text-shadow:0 1px 0 white}header{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}header a{text-decoration:none !important}header nav{display:flex;align-items:center;margin-left:16px}header nav a{background-color:#FAFAFA;background:linear-gradient(to bottom, white, #F2F2F2);padding:0.75em 1em;box-shadow:1px 1px 4px rgba(0,0,0,0.065);cursor:pointer;font-size:16px;text-align:center;border-radius:3px;border-bottom:1px solid #D4D4D4;border-right:1px solid #D4D4D4;white-space:nowrap}header nav a:active{position:relative;top:1px;left:1px;box-shadow:3px 3px 4px rgba(0,0,0,0.065)}header nav a.disabled{opacity:0.5;pointer-events:none}header nav paper-menu-button{margin:0 !important;padding:0 !important;line-height:1}header nav paper-menu-button .dropdown-content{display:flex;flex-direction:column;contain:content}header aside{background-color:#FAFAFA;background:linear-gradient(to bottom, white, #F2F2F2);padding:0.75em 1em;box-shadow:1px 1px 4px rgba(0,0,0,0.065);border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-bottom:1px solid #D4D4D4;border-right:1px solid #D4D4D4;background:url(/static/img/chrome_logo.svg) no-repeat 16px 50%;background-size:48px;background-color:#fafafa;padding-left:72px}header aside hgroup a{color:currentcolor}header aside h1{line-height:1}header aside img{height:45px;width:45px;margin-right:7px}footer{background-color:#FAFAFA;background:linear-gradient(to bottom, white, #F2F2F2);padding:0.75em 1em;box-shadow:1px 1px 4px rgba(0,0,0,0.065);font-size:12px;box-shadow:0 -2px 5px rgba(0,0,0,0.065);display:flex;flex-direction:column;justify-content:center;text-align:center;position:fixed;bottom:0;left:0;right:0;z-index:3}footer div{margin-top:4px}.description{line-height:1.4}#subheader,.subheader{display:flex;align-items:center;margin:16px 0;max-width:768px}#subheader .num-features,.subheader .num-features{font-weight:400}#subheader div.search input,.subheader div.search input{width:200px;outline:none;padding:10px 7px}#subheader div.actionlinks,.subheader div.actionlinks{display:flex;justify-content:flex-end;flex:1 0 auto;margin-left:16px}#subheader div.actionlinks .blue-button,.subheader div.actionlinks .blue-button{background:#366597;color:#fff;display:inline-flex;align-items:center;justify-content:center;max-height:35px;min-width:5.14em;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;text-transform:uppercase;text-decoration:none;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;padding:0.7em 0.57em}#subheader div.actionlinks .blue-button iron-icon,.subheader div.actionlinks .blue-button iron-icon{margin-right:8px;height:24px;width:24px}#subheader div.actionlinks .legend,.subheader div.actionlinks .legend{font-size:18px;cursor:pointer;text-decoration:none}#container{display:flex;flex-direction:column;height:100%;width:100%}#content{margin:16px;position:relative;height:100%}#panels{display:flex;width:100%;overflow:hidden}@media only screen and (min-width: 701px){.main-toolbar .toolbar-content{max-width:768px}app-header{padding-left:200px;left:0 !important}}@media only screen and (max-width: 700px){h1{font-size:24px}h2{font-size:20px}h3{font-size:15px}app-header .main-toolbar{padding:0;display:block}app-header .main-toolbar iron-icon{width:24px}app-drawer{z-index:2}#content{margin-left:0;margin-right:0}header{margin:0;display:block}header aside{display:flex;padding:8px;border-radius:0;background-size:24px;background-position:48px 50%}header aside hgroup{padding-left:48px}header aside hgroup span{display:none}header nav{margin:0;justify-content:center;flex-wrap:wrap}header nav a{padding:5px 10px;margin:0;border-radius:0;flex:1 0 auto}#panels{display:block}#panels nav{display:none}.subheader .description{margin:0 16px}#subheader div:not(.search){display:none}#subheader div.search{text-align:center;flex:1 0 0;margin:0}chromedash-toast{width:100%;left:0;margin:0}}@media only screen and (min-width: 1100px){#site-banner{display:block}}body.loading chromedash-legend{display:none}body.loading chromedash-featurelist{visibility:hidden}body.loading .main-toolbar .dropdown-content{display:none} </style> <!-- <link rel="stylesheet" href="/static/css/metrics/metrics.css"> --> <style>#content h3{margin-bottom:16px}.data-panel{max-width:768px}.data-panel .description{margin-bottom:1em}.metric-nav{list-style-type:none}.metric-nav h3:not(:first-of-type){margin-top:32px}.metric-nav li{text-align:center;border-top-left-radius:3px;border-top-right-radius:3px;background:linear-gradient(to bottom, white, #F2F2F2);box-shadow:1px 1px 4px rgba(0,0,0,0.065);padding:0.5em;margin-bottom:10px}@media only screen and (max-width: 700px){#subheader{margin:16px 0;text-align:center}.data-panel{margin:0 10px}} </style> <script> window.Polymer = window.Polymer || { dom: 'shadow', // Use native shadow dom. lazyRegister: 'max', useNativeCSSProperties: true, suppressTemplateNotifications: true, // Don't fire dom-change on dom-if, dom-bind, etc. suppressBindingNotifications: true // disableUpgradeEnabled: true // Works with `disable-upgrade` attr. When removed, upgrades element. }; var $ = function(selector) { return document.querySelector(selector); }; var $$ = function(selector) { return document.querySelectorAll(selector); }; </script> <style is="custom-style"> app-drawer { --app-drawer-width: 200px; --app-drawer-content-container: { background: #eee; }; } paper-item { --paper-item: { cursor: pointer; }; } </style> <link rel="import" href="/static/elements/metrics-imports.vulcanize.html"> </head> <body class="loading"> <!--<div id="site-banner"> <a href="https://www.youtube.com/watch?v=Rd0plknSPYU" target="_blank"> <iron-icon icon="chromestatus:ondemand-video"></iron-icon> How we built it</a> </div>--> <app-drawer-layout fullbleed> <app-drawer swipe-open> <div class="drawer-content-wrapper"> <ul class="metric-nav"> <h3>All properties</h3> <li><a href="/metrics/css/popularity">Stack rank</a></li> <li><a href="/metrics/css/timeline/popularity">Timeline</a></li> <h3>Animated properties</h3> <li><a href="/metrics/css/animated">Stack rank</a></li> <li><a href="/metrics/css/timeline/animated">Timeline</a></li> </ul> </div> </app-drawer> <app-header-layout> <app-header reveals fixed effects="waterfall"> <div class="main-toolbar"> <div class="toolbar-content"> <header> <aside> <iron-icon icon="chromestatus:menu" drawer-toggle></iron-icon> <hgroup> <a href="/features" target="_top"><h1>Chrome Platform Status</h1></a> <span>feature support & usage metrics</span> </hgroup> </aside> <nav> <a href="/features">Features</a> <a href="/samples" class="features">Samples</a> <paper-menu-button vertical-align="top" horizontal-align="right"> <a href="javascript:void(0)" class="dropdown-trigger">Usage Metrics</a> <div class="dropdown-content" hidden> <!-- hidden removed by lazy load code. --> <a href="/metrics/css/popularity" class="metrics">CSS</a> <a href="/metrics/feature/popularity" class="metrics">JS/HTML</a> </div> </paper-menu-button> </nav> </header> <div id="subheader"> <h2>CSS usage metrics > animated properties > timeline</h2> </div> </div> </div> </app-header> <div id="content"> <div id="spinner"><img src="/static/img/ring.svg"></div> <div class="data-panel"> <p class="description">Percentages are the number of times (as the fraction of all animated properties) this property is animated.</p> <chromedash-feature-timeline type="css" view="animated" title="Percentage of times (as the fraction of all animated properties) this property is animated." ></chromedash-feature-timeline> </div> </div> </app-header-layout> <footer> <p>Except as otherwise noted, the content of this page under <a href="https://creativecommons.org/licenses/by/2.5/">CC Attribution 2.5</a> license. Code examples are <a href="https://github.com/GoogleChrome/samples/blob/gh-pages/LICENSE">Apache-2.0</a>.</p> <div><a href="https://groups.google.com/a/chromium.org/forum/#!newtopic/blink-dev">File content issue</a> | <a href="https://docs.google.com/a/chromium.org/forms/d/1djZD0COt4NgRwDYesNLkYAb_O8YL39eEvF78vk06R9c/viewform">Request "edit" access</a> | <a href="https://github.com/GoogleChrome/chromium-dashboard/issues">File site bug</a> | <a href="https://docs.google.com/document/d/1jrSlM4Yhae7XCJ8BuasWx71CvDEMMbSKbXwx7hoh1Co/edit?pli=1" target="_blank">About</a> | <a href="https://www.google.com/accounts/ServiceLogin?service=ah&passive=true&continue=https://appengine.google.com/_ah/conflogin%3Fcontinue%3Dhttps://www.chromestatus.com/metrics/css/timeline/animated">Login</a> </div> </footer> </app-drawer-layout> <chromedash-toast msg="Welcome to chromestatus.com!"></chromedash-toast> <script> /*! (c) 2017 Copyright (c) 2016 The Google Inc. All rights reserved. (Apache2) */ "use strict";function _classCallCheck(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function e(e,r){for(var n=0;n<r.length;n++){var t=r[n];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,t.key,t)}}return function(r,n,t){return n&&e(r.prototype,n),t&&e(r,t),r}}(),Metric=function(){function e(r){if(_classCallCheck(this,e),!r)throw Error("Please provide a metric name");if(!e.supportsPerfMark&&(console.warn("Timeline won't be marked for \""+r+'".'),!e.supportsPerfNow))throw Error("This library cannot be used in this browser.");this.name=r}return _createClass(e,[{key:"duration",get:function(){var r=this._end-this._start;if(e.supportsPerfMark){var n=performance.getEntriesByName(this.name)[0];n&&"measure"!==n.entryType&&(r=n.duration)}return r||-1}}],[{key:"supportsPerfNow",get:function(){return performance&&performance.now}},{key:"supportsPerfMark",get:function(){return performance&&performance.mark}}]),_createClass(e,[{key:"log",value:function(){return console.info(this.name,this.duration,"ms"),this}},{key:"logAll",value:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.name;if(e.supportsPerfNow)for(var n=window.performance.getEntriesByName(r),t=0;t<n.length;++t){var a=n[t];console.info(r,a.duration,"ms")}return this}},{key:"start",value:function(){return this._start?(console.warn("Recording already started."),this):(this._start=performance.now(),e.supportsPerfMark&&performance.mark("mark_"+this.name+"_start"),this)}},{key:"end",value:function(){if(this._end)return console.warn("Recording already stopped."),this;if(this._end=performance.now(),e.supportsPerfMark){var r="mark_"+this.name+"_start",n="mark_"+this.name+"_end";performance.mark(n),performance.measure(this.name,r,n)}return this}},{key:"sendToAnalytics",value:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.name,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.duration;return window.ga?n>=0&&ga("send","timing",e,r,n):console.warn("Google Analytics has not been loaded"),this}}]),e}(); </script> <script> document.addEventListener('WebComponentsReady', function(e) { var timeline = $('chromedash-feature-timeline'); timeline.props = [[469,"alias-epub-caption-side"],[470,"alias-epub-text-combine"],[471,"alias-epub-text-emphasis"],[472,"alias-epub-text-emphasis-color"],[473,"alias-epub-text-emphasis-style"],[474,"alias-epub-text-orientation"],[475,"alias-epub-text-transform"],[476,"alias-epub-word-break"],[477,"alias-epub-writing-mode"],[478,"alias-webkit-align-content"],[479,"alias-webkit-align-items"],[480,"alias-webkit-align-self"],[166,"alias-webkit-animation"],[167,"alias-webkit-animation-delay"],[169,"alias-webkit-animation-duration"],[170,"alias-webkit-animation-fill-mode"],[171,"alias-webkit-animation-iteration-count"],[172,"alias-webkit-animation-name"],[173,"alias-webkit-animation-play-state"],[174,"alias-webkit-animation-timing-function"],[177,"alias-webkit-backface-visibility"],[181,"alias-webkit-background-size"],[481,"alias-webkit-border-bottom-left-radius"],[482,"alias-webkit-border-bottom-right-radius"],[197,"alias-webkit-border-radius"],[483,"alias-webkit-border-top-left-radius"],[484,"alias-webkit-border-top-right-radius"],[212,"alias-webkit-box-shadow"],[485,"alias-webkit-box-sizing"],[218,"alias-webkit-column-count"],[219,"alias-webkit-column-gap"],[221,"alias-webkit-column-rule"],[222,"alias-webkit-column-rule-color"],[223,"alias-webkit-column-rule-style"],[224,"alias-webkit-column-rule-width"],[225,"alias-webkit-column-span"],[226,"alias-webkit-column-width"],[227,"alias-webkit-columns"],[486,"alias-webkit-flex"],[487,"alias-webkit-flex-basis"],[488,"alias-webkit-flex-direction"],[489,"alias-webkit-flex-flow"],[490,"alias-webkit-flex-grow"],[491,"alias-webkit-flex-shrink"],[492,"alias-webkit-flex-wrap"],[493,"alias-webkit-justify-content"],[494,"alias-webkit-opacity"],[495,"alias-webkit-order"],[308,"alias-webkit-perspective"],[309,"alias-webkit-perspective-origin"],[496,"alias-webkit-shape-image-threshold"],[497,"alias-webkit-shape-margin"],[498,"alias-webkit-shape-outside"],[537,"alias-webkit-text-size-adjust"],[326,"alias-webkit-transform"],[327,"alias-webkit-transform-origin"],[331,"alias-webkit-transform-style"],[332,"alias-webkit-transition"],[333,"alias-webkit-transition-delay"],[334,"alias-webkit-transition-duration"],[335,"alias-webkit-transition-property"],[336,"alias-webkit-transition-timing-function"],[230,"align-content"],[231,"align-items"],[232,"align-self"],[386,"alignment-baseline"],[454,"all"],[424,"animation"],[425,"animation-delay"],[426,"animation-direction"],[427,"animation-duration"],[428,"animation-fill-mode"],[429,"animation-iteration-count"],[430,"animation-name"],[431,"animation-play-state"],[432,"animation-timing-function"],[532,"apply-at-rule"],[508,"backdrop-filter"],[451,"backface-visibility"],[21,"background"],[22,"background-attachment"],[419,"background-blend-mode"],[23,"background-clip"],[24,"background-color"],[25,"background-image"],[26,"background-origin"],[27,"background-position"],[28,"background-position-x"],[29,"background-position-y"],[30,"background-repeat"],[31,"background-repeat-x"],[32,"background-repeat-y"],[33,"background-size"],[387,"baseline-shift"],[551,"block-size"],[34,"border"],[35,"border-bottom"],[36,"border-bottom-color"],[37,"border-bottom-left-radius"],[38,"border-bottom-right-radius"],[39,"border-bottom-style"],[40,"border-bottom-width"],[41,"border-collapse"],[42,"border-color"],[43,"border-image"],[44,"border-image-outset"],[45,"border-image-repeat"],[46,"border-image-slice"],[47,"border-image-source"],[48,"border-image-width"],[49,"border-left"],[50,"border-left-color"],[51,"border-left-style"],[52,"border-left-width"],[53,"border-radius"],[54,"border-right"],[55,"border-right-color"],[56,"border-right-style"],[57,"border-right-width"],[58,"border-spacing"],[59,"border-style"],[60,"border-top"],[61,"border-top-color"],[62,"border-top-left-radius"],[63,"border-top-right-radius"],[64,"border-top-style"],[65,"border-top-width"],[66,"border-width"],[67,"bottom"],[68,"box-shadow"],[69,"box-sizing"],[520,"break-after"],[521,"break-before"],[522,"break-inside"],[416,"buffered-rendering"],[70,"caption-side"],[547,"caret-color"],[71,"clear"],[72,"clip"],[355,"clip-path"],[356,"clip-rule"],[2,"color"],[365,"color-interpolation"],[366,"color-interpolation-filters"],[367,"color-profile"],[368,"color-rendering"],[523,"column-count"],[440,"column-fill"],[524,"column-gap"],[525,"column-rule"],[526,"column-rule-color"],[527,"column-rule-style"],[528,"column-rule-width"],[529,"column-span"],[530,"column-width"],[531,"columns"],[517,"contain"],[74,"content"],[75,"counter-increment"],[76,"counter-reset"],[77,"cursor"],[466,"cx"],[467,"cy"],[518,"d"],[3,"direction"],[4,"display"],[388,"dominant-baseline"],[78,"empty-cells"],[358,"enable-background"],[369,"fill"],[370,"fill-opacity"],[371,"fill-rule"],[359,"filter"],[233,"flex"],[234,"flex-basis"],[235,"flex-direction"],[236,"flex-flow"],[237,"flex-grow"],[238,"flex-shrink"],[239,"flex-wrap"],[79,"float"],[360,"flood-color"],[361,"flood-opacity"],[5,"font"],[516,"font-display"],[6,"font-family"],[514,"font-feature-settings"],[13,"font-kerning"],[7,"font-size"],[465,"font-size-adjust"],[80,"font-stretch"],[8,"font-style"],[9,"font-variant"],[533,"font-variant-caps"],[15,"font-variant-ligatures"],[535,"font-variant-numeric"],[549,"font-variation-settings"],[10,"font-weight"],[389,"glyph-orientation-horizontal"],[390,"glyph-orientation-vertical"],[453,"grid"],[422,"grid-area"],[418,"grid-auto-columns"],[250,"grid-auto-flow"],[417,"grid-auto-rows"],[248,"grid-column"],[245,"grid-column-end"],[511,"grid-column-gap"],[244,"grid-column-start"],[513,"grid-gap"],[249,"grid-row"],[247,"grid-row-end"],[512,"grid-row-gap"],[246,"grid-row-start"],[452,"grid-template"],[423,"grid-template-areas"],[242,"grid-template-columns"],[243,"grid-template-rows"],[81,"height"],[534,"hyphens"],[397,"image-orientation"],[507,"image-orientation"],[82,"image-rendering"],[398,"image-resolution"],[550,"inline-size"],[438,"internal-callback"],[436,"isolation"],[240,"justify-content"],[455,"justify-items"],[443,"justify-self"],[391,"kerning"],[83,"left"],[84,"letter-spacing"],[362,"lighting-color"],[556,"line-break"],[20,"line-height"],[85,"list-style"],[86,"list-style-image"],[87,"list-style-position"],[88,"list-style-type"],[89,"margin"],[90,"margin-bottom"],[91,"margin-left"],[92,"margin-right"],[93,"margin-top"],[372,"marker"],[373,"marker-end"],[374,"marker-mid"],[375,"marker-start"],[357,"mask"],[435,"mask-source-type"],[376,"mask-type"],[555,"max-block-size"],[94,"max-height"],[554,"max-inline-size"],[95,"max-width"],[406,"max-zoom"],[553,"min-block-size"],[96,"min-height"],[552,"min-inline-size"],[97,"min-width"],[407,"min-zoom"],[420,"mix-blend-mode"],[460,"motion"],[458,"motion-offset"],[457,"motion-path"],[459,"motion-rotation"],[433,"object-fit"],[437,"object-position"],[543,"offset"],[544,"offset-anchor"],[540,"offset-distance"],[541,"offset-path"],[545,"offset-position"],[548,"offset-rotate"],[542,"offset-rotation"],[98,"opacity"],[303,"order"],[408,"orientation"],[99,"orphans"],[100,"outline"],[101,"outline-color"],[102,"outline-offset"],[103,"outline-style"],[104,"outline-width"],[105,"overflow"],[538,"overflow-anchor"],[106,"overflow-wrap"],[107,"overflow-x"],[108,"overflow-y"],[109,"padding"],[110,"padding-bottom"],[111,"padding-left"],[112,"padding-right"],[113,"padding-top"],[114,"page"],[115,"page-break-after"],[116,"page-break-before"],[117,"page-break-inside"],[434,"paint-order"],[449,"perspective"],[450,"perspective-origin"],[557,"place-content"],[558,"place-items"],[118,"pointer-events"],[119,"position"],[120,"quotes"],[468,"r"],[121,"resize"],[122,"right"],[505,"rotate"],[463,"rx"],[464,"ry"],[506,"scale"],[444,"scroll-behavior"],[456,"scroll-blocks-on"],[502,"scroll-snap-coordinate"],[503,"scroll-snap-destination"],[500,"scroll-snap-points-x"],[501,"scroll-snap-points-y"],[499,"scroll-snap-type"],[439,"shape-image-threshold"],[346,"shape-inside"],[348,"shape-margin"],[347,"shape-outside"],[349,"shape-padding"],[377,"shape-rendering"],[123,"size"],[519,"snap-height"],[125,"speak"],[124,"src"],[363,"stop-color"],[364,"stop-opacity"],[378,"stroke"],[379,"stroke-dasharray"],[380,"stroke-dashoffset"],[381,"stroke-linecap"],[382,"stroke-linejoin"],[383,"stroke-miterlimit"],[384,"stroke-opacity"],[385,"stroke-width"],[127,"tab-size"],[126,"table-layout"],[128,"text-align"],[404,"text-align-last"],[392,"text-anchor"],[509,"text-combine-upright"],[129,"text-decoration"],[403,"text-decoration-color"],[401,"text-decoration-line"],[546,"text-decoration-skip"],[402,"text-decoration-style"],[130,"text-indent"],[441,"text-justify"],[131,"text-line-through"],[132,"text-line-through-color"],[133,"text-line-through-mode"],[134,"text-line-through-style"],[135,"text-line-through-width"],[510,"text-orientation"],[136,"text-overflow"],[137,"text-overline"],[138,"text-overline-color"],[139,"text-overline-mode"],[140,"text-overline-style"],[141,"text-overline-width"],[11,"text-rendering"],[142,"text-shadow"],[536,"text-size-adjust"],[143,"text-transform"],[144,"text-underline"],[145,"text-underline-color"],[146,"text-underline-mode"],[405,"text-underline-position"],[147,"text-underline-style"],[148,"text-underline-width"],[149,"top"],[421,"touch-action"],[442,"touch-action-delay"],[446,"transform"],[559,"transform-box"],[447,"transform-origin"],[448,"transform-style"],[150,"transition"],[151,"transition-delay"],[152,"transition-duration"],[153,"transition-property"],[154,"transition-timing-function"],[504,"translate"],[155,"unicode-bidi"],[156,"unicode-range"],[539,"user-select"],[409,"user-zoom"],[515,"variable"],[393,"vector-effect"],[157,"vertical-align"],[158,"visibility"],[168,"webkit-animation-direction"],[354,"webkit-app-region"],[412,"webkit-app-region"],[175,"webkit-appearance"],[176,"webkit-aspect-ratio"],[400,"webkit-background-blend-mode"],[178,"webkit-background-clip"],[179,"webkit-background-composite"],[180,"webkit-background-origin"],[399,"webkit-blend-mode"],[182,"webkit-border-after"],[183,"webkit-border-after-color"],[184,"webkit-border-after-style"],[185,"webkit-border-after-width"],[186,"webkit-border-before"],[187,"webkit-border-before-color"],[188,"webkit-border-before-style"],[189,"webkit-border-before-width"],[190,"webkit-border-end"],[191,"webkit-border-end-color"],[192,"webkit-border-end-style"],[193,"webkit-border-end-width"],[194,"webkit-border-fit"],[195,"webkit-border-horizontal-spacing"],[196,"webkit-border-image"],[198,"webkit-border-start"],[199,"webkit-border-start-color"],[200,"webkit-border-start-style"],[201,"webkit-border-start-width"],[202,"webkit-border-vertical-spacing"],[203,"webkit-box-align"],[228,"webkit-box-decoration-break"],[414,"webkit-box-decoration-break"],[204,"webkit-box-direction"],[205,"webkit-box-flex"],[206,"webkit-box-flex-group"],[207,"webkit-box-lines"],[208,"webkit-box-ordinal-group"],[209,"webkit-box-orient"],[210,"webkit-box-pack"],[211,"webkit-box-reflect"],[73,"webkit-clip-path"],[213,"webkit-color-correction"],[214,"webkit-column-axis"],[215,"webkit-column-break-after"],[216,"webkit-column-break-before"],[217,"webkit-column-break-inside"],[220,"webkit-column-progression"],[396,"webkit-cursor-visibility"],[410,"webkit-dashboard-region"],[229,"webkit-filter"],[413,"webkit-filter"],[341,"webkit-flow-from"],[340,"webkit-flow-into"],[12,"webkit-font-feature-settings"],[241,"webkit-font-size-delta"],[14,"webkit-font-smoothing"],[251,"webkit-highlight"],[252,"webkit-hyphenate-character"],[253,"webkit-hyphenate-limit-after"],[254,"webkit-hyphenate-limit-before"],[255,"webkit-hyphenate-limit-lines"],[256,"webkit-hyphens"],[258,"webkit-line-align"],[257,"webkit-line-box-contain"],[259,"webkit-line-break"],[260,"webkit-line-clamp"],[261,"webkit-line-grid"],[262,"webkit-line-snap"],[16,"webkit-locale"],[264,"webkit-logical-height"],[263,"webkit-logical-width"],[270,"webkit-margin-after"],[265,"webkit-margin-after-collapse"],[271,"webkit-margin-before"],[266,"webkit-margin-before-collapse"],[267,"webkit-margin-bottom-collapse"],[269,"webkit-margin-collapse"],[272,"webkit-margin-end"],[273,"webkit-margin-start"],[268,"webkit-margin-top-collapse"],[274,"webkit-marquee"],[275,"webkit-marquee-direction"],[276,"webkit-marquee-increment"],[277,"webkit-marquee-repetition"],[278,"webkit-marquee-speed"],[279,"webkit-marquee-style"],[280,"webkit-mask"],[281,"webkit-mask-box-image"],[282,"webkit-mask-box-image-outset"],[283,"webkit-mask-box-image-repeat"],[284,"webkit-mask-box-image-slice"],[285,"webkit-mask-box-image-source"],[286,"webkit-mask-box-image-width"],[287,"webkit-mask-clip"],[288,"webkit-mask-composite"],[289,"webkit-mask-image"],[290,"webkit-mask-origin"],[291,"webkit-mask-position"],[292,"webkit-mask-position-x"],[293,"webkit-mask-position-y"],[294,"webkit-mask-repeat"],[295,"webkit-mask-repeat-x"],[296,"webkit-mask-repeat-y"],[297,"webkit-mask-size"],[299,"webkit-max-logical-height"],[298,"webkit-max-logical-width"],[301,"webkit-min-logical-height"],[300,"webkit-min-logical-width"],[302,"webkit-nbsp-mode"],[411,"webkit-overflow-scrolling"],[304,"webkit-padding-after"],[305,"webkit-padding-before"],[306,"webkit-padding-end"],[307,"webkit-padding-start"],[310,"webkit-perspective-origin-x"],[311,"webkit-perspective-origin-y"],[312,"webkit-print-color-adjust"],[343,"webkit-region-break-after"],[344,"webkit-region-break-before"],[345,"webkit-region-break-inside"],[342,"webkit-region-fragment"],[313,"webkit-rtl-ordering"],[314,"webkit-ruby-position"],[395,"webkit-svg-shadow"],[353,"webkit-tap-highlight-color"],[415,"webkit-tap-highlight-color"],[315,"webkit-text-combine"],[316,"webkit-text-decorations-in-effect"],[317,"webkit-text-emphasis"],[318,"webkit-text-emphasis-color"],[319,"webkit-text-emphasis-position"],[320,"webkit-text-emphasis-style"],[321,"webkit-text-fill-color"],[17,"webkit-text-orientation"],[322,"webkit-text-security"],[323,"webkit-text-stroke"],[324,"webkit-text-stroke-color"],[325,"webkit-text-stroke-width"],[328,"webkit-transform-origin-x"],[329,"webkit-transform-origin-y"],[330,"webkit-transform-origin-z"],[337,"webkit-user-drag"],[338,"webkit-user-modify"],[339,"webkit-user-select"],[352,"webkit-wrap"],[350,"webkit-wrap-flow"],[351,"webkit-wrap-through"],[18,"webkit-writing-mode"],[159,"white-space"],[160,"widows"],[161,"width"],[445,"will-change"],[162,"word-break"],[163,"word-spacing"],[164,"word-wrap"],[394,"writing-mode"],[461,"x"],[462,"y"],[165,"z-index"],[19,"zoom"]]; document.body.classList.remove('loading'); window.addEventListener('popstate', function(e) { if (e.state) { timeline.selectedBucketId = e.state.id; } }); }); </script> <script> /*! (c) 2017 Copyright (c) 2016 The Google Inc. All rights reserved. (Apache2) */ "use strict";!function(e){function r(){return caches.keys().then(function(e){var r=0;return Promise.all(e.map(function(e){if(e.includes("sw-precache"))return caches.open(e).then(function(e){return e.keys().then(function(n){return Promise.all(n.map(function(n){return e.match(n).then(function(e){return e.arrayBuffer()}).then(function(e){r+=e.byteLength})}))})})})).then(function(){return r})["catch"](function(){})})}function n(){"serviceWorker"in navigator&&navigator.serviceWorker.register("/service-worker.js").then(function(e){e.onupdatefound=function(){var n=e.installing;n.onstatechange=function(){switch(n.state){case"installed":t&&!navigator.serviceWorker.controller&&o.then(r().then(function(e){var r=Math.round(e/1e3);console.info("[ServiceWorker] precached",r,"KB");var n=new Metric("sw_precache");n.sendToAnalytics("service worker","precache size",e),t.showMessage("This site is cached ("+r+"KB). Ready to use offline!")}));break;case"redundant":throw Error("The installing service worker became redundant.")}}}})["catch"](function(e){console.error("Error during service worker registration:",e)})}var t=document.querySelector("chromedash-toast"),o=new Promise(function(e,r){return window.asyncImportsLoadPromise?window.asyncImportsLoadPromise.then(e,r):void e()});window.asyncImportsLoadPromise||n(),navigator.serviceWorker&&navigator.serviceWorker.controller&&(navigator.serviceWorker.controller.onstatechange=function(e){if("redundant"===e.target.state){var r=function(){window.location.reload()};t?o.then(function(){t.showMessage("A new version of this app is available.","Refresh",r,-1)}):r()}}),e.registerServiceWorker=n}(window); // https://gist.github.com/ebidel/1d5ede1e35b6f426a2a7 function lazyLoadWCPolyfillsIfNecessary() { function onload() { // For native Imports, manually fire WCR so user code // can use the same code path for native and polyfill'd imports. if (!('HTMLImports' in window)) { document.body.dispatchEvent( new CustomEvent('WebComponentsReady', {bubbles: true})); } } var webComponentsSupported = ('registerElement' in document && 'import' in document.createElement('link') && 'content' in document.createElement('template')); if (!webComponentsSupported) { var script = document.createElement('script'); script.async = true; script.src = '/static/bower_components/webcomponentsjs/webcomponents-lite.min.js'; script.onload = onload; document.head.appendChild(script); } else { onload(); } } var button = document.querySelector('app-header paper-menu-button'); button.addEventListener('click', function lazyHandler(e) { this.removeEventListener('click', lazyHandler); var url = '/static/elements/paper-menu-button.vulcanize.html'; Polymer.Base.importHref(url, function() { button.contentElement.hidden = false; button.open(); }, null, true); }); // Google Analytics (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-39048143-1', 'auto'); ga('send', 'pageview'); // End Google Analytics lazyLoadWCPolyfillsIfNecessary(); </script> </body> </html>
pilt
A streaming server written in C++, with Python bindings and a web application with a live shell to demonstrate how it works. Uses the liveMedia library for serving content.
094459
A very simple demo to show how you can use Cedar in Python, with a simple Flask based web application. This code is illustrative and verbose to help explain and show how Cedar works.
ClassiPoint – Bootstrap Responsive Classifieds, Directory, and Listing Multipurpose HTML Template. Directory, Classified, Listing, Ads, Advertising, Ad Listing, and More Multi usage Template This Template Includes 22+ HTML Pages Includes.Here we are using multiple types of Categories like Classifieds, Directory, and Listing, etc. It is very easy to customize. It has beautiful Home Pages and Multipurpose useful inner pages and all the important sections required by any kind of listing and ad posting website Template. You need to be very helpful to easy to design and save your time. It has a super clean user interface, customization components, and widgets. The Template comes with an awesome unique design also we ensure you can easily design your website just how you like it. Once you purchase the Pro Version ClassiPoint HTML Template you will be enabled to get a free download of all future updates. it is a fully responsive template for all types of devices. Works on all major web browsers, Desktop, iPhone, iPad, Tablet and all other smartphone devices
82goober82
Fluxion is the future of MITM WPA attacks Fluxion is a security auditing and social-engineering research tool. It is a remake of linset by vk496 with (hopefully) less bugs and more functionality. The script attempts to retrieve the WPA/WPA2 key from a target access point by means of a social engineering (phishing) attack. It's compatible with the latest release of Kali (rolling). Fluxion's attacks' setup is mostly manual, but experimental auto-mode handles some of the attacks' setup parameters. Read the FAQ before requesting issues. If you need quick help, fluxion is also avaible on gitter. You can talk with us on Gitter or on Discord. Installation Read here before you do the following steps. Download the latest revision git clone --recursive git@github.com:FluxionNetwork/fluxion.git Switch to tool's directory cd fluxion Run fluxion (missing dependencies will be auto-installed) ./fluxion.sh Fluxion is also available in arch cd bin/arch makepkg or using the blackarch repo pacman -S fluxion scroll Changelog Fluxion gets weekly updates with new features, improvements, and bugfixes. Be sure to check out the changelog here. :octocat: How to contribute All contributions are welcome! Code, documentation, graphics, or even design suggestions are welcome; use GitHub to its fullest. Submit pull requests, contribute tutorials or other wiki content -- whatever you have to offer, it'll be appreciated but please follow the style guide. book How it works Scan for a target wireless network. Launch the Handshake Snooper attack. Capture a handshake (necessary for password verification). Launch Captive Portal attack. Spawns a rogue (fake) AP, imitating the original access point. Spawns a DNS server, redirecting all requests to the attacker's host running the captive portal. Spawns a web server, serving the captive portal which prompts users for their WPA/WPA2 key. Spawns a jammer, deauthenticating all clients from original AP and lureing them to the rogue AP. All authentication attempts at the captive portal are checked against the handshake file captured earlier. The attack will automatically terminate once a correct key has been submitted. The key will be logged and clients will be allowed to reconnect to the target access point. For a guide to the Captive Portal attack, read the Captive Portal attack guide exclamation Requirements A Linux-based operating system. We recommend Kali Linux 2 or Kali rolling. Kali 2 & rolling support the latest aircrack-ng versions. An external wifi card is recommended. Related work For development I use vim and tmux. Here are my dotfiles :octocat: Credits l3op - contributor dlinkproto - contributor vk496 - developer of linset Derv82 - @Wifite/2 Princeofguilty - @webpages and @buteforce Photos for wiki @http://www.kalitutorials.net Ons Ali @wallpaper PappleTec @sites MPX4132 - Fluxion V3 Disclaimer Authors do not own the logos under the /attacks/Captive Portal/sites/ directory. Copyright Disclaimer Under Section 107 of the Copyright Act 1976, allowance is made for "fair use" for purposes such as criticism, comment, news reporting, teaching, scholarship, and research. The usage of Fluxion for attacking infrastructures without prior mutual consent could be considered an illegal activity, and is highly discouraged by its authors/developers. It is the end user's responsibility to obey all applicable local, state and federal laws. Authors assume no liability and are not responsible for any misuse or damage caused by this program. Note Beware of sites pretending to be related with the Fluxion Project. These may be delivering malware. Fluxion DOES NOT WORK on Linux Subsystem For Windows 10, because the subsystem doesn't allow access to network interfaces. Any Issue regarding the same would be Closed Immediately Links Fluxion website: https://fluxionnetwork.github.io/fluxion/ Discord: https://discordapp.com/invite/G43gptk Gitter: https://gitter.im/FluxionNetwork/Lobby